-
Volcanion.
User deleted
Benvenuta, ±Fune±, nella tua aula di Scripting GBA!
Allora, in questo "corso" impareremo principalmente lo scripting ma non l'ASM poiché se vorrai preferirei usare un'aula a parte per distinguere le due.
Cos'è uno script?
In termini "hack rom-iani" è essenzialmente un evento che si verifica all'interno di un gioco.
Dimmi più o meno quali sono le tue competenze nel campo e cosa ti piacerebbe fare, poi inizieremo. -
.
Non mi ricordo quasi niente, solo magari riesco a modificare script semplici con guide ma da solo non so fare niente . -
Volcanion.
User deleted
Benissimo, partiamo subito!
Il necessario per le lezioni di scripting sono:
- Un emulatore come VBA
- Una ROM di Pokemon FRLG o RSE, è indifferente se non per un paio di comandi
- XSE
- Advance Map
Recuperato tutto il materiale, iniziamo con lo scripting!
Apri XSE e inserisci la ROM, con File--->Apri.
Poi creiamo un semplice evento:CODICE#dynamic 0x800000
#org @start
lock
faceplayer
msgbox @msg 0x6
release
end
#org @msg
= Mi piacciono i treni
Analizziamo dunque questo script:
#dynamic 0x800000 = Serve per indicare un offset dinamico nel quale sta lo script
#org @start = Serve per indicare una "zona" dello script, @start, il quale è un pointer che serve anche per reindirizzare a una parte dello script.
lock = Blocca il personaggio in modo che non si possa muovere in giro o usare il menù
faceplayer = Serve per far girare la persona alla quale stiamo parlando verso il giocatore
msgbox @pointer 0x? = Il msgbox è essenzialmente una casella di testo che compare sullo schermo, vediamone i diversi tipi:SPOILER (clicca per visualizzare)msgbox @pointer 0x6 = Una normale textbox, la più utilizzata
msgbox @pointer 0x5 = E' la textbox che vi chiederà sì o no, che vedremo poi come utilizzare
msgbox @pointer 0x4 = E' un messaggio che rimane sullo schermo finchè non ci sarà un closeonkeypress o finchè non cambieremo mappa
msgbox @pointer 0x3 = Non cambia praticamente nulla tra il primo e questo, ma alcuni lo usano per i cartelli
msgbox @pointer 0x2 = Uno 0x6 che non necessita lock, faceplayer e release, molto comodo se non si crea uno script elaborato!
Release = "Rilascia" il giocatore, è l'opzione opposta al lock
End = Indica la fine dello script, ma dovremo poi scrivere ciò che è legato ai vari pointer!
#org @msg = Altro pointer che indica che questa è la zona in cui va il messaggio in cui c'era scritto appunto @msg
= Mi piacciono i treni = Per indicare cosa far dire in un messaggio basterà mettere un uguale e scrivere ciò che vogliamo far apparire sullo schermo, stando attenti a non superare i 34 caratteri inclusi gli spazi, se siamo pigri possiamo però utilizzare l'adattatore di testo di XSE (Strumenti-->Adattatore di testo).
Creato lo script, clicchiamo sulle due rotelline e ci verrà fuori una roba di questo tipo:SPOILER (clicca per visualizzare)eXtreme Script Editor v1.1.1
-------------------------------------
DATA
-------------------------------------
Apertura output: (FILE)...
Elaborazione script di input...
1 - #DYNAMIC
> lDynamicStart = 0x800000
2 - #ORG
> lNewOffset = 0x800000
3 - (6A) - LOCK [+1]
4 - (5A) - FACEPLAYER [+1]
5 - (0F) - MSGBOX (native) [+8]
> pText = 0x880000D
> bType = 0x6
6 - (6C) - RELEASE [+1]
7 - (02) - END [+1]
9 - #ORG
> lNewOffset = 0x80000D
10 - RAW TEXT [+21]
> sText = "Mi piacciono i treni"
-------------------------------------
DYNAMIC_OFFSET 1
> sLabel = @start
> lOffset = 0x800000
DYNAMIC_OFFSET 2
> sLabel = @msg
> lOffset = 0x80000D
-------------------------------------
Pulizia...
Chiusura output...
Elaborazione input terminata in 0,043 secondi.
Ma concentriamoci sulla parteCODICEDYNAMIC_OFFSET 1
> sLabel = @start
> lOffset = 0x800000
DYNAMIC_OFFSET 2
> sLabel = @msg
> lOffset = 0x80000D
Il primo offset dinamico è quello dello script principale, che abbiamo chiamato @start e che corrisponde all'offset 0x800000
Invece il secondo all'offset 0x80000D, ma PERCHE' FINISCE CON UNA D e non è nell'offset 0x800001 ?
Semplicemente se guardi qua:CODICE3 - (6A) - LOCK [+1]
4 - (5A) - FACEPLAYER [+1]
5 - (0F) - MSGBOX (native) [+8]
> pText = 0x880000D
> bType = 0x6
6 - (6C) - RELEASE [+1]
7 - (02) - END [+1]
Noti che ci sono dei numeri: la loro somma fa DODICI, e indovina in esadecimale come si chiama? Si chiama C!
E se 12 è C, 13 ovvero IL PRIMO OFFSET DISPONIBILE è D se ragioni perchè se 12 è C e sono occupati gli offeset da 0x800000 a 0x80000C va perforza sul 13 ovvero D in HEX!
Colgo l'occasione per dirti che anche su XSE, sulla destra, c'è un convertitore da decimale (i numeri che usiamo comunemente) a HEX.
Prova a esercitarti su questo, poi ti dico come inserire gli script su A-Map nel gioco e ovviamente altri comandi, partiamo dalle basi che in realtà tanto basi non sono!. -
.
Fatto, mi sono esercitato su quello che mi hai detto (calcolo esadecimali, prove con questo script) . -
Volcanion.
User deleted
Bene allora procediamo con la seconda lezione: le FLAG.
Cosa sono le flag? Sono essenzialmente degli "interruttori" che indicano quando un evento è avvenuto o meno.
I comandi che le riguardano sono:
Checkflag 0x? = Controlla se una flag è attiva o meno
If 0x1 goto @pointer = Non serve solo per le flag, ma in questo caso controlla se la flag corrisponde ad attiva o non.
Setflag 0x? = "Setta" la flag come attiva
Clearflag 0x? = "Setta" la flag come non attiva, è poco usato.
Vediamo un esempio:CODICE#dynamic 0x800000
#org @start
lock
faceplayer
checkflag 0x500
if 0x1 goto @attiva
msgbox @sms 0x6
setflag 0x500
release
end
#org @attiva
msgbox @msg 0x6
#org @sms
= ODIO I TRENI
#org @msg
= ANZI LI AMO
Se tutto va bene lo script sarà così:SPOILER (clicca per visualizzare)
Prima, essendo la flag 500 non settata, dirà la frase di @sms e setterà la flag.
Poi si azionerà di nuovo il checkflag, ed essendo ora la flag attiva repointerà ad @attiva nel quale c'è il msgbox di @msg.
EH MA CUSA L'E' CHE BISOGNA METTERE DOPO CHECKFLAG? 0x? EH?
E' essenzialmente l' "ID" della flag che noi vogliamo controllare.
Per oggi è tutto, prova a fare qualcosina con le flag
Prossima lezione: approfondimenti e cose PR0!. -
.
capito professoressa Volca
possiamo andare avanti!!!!!!!!. -
Paolo Bianchi 17.
User deleted
Scusa Volca, ci tenevo a farti notare che hai dimenticato due comandi nello Script di esempio, dopo il messaggio della Flag. Lo Script corretto è questo:
#dynamic 0x800000
#org @start
lock
faceplayer
checkflag 0x500
if 0x1 goto @attiva
msgbox @sms 0x6
setflag 0x500
release
end
#org @attiva
msgbox @msg 0x6
release
end
#org @sms
= ODIO I TRENI
#org @msg
= ANZI LI AMO
- DragonType. -
.
VOLCAAAA . -
Volcanion.
User deleted
Rieccomi dopo oltre un mese.
Oggi ti insegno due cose: prima i SOLDIH e poi un modo per semplificarti la vita.
- Givemoney
- Paymoney
- Showmoney
- Checkmoney
- Hidemoney
- Updatemoney
Givemoney serve per dare soldi al giocatore.
Paymoney serve per detrarne.
Showmoney apre la "barra"
Hidemoney la nasconde
Checkmoney controlla se il giocatore ha abbastanza soldi
Updatemoney modifica i soldi del giocatore
Vediamoli in azione:SPOILER (clicca per visualizzare)CODICE#dynamic 0x800000
#org @start
showmoney 0x00 0x00 0x00
msgbox @mostra 0x6
givemoney 0x1F4 0x00
msgbox @do 0x6
updatemoney 0x00 0x00 0x00
msgbox @update 0x6
checkmoney 0x1F4 0x00
msgbox @controllo 0x6
paymoney 0x1F4 0x00
msgbox @pago 0x6
updatemoney 0x00 0x00 0x00
msgbox @update 0x6
hidemoney 0x00 0x00
msgbox @nascondo 0x6
release
end
#org @mostra
= Mostro.
#org @do
= Do.
#org @update
= Update.
#org @controllo
= Controllo.
#org @pago
= Pago.
#org @nascondo
= Nascondo.
Quando Showmoney, Hidemoney e Updatemoney ti chiedono delle coordinate, quelle di default per mostrare la barra (in alto a sinistra) si mettono con 0x00 per la X e 0x00 per la Y.
Inoltre tutti i comandi relativi ai soldi ti chiederanno un "Command execution check", tu metti 0x00 perchè è fisso.
Non continuiamo però con lo scripting senza poterci semplificare la vita!
Scopriremo le cosiddette "direttive al preprocessore", una figata di XSE, ma per oggi vediamo solo #alias.
#alias serve appunto per semplificarci la vita, perchè se mettiamo in un comando prima degli script per esempioCODICE#alias givemoney sgancia
significherà che ogni volta che (se l'alias è presente) scriveremo "sgancia" userà il givemoney ma ci risparmierà "tempo e fatica"
Semplice lo scripting ora vero?
Esercitati a usare i vari money in modo da sapere quali sono i parametri che XSE richiede per ogni comando, #alias non è importante nello scripting ma è solo una cosa per semplificare lo scripting su XSE.. -
.
Domani continuo . -
.
sono peronto per la prossima lezione . -
Volcanion.
User deleted
Ok, pensavo di farti imparare o l'applymovement o il give item e pokemon, MA...
Credo che gli special potrebbero essere MOLTO più semplici da fare prima.
Anche perchè sono molto utili.
Ecco qui la lista degli special (che ho preso da XSE sennò ci avrei messo GLI ANNI)
Per Ruby/Sapphire:SPOILER (clicca per visualizzare)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)
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)
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
Per FireRed e LeafGreen:SPOILER (clicca per visualizzare)0 = Heal Party Pokémon
2 = Warp sound + Black Screen
3 = Walk to your room
20 = Weird Fight
21 = Link Communication Standby
22 = Link Communication Standby 2
23 = Call Save Menu
29 = Select 3 Pokémon for something
2A = Crashes
3B = Fight with Team Aqua's Leader
3C = Access BILL's PC
5D = Call Save Menu
5E = Edit "At the battle's start" profile
5F = Edit "At the battle's start" profile
60 = Displays "At the battle's start" text
9D = Old man catching a Weedle
9E = Nickname
9F = Choose 3 Pokémon
BC = Store a Pokémon
BD = Withdraw a stored Pokémon
C2 = Egg Hatch
C4 = Show Battle Results
C8 = Fainted Event
D6 = A Turned On PC Appears
D7 = A Turned Off PC Appears
DC = Shows Known Moves
DF = Crashes
E0 = Crashes
E1 = Crashes
E2 = Crashes
E3 = Crashes
E4 = Crashes
E5 = Crashes
E6 = Crashes
E7 = Crashes
E8 = Crashes
E9 = Crashes
107 = Reads Hall Of Fame Data
108 = Diplome For Completing Kanto Dex
10F = Crashes
110 = Saves Hall Of Fame Data
111 = Elevator
113 = Freezes The Camera
114 = Releases The Camera
132 = Select Floor (Elevator)
136 = Using Strength
137 = Starts Trainerbattle
138 = Starts Wild Battle
139 = Starts Wild Battle
13D = Warp
13E = Fall Through A Hole
143 = Starts Wild Battle
156 = Starts Battle Against Ghost
157 = Uses The Bicycle
15C = Crashes
161 = Activates Surfing Animation
163 = See in PokéDex
166 = Lets You Enter A Nickname
16B = Establishes A Connection
16C = Establishes A Connection
16D = Establishes A Connection
16E = Shows Wireless Connection Status
17B = Uses The Ms Aqua
186 = Crashes
18D = Learns A Move
18E = Battletower Lv50
191 = Departure Of MS Anne
195 = Shows Jump Records
19C = Shows Powder Counter
1A2 = Shows Berry Crush Rankings
1A5 = Plays Credits On The Current Map
1A6 = Shows Dodrio Berry Picking Stats
1AB = Moves The Deoxys-Triangle
1B2 = Displays A Cursor At The Left Top Corner
1B5 = Executes Weird Effects on Map Tiles
1B6 = Executes Weird Effects on Map Tiles
Ho incluso tutti gli special con una funzione, ovvero la funzione di tutti gli altri è sconosciuta.
Ma che cos'è uno special?
Potremmo dire che, nella maggior parte dei casi, lo special è una specie di alias: invece che scrivere, non so...
*script1*
*script2*
*script3*
(Si parla di script ma anche di script in ASM, attenzione)
Essi vengono "raggruppati" nello special, ma ci sono anche casi in cui lo special è un comando stesso, come per esempio il 91 di RS.
Ora, come li integri in uno script?
Nulla di più semplice!
#dynamic 0x800000
#org @start
special 0x? dove ? è l'ID dello special che vogliamo usare.
release
end
Prova ad esercitarti sull'uso degli special, comandi interessanti e a volte molto utili!. -
Volcanion.
User deleted
La lezione di oggi prevede i movimenti.
Cosa intendo con movimenti?
Intendo non solo il poter far camminare, correre o saltare delle persone o del protagonista, ma anche il movimento della telecamera e le emoticon!
I comandi che ti serviranno sono:
- Applymovement, che va inserito "prima"
- Waitmovement, che va inserito "dopo"
Come usarli?
applymovement 0x? @pointer
applymovement è il comando;
In ? di 0x? devi inserire l'ID dell'evento che vuoi far muovere, che troverai qua:
(Thanks diegoisawesome for this image);
@pointer... beh, è il pointer che reindirizza a @pointer.
waitmovement 0x0
waitmovement serve per aspettare che l'evento finisca di muoversi prima di continuare;
0x? deve essere l'ID (che hai inserito in applymovement) del quale dobbiamo aspettare il movimento prima di continuare
Esempio:CODICE#dynamic 0x800000
#org @start
lock
faceplayer
msgbox @msg 0x3
applymovement 0xFF @movimento
waitmovement 0xFF
msgbox @sms 0x3
release
end
#org @msg
= Fammi vedere le \ntue scarpe nuove!
#org @movimento
#raw 0x13
#raw 0x13
#raw 0x12
#raw 0xFE
Oh, ma cosa abbiamo?
Abbiamo un "applymovement 0xFF". Ma cos'è questo 0xFF? E' l'ID del protagonista (quello che controlliamo noi).
Abbiamo inoltre questi "#raw" brutti, cosa sono? (Uso come base FRLG per farti un esempio)
#raw 0x13 <-- SOLO PER FRLG ovvero RossoFuoco/VerdeFoglia (dopo ti darò la lista completa per vedere quali siano i comandi da usare in ogni caso) passo a velocità "normale" verso destra
#raw 0x13 <-- Ancora passo normale verso destra solo per FRLG
#raw 0x12 <-- Passo a velocità normale verso sinistra ancora solo per FRLG
#raw 0xFE <-- AH. E questo? Questo segna la FINE DEI MOVIMENTI. Devi metterlo quando il personaggio deve stare fermo dopo il movimento.
Ricapitolando,
applymovement 0x? @pointer dove 0x? in particolare può essere 0xFF ovvero il personaggio, oppure 0x7F per la telecamera come vedremo più avanti.
waitmovement 0x? aspetta che ? finisca il movimento prima di andare avanti
Lista RSE (Rubino, Zaffiro, Smeraldo):SPOILER (clicca per visualizzare)#raw 0x00 = Face Down
#raw 0x01 = Face Up
#raw 0x02 = Face Left
#raw 0x03 = Face Right
#raw 0x04 = Step Down (Slow)
#raw 0x05 = Step Up (Slow)
#raw 0x06 = Step Left (Slow)
#raw 0x07 = Step Right (Slow)
#raw 0x08 = Step Down (Normal)
#raw 0x09 = Step Up (Normal)
#raw 0x0A = Step Left (Normal)
#raw 0x0B = Step Right (Normal)
#raw 0x0C = Jump2 Down
#raw 0x0D = Jump2 Up
#raw 0x0E = Jump2 Left
#raw 0x0F = Jump2 Right
#raw 0x10 = Delay1
#raw 0x11 = Delay2
#raw 0x12 = Delay3
#raw 0x13 = Delay4
#raw 0x14 = Delay5
#raw 0x15 = Step Down (Fast)
#raw 0x16 = Step Up (Fast)
#raw 0x17 = Step Left (Fast)
#raw 0x18 = Step Right (Fast)
#raw 0x19 = Step on the Spot Down (Slow)
#raw 0x1A = Step on the Spot Up (Slow)
#raw 0x1B = Step on the Spot Left (Slow)
#raw 0x1C = Step on the Spot Right (Slow)
#raw 0x1D = Step on the Spot Down (Normal)
#raw 0x1E = Step on the Spot Up (Normal)
#raw 0x1F = Step on the Spot Left (Normal)
#raw 0x20 = Step on the Spot Right (Normal)
#raw 0x21 = Step on the Spot Down (Faster)
#raw 0x22 = Step on the Spot Up (Faster)
#raw 0x23 = Step on the Spot Left (Faster)
#raw 0x24 = Step on the Spot Right (Faster)
#raw 0x25 = Step on the Spot Down (Fastest)
#raw 0x26 = Step on the Spot Up (Fastest)
#raw 0x27 = Step on the Spot Left (Fastest)
#raw 0x28 = Step on the Spot Right (Fastest)
#raw 0x29 = Slide Down
#raw 0x2A = Slide Up
#raw 0x2B = Slide Left
#raw 0x2C = Slide Right
#raw 0x2D = Slide Down
#raw 0x2E = Slide Up
#raw 0x2F = Slide Left
#raw 0x30 = Slide Right
#raw 0x31 = Slide Down
#raw 0x32 = Slide Up
#raw 0x33 = Slide Left
#raw 0x34 = Slide Right
#raw 0x35 = Slide Running Down
#raw 0x36 = Slide Running Up
#raw 0x37 = Slide Running Left
#raw 0x38 = Slide Running Right
#raw 0x3A = Jump Facing Left (Down)
#raw 0x3B = Jump Facing Down (Up)
#raw 0x3C = Jump Facing Up (Left)
#raw 0x3D = Jump Facing Left (Right)
#raw 0x3E = Face Player
#raw 0x3F = Face Against Player
#raw 0x40 = Lock Sprite Facing
#raw 0x41 = Release Sprite Facing
#raw 0x42 = Jump Down
#raw 0x43 = Jump Up
#raw 0x44 = Jump Left
#raw 0x45 = Jump Right
#raw 0x46 = Jump in Place (Facing Down)
#raw 0x47 = Jump in Place (Facing Up)
#raw 0x48 = Jump in Place (Facing Left)
#raw 0x49 = Jump in Place (Facing Right)
#raw 0x4A = Jump in Place (Facing Down/Up)
#raw 0x4B = Jump in Place (Facing Up/Down)
#raw 0x4C = Jump in Place (Facing Left/Right)
#raw 0x4D = Jump in Place (Facing Right/Left)
#raw 0x4E = Face Left
#raw 0x54 = Hide Sprite
#raw 0x55 = Show Sprite
#raw 0x56 = Exclamation Mark (!)
#raw 0x57 = Question Mark (?)
#raw 0x58 = Love (<3)
#raw 0x62 = Walk Down
#raw 0x63 = Walk Down
#raw 0x64 = Face Down (Delayed)
#raw 0x65 = Face Up (Delayed)
#raw 0x66 = Face Left (Delayed)
#raw 0x67 = Face Right (Delayed)
#raw 0x70 = Jump in Place (Facing Down)
#raw 0x71 = Jump in Place (Facing Up)
#raw 0x72 = Jump in Place (Facing Left)
#raw 0x73 = Jump in Place (Facing Right)
#raw 0x74 = Jump Down Running
#raw 0x75 = Jump Up Running
#raw 0x76 = Jump Left Running
#raw 0x77 = Jump Right Running
#raw 0x78 = Jump2 Down Running
#raw 0x79 = Jump2 Up Running
#raw 0x7A = Jump2 Left Running
#raw 0x7B = Jump2 Right Running
#raw 0x7C = Walk on the Spot (Down)
#raw 0x7D = Walk on the Spot (Up)
#raw 0x7E = Walk on the Spot (Left)
#raw 0x7F = Walk on the Spot (Right)
#raw 0x80 = Slide Down Running
#raw 0x81 = Slide Up Running
#raw 0x82 = Slide Left Running
#raw 0x83 = Slide Right Running
#raw 0x84 = Slide Down
#raw 0x85 = Slide Up
#raw 0x86 = Slide Left
#raw 0x87 = Slide Right
#raw 0x88 = Slide Down on Left Foot
#raw 0x89 = Slide Up on Left Foot
#raw 0x8A = Slide Left on Left Foot
#raw 0x8B = Slide Right on Left Foot
#raw 0x8C = Slide Left diagonally (Facing Up)
#raw 0x8D = Slide Right diagonally (Facing Up)
#raw 0x8E = Slide Left diagonally (Facing Down)
#raw 0x8F = Slide Right diagonally (Facing Down)
#raw 0x90 = Slide2 Left diagonally (Facing Up)
#raw 0x91 = Slide2 Right diagonally (Facing Up)
#raw 0x92 = Slide2 Left diagonally (Facing Down)
#raw 0x93 = Slide2 Right diagonally (Facing Down)
#raw 0x96 = Walk Left
#raw 0x97 = Walk Right
#raw 0x98 = Levitate
#raw 0x99 = Stop Levitating
#raw 0x9C = Fly Up Vertically
#raw 0x9D = Land
#raw 0xFE = End of Movements
Lista per FRLG (Rosso Fuoco e Verde Foglia):SPOILER (clicca per visualizzare)#raw 0x0 = Face Down
#raw 0x1 = Face Up
#raw 0x2 = Face Left
#raw 0x3 = Face Right
#raw 0x4 = Face Down (Faster)
#raw 0x5 = Face Up (Faster)
#raw 0x6 = Face Left (Faster)
#raw 0x7 = Face Right (Faster)
#raw 0x8 = Step Down (Very Slow)
#raw 0x9 = Step Up (Very Slow)
#raw 0xA = Step Left (Very Slow)
#raw 0xB = Step Right (Very Slow)
#raw 0xC = Step Down (Slow)
#raw 0xD = Step Up (Slow)
#raw 0xE = Step Left (Slow)
#raw 0xF = Step Right (Slow)
#raw 0x10 = Step Down (Normal)
#raw 0x11 = Step Up (Normal)
#raw 0x12 = Step Left (Normal)
#raw 0x13 = Step Right (Normal)
#raw 0x14 = Jump2 Down
#raw 0x15 = Jump2 Up
#raw 0x16 = Jump2 Left
#raw 0x17 = Jump2 Right
#raw 0x18 = Delay1
#raw 0x19 = Delay2
#raw 0x1A = Delay3
#raw 0x1B = Delay4
#raw 0x1C = Delay5
#raw 0x1D = Step Down (Fast)
#raw 0x1E = Step Up (Fast)
#raw 0x1F = Step Left (Fast)
#raw 0x20 = Step Right (Fast)
#raw 0x21 = Step on the Spot Down (Normal)
#raw 0x22 = Step on the Spot Up (Normal)
#raw 0x23 = Step on the Spot Left (Normal)
#raw 0x24 = Step on the Spot Right (Normal)
#raw 0x25 = Step on the Spot Down (Faster)
#raw 0x26 = Step on the Spot Up (Faster)
#raw 0x27 = Step on the Spot Left (Faster)
#raw 0x28 = Step on the Spot Right (Faster)
#raw 0x29 = Step on the Spot Down (Fastest)
#raw 0x2A = Step on the Spot Up (Fastest)
#raw 0x2B = Step on the Spot Left (Fastest)
#raw 0x2C = Step on the Spot Right (Fastest)
#raw 0x2D = Face Down (Delayed)
#raw 0x2E = Face Up (Delayed)
#raw 0x2F = Face Left (Delayed)
#raw 0x30 = Face Right (Delayed)
#raw 0x31 = Slide Down (Slow)
#raw 0x32 = Slide Up (Slow)
#raw 0x33 = Slide Left (Slow)
#raw 0x34 = Slide Right (Slow)
#raw 0x35 = Slide Down (Normal)
#raw 0x36 = Slide Up (Normal)
#raw 0x37 = Slide Left (Normal)
#raw 0x38 = Slide Right (Normal)
#raw 0x39 = Slide Down (Fast)
#raw 0x3A = Slide Up (Fast)
#raw 0x3B = Slide Left (Fast)
#raw 0x3C = Slide Right (Fast)
#raw 0x3D = Slide Running on Right Foot (Down)
#raw 0x3E = Slide Running on Right Foot (Up)
#raw 0x3F = Slide Running on Right Foot (Left)
#raw 0x40 = Slide Running on Right Foot (Right)
#raw 0x41 = Slide Running on Left Foot (Down)
#raw 0x42 = Slide Running on Left Foot (Up)
#raw 0x43 = Slide Running on Left Foot (Left)
#raw 0x44 = Slide Running on Left Foot (Right)
#raw 0x46 = Jump Facing Left (Down)
#raw 0x47 = Jump Facing Down (Up)
#raw 0x48 = Jump Facing Up (Left)
#raw 0x49 = Jump Facing Left (Right)
#raw 0x4A = Face Player
#raw 0x4B = Face Against Player
#raw 0x4C = Lock Sprite Facing
#raw 0x4D = Release Sprite Facing
#raw 0x4E = Jump Down
#raw 0x4F = Jump Up
#raw 0x50 = Jump Left
#raw 0x51 = Jump Right
#raw 0x52 = Jump in Place (Facing Down)
#raw 0x53 = Jump in Place (Facing Up)
#raw 0x54 = Jump in Place (Facing Left)
#raw 0x55 = Jump in Place (Facing Right)
#raw 0x56 = Jump in Place (Facing Down/Up)
#raw 0x57 = Jump in Place (Facing Up/Down)
#raw 0x58 = Jump in Place (Facing Left/Right)
#raw 0x59 = Jump in Place (Facing Right/Left)
#raw 0x60 = Hide Sprite
#raw 0x61 = Show Sprite
#raw 0x62 = Exclamation Mark (!)
#raw 0x63 = Question Mark (?)
#raw 0x64 = Cross (X)
#raw 0x65 = Double Exclamation Mark (!!)
#raw 0x66 = Happy ()
#raw 0xFE = End of Movements
Puoi usare quanti applymovement (e relativi waitmovement) vuoi in un comando, basta che dai loro un pointer diverso :v
Ora, il movimento della telecamera.
Prendiamo lo script di prima.SPOILER (clicca per visualizzare)#dynamic 0x800000
#org @start
lock
faceplayer
msgbox @msg 0x3
special 0x113
applymovement 0x7F @movimento
waitmovement 0x7F
special 0x114
msgbox @sms 0x3
release
end
#org @msg
= Montagne russe!
#org @movimento
#raw 0x13
#raw 0x13
#raw 0x12
#raw 0xFE
Aspetta ma lo script non è identico.
Ci sono quattro comandi che sono cambiati!
"special 0x113"? Serve per "attivare" la telecamera. E' presente sia in RSE che in FRLG.
"0x7F"? E' l'ID della telecamera.
"special 0x114"? Serve per "finire di usare" la telecamera. E' presente sia in RSE che in FRLG.
Poi vabbè è cambiato pure il testo ma chissene.
E anche questa lezione è andata, forse una delle più complicate!
Prova a esercitarti, e se hai dubbi dimmelo!
Edited by Volcanion - 16/5/2016, 17:01. -
.
SONO PRONTO PER LA PROSSIMA LEZIONE . -
Volcanion.
User deleted
Allora, oggi non impariamo i give perchè mi avevi detto che li sapevi usare già quindi sarebbe inutile.
E non ho manco voglia di fare una mazza.
Quindi il comando di oggi è il random.CODICErandom 0x??
compare 0x800D 0x0
if 0x1 goto @pointer1
compare 0x800D 0x1
if 0x1 goto @pointer2
compare 0x800D 0x2
if 0x1 goto @pointer3
"Analisi grammaticale":
random = un qualcosa di casuale, nel nostro caso un valore
0x?? = il numero massimo che può essere il valore, il minimo è 0x0
compare = controlla se
0x800D = indirizzo nel quale il numero che è stato randomizzato viene salvato
0x0= controlla se il valore scelto è 0
if = se il valore è
0x1 = "vero"
goto = vai a
@pointer = pointer
Un esempio su come potrebbe essere usato:CODICE#dynamic 0x800000
#org @start
random 0x3
compare 0x800D 0x0
if 0x1 goto @terra
compare 0x800D 0x1
if 0x1 goto @luna
compare 0x800D 0x2
if 0x1 goto @marte
release
end
#org @terra
msgbox @msg 0x3
#org @marte
msgbox @sms 0x3
#org @luna
msgbox @msgsms 0x3
#org @msg
= Ciao, vengo dalla Terra!
#org @sms
= Ciao, vengo da Marte!
#org @msgsms
= Ciao, vengo dalla Luna!
Insomma, è un comando che può permettere di creare molte cose, e non solo dialoghi stupidi come ho fatto io!
Se ti va prova a fare qualcosa con questo comando e se viene bene prova a mostrarmelo.