/Circa
a face in the clouds.
- 881
- Posts
- 17
- Years
- Melbourne, Victoria
- Seen Jul 22, 2023
PokeScript Tutorial
This tutorial was developed for Irish Witch's program called PokeScript, i'll add a install and PkmnAdv to the bottom and some needed files.
Lets begin!
Installing pokeScript
Before doing any scripts, you must have PokeScript and PkmnAdv installed into a folder, just to be safe, create a folder called PokeScript anywhere you can find it ;p. Now we'll go through the process of installation.
Basic Message
For normal purposes, lets think of a message, lets say.. A how are you message..
So what we want it to look like is:
Now, before we do anything add #org and $begin to the top of your script. Without these commands the script wont run. Next, if it's a basic person we're talking too, we don't want the player or the person moving do we? So we need a lock and faceplayer command, to lock the player and make the other person face them, but I think it's self explanatory..
So what we have in our script is;
But thats not everything to a script is it? It's not much more complex for a beginner script, but more scripts will start to look complex even though they are not.
Here is a quote from Earthvisitor:
I credit him for that, because I never would be here if it wasn't for him..
Next we need a message command, right? And message commands are followed by a pointer and a message.
So we need to add:
message $pointer
$pointer 1 =
$pointer can be anything, just make sure it ins't used twice. We'll use a $howareyou
But, when using these sought of messages make sure to add a boxset command after them, a basic boxset command is boxset 6, and for yes/no scripts we use boset 5.
But did you notice the enter in our message? It wasn't a straight line, to make a new line enter \n, and for a new paragraph, \p. So what our script now looks like is:
Noticed the release and end? We need that after every main script paragraph. AKA the first paragraph.
Alot of you may know that in A-Text [PLAYER] changes too the players name, in Pokescript we use /v/h01. So replace PLAYER with \v\h01 and you've got your basic message!
Note: \v\h06 is your Rivals name.
Now comes the easy part!
I've made it bold so everyone notices it.
Click save as
type in the name of the script, and at the end put .rbc
Now, click file type, and scroll down to All Files.
Go to your script location, right click and click "Compile".
Your script should open in Pokescript and then BufRite should open.
Some offsets should be listed, click the top offset and click Assign.
The window should change, click File -> Burn. Find the offset at $begin and write it down somewhere.
Open up A-Map, load the map you want the script inserted.
Click the person and there should be a box that say's: Script Offset, insert the offset there and save.
You've succesfully inserted a new script!
Yes/No Scripts
These scripts aren't very different from a basic message, they just require some extra commands, which can help you when your developing more complicated and longer scripts.
Alright, lets begin with this new section.
A yes no script requires the same things we used in a basic message, except this time we're adding different commands.
We need three messages instead of one, and we use a boxset 5 command. And after our main message we need a compare LASTRESULT command.
This will check what you selected in the message, a yes or a no.. But we're forgetting something very importat in the command. A number.. :o
In yes/no commands we use a compare LASTRESULT 1, this will check if we selected YES. But I need to explain what
A yes/no script would look like. This is an example without using scripting commands.
<Instert Message Here>
Then a box would pop up. So now it looks like this:
l YES l
l NO l
<Insert Message Here>
Alright, so lets add our commands.
Our script should look like this:
Alot of you may be wondering, why is there another
#org? Well, it's much easier to tell where your other part of the script if you have a new paragraph, though you can do it the other way. But i'll
leave you to find out how ;)
Lets take a script from ShinyGold as an example, behind the hero's house in New Bark there is a Pikachu with a basic Yes/No script.
It says: Pika... Chu?
Pika... Pikachu? And then you choose yes or no.
Though, never make it look like this:
If you pick no, the message will then continue onto yes.
Or you may write it the other way I showed you.
Theres another tutorial done. Lets get onto the next easiest one, flags!
Flags!
What is a flag? Well a flag is something we can use to make scripts only happen once, or not happen until another flag has happened, later in the tutorial we'll
be adding a longer script using flags. There are three commands for flags:
So lets begin, in the script below, we'll make a person say something, and then after he has said it, if you talk to him again, he'll say: I'm not a CD Player.
Alright, so what we need after the lock and faceplayer is a checkflag, because if we want him to say something different, we need to first see if he has said it a first time.
Hey, thats not all, we need two messages and a setflag after the first, am I right?
Flags that can be used are 0x200 - 0x299, 0x500 - 0x599: Warning! Some of these flags are used in the game. So be careful! Also 0x1000 - 0x1099.
Ask some other scripters for more safe flags.
Here is a quote from thethethethe:
Alright, lets get onto it!
When adding setflags add them after a certain command that you don't want to happen again, so in this case, the first message.
We'll be using paragraphs in this script.
There you go!
Another topic covered. Next will be a giveitem tutorial, which involves a little test.
Making a mailbox script, more will be explained later.
Giveitem Scripts
With a giveitem script, we only need a message before getting the item, because for some reason Items have their own message after.
Alright, the only command we need is a giveitem command and a setflag depending on what we're doing.
In a giveitem script, we need a giveitem command. They usually look like this:
giveitem 0x0 0x0 (giveitem <itemnumber> <howmany>)
Here is a list of items in the game:
FIRERED/LEAFGREEN
They are used in hexadecimal. Example:
giveitem 0x1 0x1
You will get a masterball once.
The Ruby/Saphire item list should be somewhere in the Document/Tutorials section.
Anyway, so, we need a setflag for Giveitem. So that will happen after the give item command, and then it goes to a new message next time you talk to the person.
Alright, here we need to add a giveitem script:
Then we need a setflag, but, before the message we need a checkflag so it skips the message and giveitem again.
In this case we're getting one Potion.
Next we need our second message! So we add another lock, faceplayer and message.
So there you go! Another tutorial covered.
But, theres one more thing! A TEST!
To truly prove that you have learned these commands, I want you to make a script.
When you talk to a person, they ask you if your like Oran Berries, if you say yes, you get one. If you say no, they tell you that you wont ever get one.
Meaning, if you say no, you cant get one for the rest of the game.
Good luck scripters!
Givepokemon Scripts!
Givepokemon scripts are almost the same to a giveitem script, it requires the same sought of command.
Givepokemon 0x0 0x0 0x0.
That stands for, Givepokemon <pokemon in hex> <level> <item>
Just for normal purposes, here is a list of Pokemon:
Take away the last two numbers.
Thanks to thethethethe for the list
Alright.
We cant just get a Pokemon right?
We need the Pokemon menu enabled. In otherwords, if we get a Pokemon without a Pokemon Menu, nothing will happen.
A list of flags and specials can be found in the documents and tutorials section.
We'll do a normal givepokemon script, which requires a flag to make sure we don't get it one or twice.
A givepokemon command should go after a message, and then a message after that should follow to tell you received it.
Remember, checkflags always go before you want an event to occur.
So here we go:
Are you guys beginning to understand?
It's quite simple actually. So, thats another tutorial covered.
I'll make these tutorials more advanced when I finish most of them.
Next one to go, APPLYMOVEMENT! (Movement Scripts)
Movement Script
Movement scripts are pretty simple, they require only two commands, but there are parts to the movement commands.
We need an applymovement command, which is just applymovement 0x<PeopleNumber> $pointer
And then following that command we need a pausemove 0 or the commands wont run.
A person number is pretty simple, it's the people number in AM. But if you want the hero to move you put 0xFF.
So in our case, we'll be make someone come to the hero, three spaces left, and then take him three spaces back. Though remember, there movements are not always the same, they can vary.
So, lets get started.
You put an applymovement where you want the commands to happen, first we need a message to say:
Don't go out there!
There are wild Pokemon.
That requires one \n. ;P
The movements will run when that happens.
Here is a list of movements for FR.
And here is a list for Ruby.
Alright, we'll do the script in my prefered format, which is having a new paragraph, It's sometimes easier to use it like that, though other tutorials explain different ways.
First we need a #org $begin, lock and faceplayer. Then follows our message.
Now we want our movement commands to run here, so we add our applymovement command, which in our case is moving people number 1.
Now we need to add our movements, but I use a different paragraph for the movements, though it doesn't matter. PokeScript compiles it the same.
We need 0xFE after all movement scripts, to tell PokeScript the movements don't need to run anymore.
Now we need another message and a follow me script.
For followme, you add two applymovements and then pausemove 0 at the end of them.
BUT!, Since person 0x1 is moving right three, the hero only can move right two times.
So here is our finished product.
Hopefully you understand that. I only wanted to make this tutorial basic, so it might be a little simple.
But like I said, i'll make it more advanced when I finish the whole thing.
This tutorial was developed for Irish Witch's program called PokeScript, i'll add a install and PkmnAdv to the bottom and some needed files.
Lets begin!
Installing pokeScript
Before doing any scripts, you must have PokeScript and PkmnAdv installed into a folder, just to be safe, create a folder called PokeScript anywhere you can find it ;p. Now we'll go through the process of installation.
* Download PokeScript 1.00 or higher.
# Download PkmnAdv (Needed for PokeScript)
# Install PokeScript into a folder you created.
# Install PkmnAdv into the same folder.
# A log should come up stating the files from PkmnAdv being registered.
# Open Notepad and begin to script!
# Download PkmnAdv (Needed for PokeScript)
# Install PokeScript into a folder you created.
# Install PkmnAdv into the same folder.
# A log should come up stating the files from PkmnAdv being registered.
# Open Notepad and begin to script!
Basic Message
For normal purposes, lets think of a message, lets say.. A how are you message..
So what we want it to look like is:
Code:
Hey PLAYER!
Hows your journey going?
Now, before we do anything add #org and $begin to the top of your script. Without these commands the script wont run. Next, if it's a basic person we're talking too, we don't want the player or the person moving do we? So we need a lock and faceplayer command, to lock the player and make the other person face them, but I think it's self explanatory..
So what we have in our script is;
Code:
#org $begin
lock
faceplayer
But thats not everything to a script is it? It's not much more complex for a beginner script, but more scripts will start to look complex even though they are not.
Here is a quote from Earthvisitor:
"I myself am a basic scripter, you just have to learn to use all commands to your advantage"
I credit him for that, because I never would be here if it wasn't for him..
Next we need a message command, right? And message commands are followed by a pointer and a message.
So we need to add:
message $pointer
$pointer 1 =
$pointer can be anything, just make sure it ins't used twice. We'll use a $howareyou
But, when using these sought of messages make sure to add a boxset command after them, a basic boxset command is boxset 6, and for yes/no scripts we use boset 5.
But did you notice the enter in our message? It wasn't a straight line, to make a new line enter \n, and for a new paragraph, \p. So what our script now looks like is:
Code:
#org $begin
lock
faceplayer
message $howareyou
$howareyou 1 =Hey PLAYER!\nHow's your journey going?
boxset 6
release
end
Noticed the release and end? We need that after every main script paragraph. AKA the first paragraph.
Alot of you may know that in A-Text [PLAYER] changes too the players name, in Pokescript we use /v/h01. So replace PLAYER with \v\h01 and you've got your basic message!
Note: \v\h06 is your Rivals name.
Code:
#org $begin
lock
faceplayer
message $howareyou
$howareyou 1 =Hey \v\h01!\nHows your journey going?
boxset 6
release
end
Now comes the easy part!
I've made it bold so everyone notices it.
Click save as
type in the name of the script, and at the end put .rbc
Now, click file type, and scroll down to All Files.
Go to your script location, right click and click "Compile".
Your script should open in Pokescript and then BufRite should open.
Some offsets should be listed, click the top offset and click Assign.
The window should change, click File -> Burn. Find the offset at $begin and write it down somewhere.
Open up A-Map, load the map you want the script inserted.
Click the person and there should be a box that say's: Script Offset, insert the offset there and save.
You've succesfully inserted a new script!
Yes/No Scripts
These scripts aren't very different from a basic message, they just require some extra commands, which can help you when your developing more complicated and longer scripts.
Alright, lets begin with this new section.
A yes no script requires the same things we used in a basic message, except this time we're adding different commands.
We need three messages instead of one, and we use a boxset 5 command. And after our main message we need a compare LASTRESULT command.
This will check what you selected in the message, a yes or a no.. But we're forgetting something very importat in the command. A number.. :o
In yes/no commands we use a compare LASTRESULT 1, this will check if we selected YES. But I need to explain what
A yes/no script would look like. This is an example without using scripting commands.
<Instert Message Here>
Then a box would pop up. So now it looks like this:
l YES l
l NO l
<Insert Message Here>
Alright, so lets add our commands.
Our script should look like this:
Code:
#org $begin
lock
faceplayer
message $blah
$blah 1 =<Insert Message Here>
boxset 5
compare LASTRESULT 1
if 1 goto $yes
message $no
$no 1 =<Insert Message Here>
boxset 6
release
end
#org $yes
=<Insert Message Here>
Alot of you may be wondering, why is there another
#org? Well, it's much easier to tell where your other part of the script if you have a new paragraph, though you can do it the other way. But i'll
leave you to find out how ;)
Lets take a script from ShinyGold as an example, behind the hero's house in New Bark there is a Pikachu with a basic Yes/No script.
It says: Pika... Chu?
Pika... Pikachu? And then you choose yes or no.
Though, never make it look like this:
If you pick no, the message will then continue onto yes.
Code:
#org $begin
lock
faceplayer
message $pikachu
$pikachu 1=Pika..Chu?\pPika.. Pikachu?
boxset 5
compare LASTRESULT 1
if 1 goto $yes
message $no
$no 1 =Pikachu :(
boxset 6
$yes 1 =Pikachu :S
boxset 6
release
end
Or you may write it the other way I showed you.
Theres another tutorial done. Lets get onto the next easiest one, flags!
Flags!
What is a flag? Well a flag is something we can use to make scripts only happen once, or not happen until another flag has happened, later in the tutorial we'll
be adding a longer script using flags. There are three commands for flags:
#1 - Checkflag: Checks if the flag has happened.
#2 - Setflag: Sets the flag for it to be checked, or removed.
#3 - Removeflag: Removes the flag so it can happen again.
#2 - Setflag: Sets the flag for it to be checked, or removed.
#3 - Removeflag: Removes the flag so it can happen again.
So lets begin, in the script below, we'll make a person say something, and then after he has said it, if you talk to him again, he'll say: I'm not a CD Player.
Alright, so what we need after the lock and faceplayer is a checkflag, because if we want him to say something different, we need to first see if he has said it a first time.
Code:
#org $begin
lock
faceplayer
checkflag 0x200
if b_true goto $cdplayer
Hey, thats not all, we need two messages and a setflag after the first, am I right?
Flags that can be used are 0x200 - 0x299, 0x500 - 0x599: Warning! Some of these flags are used in the game. So be careful! Also 0x1000 - 0x1099.
Ask some other scripters for more safe flags.
Here is a quote from thethethethe:
The more ingame flags you avoid using, the more flags will become useful to you
Alright, lets get onto it!
When adding setflags add them after a certain command that you don't want to happen again, so in this case, the first message.
We'll be using paragraphs in this script.
Code:
#org $begin
lock
faceplayer
checkflag 0x200
if b_true goto $cdplayer
message $whatsup
$whatsup 1 =Hey \v\h01!\nHows your journey going?
boxset 6
setflag 0x200
release
end
#org $cdplayer
message $notcd
$notcd 1 =I'm not a CD Player!
boxset 6
release
end
There you go!
Another topic covered. Next will be a giveitem tutorial, which involves a little test.
Making a mailbox script, more will be explained later.
Giveitem Scripts
With a giveitem script, we only need a message before getting the item, because for some reason Items have their own message after.
Alright, the only command we need is a giveitem command and a setflag depending on what we're doing.
In a giveitem script, we need a giveitem command. They usually look like this:
giveitem 0x0 0x0 (giveitem <itemnumber> <howmany>)
Here is a list of items in the game:
FIRERED/LEAFGREEN
Code:
1 Master Ball
2 Ultra Ball
3 Great Ball
4 Poké Ball
5 Safari Ball
6 Net Ball
7 Dive Ball
8 Nest Ball
9 Repeat Ball
A Timer Ball
B Luxury Ball
C Premier Ball
D Potion
E Antidote
F Burn Heal
10 Ice Heal
11 Awakening
12 Parlyz Heal
13 Full Restore
14 Max Potion
15 Hyper Potion
16 Super Potion
17 Full Heal
18 Revive
19 Max Revive
1A Fresh Water
1B Soda Pop
1C Lemonade
1D Moomoo Milk
1E Energypowder
1F Energy Root
20 Heal Powder
21 Revival Herb
22 Ether
23 Max Ether
24 Elixir
25 Max Elixir
26 Lava Cookie
27 Blue Flute
28 Yellow Flute
29 Red Flute
2A Black Flute
2B White Flute
2C Berry Juice
2D Sacred Ash
2E Shoal Salt
2F Shoal Shell
30 Red Shard
31 Blue Shard
32 Yellow Shard
33 Green Shard
3F HP Up
40 Protein
41 Iron
42 Carbos
43 Calcium
44 Rare Candy
45 PP Up
46 Zinc
47 PP Max
49 Guard Spec.
4A Dire Hit
4B X Attack
4C X Defend
4D X Speed
4E X Accuracy
4F X Special
50 Poké Doll
51 Fluffy Tail
53 Super Repel
54 Max Repel
55 Escape Rope
56 Repel
5D Sun Stone
5E Moon Stone
5F Fire Stone
60 Thunderstone
61 Water Stone
62 Leaf Stone
67 Tinymushroom
68 Big Mushroom
6A Pearl
6B Big Pearl
6C Stardust
6D Star Piece
6E Nugget
6F Heart Scale
79 Orange Mail
7A Harbor Mail
7B Glitter Mail
7C Mech Mail
7D Wood Mail
7E Wave Mail
7F Bead Mail
80 Shadow Mail
81 Tropic Mail
82 Dream Mail
83 Fab Mail
84 Retro Mail
85 Cheri Berry
86 Chesto Berry
87 Pecha Berry
88 Rawst Berry
89 Aspear Berry
8A Leppa Berry
8B Oran Berry
8C Persim Berry
8D Lum Berry
8E Sitrus Berry
8F Figy Berry
90 Wiki Berry
91 Mago Berry
92 Aguav Berry
93 Iapapa Berry
94 Razz Berry
95 Bluk Berry
96 Nanab Berry
97 Wepear Berry
98 Pinap Berry
99 Pomeg Berry
9A Kelpsy Berry
9B Qualot Berry
9C Hondew Berry
9D Grepa Berry
9E Tamato Berry
9F Cornn Berry
A0 Magost Berry
A1 Rabuta Berry
A2 Nomel Berry
A3 Spelon Berry
A4 Pamtre Berry
A5 Watmel Berry
A6 Durin Berry
A7 Belue Berry
A8 Liechi Berry
A9 Ganlon Berry
AA Salac Berry
AB Petaya Berry
AC Apicot Berry
AD Lansat Berry
AE Starf Berry
AF Enigma Berry
B3 Brightpowder
B4 White Herb
B5 Macho Brace
B6 Exp. Share
B7 Quick Claw
B8 Soothe Bell
B9 Mental Herb
BA Choice Band
BB King's Rock
BC Silverpowder
BD Amulet Coin
BE Cleanse Tag
BF Soul Dew
C0 Deepseatooth
C1 Deepseascale
C2 Smoke Ball
C3 Everstone
C4 Focus Band
C5 Lucky Egg
C6 Scope Lens
C7 Metal Coat
C8 Leftovers
C9 Dragon Scale
CA Light Ball
CB Soft Sand
CC Hard Stone
CD Miracle Seed
CE Blackglasses
CF Black Belt
D0 Magnet
D1 Mystic Water
D2 Sharp Beak
D3 Poison Barb
D4 Nevermeltice
D5 Spell Tag
D6 Twistedspoon
D7 Charcoal
D8 Dragon Fang
D9 Silk Scarf
DA Up-grade
DB Shell Bell
DC Sea Incense
DD Lax Incense
DE Lucky Punch
DF Metal Powder
E0 Thick Club
E1 Stick
FE Red Scarf
FF Blue Scarf
100 Pink Scarf
101 Green Scarf
102 Yellow Scarf
103 Mach Bike
104 Coin Case
105 Itemfinder
106 Old Rod
107 Good Rod
108 Super Rod
109 S.S. Ticket
10A Contest Pass
10C Wailmer Pail
10D Devon Goods
10E Soot Sack
10F Basement Key
110 Acro Bike
111 PokéBlock Case
112 Letter
113 Eon Ticket
114 Red Orb
115 Blue Orb
116 Scanner
117 Go-goggles
118 Meteorite
119 Rm. 1 Key
11A Rm. 2 Key
11B Rm. 4 Key
11C Rm. 6 Key
11D Storage Key
11E Root Fossil
11F Claw Fossil
120 Devon Scope
121 TM01
122 TM02
123 TM03
124 TM04
125 TM05
126 TM06
127 TM07
128 TM08
129 TM09
12A TM10
12B TM11
12C TM12
12D TM13
12E TM14
12F TM15
130 TM16
131 TM17
132 TM18
133 TM19
134 TM20
135 TM21
136 TM22
137 TM23
138 TM24
139 TM25
13A TM26
13B TM27
13C TM28
13D TM29
13E TM30
13F TM31
140 TM32
141 TM33
142 TM34
143 TM35
144 TM36
145 TM37
146 TM38
147 TM39
148 TM40
149 TM41
14A TM42
14B TM43
14C TM44
14D TM45
14E TM46
14F TM47
150 TM48
151 TM49
152 TM50
153 HM01
154 HM02
155 HM03
156 HM04
157 HM05
158 HM06
159 HM07
15A HM08
15D Oak's Parcel
15E Poké Flute
15F Secret Key
160 Bike Voucher
161 Gold Teeth
162 Old Amber
163 Card Key
164 Lift Key
165 Helix Fossil
166 Dome Fossil
167 Silph Scope
168 Bicycle
169 Town Map
16A VS Seeker
16B Fame Checker
16C TM Case
16D Berry Pouch
16E Teachy TV
16F Tri-pass
170 Rainbow Pass
171 Tea
172 Mysticticket
173 Auroraticket
174 Powder Jar
175 Ruby
176 Sapphire
They are used in hexadecimal. Example:
giveitem 0x1 0x1
You will get a masterball once.
The Ruby/Saphire item list should be somewhere in the Document/Tutorials section.
Anyway, so, we need a setflag for Giveitem. So that will happen after the give item command, and then it goes to a new message next time you talk to the person.
Alright, here we need to add a giveitem script:
Code:
[size=1]#org $begin
lock
faceplayer
message $getitem
$getitem 1 =I have two,\nSo you can have one.[/size]
<GIVEITEM COMMAND>
Then we need a setflag, but, before the message we need a checkflag so it skips the message and giveitem again.
Code:
#org $begin
lock
faceplayer
checkflag 0x200
if b_true goto $alreadygot
message $getitem
$getitem 1 =I have two,\nSo you ca have one.
boxset 6
giveitem 0xD 0x1
setflag 0x200
release
end
In this case we're getting one Potion.
Next we need our second message! So we add another lock, faceplayer and message.
Code:
#org $begin
lock
faceplayer
checkflag 0x200
if b_true goto $alreadygot
message $getitem
$getitem 1 =I have two,\nSo you can have one.
boxset 6
giveitem 0xD 0x1
setflag 0x200
release
end
#org $alreadygot
lock
faceplayer
message $onlyone
$onlyone 1 =I need this other one!\pDon't be greedy!
boxset 6
release
end
So there you go! Another tutorial covered.
But, theres one more thing! A TEST!
To truly prove that you have learned these commands, I want you to make a script.
When you talk to a person, they ask you if your like Oran Berries, if you say yes, you get one. If you say no, they tell you that you wont ever get one.
Meaning, if you say no, you cant get one for the rest of the game.
Good luck scripters!
Givepokemon Scripts!
Givepokemon scripts are almost the same to a giveitem script, it requires the same sought of command.
Givepokemon 0x0 0x0 0x0.
That stands for, Givepokemon <pokemon in hex> <level> <item>
Just for normal purposes, here is a list of Pokemon:
Code:
0100 = BULBASAUR
0200 = IVYSAUR
0300 = VENESAUR
0400 = CHARMANDER
0500 = CHARMELEON
0600 = CHARIZARD
0700 = SQUIRTLE
0800 = WARTORTLE
0900 = BLASTOISE
0A00 = CATERPIE
0B00 = METAPOD
0C00 = BUTTERFREE
0D00 = WEEDLE
0E00 = KAKUNA
0F00 = BEEDRILL
1000 = PIDGEY
1100 = PIDGEOTTO
1200 = PIDGEOT
1300 = RATTATA
1400 = RATICATE
1500 = SPEAROW
1600 = FEAROW
1700 = EKANS
1800 = ARBOK
1900 = PIKACHU
1A00 = RAICHU
1B00 = SANDSHREW
1C00 = SANDSLASH
1D00 = NIDORAN (FEMALE)
1E00 = NIDORINA
1F00 = NIDOQUEEN
2000 = NIDORAN (MALE)
2100 = NIDORINO
2200 = NIDOKING
2300 = CLEFAIRY
2400 = CLEFABLE
2500 = VULPIX
2600 = NINETALES
2700 = JIGGLYPUFF
2800 = WIGGLYTUFF
2900 = ZUBAT
2A00 = GOLBAT
2B00 = ODDISH
2C00 = GLOOM
2D00 = VILEPLUME
2E00 = PARAS
2F00 = PARASECT
3000 = VENONAT
3100 = VENOMOTH
3200 = DIGLETT
3300 = DUGTRIO
3400 = MEOWTH
3500 = PERSIAN
3600 = PSYDUCK
3700 = GOLDUCK
3800 = MANKEY
3900 = PRIMEAPE
3A00 = GROWLITHE
3B00 = ARCANINE
3C00 = POLIWAG
3D00 = POLIWHIRL
3E00 = POLIWRATH
3F00 = ABRA
4000 = KADABRA
4100 = ALAKAZAM
4200 = MACHOP
4300 = MACHOKE
4400 = MACHAMP
4500 = BELLSPROUT
4600 = WEEPINBELL
4700 = VICTREEBELL
4800 = TENTACOOL
4900 = TENTACRUEL
4A00 = GEODUDE
4B00 = GRAVELER
4C00 = GOLEM
4D00 = PONYTA
4E00 = RAPIDASH
4F00 = SLOWPOKE
5000 = SLOWBRO
5100 = MAGNEMITE
5200 = MAGNETON
5300 = FARFETCH'D
5400 = DODUO
5500 = DODRIO
5600 = SEEL
5700 = DEWGONG
5800 = GRIMER
5900 = MUK
5A00 = SHELLDER
5B00 = CLOYSTER
5C00 = GASTLY
5D00 = HAUNTER
5E00 = GENGAR
5F00 = ONIX
6000 = DROWZEE
6100 = HYPNO
6200 = KRABBY
6300 = KINGLER
6400 = VOLTORB
6500 = ELECTRODE
6600 = EXEGGCUTE
6700 = EXEGGUTOR
6800 = CUBONE
6900 = MAROWAK
6A00 = HITMONLEEE
6B00 = HITMONCHAN
6C00 = LICKITUNG
6D00 = KOFFING
6E00 = WEEZING
6F00 = RHYHORN
7000 = RHYDON
7100 = CHANSEY
7200 = TANGELA
7300 = KANGASKHAN
7400 = HORSEA
7500 = SEADRA
7600 = GOLDEEN
7700 = SEAKING
7800 = STARYU
7900 = STARMIE
7A00 = MR. MIME
7B00 = SCYTHER
7C00 = JYNX
7D00 = ELECTABUZZ
7E00 = MAGMAR
7F00 = PINSIR
8000 = TAUROS
8100 = MAGIKARP
8200 = GYARADOS
8300 = LAPRAS
8400 = DITTO
8500 = EEVEE
8600 = VAPOREON
8700 = JOLTEON
8800 = FLAREON
8900 = PORYGON
8A00 = OMANYTE
8B00 = OMASTAR
8C00 = KABUTO
8D00 = KABUTOPS
8E00 = AERODACTYL
8F00 = SNORLAX
9000 = ARTICUNO
9100 = ZAPDOS
9200 = MOLTRES
9300 = DRATINI
9400 = DRAGONAIR
9500 = DRAGONITE
9600 = MEWTWO
9700 = MEW
9800 = CHIKORITA
9900 = BAYLEEF
9A00 = MEGANIUM
9B00 = CYNDAQUIL
9C00 = QUILAVA
9D00 = TYPLOSION
9E00 = TOTODILE
9F00 = CROCONAW
A000 = FERALIGATR
A100 = SENTRET
A200 = FURRET
A300 = HOOTHOOT
A400 = NOCTOWL
A500 = LEDYBA
A600 = LEDIAN
A700 = SPINARAK
A800 = ARIADOS
A900 = CROBAT
AA00 = CHINCHOU
AB00 = LANTURN
AC00 = PICHU
AD00 = CLEFFA
AE00 = IGGLYBUFF
AF00 = TOGEPI
B000 = TOGETIC
B100 = NATU
B200 = XATU
B300 = MAREEP
B400 = FLAAFFY
B500 = AMPHAROS
B600 = BELLOSSOM
B700 = MARRILL
B800 = AZUMARILL
B900 = SUDOWOODO
BA00 = POLITOED
BB00 = HOPPIP
BC00 = SKI PLOOM
BD00 = JUMPLUFF
BE00 = AIPOM
BF00 = SUNKERN
C000 = SUNFLORA
C100 = YANMA
C200 = WOOPER
C300 = QUAGSIRE
C400 = ESPEON
C500 = UMBREON
C600 = MURKROW
C700 = SLOWKING
C800 = MISDREAVUS
C900 = UNOWN
CA00 = WOBBUFFET
CB00 = GIRAFARIG
CC00 = PINECO
CD00 = FORRETRESS
CE00 = DUNSPARCE
CF00 = GLIGAR
D000 = STEELIX
D100 = SNUBBULL
D200 = GRANBULL
D300 = QWILFISH
D400 = SCIZOR
D500 = SHUCKLE
D600 = HERACROSS
D700 = SNEASEL
D800 = TEDDIURSA
D900 = URSARING
DA00 = SLUGMA
DB00 = MAGCARGO
DC00 = SWINUB
DD00 = PILOSWINE
DE00 = CORSOLA
DF00 = REMORAID
E000 = OCTILLERY
E100 = DELIBIRD
E200 = MANTINE
E300 = SKARMORY
E400 = HOUNDOUR
E500 = DOUNDOOM
E600 = KINGDRA
E700 = PHANPY
E800 = DONPHAN
E900 = PORYGON2
EA00 = STANTLER
EB00 = SMEARGLE
EC00 = TYROGUE
ED00 = HITMONTOP
EE00 = SMOOCHUM
EF00 = ELEKID
F000 = MAGBY
F100 = MILTANK
F200 = BLISSEY
F300 = RAIKOU
F400 = ENTEI
F500 = SUICINE
F600 = LARVITAR
F700 = PUPITAR
F800 = TYRANITAR
F900 = LUGIA
FA00 = HO-OH
FB00 = CELEBI
1501 = TREECKO
1601 = GROVYLE
1701 = SCEPTILE
1801 = TORCHIC
1901 = COMBUSKEN
1A01 = BLAZIKEN
1B01 = MUDKIP
1C01 = MARSHTOMP
1D01 = SWAMPERT
1E01 = POOCHYENA
1F01 = MIGHTYENA
2001 = ZIGZAGOON
2101 = LINOONE
2201 = WURMPLE
2301 = SILCOON
2401 = BEAUTIFLY
2501 = CASCOON
2601 = DUSTOX
2701 = LOTAD
2801 = LOMBRE
2901 = LUDICOLO
2A01 = SEEDOT
2B01 = NUZLEAF
2C01 = SHIFTRY
2D01 = NINCADA
2E01 = NINJASK
2F01 = SHEDINJA
3001 = TAILLOW
3101 = SWELLOW
3201 = SHROOMISH
3301 = BRELOOM
3401 = SPINDA
3501 = WINGULL
3601 = PELIPPER
3701 = SURSKIT
3801 = MASQUERAIN
3901 = WAILMER
3A01 = WAILORD
3B01 = SKITTY
3C01 = DELCATTY
3D01 = KECLEON
3E01 = BALTOY
3F01 = CLAYDOL
4001 = NOSEPASS
4101 = TORKOAL
4201 = SABLEYE
4301 = BARBOACH
4401 = WHISCASH
4501 = LUVDISC
4601 = CORPHISH
4701 = CRAWDAUNT
4801 = FEEBAS
4901 = MILOTIC
4A01 = CARVANHA
4B01 = SHARPEDO
4C01 = TRAPINCH
4D01 = VIBRAVA
4E01 = FLYGON
4F01 = MAKUHITA
5001 = HARIYAMA
5101 = ELECTRIKE
5201 = MANECTRIC
5301 = NUMEL
5401 = CAMERUPT
5501 = SPHEAL
5601 = SEALEO
5701 = WALREIN
5801 = CACNEA
5901 = CACTURNE
5A01 = SNORUNT
5B01 = GLALIE
5C01 = LUNATONE
5D01 = SOLROCK
5E01 = AZURILL
5F01 = SPOINK
6001 = GRUMPIG
6101 = PLUSLE
6201 = MINUN
6301 = MAWILE
6401 = MEDITITE
6501 = MEDICHAM
6601 = SWABLU
6701 = ALTARIA
6801 = WYNAUT
6901 = DUSKULL
6A01 = DUSCLOPS
6B01 = ROSELIA
6C01 = SLAKOTH
6D01 = VIGOROTH
6E01 = SLAKING
6F01 = GULPIN
7001 = SWALOT
7101 = TROPIUS
7201 = WHISMUR
7301 = LOUDRED
7401 = EXPLOUD
7501 = CLAMPERL
7601 = HUNTAIL
7701 = GOREBYSS
7801 = ABSOL
7901 = SHUPPET
7A01 = BANNETE
7B01 = SEVIPER
7C01 = ZANGOOSE
7D01 = RELICANTH
7E01 = ARON
7F01 = LAIRON
8001 = AGGRON
8101 = CASTFORM
8201 = VOLBEAT
8301 = ILLUMISE
8401 = LILEEP
8501 = CRADILY
8601 = ANORITH
8701 = ARMALDO
8801 = RALTS
8901 = KIRLIA
8A01 = GARDEVOIR
8B01 = BAGON
8C01 = SHELGON
8D01 = SALAMENCE
8E01 = BELDUM
8F01 = METANG
9001 = METAGROSS
9101 = REGI ROCK
9201 = REGICE
9301 = REGI STEEL
9401 = KYOGRE
9501 = GROUDON
9601 = RAYQUAZA
9701 = LATIAS
9801 = LATIOS
9901 = JIRACHI
9A01 = DEOXYS
9B01 = CHIMECHO
Take away the last two numbers.
Thanks to thethethethe for the list
Alright.
We cant just get a Pokemon right?
We need the Pokemon menu enabled. In otherwords, if we get a Pokemon without a Pokemon Menu, nothing will happen.
A list of flags and specials can be found in the documents and tutorials section.
We'll do a normal givepokemon script, which requires a flag to make sure we don't get it one or twice.
A givepokemon command should go after a message, and then a message after that should follow to tell you received it.
Remember, checkflags always go before you want an event to occur.
So here we go:
Code:
#org $begin
lock
faceplayer
checkflag 0x200
if b_true goto $alreadygotone
message $wantpoke
$wantpoke 1 =Hey,\nwould you like this Eevee?
boxset 5
compare LASTRESULT 1
if 1 goto $geteevee
message $toobad
$toobad 1 =Oh, thats too bad.
boxset 6
release
end
#org $geteevee
lock
message $getone
$getone 1 =Oh cool!\nI cant take care of it\panymore...
boxset 6
givepokemon 0x85 0x5 0x0
message $received
$received 1 =PLAYER received EEVEE!
boxset 6
setflag 0x200
release
end
#org $alreadygotone
lock
faceplayer
message $howsit
$howsit 1 =Hows my old EEVEE going?
boxset 6
release
end
Are you guys beginning to understand?
It's quite simple actually. So, thats another tutorial covered.
I'll make these tutorials more advanced when I finish most of them.
Next one to go, APPLYMOVEMENT! (Movement Scripts)
Movement Script
Movement scripts are pretty simple, they require only two commands, but there are parts to the movement commands.
We need an applymovement command, which is just applymovement 0x<PeopleNumber> $pointer
And then following that command we need a pausemove 0 or the commands wont run.
A person number is pretty simple, it's the people number in AM. But if you want the hero to move you put 0xFF.
So in our case, we'll be make someone come to the hero, three spaces left, and then take him three spaces back. Though remember, there movements are not always the same, they can vary.
So, lets get started.
You put an applymovement where you want the commands to happen, first we need a message to say:
Don't go out there!
There are wild Pokemon.
That requires one \n. ;P
The movements will run when that happens.
Here is a list of movements for FR.
Spoiler:
Code:
' Specials
0x4A ' Face player
0x4B ' Face against player
0x60 ' Disappear (removes the sprite, but the person can still be interacted with)
0x62 ' "!" pops up
0x63 ' "?" pops up
0x64 ' "X" pops up (vs-seeker cant fight)
0x65 ' "!!" pops up (vs-seeker can fight)
0x66 ' "" pops up
' walking
0x01 ' step Up0
0x02 ' step Left0
0x03 ' step Right0
0x04 ' step Down0
0x08 ' step down1
0x09 ' step up1
0x0A ' step left1
0x0B ' step right1
0x0C ' step down2
0x0D ' step up2
0x0E ' step left2
0x0F ' step right2
0x10 ' step down3
0x11 ' step up3
0x12 ' step left3
0x13 ' step right3
0x1D ' step down4
0x1E ' step up4
0x1F ' step left4
0x20 ' step right4
' jump in place looking where it says
0x52 ' jump0 down
0x53 ' jump0 up
0x54 ' jump0 left
0x55 ' jump0 right
' jump in place looking in the order it says
0x56 ' jump0 down/up
0x57 ' jump0 up/down
0x58 ' jump0 left/right
0x59 ' jump0 right/left
' Jump Direction
0x4E ' jump1 down
0x4F ' jump1 up
0x50 ' jump1 left
0x51 ' jump1 right
0x14 ' jump2 down
0x15 ' jump2 up
0x16 ' jump2 left
0x17 ' jump2 right
0x46 ' jumpLookingLeft1 down
0x47 ' jumpLookingDown1 up (jump backwards)
0x48 ' jumpLookingUp1 left
0x49 ' jumpLookingLeft right (jump backwards)
And here is a list for Ruby.
Spoiler:
Code:
' Other Actions
0x54 ' Hide
0x55 ' Show
0x56 ' Alert
0x57 ' Question
0x58 ' Love
0x5A ' Pokeball
0x10 ' Delay0
0x11 ' Delay1
0x12 ' Delay2
0x13 ' Delay3
0x14 ' Delay4
' Step
0x00 ' Down0
0x01 ' Up0
0x02 ' Left0
0x03 ' Right0
0x04 ' Down1
0x05 ' Up1
0x06 ' Left1
0x07 ' Right1
0x08 ' Down2
0x09 ' Up2
0x0A ' Left2
0x0B ' Right2
0x17 ' Left3
0x18 ' Right3
0x15 ' Down3
0x16 ' Up3
0x2D ' Down4
0x2E ' Up4
0x2F ' Left4
0x30 ' Right4
' Running
0x35 ' RunDown
0x36 ' RunUp
0x37 ' RunLeft
0x38 ' RunRight
0x7E ' RunDown2
0x7F ' RunUp2
0x80 ' RunLeft2
0x81 ' RunRight2
' Hop & Jump
0x0C ' HopTileDown
0x0D ' HopTileUp
0x0E ' HopTileLeft
0x0F ' HopTileRight
0x3A ' HighHopDown
0x3B ' HighHopUp
0x3C ' HighHopLeft
0x3D ' HighHopRight
0x46 ' HopDown
0x47 ' HopUp
0x48 ' HopLeft
0x49 ' HopRight
0x4A ' HopDown180
0x4B ' HopUp180
0x4C ' HopLeft180
0x4D ' HopRight180
0x42 ' JumpDown
0x43 ' JumpUp
0x44 ' JumpLeft
0x45 ' JumpRight
' Straf (May have glitches)
0x19 ' StDown1
0x1A ' StUp1
0x1B ' StLeft1
0x1C ' StRight1
0x1D ' StDown2
0x1E ' StUp2
0x1F ' StLeft2
0x20 ' StRight2
0x21 ' StDown3
0x22 ' StUp3
0x23 ' StLeft3
0x24 ' StRight3
0x25 ' StDown4
0x26 ' StUp4
0x27 ' StLeft4
0x28 ' StRight4
0x6A ' StDown1i
0x6B ' StUp1i
0x6C ' StLeft1i
0x6D ' StRight1i
0x6E ' StDown5
0x6F ' StUp5
0x70 ' StLeft5
0x71 ' StRight5
'Special
0x31 ' SlideFaceDown
0x32 ' SlideFaceUp
0x33 ' SlideFaceLeft
0x34 ' SlideFaceRight
0x86 ' IceSlideDown
0x87 ' IceSlideUp
0x88 ' IceSlideLeft
0x89 ' IceSlideRight
' Glitchy
0x3E ' Up0A
0x3F ' Down0A
0x4E ' Down0B
0x63 ' Up0B
0x65 ' Right0A
0x66 ' RunStopLoopDown
0x67 ' RunStopLoopUp
0x68 ' RunStopLoopLeft
0x69 ' RunStopLoopRight
0x72 ' Down15
0x73 ' Up15
0x74 ' Left15
0x75 ' Right15
0x7A ' Down6
0x7B ' Up6
0x7C ' Left6
0x7D ' Right6
0x82 ' Down7
0x83 ' Up7
0x84 ' Left7
0x85 ' Right7
' EXIT
0xFE
Alright, we'll do the script in my prefered format, which is having a new paragraph, It's sometimes easier to use it like that, though other tutorials explain different ways.
First we need a #org $begin, lock and faceplayer. Then follows our message.
Code:
#org $begin
lock
message $dontgoout
$dontgoout 1 =Don't go out there!\nThere are wild POKEMON!
boxset 6
Now we want our movement commands to run here, so we add our applymovement command, which in our case is moving people number 1.
Code:
#org $begin
lock
message $dontgoout
$dontgoout 1 =Don't go out there!\nThere are wild POKEMON!
boxset 6
applymovement 0x1 $coming
pausemove 0
Now we need to add our movements, but I use a different paragraph for the movements, though it doesn't matter. PokeScript compiles it the same.
Code:
#org $begin
lock
faceplayer
message $dontgoout
$dontgoout 1 =Don't go out there!\nThere are wild POKEMON!
boxset 6
applymovement 0x1 $coming
pausemove 0
#org $coming
#raw 0x0A
#raw 0x0A
#raw 0x0A
#raw 0xFE
We need 0xFE after all movement scripts, to tell PokeScript the movements don't need to run anymore.
Now we need another message and a follow me script.
For followme, you add two applymovements and then pausemove 0 at the end of them.
BUT!, Since person 0x1 is moving right three, the hero only can move right two times.
So here is our finished product.
Code:
#org $begin
lock
faceplayer
message $dontgoout
$dontgoout 1 =Don't go out there!\nThere are wild POKEMON!
boxset 6
applymovement 0x1 $coming
pausemove 0
message $comeback
$comeback 1 =Come with me!
boxset 6
applymovement 0x1 $followone
applymovement 0xFF $followtwo
pausemove 0
message $hereyago
$hereyago 1 =Don't go out..\nRemember!
boxset 6
release
end
#org $coming
#raw 0x0A
#raw 0x0A
#raw 0x0A
#raw 0xFE
#org $followone
#raw 0x0B
#raw 0x0B
#raw 0x0B
#raw 0xFE
#org $followtwo
#raw 0x0B
#raw 0x0B
#raw 0xFE
Hopefully you understand that. I only wanted to make this tutorial basic, so it might be a little simple.
But like I said, i'll make it more advanced when I finish the whole thing.
Last edited: