Go Back   The PokéCommunity Forums > ROM Hacking > Tools, Tutorials & Resources
Reload this Page [Tutorial] diegoisawesome's MEGA-HUGE XSE Scripting Tutorial

Notices
For all updates, view the main page.

Tools, Tutorials & Resources Various tools to help you develop your hacks can be found here.
New threads in this forum are to be approved by a moderator before they are displayed.



Reply
 
Thread Tools
  #226    
Old July 26th, 2009 (11:54 PM).
indohekrz
Logged Out
 
Join Date: Jul 2009
Location: Logged Out
Wow! This tutorial is answer my problem on scripting. Thank you.
__________________
Sorry everyone. I logged out from PC because too busy...
Reply With Quote
  #227    
Old July 27th, 2009 (03:52 PM).
boytjuh
Beginning Trainer
 
Join Date: Apr 2009
I saw someone asking a question so:
I started working on my own hack today. I never made any scripts for anything before but managed to make a give pokémon script, and made the character dissapear, but the only thing is that i needed a pokédex. Now i did a setflag 829 to obtain the pokédex but the pokémon giving character also tells my nationaldex data in a bugged way. Is there anyway to solve that?
Well here's the script, maybe some corrections possible? (should be :3) OR maybe another way to add pokédex?
Spoiler:
#dynamic 0x800000

#org @start
lock
faceplayer
checkflag 0x828
checkflag 0x829
msgbox @1 0x4
goto @take
release
end

#org @take
givepokemon 0x83 0x5 0x0 0x0 0x0 0x0
msgbox @2 0x4
waitfanfare
closeonkeypress
setflag 0x828
msgbox @3 0x6
compare LASTRESULT 0x1
setflag 0x829
call 0x1A743B
fadescreen 0x1
fadescreen 0x0
hidesprite 0x800F
setflag 0x200
release
end

#org @done
msgbox @4 0x6

#org @1
= Hi!\pYou should take this\nLAPRAS.\p It's dangerous out there\pwithout a Pokémon!

#org @2
= You obtained an LAPRAS!

#org @3
= You also need a Pokédex!\pYou received Pokédex!

#org @4
= I have to go now,\p See you around?
Reply With Quote
  #228    
Old July 27th, 2009 (07:43 PM). Edited July 27th, 2009 by Dragonmaster91.
Dragonmaster91's Avatar
Dragonmaster91
It's just common sense!
 
Join Date: Apr 2008
Gender: Male
Nature: Adamant
Quote originally posted by boytjuh:
I saw someone asking a question so:
I started working on my own hack today. I never made any scripts for anything before but managed to make a give pokémon script, and made the character dissapear, but the only thing is that i needed a pokédex. Now i did a setflag 829 to obtain the pokédex but the pokémon giving character also tells my nationaldex data in a bugged way. Is there anyway to solve that?
Well here's the script, maybe some corrections possible? (should be :3) OR maybe another way to add pokédex?
Spoiler:
#dynamic 0x800000

#org @start
lock
faceplayer
checkflag 0x828
checkflag 0x829
msgbox @1 0x4
goto @take
release
end

#org @take
givepokemon 0x83 0x5 0x0 0x0 0x0 0x0
msgbox @2 0x4
waitfanfare
closeonkeypress
setflag 0x828
msgbox @3 0x6
compare LASTRESULT 0x1
setflag 0x829
call 0x1A743B
fadescreen 0x1
fadescreen 0x0
hidesprite 0x800F
setflag 0x200
release
end

#org @done
msgbox @4 0x6

#org @1
= Hi!\pYou should take this\nLAPRAS.\p It's dangerous out there\pwithout a Pokémon!

#org @2
= You obtained an LAPRAS!

#org @3
= You also need a Pokédex!\pYou received Pokédex!

#org @4
= I have to go now,\p See you around?
You screwed it up bad... Let me fix it, hang on.

Edit: I'm not even going to boldificate the changes, thats how much I changed.

Code:
#dynamic 0x800000

#org @start
lock
faceplayer
checkflag 0x828
if 0x0 goto @take
release
end

#org @take
msgbox @1 0x6
givepokemon 0x83 0x5 0x0 0x0 0x0 0x0
fanfare 0x13E
msgbox @2 0x4
waitfanfare
closeonkeypress
setflag 0x828
msgbox @3 0x6
setflag 0x829
msgbox @4 0x6
fadescreen 0x1
fadescreen 0x0
hidesprite 0x800F
setflag 0x200
release
end

#org @1
= Hi!\pYou should take this\nLAPRAS.\p It's dangerous out there\pwithout a Pokémon!

#org @2
= You obtained an LAPRAS!

#org @3
= You also need a Pokédex!\pYou received Pokédex!

#org @4
= I have to go now,\p See you around?
Quote:
#org @done
msgbox @4 0x6
You did not even have anything pointing at that. So, that became "loose" data.

Quote:
#org @start
lock
faceplayer
checkflag 0x828
checkflag 0x829
msgbox @1 0x4
goto @take
release
end
Here is all you needed:

#org @start
lock
faceplayer
checkflag 0x828
if 0x1 goto @end
______________
and then put @take here without the #org @take.

I put the script in the simplest way I could, 'cause I felt lazy.

Or, simply:

Code:
#org @start
lock
faceplayer
checkflag 0x828
if 0x1 goto @end
msgbox @1 0x6
givepokemon 0x83 0x5 0x0 0x0 0x0 0x0
fanfare 0x13E
msgbox @2 0x4
waitfanfare
closeonkeypress
setflag 0x828
msgbox @3 0x6
setflag 0x829
msgbox @4 0x6
fadescreen 0x1
fadescreen 0x0
hidesprite 0x800F (This should actually be the sprite you are talking to, I recommend against 0x800F)
setflag 0x200
release
end
And #org @end would be like this:

#org @end
release
end

And your whole script:

Code:
#dynamic 0x800000

#org @start
lock
faceplayer
checkflag 0x828
if 0x1 goto @end
msgbox @1 0x6
givepokemon 0x83 0x5 0x0 0x0 0x0 0x0
fanfare 0x13E
msgbox @2 0x4
waitfanfare
closeonkeypress
setflag 0x828
msgbox @3 0x6
setflag 0x829
msgbox @4 0x6
fadescreen 0x1
fadescreen 0x0
hidesprite 0x800F
setflag 0x200
release
end

#org @end
release
end


#org @1
= Hi!\pYou should take this\nLAPRAS.\p It's dangerous out there\pwithout a Pokémon!

#org @2
= You obtained an LAPRAS!

#org @3
= You also need a Pokédex!\pYou received Pokédex!

#org @4
= I have to go now,\p See you around?
That is how I am used to doing it.

Does this help?

It should, because now, even I know what I am doing.
Reply With Quote
  #229    
Old July 28th, 2009 (01:54 AM). Edited July 28th, 2009 by boytjuh.
boytjuh
Beginning Trainer
 
Join Date: Apr 2009
Thanks ALOT! I've been looking what i had to do for a while lol, since I'm new at scripting. EDIT: It works :D
Reply With Quote
  #230    
Old July 28th, 2009 (05:53 AM).
Dragonmaster91's Avatar
Dragonmaster91
It's just common sense!
 
Join Date: Apr 2008
Gender: Male
Nature: Adamant
Quote originally posted by boytjuh:
Thanks ALOT! I've been looking what i had to do for a while lol, since I'm new at scripting. EDIT: It works :D
Told you, I know what I'm doing... Funny, a month ago, I would have had no clue...
Reply With Quote
  #231    
Old July 28th, 2009 (10:07 AM).
justdieplz's Avatar
justdieplz
Pokemon White Enthusiast
 
Join Date: Aug 2008
Location: Kansas
Age: 19
Gender: Male
Nature: Bold
This thread is not for fixing scripts, please move to the script help thread by HackMew to continue
__________________
Reply With Quote
  #232    
Old July 28th, 2009 (12:00 PM).
Dragonmaster91's Avatar
Dragonmaster91
It's just common sense!
 
Join Date: Apr 2008
Gender: Male
Nature: Adamant
Quote originally posted by justdieplz:
This thread is not for fixing scripts, please move to the script help thread by HackMew to continue
Wow, that's nice of you. You won't help someone on a script that was obviously one of their first, instead you refer them over there. Next time, make sure at the very least, that no one has already helped them, AT THE VERY LEAST.
Reply With Quote
  #233    
Old July 28th, 2009 (01:46 PM).
Gold Man's Avatar
Gold Man
Beginning Trainer
 
Join Date: Mar 2009
Gender:
Umm angian why dose the talking part dosn't come up?
Reply With Quote
  #234    
Old July 28th, 2009 (02:32 PM).
Dragonmaster91's Avatar
Dragonmaster91
It's just common sense!
 
Join Date: Apr 2008
Gender: Male
Nature: Adamant
Quote originally posted by Gold Man:
Umm angian why dose the talking part dosn't come up?
That's because it has loadpointer. Replace that with msgbox. Is it a question, or statement? If it is a statement, try msgbox @(pointer) 0x6. If it is a question, try msgbox @(pointer) 0x5.

All loadpointer does is.. load... Not necessarily load a text box, especially if it does not know which kind.
Reply With Quote
  #235    
Old July 29th, 2009 (06:41 AM).
Pokepal17's Avatar
Pokepal17
More cowbell~
 
Join Date: Oct 2008
Location: Steeltown
Age: 20
Gender: Male
Nature: Modest
Quote originally posted by Dragonmaster91:
That's because it has loadpointer. Replace that with msgbox. Is it a question, or statement? If it is a statement, try msgbox @(pointer) 0x6. If it is a question, try msgbox @(pointer) 0x5.

All loadpointer does is.. load... Not necessarily load a text box, especially if it does not know which kind.
Msgbox will work.
Loadpointer is a command used in the msgbox construct (loadpointer & callstd) and it works differently on it's own, if not used in that construct.
__________________
Pokémon Stardrop
Reply With Quote
  #236    
Old July 29th, 2009 (06:47 AM).
icyace
Beginning Trainer
 
Join Date: Mar 2009
Gender:
This tutorial helped me a lot, tnx.
Reply With Quote
  #237    
Old July 29th, 2009 (07:11 AM).
Dragonmaster91's Avatar
Dragonmaster91
It's just common sense!
 
Join Date: Apr 2008
Gender: Male
Nature: Adamant
Quote originally posted by Pokepal17:
Msgbox will work.
Loadpointer is a command used in the msgbox construct (loadpointer & callstd) and it works differently on it's own, if not used in that construct.
Thank you, I did not know that.
Reply With Quote
  #238    
Old July 29th, 2009 (10:48 AM).
joshay's Avatar
joshay
Beginning Trainer
 
Join Date: Jul 2009
Gender: Male
Cheers for the tutorial, I've bookmarked it and use it for reference loads.
cheers
__________________
Reply With Quote
  #239    
Old July 31st, 2009 (04:33 AM).
Josephine's Avatar
Josephine
—
Community Supporter
 
Join Date: Mar 2004
Say I have the offset for some text, is there any way for me to find out the offset of the script which calls that text?

A search function would be handy, of course I haven't a clue whether that's possible though.
__________________
Reply With Quote
  #240    
Old July 31st, 2009 (10:27 PM).
indohekrz
Logged Out
 
Join Date: Jul 2009
Location: Logged Out
How do I can activate national dex on Ruby/Sapphire???

Using flag or special?
What's the hex?
__________________
Sorry everyone. I logged out from PC because too busy...
Reply With Quote
  #241    
Old July 31st, 2009 (10:36 PM).
0m3GA ARS3NAL's Avatar
0m3GA ARS3NAL
Im comin' home...
Community Supporter Tier 1
 
Join Date: Jan 2008
Location: Superjail Penitentiary
Age: 22
Gender: Male
Nature: Gentle
Quote originally posted by Counterfeit:
Say I have the offset for some text, is there any way for me to find out the offset of the script which calls that text?

A search function would be handy, of course I haven't a clue whether that's possible though.
Yeah, lets sat the offset of the text is 0x823131, you would do a search (In a hex editor) for 31318208 (Because we use Hex reversal)

AaBbCcDd
would become
DdCcBbAa
__________________
>Boot Jailbot
>Pass *****
.
.
Jailbot OS Ver 1.1.2
Greetings Warden
of Superjail Penitentiary
Awaiting user input...

>Display User_Info
╠══User Info══╣
Username:
0m3GA ARS3NAL
Age: 18
Sex: Male ♂
Race: Caucasian
Quote:
"What is this
I don't even..."

M/O: Often acts out to get attention, but recently has changed that. Has been studying up on hacking information and hopes to participate in more advanced hacking discussion.
╠══End of File══╣
Awaiting user input...

>
Reply With Quote
  #242    
Old August 1st, 2009 (05:00 AM).
Pokepal17's Avatar
Pokepal17
More cowbell~
 
Join Date: Oct 2008
Location: Steeltown
Age: 20
Gender: Male
Nature: Modest
Quote originally posted by indohekrz:
How do I can activate national dex on Ruby/Sapphire???

Using flag or special?
What's the hex?
No flag or special, I think it's ASM or editing something in the RAM.
__________________
Pokémon Stardrop
Reply With Quote
  #243    
Old August 1st, 2009 (07:01 AM).
0m3GA ARS3NAL's Avatar
0m3GA ARS3NAL
Im comin' home...
Community Supporter Tier 1
 
Join Date: Jan 2008
Location: Superjail Penitentiary
Age: 22
Gender: Male
Nature: Gentle
Quote originally posted by Dragonmaster91:
To activate the Nat. Dex? No, that is a special, just which one. Here's a tip, look at the script that gives you the Nat. Dex, and use that.
Very Wrong.
There is no script in R/S that gives you the National Pokedex.
There is an ASM code / Action Replay code that does that.
__________________
>Boot Jailbot
>Pass *****
.
.
Jailbot OS Ver 1.1.2
Greetings Warden
of Superjail Penitentiary
Awaiting user input...

>Display User_Info
╠══User Info══╣
Username:
0m3GA ARS3NAL
Age: 18
Sex: Male ♂
Race: Caucasian
Quote:
"What is this
I don't even..."

M/O: Often acts out to get attention, but recently has changed that. Has been studying up on hacking information and hopes to participate in more advanced hacking discussion.
╠══End of File══╣
Awaiting user input...

>
Reply With Quote
  #244    
Old August 1st, 2009 (12:49 PM).
HackinJohn's Avatar
HackinJohn
FireRed ROM Hacker
 
Join Date: Mar 2007
Location: Olivine City, Johto
Gender:
Nature: Quirky
I've tried everything, so I need help.
I'm trying to make my Oak overworld (Person Event No.: 3) to disappear completely once I talk to him, and he does, but as soon as I come back to the map, he's back. o.O;

Spoiler:
#dynamic 0x71A36B

#org @start
lock
faceplayer
msgbox @1 0x4
closeonkeypress
fanfare 0x100
special 0x16F
waitfanfare
fadescreen 0x0
msgbox @2 0x6
applymovement 0x3 @oak
waitmovement 0x0
setflag 0x2000
release
end

#org @1
= Oh, [PLAYER], I'm glad I caught you!\pI forgot to give you your upgrade!

#org @2
= With that upgrade, you will be\nable to keep account of more than\ljust the Kanto Pokemon!\pIsn't it fantastic!?\pWell, I must be going. Don't let\nme down!

#org @oak
#raw 0x01
#raw 0x11
#raw 0x60
#raw 0x11
#raw 0xFE


Thanks ahead of time [:
__________________
Spoiler:
Reply With Quote
  #245    
Old August 3rd, 2009 (09:00 AM).
hygz1223
Beginning Trainer
 
Join Date: Aug 2009
Gender: Male
Nature: Relaxed
i need help in the giveitem script. i type it in and it says #define on line 21 with hs the msg_obtain
Reply With Quote
  #246    
Old August 4th, 2009 (11:50 PM).
indohekrz
Logged Out
 
Join Date: Jul 2009
Location: Logged Out
Quote originally posted by HackinJohn:
I've tried everything, so I need help.
I'm trying to make my Oak overworld (Person Event No.: 3) to disappear completely once I talk to him, and he does, but as soon as I come back to the map, he's back. o.O;

Spoiler:
#dynamic 0x71A36B

#org @start
lock
faceplayer
msgbox @1 0x4
closeonkeypress
fanfare 0x100
special 0x16F
waitfanfare
fadescreen 0x0
msgbox @2 0x6
applymovement 0x3 @oak
waitmovement 0x0
hidesprite 0x3
setflag 0x2000
release
end

#org @1
= Oh, [PLAYER], I'm glad I caught you!\pI forgot to give you your upgrade!

#org @2
= With that upgrade, you will be\nable to keep account of more than\ljust the Kanto Pokemon!\pIsn't it fantastic!?\pWell, I must be going. Don't let\nme down!

#org @oak
#raw 0x01
#raw 0x11
#raw 0x60
#raw 0x11
#raw 0xFE


Thanks ahead of time [:
Do you put the flag on Oak's overworld???

You must put:
People ID: 2000

Or maybe, you must use hidesprite (the red text).
__________________
Sorry everyone. I logged out from PC because too busy...
Reply With Quote
  #247    
Old August 5th, 2009 (11:53 PM).
NintendoWalkthrudude's Avatar
NintendoWalkthrudude
Creator of Pokemon Ninja!
 
Join Date: Aug 2009
Location: Boise, Idaho
Age: 21
Gender: Male
Nature: Sassy
Send a message via Skype™ to NintendoWalkthrudude
I find this tutorial very useful diego, but I have a question.

I want it so when you talk to Professor Oak he says, "Want a pokemon?" and if you say yes he gives you a totodile, but if you say no he gives you a cyndaquil anyways. How can I get this to happen? I tried combining both the YES/NO script with the give pokemon script and it didn't work..
Reply With Quote
  #248    
Old August 6th, 2009 (12:36 AM). Edited August 18th, 2009 by indohekrz.
indohekrz
Logged Out
 
Join Date: Jul 2009
Location: Logged Out
Quote originally posted by NintendoWalkthrudude:
I find this tutorial very useful diego, but I have a question.

I want it so when you talk to Professor Oak he says, "Want a pokemon?" and if you say yes he gives you a totodile, but if you say no he gives you a cyndaquil anyways. How can I get this to happen? I tried combining both the YES/NO script with the give pokemon script and it didn't work..
Try this script:
Spoiler:

#dynamic 0x800000

#org @start

checkflag 0x828
if 0x1 goto @done
checkflag 0x828
if 0x0 goto @willgive
end

#org @done
lock
faceplayer
msgbox @already 0x6
release
end

#org @willgive
lock
faceplayer
msgbox @ask 0x5
compare LASTRESULT 0x0
if 0x1 goto @cyndaquil
compare LASTRESULT 0x1
if 0x1 goto @totodile
end

#org @cyndaquil
msgbox @givecynda 0x4
givepokemon 0x9B 0x5 0x0 0x0 0x0 0x0
fanfare 0x13E
msgbox @get 0x4
waitfanfare
msgbox @takecare 0x6
setflag 0x828
release
end

#org @totodile
msgbox @givetoto 0x4
givepokemon 0x9E 0x5 0x0 0x0 0x0 0x0
fanfare 0x13E
msgbox @get2 0x4
waitfanfare
msgbox @takecare 0x6
setflag 0x828
release
end

#org @already
= That is Johto pokemon.

#org @ask
= Want a pokemon?

#org @get
= [player] received Cyndaquil from Oak.

#org @get2
= [player] received Totodile from Oak.

#org @givecynda
= But, you need a pokemon.\pThis pokemon for you.

#org @givetoto
= Okay, this is for you.

#org @takecare
= Please take care of your\npokemon.



Attention: This only work if you don't have a pokemon.

If you have a pokemon, change the flag to other flag.
Example: ... 0x828 change to ... 0x900 (... = setflag or checkflag.)
__________________
Sorry everyone. I logged out from PC because too busy...
Reply With Quote
  #249    
Old August 6th, 2009 (10:07 AM).
NintendoWalkthrudude's Avatar
NintendoWalkthrudude
Creator of Pokemon Ninja!
 
Join Date: Aug 2009
Location: Boise, Idaho
Age: 21
Gender: Male
Nature: Sassy
Send a message via Skype™ to NintendoWalkthrudude
Quote originally posted by indohekrz:
Try this script:
Spoiler:

#dynamic 0x800000

#org @start

checkflag 0x828
if 0x1 goto @done
checkflag 0x828
if 0x0 goto @willgive
end

#org @done
lock
faceplayer
msgbox @already 0x6
release
end

#org @willgive
lock
faceplayer
msgbox @ask 0x5
compare LASTRESULT 0x0
if 0x0 goto @cyndaquil
compare LASTRESULT 0x1
if 0x1 goto @totodile
end

#org @cyndaquil
msgbox @givecynda 0x4
givepokemon 0x9B 0x5 0x0 0x0 0x0 0x0
fanfare 0x13E
msgbox @get 0x4
waitfanfare
msgbox @takecare 0x6
setflag 0x828
release
end

#org @totodile
msgbox @givetoto 0x4
givepokemon 0x9E 0x5 0x0 0x0 0x0 0x0
fanfare 0x13E
msgbox @get2 0x4
waitfanfare
msgbox @takecare 0x6
setflag 0x828
release
end

#org @already
= That is Johto pokemon.

#org @ask
= Want a pokemon?

#org @get
= [player] received Cyndaquil from Oak.

#org @get2
= [player] received Totodile from Oak.

#org @givecynda
= But, you need a pokemon.\pThis pokemon for you.

#org @givetoto
= Okay, this is for you.

#org @takecare
= Please take care of your\npokemon.



Attention: This only work if you don't have a pokemon.

If you have a pokemon, change the flag to other flag.
Example: ... 0x828 change to ... 0x900 (... = setflag or checkflag.)
Thank you, but when I click NO, it just he just repeats the question!
Reply With Quote
  #250    
Old August 6th, 2009 (10:25 AM).
diegoisawesome's Avatar
diegoisawesome
Please understand
Community Supporter
 
Join Date: Dec 2007
Location: Goldenrod City, Johto
Age: 18
Gender: Male
Nature: Quirky
Quote originally posted by NintendoWalkthrudude:
Thank you, but when I click NO, it just he just repeats the question!
Code:
#dynamic 0x800000

#org @start
checkflag 0x828
if 0x1 goto @done
checkflag 0x828
if 0x0 goto @willgive
end

#org @done
lock
faceplayer
msgbox @already 0x6
release
end

#org @willgive
lock
faceplayer
msgbox @ask 0x5
compare LASTRESULT 0x0
if 0x1 goto @cyndaquil
compare LASTRESULT 0x1
if 0x1 goto @totodile
end

#org @cyndaquil
msgbox @givecynda 0x4
givepokemon 0x9B 0x5 0x0 0x0 0x0 0x0
fanfare 0x13E
msgbox @get 0x4
waitfanfare
msgbox @takecare 0x6
setflag 0x828
release
end

#org @totodile
msgbox @givetoto 0x4
givepokemon 0x9E 0x5 0x0 0x0 0x0 0x0
fanfare 0x13E
msgbox @get2 0x4
waitfanfare
msgbox @takecare 0x6
setflag 0x828
release
end

#org @already
= That is Johto pokemon.

#org @ask
= Want a pokemon?

#org @get
= [player] received Cyndaquil from Oak.

#org @get2
= [player] received Totodile from Oak.

#org @givecynda
= But, you need a pokemon.\pThis pokemon for you.

#org @givetoto
= Okay, this is for you.

#org @takecare
= Please take care of your\npokemon.
Before, the script was checking for "if not no, goto @cyndaquil" and "if yes, it's yes, then go to @totodile", but I fixed it.
__________________


My other resources:
My Website
diegoisawesome's MEGA-HUGE XSE Scripting Tutorial
diegoisawesome's Miscellaneous Finds
The Ruins of Alph Puzzles
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

Forum Jump


All times are UTC -8. The time now is 06:44 PM.