• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Forum moderator applications are now open! Click here for details.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Scripting Tutorial - PokeScript

Status
Not open for further replies.

/Circa

a face in the clouds.
881
Posts
16
Years
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.

* 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!​

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.​

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:

And here is a list for Ruby.

Spoiler:

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:
92
Posts
16
Years
Awesome, but could you show me how to put script into the rom (with screenies)?

And don't ask why I need screens, I just have to see how you do it...
 

Binary

え?
3,977
Posts
16
Years
  • Age 29
  • Seen Apr 7, 2014
Nice work, pretty basic though, Its abit easier(well I thougt) than the other tutorials,
can't wait for the longer scripts!

~C3LEBI
 

/Circa

a face in the clouds.
881
Posts
16
Years
Thanks for the comments!
Sorry if you cant understand all of it, i'm foreign.

Anyways, added another tutorial.
I want to make it basic, but i'll make it more advanced when I finish it.
 

ShyRayq

Unprofessional Unprofessional
1,856
Posts
16
Years
  • Seen Mar 26, 2024
hey the movement script is wrong You Don't Put Lock and Faceplayer in a movement script
 

/Circa

a face in the clouds.
881
Posts
16
Years
I forgot about the faceplayer x]
Though, if you talk to someone and then you move, then you need lock and faceplayer, otherwise he would talk to you facing some other direction..

And actually, there are no errors, I compiled it and it worked just as I wrote it :S.
 

/Circa

a face in the clouds.
881
Posts
16
Years
Alright, thanks thethethethe.

Someone asked me today, how would they make one event cancel out two, it is actually fairly simple, such as in a starter script.

When you receive the Pokemon you add a setflag, the same for all three.
But for the one you get you add a raw 53 to remove it, so it cant be interacted with.

So in a starter script we would add a question, if you wanted the Pokemon, and then send it to a pointer if they want it. They would receive the Pokemon and the Pokeball would dissapear, (Using #raw 0x53)

Then we would add a setflag. The script would be exactly the same for all three starters, just a different Pokemon Number and Pokemon name in the textbox. So infact, it is fairly simple, i'll write an example.

This will be for Pokemon Yellow, you choose a Pikachu or an Eevee.

Code:
#org $begin
lock
faceplayer
checkflag 0x200
if b_true goto $alreadygot
message $wantpikachu
$wantpikachu 1 =Would you like this Pikachu?
boxset 5
compare LASTRESULT 1
if 1 goto $getpika
message $toobad
$toobad 1 =Too bad,\nit would be a good choice.
boxset 6
release
end

#org $getpika
lock
givepokemon 0x19 0x5 0x0
message $received
$received 1 =\v\h01 Received a PIKACHU!
boxset 6
#raw 0x53
#raw 0x<PEOPLE NUMBER>
#raw 0x00
setflag 0x200
release
end

#org $alreadygot
lock
faceplayer
message $got
$got 1 =You already got a Pokemon!
boxset 6
release
end

When we add #raw 0x53 that person can no longer be interacted with.
Be aware though, I wrote that script in a hurry.

Now you can use that script as a base for the others.
Just change the Pokemon number and your done.
 

shane2243

Dragonite Lover
94
Posts
16
Years
where can i download pkmnadv? ive googled it and i cant find it, also, i do this tutorial and i also did the irish witch one, and when i try to insert it into A-map and play it, my rom crashes, im using pokemon ruby and im using the code next to the $begin.


the code i insert into A-map is $D01000


i put that into the script offset box.


is says "message1. $begin (D01000)"

message1 being what i saved the file as.


what am i doing wrong?
 

cooley

///Keepin' it simple
1,148
Posts
17
Years
Ok, On your GiveItem scripts, You said "So We'll add another Lock and faceplayer"

You don't need another lock or faceplayer, because It is already in effect until You end the script. Get it?

That is just one of the things I noticed. Good tutorial, wish this was here before the "Pokescript Tutorials" thread was up. Good luck completing the tutorial.
 

hayvan999

Psychic power!
47
Posts
16
Years
  • Seen Aug 2, 2011
ok i rlly need help with the yes and no boxes plz! ok i put the thing like its shown in tutorial:

#org $begin
lock
faceplayer
message $blah
$blah 1 = hello
boxset 5
compare LASTRESULT 1
if 1 goto $yes
message $no
$no 1 = no way
boxset 6
release
end
#org $yes
= yes way


and when i play the game only the no button works! can some1 tell me what im doing wrong with the yes button and can u show me how to fix it?
 

derv1205

Trade/Battle/Breed/Clone (X,B2,D)
267
Posts
16
Years
ok i rlly need help with the yes and no boxes plz! ok i put the thing like its shown in tutorial:

#org $begin
lock
faceplayer
message $blah
$blah 1 = hello
boxset 5
compare LASTRESULT 1
if 1 goto $yes
message $no
$no 1 = no way
boxset 6
release
end
#org $yes
= yes way


and when i play the game only the no button works! can some1 tell me what im doing wrong with the yes button and can u show me how to fix it?
Uhmm, put this:
#org $begin
lock
faceplayer
message $blah
$blah 1 = hello
boxset 5
compare LASTRESULT 1
if 1 goto $yes
message $no
$no 1 = no way
boxset 6
release
end

#org $yes
message $yeah
$yeah 1 = yes way
boxset 6
release
end

That should work, is because first, in the "YES" you didnt put the message, also
you forget about the boxset 6, well, you forget almos everything in the "YES" xD
 

hayvan999

Psychic power!
47
Posts
16
Years
  • Seen Aug 2, 2011
Uhmm, put this:


That should work, is because first, in the "YES" you didnt put the message, also
you forget about the boxset 6, well, you forget almos everything in the "YES" xD


thank you very muc!! it realy worked :D
 
Status
Not open for further replies.
Back
Top