• 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?".
  • 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
    • 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 Apr 2, 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