View Single Post
  #6511    
Old February 25th, 2012 (5:13 AM).
metapod23's Avatar
metapod23 metapod23 is offline
Hardened Trainer
 
Join Date: Mar 2009
Gender: Male
Nature: Timid
Posts: 673

Quote originally posted by Masterchief1755:
I had a question about events...like the one in Pallet Town when you step on a certain tile near the grass and Oak comes over and stops you. What is it that causes that and what type of script to you use? From what I'm reading, it looks like Variables? I've been looking at tutorials or videos and there's really no definitive answers on what exactly is used and what it would look like

For example....walking on the event, Oak appears and walks up to you. That's the sort of thing I'm looking to be able to create. Up until now I've been using PKSV, but if this isn't the recommended program for this I can switch. I just want to know how to do things like this so I can edit or create some new events to spice the game up a bit for friends etc. Not really getting into the making an entirely new game scene, but I would like to know how to do small things like this. Doing well up until this. Thanks for any help.

XSE (Extreme Script Editor) is recommended over PKSV.

In A-Map, the script you step on will have a Var number and a Var value. The Variable # is the number of the variable, and the value is what the value of that number is set to.

So if you look at Oak's script, you see that it is activated when Var # 4050 is set to 0000. By default, all variables are set to the value of 0, which means that script will activate the first time you step on it no matter what, because the value of that script is 0 when the game begins.

Now, in order to prevent the script from glitching once you step on it, you must do one of two things - either move the player off the script tile in the script, or deactivate the script by setting its var value to something other than 0 (because that is the value it is set to in A-Map for it to be activated).

There are some scripts that are blocks, and don't deactivate, but only move the player back so they can't leave the town. Likely this script will be deactivated by changing the variable's value later in a future script.

If you want to deactivate the script as soon as you step on it, though, you can simply change the variable's value. To do this, you would use this command setvar.

Take a look at Oak's script. There are a few setvar commands used:

Code:
'---------------
#org 0x1655F9
lockall
setvar 0x4001 0x1
goto 0x8165605

'--------------- #org 0x165605 setvar 0x8004 0x0 setvar 0x8005 0x2 special 0x174 textcolor 0x0 pause 0x1E playsong 0x12E 0x0 preparemsg 0x817D72C '"OAK: Hey! Wait!\nDon't go out!" waitmsg pause 0x55 closeonkeypress applymovement MOVE_PLAYER 0x81A75ED waitmovement 0x0 sound 0x15 applymovement MOVE_PLAYER 0x81A75DB waitmovement 0x0 pause 0x1E showsprite 0x3 compare 0x4001 0x0 if 0x1 call 0x81656B8 compare 0x4001 0x1 if 0x1 call 0x81656C3 pause 0x1E msgbox 0x817D74A MSG_KEEPOPEN '"OAK: It's unsafe!\nWild POKéMON li..." closeonkeypress pause 0x1E compare 0x4001 0x0 if 0x1 call 0x81656CE compare 0x4001 0x1 if 0x1 call 0x81656E0 setdooropened 0x10 0xD doorchange applymovement 0x3 0x816572E applymovement MOVE_PLAYER 0x8165758 waitmovement 0x0 setdoorclosed 0x10 0xD doorchange setvar 0x4055 0x1 clearflag 0x2B setvar 0x4050 0x1 setflag 0x2C setflag 0x4001 warp 0x4 0x3 0xFF 0x6 0xC waitstate releaseall end

^ I bolded the one that actually deactivated the script, though. By using setvar, the script has changed the value of variable 4050 to 0001. Now that it is changed to 1 instead of 0, that script will not activate again, unless you were to change the value of 4050 back to 0 in a separate script.

Be cautious of the variable you use. There's a supposed safe range. Refer to XSE's guide to know which ones are best to use (I don't recall at the moment), or just use variables already used by the game, if you do not need those scripts that the game uses.

__________________