The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > Creative Discussions > Emulation & ROM Hacking > Tutorials
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

Tutorials Looking for a guide to help you out? Then you're in the right place! We've got everything you need, ranging from Mapping to Music!
New threads in this forum are to be approved by a moderator before they are displayed. The thread revival limit does not apply here.


Reply
 
Thread Tools
  #1    
Old September 22nd, 2009, 06:22 PM
Full Metal's Avatar
Full Metal
C(++) Developer.
 
Join Date: Jan 2008
Location: In my mind.
Age: 18
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to Full Metal
Intro.

Scripting is just sticking one command ontop of another.
Each command does something different.
Usually, just reading the command name tells you what it does.
Every script is stored at an "offset"
An offset is just a number representing a place in your ROM
So if you store your script in 0x800000, then that's your offset
In order to store your script you must know where to put it.
Well...I usually cheat and let PKSV decide for me xD
This is called DYNAMIC offsets, and for this tut, we will only use these
Dynamic offsets work like this
[Commands start now]
#dynamic OFFSET
[No more commands]
OFFSET is just where PKSV starts looking for a place to store your script
Usually, I use "#dynamic 0x740000"
That is where a good chunk of free space begins, so we hackers like to use it
Comments (stuff that PKSV will ignore) are allowed after a single spoiler character ( ' )
eg
uncommmentedd and creating bugs 'Commented, but not making bugs
or
lock 'Locks our player
faceplayer 'look at player
PKSV can be found HERE!


Hello World!

A script always starts somewhere
So we'll declare a script like this

#dynamic 0x740000
#org @start
'pretty simple

"#org @start" is declaring a dynamic label.
the "@start" part of your script is dynamically placed in your ROM based on the offset PKSV
found when you used "#dynamic 0x740000"
This is how you store an offset to anything
if you call a message the syntax looks like this
Spoiler:
[...]
message @textlabel
[...]

#org @textlabel
= Text...what else? xD

cripts, Text, Movements, and Pokemart data are all called in the above manner

Okay, whenever you talk to someone you don't want them wondering all over the place right?
Wouldn't it be nice to lock them down in chains?
Well now you can! With this awesome command your players will never move again!
What is the command you ask? Simple!
"lock"
But that's not all, you also want the speaker to look at the talker right?
This one is simple to!
“faceplayer”
that's it!
Now there are two parts to displaying a message
Loading the message
And showing it
“message @textlabel” will load the message stored in your textlabel
“callstd MSG_NORMAL” will show the message just loaded in normal format
So now you've shown a message, great!
But..your player can't move anymore!, atleast, not yet anyways
Before the player can move again, he/she has to be “released” from the “lock” we put on them
the command to do this is
“release”
and finally, to prevent a crash of your ROM we will put
“end”
“end” is a necessity to your script, just always keep it there and you'll be good to go!

So to put it all together
Spoiler:

#dynamic 0x740000 'Start looking at 0x740000
#org @start 'This is our start label for our script
lock ' Keep player from moving
faceplayer ' Make the speaker face the player
message @offset1 'load the text in the offset1 label into memory
callstd MSG_NORMAL 'show the message in memory
release 'Let our player move again
end 'End the @start label of our script

#org @offset1 'This is our text label
= So you got it to work eh?\nGood Job! 'I'll explain this in just a second I promise

There are problems with text being to long.
The messagebox can hold a max of about 35 characters per line, and 2 lines per “box”
So there are “symbols” to get around this

\n The text following will be in a new line
\l scrolls the bottom line up, and adds the following text in a new line (use only after \n)
\p starts a new box
\v\h01 Players name
\v\h02 buffer 0
\v\h03 buffer 1
\v\h04 buffer 2
\v\h05 buffer 3
\v\h06 Rivals name

which means
So you got it to work eh?\nGood Job! Would display as

So you got it to work eh?
Good Job!


Message-Box.

In order to variate your message you just have to change a single command
callstd 2 This will rid you of needing a “lock” , a “faceplayer” , or a “release”
Spoiler:

#dynamic 0x740000
#org @main
message @text
callstd 2 'Or 0x2, 0x just means it's in hex, without it use decimal numbers
end
#org @text
= Text

As opposed to...
#dynamic 0x740000
#org @main
lock
faceplayer
message @text
callstd MSG_NORMAL
release
end
#org @text
= Text

callstd 3 commonly used for signs
nothing special, displays the message and thats it
AKA MSG_SIGN

callstd 4 ensures that the message won't go away until the command “closemsg” is called
Spoiler:

message @txt
callstd 4 'Could also use MSG_NOCLOSE....
[…]
closeonkeypress
callstsd 5 (AKA MSG_YESNO)
displays your message and a yes/no dialog
to find out what the player pushed
add the following
#dynamic 0x740000
#org @main
lock
faceplayer
message @question
callstd MSG_YESNO
if 0x1 jump @pushy
jump @pushn

#org @pushy
[…]' Do stuff if they pushed yes
release
end

#org @pushn
[...]'Do stuff if they pushed no
release
end

2 new commands were introduced here
jump- continues script somewhere else
jump also has a similar, call, call is used to go to a script, but still comeback (using the command “return” instead of “end”)

if (value) (command) (label)

callstd MSG_YESNO
if 0x1 jump @pushy 'This will jump to pushy if the value returned from yes/no box is 1
jump @pushno

since we aren't using “Call” there is no need for an “end” command in our main script, instead place the end command in the places where the script would actually end (in this case it is pushn and pushy) Also, since the script would continue at pushy if the user pushed yes, then there is no need to waste space with another if statement. Instead, just use “jump @pushno” since you know the only other possibility is that the user pushed no.


Giving Things.

In this lesson we will learn how to
give AND take items
give pokemon
give eggs

the commands for each are simple
giving a pokemon:
addpokemon PokemonName (level) itemname (0) (0) (0)
example:
addpokemon BULBASAUR 25 00 0 0 0'Gives a level twenty five bulbasaur, not holding 'an item
addpokemon PIKACHU 25 LIGHTBALL 0 0 0 'Gives a level 25 pikachu holding a 'lightball
just always ALWAYS ALLLLLWWAAAYYSS remember to add three '0's

giving an item:
additem itemname (amount)
example:
additem POKEBALL 50 'Gives 50 pokeballs to the player
giving an egg:
giveegg PokemonName
example:
giveegg Pichu 'Gives us a pichu egg


Flags.

flags are amazingly useful, the equivalent of BOOLEAN values in C/C++
They allow you to do an event ONLY once, do it again when something happens, etc
This time I'll start with an example first
Spoiler:
#dynamic 0x740000
#org @main
lock
faceplayer
checkflag 0x200
if 0x1 jump @haveit
message @want
callstd MSG_YESNO
if 0x1 jump @pushedyes
jump @pushedno

#org @haveit
message @howsit
callstd MSG_NORMAL
release
end

#org @pushedyes
setflag 0x200
giveegg PICHU
message @herego
callstd MSG_NORMAL
release
end

#org @pushedno
message @dontwant
callstd MSG_NORMAL
release
end

#org @want
= Hey, do you want this Pichu egg?

#org @howsit
= Here you go!\nPlease raise it well.

#org @dontwant
= Oh, ok. Maybe someone else will take it.

Setflag – This will make checkflag return 1
Clearflag – This will make checkflag return 0
Checkflag-- This will compare a flag for it being raised,or lowered. Afterwards you want to add “if 0x1 [jump/call] @[scriptlabel]”


Variables.

The pokemon games have lots of spots in the GBA memory to store numeric values in. These are called “variables”

setvar 0x[varnumber] 0x[value] –That sets the [varnumber] to be [value]
subtractvar 0x[varnumber] 0x[value] – Subtracts [value] from [varnumber] variable
addvar 0x[varnumber] 0x[value] – Adds [value] to [varnumber] variable
compare 0x[varnumber] 0x[value] – Returns 1 if [varnumber] is set to [value] again, useage of the if statement is used
compare 0x8000 0x3
if 0x1 [jump/call] [label]
resetvars – Resets the variables 0x8000 through 0x8001
storevar 0x[buffernumber (\v\h02-\v\h05)] 0x[varnumber]
This can be used in loops as in this example
Spoiler:
#dynamic 0x740000
#org @main
lock
faceplayer
setvar 0x4000 0x20
setvar 0x4001 0x0
jump @loop

#org @loop
subtractvar 0x4000 0x4001
storevar 0x0 0x4000
message @reps
callstd MSG_NORMAL
addvar 0x4001 0x1
compare 0x4001 0x20
if 0x1 jump @end
jump @loop

#org @end
release
end

#org @reps
= Only \v\h02 loops to go!

There is a new command introduced here again
storevar 0x[buffernumber] 0x[varnumber]
If you use 0x0 for buffernumber the variable is stored in \v\h02, 0x1 means \v\h03, etc until you get to \v\h05 and 0x3

While the above method works, there is a new feature in PKSV that makes everything much more efficient.
Spoiler:
#dynamic 0x740000

#org @main
lockall
setvar 0x8010 0x5
message @start
callstd MSG_NORMAL
fadesong 265
:loop
pause 0x50
compare 0x8010 0x1
if == jump @if1
storevar 0x1 0x8010
message @loopmsg
callstd MSG_NORMAL
:skip
subtractvar 0x8010 0x1
compare 0x8010 0x0
if == jump:-loop
jump :loop
:-loop

message @done
callstd MSG_NORMAL
fadedefault
release
end

#org @if1
message @crud
callstd MSG_NORMAL
jump :skip

#org @start
= \v\h01 turned on the SNES

#org @loopmsg
= \v\h03 lives left

#org @crud
= Oh crud, I only have one live left!

#org @done
= \v\h01 got a gameover\ntime to quit!

There are now two types of labels for PKSV. There is one that works like we've discussed so far. These are the '@' labels we've been using.There is also another way.
A ' : ' label is used within an '@' label. It is simply a way to start a script from somewhere other than the beginning, and you can use them just like you would an '@' label.
Spoiler:
#org @mainoffset
lock ' this is one byte
faceplayer ' this is another byte
:label ' this label is at the mainoffset+2 bytes, so if you jump to :label, then it will skip
' Lock and faceplayer commands, but doesn't take up space itself.

There were also two new commands from the above example
fadesong [song number] – fades the current song that's playing into the sappy song number
fadedefault – Fades the song back to the default song for the map


Misc.

there are also more things to store in a buffer
they are always preceded with “storeZZZ” where ZZZ can be replaced with attack,boxname,comp,firstpokemon,furniture,item,it ems,pokemon,pokemonvar,or text
the arguments are the same for storevar and can be called just the same way, through messages.

Waitbutton – Continues the script after the user pushes a button

lasttrainerbattle – Initiates the last battle the player taken.


Getplayerpos 0x[varx] 0x[vary] – stores the players x position and y position in the corresponding variables

showpokepic POKEMONNAME xpos ypos– shows the pokemon sprite at x,y position

hidepokepic – The sprite displayed w/ above command will not hide until this command used

random ZZ – Generates a random number between 0 and ZZ then puts it in LASTRESULT or 0x800D

special XX – This is for a bunch of commands that must be used through this one
Here is a list of specials for you (they are different for each game)
Spoiler:
FireRed / LeafGreen

special 0x0 'Heal Pokémon
special 0x29 'Choose three Pokemon for something
special 0x3C 'Access PC
special 0x8D 'Person says what said the last person you talked to
special 0x8E 'Reload Map
special 0x9D 'Old Man Catches Weedle
special 0x9F 'Choose Pokemon
special 0xAB 'FR/LG/R/S 'Tree' Data Called
special 0x108 'Kanto dex document
special 0x10F 'Game Restart
special 0x110 'Hall of Fame and Credits
special 0x111 'Elevator animation
special 0x113 'FR/LG/R/S screen scrolling
special 0x114 'FR/LG/R/S stop screen scrolling
special 0x132 'Shows floors
special 0x136 'Horizontal Earthquake
special 0x137 'Glitched Battle
special 0x138 'Battle
special 0x139 'Battle
special 0x13D 'Flash
special 0x13F 'Warp to first warp of the map
special 0x156 'Ghost
special 0x157 'Bike
special 0x161 'Surf
special 0x163 'Store Pokemon to Dex
special 0x166 'Nickname
special 0x16F 'Fire Red/Leaf Green National Dex
special 0x173 'Add to fame Checker?
special 0x17B 'Sea gallop Animation
special 0x18B 'Displays an image. Only known images are Kabuotps and Aerodactyl fossils.
special 0x18C 'Closes image shown with special 0x18B
special 0x191 'S.S. Anne animation

Ruby / Sapphire
0 = Heals Party Pokémon
2 = Warp sound + FadeBlack
3 = Hero Uses Last Used Warp
8 = Make new Secret Base/Enter Secret Base
9 = Come out of Coliseum
A = Come out of Coliseum
E = Hero Uses Secret Base PC
F = Something to do with registry in a secret base
11 = Something to do with Secret Base battling
18 = Move Player to X01 Y03
19 = Something to do with secret base battling
1A = Turning off PC
1B = Mixing Records
1F = checks whether game is linked
20 = Please wait followed by wild battle (Linkup) (VS in coliseum)
21 = "Please wait link stand by" (Link Feature)
22 = "Please wait link stand by" (Link Feature)
23 = Call Save Menu
29 = Select 3 Pokémon [maybe for Battle tower?]
2A = Black Screen
2B = Something to do with Berry Growth
2C = Opens up berry pocket (Used in berry blender script)
2D = Something to do with Planted berry (Used with CmdC3)
2E = Something to do with Berry Growth
2F = Something to do with Berry Growth
30 = Maybe activates the watered flag (used first, then special0x5E)
34 = Open Textbox (Stays Open)
35 = Open Textbox (Stays Open)
3B = Trainer battle
3C = Access Lanette's PC (BOX System)
5D = Call Save Menu which keeps looping.
5E = Watering of Berry (used first, then special0x5E)
5F = You fill your trainer's profile/interview
60 = Shows what you put for trainer's Profile/interview
67 = Strange Message with sound (could be Unown speech)
6C = Trainer Tales (Link Feature)
6D = Choose Tale
75 = Secret Base Decoration Item Menu
7C = Something to do with renaming
7D = Something to do with renaming
83 = Poké Slots In Use (Store Command)
8A = Crashes
8D = Displays the last message
8E = Used with Setmaptile to make it work
91 = setmaptile #206 at X8 YB
94 = Something to do with Timed events
98 = Cable Car Ride Cutscene
9A = Male Clock
9B = View Clock
9C = Choose Starters From Birch's Bag
9D = Wally Catching Ralts
9E = Nickname's first Pokémon in Party
9F = Choose a Pokémon in the party (For Nickname)
A0 = ?
A1 = Starts Berry Blender
A2 = Slot game.
AF = Gabby and TV's "In serach of Trainers"
BC = Store a Pokémon For Day Care
BD = Take back Pokémon From Day Care
BE = Get Breeding Growth (store)
BF = Get Price
C0 = Something to do with Day Cay pay (store)
C2 = Egg hatch (1st Pokémon in party)
C4 = Battle results For The Coliseum
C6 = Something to do with DayCare cost
C8 = Move to the last sethealingplace/flightspot after some time (faint!!) (Fainted Event)
D0 = Opens PokéBlock case
D1 = Stores a random value to LASTRESULT (If the value matches mirage Island will show)
D4 = Used Before Special 0xF9/FA
D5 = Catch Pokémon tip, boxset 4 (use closeonkeypress)
D6 = tile change (in the middle of screen?)(For PC)
D7 = tile change (flower, in the middle of screen?)
D9 = Sets some sort of tiles
DA = Sets some sort of tiles
DB = Choose Pokémon then Fadescreen
DC = Opens the First Pokémon's Moves
E0 = Move tutoring For 1st Pokémon in Party
E3 = CheckBike (store command) 00 = nobike
E4 = Set Cycling Road Results (time, collisions)
E6 = First Pokémon Happy (StoreResult, 4 = Happy),
EC = Verse a high level trainer, level 100/Random Battle?
F1 = Restarts Game
F5 = choose 3 Pokémon(Battle tower) F6 = ?
F9 = Item Storage Mailbox Decoration
FA = Item Storage - No Decoration
FB = World Map
FE = Used for In-Game Trades - Trades 1st trade Pokémon "Makit" to 1st Pokémon in Party
103 = Berry Blender results
106 = PC (menu opens and disappears real fast)
107 = Hall of Fame, through PC (Will be corrupt if there's no data) (reads)
108 = Hoenn Pokédex diploma
10E = Boat sailing for a long time, like Fire Red's speed boat (+Return)
10F = Restarts
110 = Hall of Fame "Credits" (Saves data)
111 = Elevator animation<
112 = Displays Flutes
113 = Freezes The Screen/Camera
114 = Releases The Screen/Camera
119 = Groudon's Orb followed by earthquake
11B = Battel Tower Results
12C = Player Goes to last warp/flightspot used
12D = Makes special 0x9d work properly
130 = Is PC Box Full (store command) (0 = full)
131 = Earthquake for few seconds "Earthquake (stops)"
132 = Show Floors & Which Floor you're on
134 = CheckPokerus [0001 = Pokerus]
136 = Weird Quake
137 = Lava Battle/with Groudon
138 = Land Battle/with legendary
139 = Land Battle2/different song/battle with ledgendary - used with wildbattle
13B = Small screen shake
13D = Light/Flash
13E = Player uses the warp last used (no sound)
13F = falls in first warp of the first map
140 = Pokémon Image (UnLZ 199/200)
142 = Ecard battle Initiate (used in Levelscript at mossdeep, Oldman's house)
143 = Battle ?(perhaps used for wildbattle)
147 = Check Pokemon
14C = Turns Off Background/Map music

Emerald
special 0x0 ' Heal Pokémon
special 0x116' screen scrolling (control with 7F with move commands)
special 0x117' stop screen scrolling (return to original position before using this)
special 0x1F3' national dex

For Movements it's almost like movements
PKSV comes with a movement planner which makes everything much much easier
syntax:
applymovement 0x[person event number] @label

Then add “#org @movement label”
Next make your movement script and copy it to your clipboard now just make a new line and paste the data.


Show me the Money!

These are a few commands used to give,take,check for money,and show money
Giveing Money
Command: givemoney ZZ 0
Where ZZ is the amount of money to give (must be less than one million)
example:
[...]
givemoney 200 0 'Gives 200 pokedollars to the player
[...]

Takeing Money
command: paymoney ZZ 0
where ZZ is the amount of money to be taken from the player(must be less than or equal to the amount of money the player has)
example:
[...]
paymoney 200 0 'Makes player loose 200 pokedollars
[...]

Checking money
command: checkmoney ZZ 0
where ZZ is the amount of money to be looked for, if the player has this much money, LASTRESULT is set to 1, otherwise it is 0
example:
[...]
checkmoney 200 0 'Checks if the player has 200 pokedollars, sets LASTRESULT to 1 if he/she does
compare LASTRESULT 0x1 'Compares LASTRESULT to containing 1
if 0x1 jump @continue 'Jumps to #org @continue if LASTRESULT had one in it
jump @notenough 'Jumps to the script saying that the player did not have enough money
[...]

Showing Money
A little more complex than the other money commands
Showing Money
command: showmoney [ZZ] [YY] 0
Where ZZ is the x coordinates and YY is the y coordinates
example:
[...]
showmoney 10 10 0 'Displays money at 10,10 on the screen
[...]
However if you take money, or give it, the money that the player sees needs to be updated to avoid confusion
command: updatemoney [ZZ] [YY] 0
Where [zz] and [yy] are the same as the coordinates used in your show money

Also, you will want to remove the money from the screen before your script ends.
command: hidemoney [zz] [yy] 0
Where [zz] and [yy] are the same as the coordinates used in your show money
example:
[...]
showmoney 10 10 0
paymoney 200 0
updatemoney 10 10 0
hidemoney
[...]

You really shouldn't use any of these commands without using them all, with the exception of updatemoney maybe...
An example using them all
[quote]
#org @main
'-----------------------------------
lock
faceplayer
checkmoney 0x96 0x0 0x0
compare LASTRESULT 0x1
if == jump @canhave ' Equal To
jump @canthave

#org @canhave
'-----------------------------------
showmoney 0xA0A 0x0
msgbox @hy ' Hey \v\h01, do you w...
callstd MSG_YESNO ' Yes/No message
compare LASTRESULT YES
if == jump @want ' Equal To
jump @notwant

#org @want
'-----------------------------------
paymoney 0x96 0x0 0x0
additem SUPERPOTION 1
msgbox @ty ' Thank you for your b...
callstd MSG_LOCK ' Built-in lock command
hidemoney 0xA 0xA
release
end

#org @canthave
'-----------------------------------
msgbox @he ' Hello \v\h01.
callstd MSG_LOCK ' Built-in lock command
release
end

#org @notwant
'-----------------------------------
msgbox @mb ' My business is alway...
callstd MSG_LOCK ' Built-in lock command
hidemoney 0xA 0xA
release
end


#org @hy
= Hey \v\h01, do you want a\nA super potion for 150 ?

#org @ty
= Thank you for your business.

#org @he
= Hello \v\h01.

#org @mb
= My business is always open\nto those who can afford it.


Weather!
These are simple commands to change the weather in outdoors maps.
SetWeather and doweather work together
setweather 0x3 'Sets the weather to do to 3 for rain
doweather 'Does the weather we set with setweather
resetweather 'Undoes the effects of setweather and doweather
You can find a list of weathers in a-map under the header tab
This should be enough to get you started, I might post more sooner, but not until I get suggestions to add, or PKSV has more features needing explanations.

Also, just so you know
“#dynamic 0x740000” can be “#dyn 0x740000” also, the offset does NOT have to be 0x740000 it can be any offset you want.


Level Scripts.

There are two types of level scripts....
.....Type 1
........The kind that is under the events tab (aka trap script)
.....Type 2
........The kind that is under the header tab (aka ...level scripts?)
How to use type 1
1) Create a script event in a-map events tab (the green s kind...)
2) Assign a variable into the correct box
3) Assign the value to be whatever that variable isn't (after the level script is used the variable is assigned this value...)
4) Assign the "unkown" to 3
5) Compile your script
6) Assign the script offset to the proper box
How to use type 2
These are a little bit more challenging and i'll update again when i can explain it


Sample Scripts.


Snes Script
Description: Displays "[player] turned on the snes!" then plays battle music, followed by a "player has X lives left" where x is a number which is automatically decremented. Then when the player has no more lives left "Game over time to go"
Spoiler:
#dynamic 0x740000

#org @main
lockall
setvar 0x8010 0x5
message @start
callstd MSG_NORMAL
fadesong 265
:loop
pause 0x50
compare 0x8010 0x1
if == jump @if1
storevar 0x1 0x8010
message @loopmsg
callstd MSG_NORMAL
:skip
subtractvar 0x8010 0x1
compare 0x8010 0x0
if == jump:-loop
jump :loop
:-loop

message @done
callstd MSG_NORMAL
fadedefault
release
end

#org @if1
message @crud
callstd MSG_NORMAL
jump :skip

#org @start
= \v\h01 turned on the SNES

#org @loopmsg
= \v\h03 lives left

#org @crud
= Oh crud, I only have one live left!

#org @done
= \v\h01 got a gameover\ntime to quit!

Credit: Full Metal

-Untitled-
Description:This only happens once,player looks left and up pops an excite icon, OW person w/ event id of 4 looks down and right,then player talks about not being late to get their first pokemon,then the other guy will run down 3 steps and dissapear. Please note that if you don't have your map set up as mryvn's then the script will look a little weird. So i reccomend that you also set the person id no to 8C3 (which makes them dissapear forever,i'll explain more on the next update) as well as adjust the movement and sprite placement to fit to your map (eg add more downs/change direction the other person runs)
Spoiler:
#dynamic 0x74000
#org @start
lockall
checkflag 0x8C3
if true jump :end
applymovement PLAYER @a1
applymovement 0x4 @a2' Where 0x4 is event # of whoever is talking to you
message @a3'
callstd MSG_NORMAL
applymovement 0x4 @a4' Where 0x4 is event # of whoever is talking to you
pauseevent 0x0
disappear 0x4' Where 0x4 is event # of whoever is talking to you
setflag 0x8C3
:end
releaseall
end

#org @a3
= \v\h06: Awesome weather right?\nLet's hurry up!\p Don't want to be late\n for out first Pokemon!

#org @a1
M look_left say_! end

#org @a2
M look_down look_right end

#org @a4
M run_down run_down run_down end

Credit: Mervyn

Eevee Script
Description: Give the player an Eevee!
Spoiler:
#dyn 0x740000
#org @start
lock
checkflag 0xABC
if 0x1 jump @geteevee
faceplayer
msgbox @eevee1
callstd MSG_NORMAL
release
end

#org @geteevee
faceplayer
checkflag 0xXYZ
if 0x1 jump @eevee2
msgbox @eevee3
callstd MSG_NORMAL
countpokemon
compare LASTRESULT 0x6
if == jump @toomany
addpokemon EEVEE 6 NONE 0x0 0x0 0x0
setflag 0xXYZ
storepokemon 0x0 EEVEE
message obtain
fanfare 0x101
showmsg
waitfanfare
waitbutton
faceplayer
msgbox @howseevee
callstd MSG_NORMAL
end

#org @eevee2
faceplayer
msgbox @howseevee
callstd MSG_NORMAL
end

#org @toomany
msgbox @toomuch
callstd MSG_NOCLOSE
release
end


#org @eevee1
=

#org @howseevee
=

#org @eevee3
=

#org @toomany
=

Credit: Undocumented.



__________________

★ full metal.

I like to push it,
and push it,
until my luck is over.

Last edited by Full Metal; February 26th, 2012 at 12:24 PM. Reason: Updated CSS. :)
Reply With Quote
  #2    
Old September 23rd, 2009, 09:02 AM
mervyn797
What? I'm right here. >D
 
Join Date: Mar 2009
Gender: Male
Nature: Careful
nice tut dude! keep up the good work!
Reply With Quote
  #3    
Old September 23rd, 2009, 11:49 AM
NarutoActor's Avatar
NarutoActor
The rocks cry out to me
 
Join Date: Jan 2009
Location: Brooklyn/Marlboro
Age: 20
Gender: Female
Nature: Bashful
Send a message via AIM to NarutoActor Send a message via Windows Live Messenger to NarutoActor
bravo I always liked pksv better than xse but sadly pksv isnt used that much by the better scripters and no WERE no tutorials for pksv this is the first good pksv tutorial good job I hope you add more :D
__________________
~There are those people who understand hex, F the rest
Reply With Quote
  #4    
Old September 24th, 2009, 12:10 PM
Full Metal's Avatar
Full Metal
C(++) Developer.
 
Join Date: Jan 2008
Location: In my mind.
Age: 18
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to Full Metal
Lolz, thanks for the comments, if you have any ideas for the tut just give them to me ok?
I think I might add money stuff next...
also, how was the tut?
Any improvements needed?
__________________

★ full metal.

I like to push it,
and push it,
until my luck is over.
Reply With Quote
  #5    
Old September 24th, 2009, 01:05 PM
SharpPoint's Avatar
SharpPoint
Suicune used Surf!
 
Join Date: Jul 2009
Location: Stalker...
Gender: Male
Nature: Adamant
Quote:
Originally Posted by The blob of blobs View Post
Any improvements needed?
You can organize the text better. Like make it more manageable and understandable.

But, since this is the first PKSV tutorial ever (I think), this tutorial is very good.
Reply With Quote
  #6    
Old September 24th, 2009, 02:42 PM
NarutoActor's Avatar
NarutoActor
The rocks cry out to me
 
Join Date: Jan 2009
Location: Brooklyn/Marlboro
Age: 20
Gender: Female
Nature: Bashful
Send a message via AIM to NarutoActor Send a message via Windows Live Messenger to NarutoActor
I like it :D I dont know what to sugestion because I look thow scripting tuorials that have something I dont know...the only thing herd of that I cant do but will love to learn is this
changing the overworld players sprite
(to be continued)
__________________
~There are those people who understand hex, F the rest
Reply With Quote
  #7    
Old September 24th, 2009, 02:48 PM
.Seth's Avatar
.Seth
.explorer.
 
Join Date: Jun 2008
Location: A capacitor in a power supply board.
Gender: Male
Nature: Quiet
It needs padding, I'll tell you that much.
It sounds like a nice tutorial, but I prefer XSE.
It's no fun when it's so easy.
Reply With Quote
  #8    
Old September 24th, 2009, 03:08 PM
NarutoActor's Avatar
NarutoActor
The rocks cry out to me
 
Join Date: Jan 2009
Location: Brooklyn/Marlboro
Age: 20
Gender: Female
Nature: Bashful
Send a message via AIM to NarutoActor Send a message via Windows Live Messenger to NarutoActor
oh I just remebered can you please explain flag skelitons
__________________
~There are those people who understand hex, F the rest

Last edited by NarutoActor; September 24th, 2009 at 04:38 PM.
Reply With Quote
  #9    
Old September 24th, 2009, 05:08 PM
Full Metal's Avatar
Full Metal
C(++) Developer.
 
Join Date: Jan 2008
Location: In my mind.
Age: 18
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to Full Metal
Like the ones in PKSV?
Well...not really in need of a tutorial, but lemme have a look
Ok well for flag skeleton numero uno
of course you have
lock and faceplayer
it first checks your flag
if it's set, it will go to #org @flag-2
otherwise it will continue and say the message in #org @flag-1-msg
really simple actually
Now for flag skeleton numero dos ( i'm learning spanish now xD)
hehe.. this is Score_Under using The new " : " label feature, this way the second message is said every time, but the first is said but once
Reread tut if you don't understand

and also,
@rairaiku- Did you mean css padding? Cuz i didn't use any css if i remember right...just a bunch of div's so that it would look a little less boring, but still look good with almost all the themes that PC has, i find it doesn't look half bad in PawLicious, but if you insist, i'll add some padding.

@sharppoint- as in text wrapping, or as in the format that the information was given?
*edit*
Would you all like me to provide a download to this in PDF/Word/Open Office format for download?
__________________

★ full metal.

I like to push it,
and push it,
until my luck is over.

Last edited by Full Metal; September 24th, 2009 at 05:13 PM.
Reply With Quote
  #10    
Old September 24th, 2009, 05:20 PM
NarutoActor's Avatar
NarutoActor
The rocks cry out to me
 
Join Date: Jan 2009
Location: Brooklyn/Marlboro
Age: 20
Gender: Female
Nature: Bashful
Send a message via AIM to NarutoActor Send a message via Windows Live Messenger to NarutoActor
okay I understand flag skeliton 1 but not 2 I check the tut still a little confused oh and do you know what I mean by changing the playes overworld have have seen it been done in a couple of hacks it was used for a couple of things like a digging mini game
__________________
~There are those people who understand hex, F the rest
Reply With Quote
  #11    
Old September 24th, 2009, 05:37 PM
Full Metal's Avatar
Full Metal
C(++) Developer.
 
Join Date: Jan 2008
Location: In my mind.
Age: 18
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to Full Metal
Hm...
how to put this

you have to understand this
dynamic labels are just a way to "rename" offsets
every command will take a few bytes
eg lock takes one byte,a pointer takes 4
A " : " label is inside of a dynamic label, but it is pointing at a further spot on the script
Eg,
At position 45 is lock
at position 46 is faceplayer
then if you have a ":" label it points to 45+2
so that way you can say
Jump :-label which will go to the #dynamic label, but it would skip the lock and faceplayer
:\ it's hard to explain, just think of it as a way to skip around in your script.
another example
#org @a is stored at 0x123456
lock
faceplayer
:-label is just a way for PKSV to say, jump to #org @a+2, which is where the :-label is at
If i can think of a way to explain better i will.
And as far as changeing the players ow...if i can get some better asm, i'll post that up here to, but, asm is a bit out of my range, if i'm walked through it, i can figure it out, but it's not very easy.
__________________

★ full metal.

I like to push it,
and push it,
until my luck is over.
Reply With Quote
  #12    
Old September 24th, 2009, 05:48 PM
NarutoActor's Avatar
NarutoActor
The rocks cry out to me
 
Join Date: Jan 2009
Location: Brooklyn/Marlboro
Age: 20
Gender: Female
Nature: Bashful
Send a message via AIM to NarutoActor Send a message via Windows Live Messenger to NarutoActor
thanks I understand the use of skeliton 2
on the overworld player changing pokepal was able to do it without asm he said something about load from pointer or data I ask him how to do it but he said its complicated and thats he is not a good teacher
__________________
~There are those people who understand hex, F the rest
Reply With Quote
  #13    
Old September 25th, 2009, 08:57 AM
score_under's Avatar
score_under
I program the *other* ASM.
 
Join Date: Aug 2005
Location: Hertfordshire, England
Age: 21
Nature: Rash
Quote:
Originally Posted by 非常に高いレベル View Post
It's no fun when it's so easy.
...what?
In what way do you mean it? You mean you prefer having to look up movement codes for yourself, you prefer writing scripts without features like code labels, and you don't like convenience?

I should send you a table of the commands and their hex value. That'd satisfy you
__________________
Plz not to PM me, I don't come here often enough. Email if you need me
Reply With Quote
  #14    
Old September 26th, 2009, 05:05 PM
Full Metal's Avatar
Full Metal
C(++) Developer.
 
Join Date: Jan 2008
Location: In my mind.
Age: 18
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to Full Metal
*bump*
The tuts been updated with weather and money
Next I'll add level scripts
__________________

★ full metal.

I like to push it,
and push it,
until my luck is over.
Reply With Quote
  #15    
Old September 26th, 2009, 05:09 PM
.Seth's Avatar
.Seth
.explorer.
 
Join Date: Jun 2008
Location: A capacitor in a power supply board.
Gender: Male
Nature: Quiet
Quote:
Originally Posted by score_under View Post
...what?
In what way do you mean it? You mean you prefer having to look up movement codes for yourself, you prefer writing scripts without features like code labels, and you don't like convenience?

I should send you a table of the commands and their hex value. That'd satisfy you ;)
Movement Codes aren't #raw's anymore, in XSE at least. :/
I'm not saying I don't like convenience, but it's a bit more fun when you're not guided through everything. *coughD/P/Ptcough*

Believe me, I think your script editor is wonderful. I just prefer XSE.
Reply With Quote
  #16    
Old September 27th, 2009, 11:39 AM
score_under's Avatar
score_under
I program the *other* ASM.
 
Join Date: Aug 2005
Location: Hertfordshire, England
Age: 21
Nature: Rash
Quote:
Originally Posted by 非常に高いレベル View Post
Movement Codes aren't #raw's anymore, in XSE at least. :/
Are you sure? My copy is 1.1.1, which still reports itself as latest, and it gives me this:
Code:
#org 0x165758
#raw 0x13 'Step Right (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x60 'Hide
#raw 0xFE 'End of Movements
__________________
Plz not to PM me, I don't come here often enough. Email if you need me
Reply With Quote
  #17    
Old October 11th, 2009, 10:30 PM
Maxzeroedge's Avatar
Maxzeroedge
Ready for simply anything
 
Join Date: Jun 2009
Location: In my home?
Gender: Male
Nature: Relaxed
Send a message via Yahoo to Maxzeroedge Send a message via Skype™ to Maxzeroedge
A dumb question......How do u insert the script into the ROM and btw.......Thanks for the tutorial....Its easy learning!!
__________________
Life is simply awesome
Reply With Quote
  #18    
Old October 12th, 2009, 05:13 PM
Full Metal's Avatar
Full Metal
C(++) Developer.
 
Join Date: Jan 2008
Location: In my mind.
Age: 18
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to Full Metal
just push "F9" or Rom->Compile
__________________

★ full metal.

I like to push it,
and push it,
until my luck is over.
Reply With Quote
  #19    
Old October 13th, 2009, 01:33 PM
NarutoActor's Avatar
NarutoActor
The rocks cry out to me
 
Join Date: Jan 2009
Location: Brooklyn/Marlboro
Age: 20
Gender: Female
Nature: Bashful
Send a message via AIM to NarutoActor Send a message via Windows Live Messenger to NarutoActor
or click the buttune that looks like a gear
__________________
~There are those people who understand hex, F the rest
Reply With Quote
  #20    
Old October 20th, 2009, 03:07 AM
mervyn797
What? I'm right here. >D
 
Join Date: Mar 2009
Gender: Male
Nature: Careful
how do i make sprites dissapear? i mean, if move them, what's the syntax?
Reply With Quote
  #21    
Old October 20th, 2009, 01:16 PM
score_under's Avatar
score_under
I program the *other* ASM.
 
Join Date: Aug 2005
Location: Hertfordshire, England
Age: 21
Nature: Rash
Quote:
Originally Posted by mervyn797 View Post
how do i make sprites dissapear?
Code:
disappear [sprite ID]
e.g.
Code:
disappear LASTTALKED
Quote:
Originally Posted by mervyn797 View Post
i mean, if move them, what's the syntax?
Code:
applymovement [sprite ID] [movement list]
e.g.
Code:
applymovement PLAYER @move
__________________
Plz not to PM me, I don't come here often enough. Email if you need me
Reply With Quote
  #22    
Old October 20th, 2009, 04:50 PM
Full Metal's Avatar
Full Metal
C(++) Developer.
 
Join Date: Jan 2008
Location: In my mind.
Age: 18
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to Full Metal
oooh yes, thats a good idea for an update
sorry, i wasn't watching thread >_<
i'll try 'n update it tonight with people dissapearing and level scripts
__________________

★ full metal.

I like to push it,
and push it,
until my luck is over.
Reply With Quote
  #23    
Old October 20th, 2009, 10:01 PM
Maxzeroedge's Avatar
Maxzeroedge
Ready for simply anything
 
Join Date: Jun 2009
Location: In my home?
Gender: Male
Nature: Relaxed
Send a message via Yahoo to Maxzeroedge Send a message via Skype™ to Maxzeroedge
I am a newbie and can u explain about variables?
Which variable and value to be chosen and all that.....
__________________
Life is simply awesome
Reply With Quote
  #24    
Old October 21st, 2009, 02:46 AM
mervyn797
What? I'm right here. >D
 
Join Date: Mar 2009
Gender: Male
Nature: Careful
Quote:
Originally Posted by score_under View Post
Code:
disappear [sprite ID]
e.g.
Code:
disappear LASTTALKED
Code:
applymovement [sprite ID] [movement list]
e.g.
Code:
applymovement PLAYER @move
actually i mean, move them to another map or such. is it possible?
and to make the sprite disappear, do i need to include a fadescreen too?
Reply With Quote
  #25    
Old October 21st, 2009, 04:35 AM
Full Metal's Avatar
Full Metal
C(++) Developer.
 
Join Date: Jan 2008
Location: In my mind.
Age: 18
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to Full Metal
no, moving a sprite from one map to another is not possible (to my knowledge)
However, creating the illusion is as easy as making a sprite on each map, with the same picture number, and the scripts make one dissapear and the other rea-apear (I'm working on this again, due to being in standby, i couldn't update the post
__________________

★ full metal.

I like to push it,
and push it,
until my luck is over.
Reply With Quote
Reply
Quick Reply

Sponsored Links


Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 02:48 AM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.