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

PKSV scripting Tutorial/Script Thread

510
Posts
13
Years
  • Age 35
  • Seen Dec 4, 2011
that doesn't work.

all that happens when I do that is a bunch of #raw x0FF

This happens to me too when I was using the wrong one (@offset1 <-> 0xEB0B21 (0x0 bytes) instead of @start <-> 0x740090 (0xB bytes)), but it still doesn't work if I use the start one and I'm pretty sure I'm following the instructions exactly.

I create the script, looks like this (because it's my first try just for practice):

Code:
#dynamic 0x740000
#org @start
lock
faceplayer
message @offset1
callstd MSG_NORMAL
release
end

#org @offset1
=Last year they started building\n\la PokeCentre here, but they ran\n\lout of money.\nSo we made it a garden!\n Isn't it great?
I hit compile and I get this come up: @start <-> 0x740090 (0xB bytes)
@offset1 <-> 0xEB0B21 (0x0 bytes)

In Advance Map I insert the script offset 0x740090 into the "script offset" field for the person I want to say it. When I click "Open Script, it comes out like this:

Code:
#org 0x8740090
'-----------------------------------
lock
faceplayer
message 0x8EB0B21 ' 
callstd MSG_LOCK ' Built-in lock command
release
end


#org 0x8EB0B21
=
And obviously fails to work in the game.

Where am I going wrong?

EDIT: Now it comes up with this:

Code:
#org 0x87400A8
'-----------------------------------
lock
faceplayer
message 0x87400B3 ' Last year they start...
callstd MSG_LOCK ' Built-in lock command
release
end


#org 0x87400B3
= Last year they started building\n\la PokeCentre here, but they ran\n\lout of money.\nSo we made it a garden!\n Isn't it great?
And the character will not speak. I don't know what I did to cause the change, but I guess it's one step in the right direction. Still, upon testing, the speech window opens but no text is displayed.

Also, variables. Yeah, I can see how to read them. But what actually are they? What do they do?
 
Last edited:

Alignment

Revered with the stars
308
Posts
14
Years
  • Seen Dec 25, 2016
This happens to me too when I was using the wrong one (@offset1 <-> 0xEB0B21 (0x0 bytes) instead of @start <-> 0x740090 (0xB bytes)), but it still doesn't work if I use the start one and I'm pretty sure I'm following the instructions exactly.

I create the script, looks like this (because it's my first try just for practice):

Code:
#dynamic 0x740000
#org @start
lock
faceplayer
message @offset1
callstd MSG_NORMAL
release
end

#org @offset1
=Last year they started building\n\la PokeCentre here, but they ran\n\lout of money.\nSo we made it a garden!\n Isn't it great?
I hit compile and I get this come up: @start <-> 0x740090 (0xB bytes)
@offset1 <-> 0xEB0B21 (0x0 bytes)

In Advance Map I insert the script offset 0x740090 into the "script offset" field for the person I want to say it. When I click "Open Script, it comes out like this:

Code:
#org 0x8740090
'-----------------------------------
lock
faceplayer
message 0x8EB0B21 ' 
callstd MSG_LOCK ' Built-in lock command
release
end


#org 0x8EB0B21
=
And obviously fails to work in the game.

Where am I going wrong?

EDIT: Now it comes up with this:

Code:
#org 0x87400A8
'-----------------------------------
lock
faceplayer
message 0x87400B3 ' Last year they start...
callstd MSG_LOCK ' Built-in lock command
release
end


#org 0x87400B3
= Last year they started building\n\la PokeCentre here, but they ran\n\lout of money.\nSo we made it a garden!\n Isn't it great?
And the character will not speak. I don't know what I did to cause the change, but I guess it's one step in the right direction. Still, upon testing, the speech window opens but no text is displayed.

Also, variables. Yeah, I can see how to read them. But what actually are they? What do they do?


#dynamic 0x740000
#org @start
lock
faceplayer
message @text
callstd MSG_NORMAL
release
end

#org @text
= Last year they started building\na Pok\eCentre here, but they ran\lout of money.\pSo we made it a garden!\nIsn't it great?

Try this & open your ROM via PKSV first...
 
114
Posts
13
Years
  • Seen May 7, 2012
how would one do a mailman script. a person walks up to you.

something like "The mailman gave you a letter"

then he walks off, you read it. and then it releases you?
 
6
Posts
16
Years
  • Seen Jun 11, 2013
Whats wrong with the script below.
If I pick yes or no in the message box, it still goes to " @given " when
I would only want to go there on a yes. Any help is helpful
thanks in advance.

Problem part below (not all of the script)

dyn 0x740000
#org @start
lock
faceplayer
msgbox @text
callstd MSG_YESNO
if 0x1 jump @given
jump @sad1
 

Alignment

Revered with the stars
308
Posts
14
Years
  • Seen Dec 25, 2016
Whats wrong with the script below.
If I pick yes or no in the message box, it still goes to " @given " when
I would only want to go there on a yes. Any help is helpful
thanks in advance.

Problem part below (not all of the script)

dyn 0x740000
#org @start
lock
faceplayer
msgbox @text
callstd MSG_YESNO
if 0x1 jump @given
jump @sad1

you don't need the second jump. Try:

#dyn 0x740000
#org @start
lock
faceplayer
msgbox @text
callstd MSG_YESNO
compare LASTRESULT YES
if == jump @given
(now continue the script from @sad1)

REMEMBER:
@text - is a pointer to the question
@given is what is said if yes was the answer to the question
what ever is after @given occurs if the player answers no to the question @text

This has become a script help thread all of a sudden :P
 
7
Posts
13
Years
  • Seen Feb 2, 2013
ok so how would i make a script in which someone exits a building walks over to me and has me follow them inside (like professor oaks in fire-red/leaf-green) im making a game but i need a professor to escort me inside to give the starter pokemon
 
1
Posts
13
Years
  • Seen Jun 26, 2010
ive been messing with pksv for awhile and im able to do everything except messages (text keeps overlapping even with /n) and movement (not sure how to put it into the script) can anyone help me?
 

Full Metal

C(++) Developer.
810
Posts
16
Years
yup.
don't use /n, use\n trust me, it will work much better.
also, i believe XSE and PKSV both have a text converter, i reccomend using that (or perhaps the script gen inside pksv's menu -.- wow the laziness amazes me...)
 

Full Metal

C(++) Developer.
810
Posts
16
Years
nope, as i don't really get it myself (except for with jpans engine)
i recommend searching that tutorial allowing you to edit the multi-choice boxes though ;)
 

Alignment

Revered with the stars
308
Posts
14
Years
  • Seen Dec 25, 2016
nope, as i don't really get it myself (except for with jpans engine)
i recommend searching that tutorial allowing you to edit the multi-choice boxes though ;)

I've seen a tutorial for that by Manipulation somewhere else, it requires hex editing. Jpan's patch is the way to go in my opinon.
 

Full Metal

C(++) Developer.
810
Posts
16
Years
haha, but that is the lazy way of doing things ;)
what if somebody wanted to do it on say, a game besides firered?
 

ger345

Im just like that.
49
Posts
13
Years
Could you explain how to find the whole scripts offset, im having trouble. Heres my script. In my game its how you get your two starters! (I need an offset that works with advance map!)
#dyn 0x740000
#org @start
lock
faceplayer
msgbox @text ' Hi!
callstd MSG_NORMAL
release
end

#org @text
= Hi!
#dyn 0x740000
#org @start
lock
checkflag 0x250
if 0x1 jump :end
setflag FR_POKEMON
countpokemon
compare LASTRESULT 6
if == jump @noroom
addpokemon CATERPIE 5 = 5 NONE 0 0 0
setflag 0x250
storepokemon 0 CATERPIE
message @get-msg
fanfare 0x101
showmsg
waitfanfare
waitbutton
:end
release
end

#org @noroom
msgbox @noroom-msg
callstd MSG_NOCLOSE
release
end

#org @noroom-msg
= You don't have enough room in your party.

#org @get-msg
= You got a \v\h02!


#dyn 0x740000
#org @begin
trainerbattle 0x0 0x059 0x0 @intro @defeat
msgbox @afterwards
callstd msg_normal
end
#org @intro
= I will crush you!!! Go! Butterfree and Beedrill!

#org @defeat
= You crushed me[.]

#org @afterwards
= Hmm. Very nice! I see my caterpie is really strong! Trade him to me for this Beedrill? My Beedrill is level 10 No? You just want him? Ok.... Bye Bye Beedrill.
#dyn 0x740000
#org @start
lock
checkflag 0x250
if 0x1 jump :end
setflag FR_POKEMON
countpokemon
compare LASTRESULT 6
if == jump @noroom
addpokemon BEEDRILL 10 = 10 NONE 0 0 0
setflag 0x250
storepokemon 0 BEEDRILL
message @get-msg
fanfare 0x101
showmsg
waitfanfare
waitbutton
:end
release
end

#org @noroom
msgbox @noroom-msg
callstd MSG_NOCLOSE
release
end

#org @noroom-msg
= You don't have enough room in your party.

#org @get-msg
= You got a \v\h02!
#dyn 0x740000
#org @
lockall
message @healmsg
showmsg
waitbutton
fadescreen 1
closemsg
special 0
fadescreen 0
msgbox @bettermsg
callstd MSG_NORMAL
releaseall
end

#org @healmsg
= Your POKéMON look tired[.]\nYou should give them some of my special medicine!.

#org @bettermsg
= There. All better now!
 

Alignment

Revered with the stars
308
Posts
14
Years
  • Seen Dec 25, 2016
Could you explain how to find the whole scripts offset, im having trouble. Heres my script. In my game its how you get your two starters! (I need an offset that works with advance map!)
#dyn 0x740000
#org @start
lock
faceplayer
msgbox @text ' Hi!
callstd MSG_NORMAL
release
end

#org @text
= Hi!
#dyn 0x740000
#org @start
lock
checkflag 0x250
if 0x1 jump :end
setflag FR_POKEMON
countpokemon
compare LASTRESULT 6
if == jump @noroom
addpokemon CATERPIE 5 = 5 NONE 0 0 0
setflag 0x250
storepokemon 0 CATERPIE
message @get-msg
fanfare 0x101
showmsg
waitfanfare
waitbutton
:end
release
end

#org @noroom
msgbox @noroom-msg
callstd MSG_NOCLOSE
release
end

#org @noroom-msg
= You don't have enough room in your party.

#org @get-msg
= You got a \v\h02!


#dyn 0x740000
#org @begin
trainerbattle 0x0 0x059 0x0 @intro @defeat
msgbox @afterwards
callstd msg_normal
end
#org @intro
= I will crush you!!! Go! Butterfree and Beedrill!

#org @defeat
= You crushed me[.]

#org @afterwards
= Hmm. Very nice! I see my caterpie is really strong! Trade him to me for this Beedrill? My Beedrill is level 10 No? You just want him? Ok.... Bye Bye Beedrill.
#dyn 0x740000
#org @start
lock
checkflag 0x250
if 0x1 jump :end
setflag FR_POKEMON
countpokemon
compare LASTRESULT 6
if == jump @noroom
addpokemon BEEDRILL 10 = 10 NONE 0 0 0
setflag 0x250
storepokemon 0 BEEDRILL
message @get-msg
fanfare 0x101
showmsg
waitfanfare
waitbutton
:end
release
end

#org @noroom
msgbox @noroom-msg
callstd MSG_NOCLOSE
release
end

#org @noroom-msg
= You don't have enough room in your party.

#org @get-msg
= You got a \v\h02!
#dyn 0x740000
#org @
lockall
message @healmsg
showmsg
waitbutton
fadescreen 1
closemsg
special 0
fadescreen 0
msgbox @bettermsg
callstd MSG_NORMAL
releaseall
end

#org @healmsg
= Your POKéMON look tired[.]\nYou should give them some of my special medicine!.

#org @bettermsg
= There. All better now!


You must compile them. Even if I compiled it here and gave you the codes it would differ depending on the ROM and the scripting program has to actually implant the scripts themselves. I suggest looking at someone compiling a script on youtube, it's not an easy matter to explain in words (people often get confused).
 

Full Metal

C(++) Developer.
810
Posts
16
Years
I've been told there are a few bugs in my scripts. I haven't updated the first post yet, I'll do that on the weekend. [css makes it take forever, and I feel the need to heavily edit CSS every time I edit a post. ... :\ ]
anyways
original:
Spoiler:

And Fixed:
Spoiler:

@Sora's Nobody- Um, well I looked in my variable lesson, I don't see a message for YES/NO in there anywhere. :|
 
6
Posts
13
Years
  • Seen May 6, 2011
Hi I'm new to this whole rom hacking thing but i got down how to edit sprites and maps just wanna know about scripting few questions

1. Does PKSV have a way to show me the entire script for fire red and if not how can i do that

2. How do I asign a script to a new character that I put int/add a new main character to the game such as if I choose to be male female is also in the game as a rival/ally?
 

The Void

hiiiii
1,416
Posts
13
Years
I made a script for Brendan in a cave in Pokemon FireRed. According to him he was there because of a rare Pokemon. He then engages the player in a Pokemon battle. After the player defeats him, Brendan says a few stuff about how strong the player is then an earthquake occurs. He then says that it must be coming from downstairs and walks towards a ladder leading downstairs.

____________________________________________________
#dynamic 0x74000
#org @start
lockall
checkflag 0x200
if true jump :end
applymovement 0x1 @movement
applymovement 0x1 @movement2
trainerbattle 0x0 0x1AA 0x0 @intro @defeat
msgbox @afterbattle ' You have amazed me b...
callstd MSG_LOCK ' Built-in lock command
lockall
setvar 0x8004 0x3
setvar 0x8005 14
setvar 0x8006 14
setvar 0x8007 3
special 0x136
waitspecial
releaseall
lock
faceplayer
msgbox @text ' What was that?
callstd MSG_NORMAL
release
applymovement 0x1 @movement3
applymovement 0x1 @movement4
end

#org @intro
= Hey!\nYou're ALBRAVE, right? \pI've heard so much about you! \pI've heard of your triumph over\nthe ELITE FOUR in KANTO! \pOh, I forgot to introduce myself.\pI am BRENDAN, the\nHOENN LEAGUE CHAMPION. \pI have come here because\nI have heard that a rare species\lof POK\eMON has come\nhere. \pBut before I battle it,\nI want to see your strength\nin a POK\eMON BATTLE! \pCome on!

#org @defeat
= Wow! You're strong!

#org @afterbattle
= You have amazed me beyond\nwords! \pI guess I'm not worthy\nof the rare POK\eMON that dwells here. \pBut you are! \nGo on! \pI must take flight! \pSee you around soon!

#org @text
= What was that? \pAn earthquake!\nIt must be coming from below!\lLet's check it out!

#org @movement
M look_down say_! end

#org @movement2
M walk_down walk_down

#org @movement3
M say_!!

#org @movement4
M walk_right walk_right walk_right walk_right end

_____________________________________________

I was able to compile this and get the offset but for some reason when I tested it on the game, the game just hangs... Can you tell me why? Please do tell me what's wrong with my script. I've just began scripting and I don't know much yet...
 
14
Posts
12
Years
  • Seen Oct 25, 2012
Hi, i'm new here. I have 3 questions. First, wtf that FR_BADGE_1 and RS_BADGE_1. And others like what? What whey do and how to use with examples? Second, can you tell more about MSG_FIND MSG_NORMAL and others? What whey do and how to use? With examples. And third, how to make person event follow player script? Like in pkmn yellow. Looking forward to your answer.

Hi, i'm new here. I have 3 questions. First, wtf that FR_BADGE_1 and RS_BADGE_1. And others like what? What whey do and how to use with examples? Second, can you tell more about MSG_FIND MSG_NORMAL and others? What whey do and how to use? With examples. And third, how to make person event follow player script? Like in pkmn yellow. Looking forward to your answer.
 
Last edited:
Back
Top