Messaggi: 42
Discussioni: 7
Registrato: 13-09-2021
Reputazione:
0
03-11-2021, 05:23 PM
(Questo messaggio è stato modificato l'ultima volta il: 03-11-2021, 05:24 PM da ThePharaoh.)
Bene, mi sono voluto invischiare in uno script un po' complicato, questo è il fatto:
levelscript; ci ritroviamo in una zona d'erba con accanto il professore che blablabla e ci presta un suo pokemon per catturarne un altro (farmelo regalare subito mi pareva troppo facile ) e una masterball (perché sprecare pokéball? ). Nella lotta non si "dovrebbe" fuggire (non uso ASM, ho usato solo shinyzer, quindi di routine ci capisco niente, mi limito a semplici script), e l'incontro col pokemon è casuale (3 pokemon scelti: venonat, chinchou, taillow. Non chiedetemi perché quei 3 perché non lo so neanche io lol) e per ogni pokemon ci sono 1/19 possibilità che sia shiny.
Finito lo scontro il prof di nuovo blablabla (potrei chiamarlo Prof. D'Agostino ) e si riprende il pokemon e *puff* sparisce.
Le difficoltà sono:
1) non poter fuggire senza asm. Per ovviare a questo problema vorrei mettere una flag, magari il menù pokemon in modo che se fuggo o uccido il pokemon o lui uccide il mio (beh alla fine non è neanche mio ma shhh) mi fa ripetere la battaglia. Ma sto diventando scemo su dove inserirla. Perché quella flag all'inizio della battaglia c'è (per uno script precedente, che per pigrizia non ho voluto togliere) ma la tolgo subito con un clearflag.
2) eliminare il pokemon prestato. Ho provato a usare uno script trovato qui nelle guide ma non so se è giusto.
per ora lo script è questo, mancano la var dello script, i pointer dei movimenti e dei messaggi, a quello poi ci penso dopo tranquillamente:
#dynamic 0x800000
#org @start
lockall
fadescreen 0x1
movesprite 0x2 0xC 0x2
applymovement 0xFF @sguardodx
waitmovement 0x0
fadescreen 0x0
clearflag 0x828
checkflag 0x828
if 0x0 goto @cattura
msgbox @devicatturare 0x6
random 0x3
compare LASTRESULT 0x0
if 0x1 goto @venonat
compare LASTRESULT 0x1
if 0x1 goto @chinchou
compare LASTRESULT 0x2
if 0x1 goto @taillow
releaseall
end
#org @cattura
setvar 0x4053 0x1
msgbox @prestato 0x6
givepokemon 0xA 0x5 0x0
msgbox @masterball 0x6
additem 0x1 0x1
bufferitem 0x0 0x1
fanfare 0x101
msgbox @ottenuto 0x4
waitfanfare
closeonkeypress
msgbox @arriva 0x6
random 0x3
compare LASTRESULT 0x0
if 0x1 goto @venonat
compare LASTRESULT 0x1
if 0x1 goto @chinchou
compare LASTRESULT 0x2
if 0x1 goto @taillow
releaseall
end
#org @venonat
random 0x13
compare LASTRESULT 0x0
if 0x1 goto @venonatshiny
compare LASTRESULT 0x1
if 0x1 goto @venonatnormale
compare LASTRESULT 0x2
if 0x1 goto @venonatnormale
compare LASTRESULT 0x3
if 0x1 goto @venonatnormale
compare LASTRESULT 0x4
if 0x1 goto @venonatnormale
compare LASTRESULT 0x5
if 0x1 goto @venonatnormale
compare LASTRESULT 0x6
if 0x1 goto @venonatnormale
compare LASTRESULT 0x7
if 0x1 goto @venonatnormale
compare LASTRESULT 0x8
if 0x1 goto @venonatnormale
compare LASTRESULT 0x9
if 0x1 goto @venonatnormale
compare LASTRESULT 0xA
if 0x1 goto @venonatnormale
compare LASTRESULT 0xB
if 0x1 goto @venonatnormale
compare LASTRESULT 0xC
if 0x1 goto @venonatnormale
compare LASTRESULT 0xD
if 0x1 goto @venonatnormale
compare LASTRESULT 0xE
if 0x1 goto @venonatnormale
compare LASTRESULT 0xF
if 0x1 goto @venonatnormale
compare LASTRESULT 0x10
if 0x1 goto @venonatnormale
compare LASTRESULT 0x11
if 0x1 goto @venonatnormale
compare LASTRESULT 0x12
if 0x1 goto @venonatnormale
releaseall
end
#org @chinchou
random 0x13
compare LASTRESULT 0x0
if 0x1 goto @chinchoushiny
compare LASTRESULT 0x1
if 0x1 goto @chinchounormale
compare LASTRESULT 0x2
if 0x1 goto @chinchounormale
compare LASTRESULT 0x3
if 0x1 goto @chinchounormale
compare LASTRESULT 0x4
if 0x1 goto @chinchounormale
compare LASTRESULT 0x5
if 0x1 goto @chinchounormale
compare LASTRESULT 0x6
if 0x1 goto @chinchounormale
compare LASTRESULT 0x7
if 0x1 goto @chinchounormale
compare LASTRESULT 0x8
if 0x1 goto @chinchounormale
compare LASTRESULT 0x9
if 0x1 goto @chinchounormale
compare LASTRESULT 0xA
if 0x1 goto @chinchounormale
compare LASTRESULT 0xB
if 0x1 goto @chinchounormale
compare LASTRESULT 0xC
if 0x1 goto @chinchounormale
compare LASTRESULT 0xD
if 0x1 goto @chinchounormale
compare LASTRESULT 0xE
if 0x1 goto @chinchounormale
compare LASTRESULT 0xF
if 0x1 goto @chinchounormale
compare LASTRESULT 0x10
if 0x1 goto @chinchounormale
compare LASTRESULT 0x11
if 0x1 goto @chinchounormale
compare LASTRESULT 0x12
if 0x1 goto @chinchounormale
releaseall
end
#org @taillow
random 0x13
compare LASTRESULT 0x0
if 0x1 goto @taillowshiny
compare LASTRESULT 0x1
if 0x1 goto @taillownormale
compare LASTRESULT 0x2
if 0x1 goto @taillownormale
compare LASTRESULT 0x3
if 0x1 goto @taillownormale
compare LASTRESULT 0x4
if 0x1 goto @taillownormale
compare LASTRESULT 0x5
if 0x1 goto @taillownormale
compare LASTRESULT 0x6
if 0x1 goto @taillownormale
compare LASTRESULT 0x7
if 0x1 goto @taillownormale
compare LASTRESULT 0x8
if 0x1 goto @taillownormale
compare LASTRESULT 0x9
if 0x1 goto @taillownormale
compare LASTRESULT 0xA
if 0x1 goto @taillownormale
compare LASTRESULT 0xB
if 0x1 goto @taillownormale
compare LASTRESULT 0xC
if 0x1 goto @taillownormale
compare LASTRESULT 0xD
if 0x1 goto @taillownormale
compare LASTRESULT 0xE
if 0x1 goto @taillownormale
compare LASTRESULT 0xF
if 0x1 goto @taillownormale
compare LASTRESULT 0x10
if 0x1 goto @taillownormale
compare LASTRESULT 0x11
if 0x1 goto @taillownormale
compare LASTRESULT 0x12
if 0x1 goto @taillownormale
releaseall
end
#org @venonatshiny
setvar 0x8003 0x1
wildbattle 0x30 0x5 0x0
msgbox @dopocattura 0x6
special2 0x8005 0xBA
setvar 0x8004 0xA
bufferpokemon 0x0 0x8005
comparevars 0x8005 0x8004
if 0x0 goto @nulla
special 0x176
cmdc3 0x2F
msgbox @ripreso 0x4
closeonkeypress
fadescreen 0x1
hidesprite 0x2
fadescreen 0x0
releaseall
end
#org @venonatnormale
setvar 0x8003 0x0
wildbattle 0x30 0x5 0x0
msgbox @dopocattura 0x6
special2 0x8005 0xBA
setvar 0x8004 0xA
bufferpokemon 0x0 0x8005
comparevars 0x8005 0x8004
if 0x0 goto @nulla
special 0x176
cmdc3 0x2F
msgbox @ripreso 0x4
closeonkeypress
fadescreen 0x1
hidesprite 0x2
fadescreen 0x0
releaseall
end
#org @chinchoushiny
setvar 0x8003 0x1
wildbattle 0xAA 0x5 0x0
msgbox @dopocattura 0x6
special2 0x8005 0xBA
setvar 0x8004 0xA
bufferpokemon 0x0 0x8005
comparevars 0x8005 0x8004
if 0x0 goto @nulla
special 0x176
cmdc3 0x2F
msgbox @ripreso 0x4
closeonkeypress
fadescreen 0x1
hidesprite 0x2
fadescreen 0x0
releaseall
end
#org @chinchounormale
setvar 0x8003 0x0
wildbattle 0xAA 0x5 0x0
msgbox @dopocattura 0x6
special2 0x8005 0xBA
setvar 0x8004 0xA
bufferpokemon 0x0 0x8005
comparevars 0x8005 0x8004
if 0x0 goto @nulla
special 0x176
cmdc3 0x2F
msgbox @ripreso 0x4
closeonkeypress
fadescreen 0x1
hidesprite 0x2
fadescreen 0x0
releaseall
end
#org @taillowshiny
setvar 0x8003 0x1
wildbattle 0x130 0x5 0x0
msgbox @dopocattura 0x6
special2 0x8005 0xBA
setvar 0x8004 0xA
bufferpokemon 0x0 0x8005
comparevars 0x8005 0x8004
if 0x0 goto @nulla
special 0x176
cmdc3 0x2F
msgbox @ripreso 0x4
closeonkeypress
fadescreen 0x1
hidesprite 0x2
fadescreen 0x0
releaseall
end
#org @taillownormale
setvar 0x8003 0x0
wildbattle 0x130 0x5 0x0
msgbox @dopocattura 0x6
special2 0x8005 0xBA
setvar 0x8004 0xA
bufferpokemon 0x0 0x8005
comparevars 0x8005 0x8004
if 0x0 goto @nulla
special 0x176
cmdc3 0x2F
msgbox @ripreso 0x4
closeonkeypress
fadescreen 0x1
hidesprite 0x2
fadescreen 0x0
releaseall
end
#org @nulla
releaseall
end
Sicuramente ci sarà qualcosa di sbagliato
Grazie per chi ci perderà un po' di tempo
 Mi Piace Ricevuti:  |
|
Messaggi: 1,257
Discussioni: 48
Registrato: 04-07-2014
Reputazione:
32
Citazione:1) non poter fuggire senza asm. Per ovviare a questo problema vorrei mettere una flag, magari il menù pokemon in modo che se fuggo o uccido il pokemon o lui uccide il mio (beh alla fine non è neanche mio ma shhh) mi fa ripetere la battaglia. Ma sto diventando scemo su dove inserirla. Perché quella flag all'inizio della battaglia c'è (per uno script precedente, che per pigrizia non ho voluto togliere) ma la tolgo subito con un clearflag.
Non c'è un modo per non fuggire senza usare ASM, ma ti posso proporre questa soluzione.
1) Se il tuo Pokémon viene sconfitto, allora perdi i sensi come da prassi e rifai lo script, quindi l'unico "problema" sarebbe togliere la masterball non usata o non darne una seconda; per fare ciò basta mettere un checkitem a inizio script.
2) Se tu lo sconfiggi o fuggi, dopo la battaglia basta mettere un countpokemon; nel caso in cui tu abbia un solo Pokémon, allora ti fa ripetere la wildbattle, altrimenti lo script prosegue come volevi tu.
Citazione:2) eliminare il pokemon prestato. Ho provato a usare uno script trovato qui nelle guide ma non so se è giusto.
Ti serve necessariamente l'ASM, mi dispiace.
Our Projects (ongoing)
Old Projects
Awards
 Mi Piace Ricevuti:  |
|
Messaggi: 42
Discussioni: 7
Registrato: 13-09-2021
Reputazione:
0
(03-11-2021, 06:03 PM)PacoScarso Ha scritto: Citazione:1) non poter fuggire senza asm. Per ovviare a questo problema vorrei mettere una flag, magari il menù pokemon in modo che se fuggo o uccido il pokemon o lui uccide il mio (beh alla fine non è neanche mio ma shhh) mi fa ripetere la battaglia. Ma sto diventando scemo su dove inserirla. Perché quella flag all'inizio della battaglia c'è (per uno script precedente, che per pigrizia non ho voluto togliere) ma la tolgo subito con un clearflag.
Non c'è un modo per non fuggire senza usare ASM, ma ti posso proporre questa soluzione.
1) Se il tuo Pokémon viene sconfitto, allora perdi i sensi come da prassi e rifai lo script, quindi l'unico "problema" sarebbe togliere la masterball non usata o non darne una seconda; per fare ciò basta mettere un checkitem a inizio script.
2) Se tu lo sconfiggi o fuggi, dopo la battaglia basta mettere un countpokemon; nel caso in cui tu abbia un solo Pokémon, allora ti fa ripetere la wildbattle, altrimenti lo script prosegue come volevi tu.
Citazione:2) eliminare il pokemon prestato. Ho provato a usare uno script trovato qui nelle guide ma non so se è giusto.
Ti serve necessariamente l'ASM, mi dispiace. 1) se perdo però dove mi manda? o semplicemente mi fa ricominciare lo script come se non fosse successo nulla?
2) giusto, stavo diventando scemo cercando una soluzione che era semplice
3) quindi se non uso l'asm mi devo tenere il pokemon, il che renderebbe inutile tutto lo script allora vediamo di capire qualcosa: questa guida fa al caso mio?
 Mi Piace Ricevuti:  |
|
Messaggi: 1,257
Discussioni: 48
Registrato: 04-07-2014
Reputazione:
32
1) Ti manda all'ultimo punto di respawn, quindi teoricamente a casa tua;
3) In teoria dovrebbe funzionare, ma non avendola usata fai qualche backup per sicurezza.
 Mi Piace Ricevuti:  |
|
Messaggi: 42
Discussioni: 7
Registrato: 13-09-2021
Reputazione:
0
03-11-2021, 06:55 PM
(Questo messaggio è stato modificato l'ultima volta il: 03-11-2021, 07:38 PM da ThePharaoh.)
dovrei rimanere lì dove sono, altrimenti sarebbe "bruttino" uscire da casa e ritrovarsi nell'erba. Perderebbe il senso logico. Quindi mi sa che dovrò imparare l'asm, c'è poco da fare
Ok appena posso provo e ti faccio sapere
Grazie per le risposte
@ PacoScarso ho provato lo script senza ASM e... funziona
ovviamente mi riferisco all'eliminazione del pokemon specifico.
però avrei un altro problema.. il level script è praticamente nella prima città e mi si attiva subito appena inizio il gioco quando invece dovrebbe attivarsi in un secondo momento. come risolvo? ho provato a mettere un checkflag con la flag che si attiva quando uno sprite dello script sparisce, ma si attiva lo stesso lo script...
 Mi Piace Ricevuti:  |
|
Messaggi: 1,850
Discussioni: 160
Registrato: 09-10-2014
Reputazione:
46
03-11-2021, 10:44 PM
(Questo messaggio è stato modificato l'ultima volta il: 03-11-2021, 10:46 PM da eMMe97.)
Secondo me invece è fattibile, anche se veramente complicato…vediamo come fare.
Ovviamente lo script deve essere unico da assegnare al professore.
Io lo strutturerei così:
1) parli col prof e ti da una masterball ed un pokemon;
2a) fai dirigere il protagonista nell’erba alta tramite movesprite e parte una wildbattle random tra i 3 pokémon;
2b) qui arriva la parte interessante. Imposti l’id del pokémon in una var, per esempio la 4001, servirà per dopo. Quindi per ogni voce del random scrivi
setvat 0x4001 0x1 (in questo caso è bulbasaur)
wildbattle 0x4001 0x5 0x…etc
3) fine della battaglia parte lo special assegnato anche a snorlax che ti permette di determinare se il pokémon sia stato catturato, ucciso o sei fuggito (se perdi ovviamente ritorni a casa o centro pokémon e sei un pirla perché con una masterball non puoi perdere ?);
4) torni dal professore, se non hai catturato il pokémon ti dice che sei un pirla e ti dice di tornare nell’erba alta e lo script si ripete dal punto 2a con possibilità di trovare un diverso pokémon. Se invece lo hai catturato usi lo special per cancellare completamente la squadra, quindi viene tolto il pokémon del professore ed il tuo. Per ripristinare il tuo usi il comando givepokemon 0x4001 0x5 0x…etc
5) finisci lo script come meglio credi.
Un po’ macchinosa e più brutta come soluzione, ma penso funzioni.
Edit: se è un level script che non parte subito devi mettere un valore tipo 0x1 alla var che usi per il level script. Finché non imposti quella var sul valore 0x1, lo script non verrà eseguito.
 Mi Piace Ricevuti:  |
|
Messaggi: 42
Discussioni: 7
Registrato: 13-09-2021
Reputazione:
0
04-11-2021, 01:35 AM
(Questo messaggio è stato modificato l'ultima volta il: 04-11-2021, 01:38 AM da ThePharaoh.)
(03-11-2021, 10:44 PM)eMMe97 Ha scritto: Secondo me invece è fattibile, anche se veramente complicato…vediamo come fare.
Ovviamente lo script deve essere unico da assegnare al professore.
Io lo strutturerei così:
1) parli col prof e ti da una masterball ed un pokemon;
2a) fai dirigere il protagonista nell’erba alta tramite movesprite e parte una wildbattle random tra i 3 pokémon;
2b) qui arriva la parte interessante. Imposti l’id del pokémon in una var, per esempio la 4001, servirà per dopo. Quindi per ogni voce del random scrivi
setvat 0x4001 0x1 (in questo caso è bulbasaur)
wildbattle 0x4001 0x5 0x…etc
3) fine della battaglia parte lo special assegnato anche a snorlax che ti permette di determinare se il pokémon sia stato catturato, ucciso o sei fuggito (se perdi ovviamente ritorni a casa o centro pokémon e sei un pirla perché con una masterball non puoi perdere ?);
4) torni dal professore, se non hai catturato il pokémon ti dice che sei un pirla e ti dice di tornare nell’erba alta e lo script si ripete dal punto 2a con possibilità di trovare un diverso pokémon. Se invece lo hai catturato usi lo special per cancellare completamente la squadra, quindi viene tolto il pokémon del professore ed il tuo. Per ripristinare il tuo usi il comando givepokemon 0x4001 0x5 0x…etc
5) finisci lo script come meglio credi.
Un po’ macchinosa e più brutta come soluzione, ma penso funzioni.
Edit: se è un level script che non parte subito devi mettere un valore tipo 0x1 alla var che usi per il level script. Finché non imposti quella var sul valore 0x1, lo script non verrà eseguito. anche questa soluzione è interessante, io comunque l'ho strutturato così, con la cattura e la restituzione del pokemon funziona, gli altri casi ci stavo lavorando ma mi è successo casino con la rom (in pratica mi assegna lo stesso level script a due mappe diverse, devo aver fatto un po' di casino con il #removeall per resettare gli offset e riscrivere gli script, fortuna che ho un backup della rom).
se vuoi dargli un'occhiata la bozza dello script è così (la var ho letto che va settata anche nello script che rimanda a questo):
#dynamic 0x800000
#org @start
lockall
fadescreen 0x1
movesprite 0x2 0xC 0x2
applymovement 0xFF @sguardodx
waitmovement 0x0
fadescreen 0x0
setvar 0x4053 0x1
msgbox @pokedex 0x6
setflag 0x829
msgbox @prestato 0x6
givepokemon 0xA 0x5 0x0 0x0 0x0 0x0
msgbox @masterball 0x6
additem 0x1 0x1
bufferitem 0x0 0x1
fanfare 0x101
msgbox @ottenuto 0x4
waitfanfare
closeonkeypress
msgbox @arriva 0x6
random 0x3
compare LASTRESULT 0x0
if 0x1 goto @venonat
compare LASTRESULT 0x1
if 0x1 goto @chinchou
compare LASTRESULT 0x2
if 0x1 goto @taillow
releaseall
end
#org @venonat
random 0x13
compare LASTRESULT 0x0
if 0x1 goto @venonatshiny
compare LASTRESULT 0x1
if 0x1 goto @venonatnormale
compare LASTRESULT 0x2
if 0x1 goto @venonatnormale
compare LASTRESULT 0x3
if 0x1 goto @venonatnormale
compare LASTRESULT 0x4
if 0x1 goto @venonatnormale
compare LASTRESULT 0x5
if 0x1 goto @venonatnormale
compare LASTRESULT 0x6
if 0x1 goto @venonatnormale
compare LASTRESULT 0x7
if 0x1 goto @venonatnormale
compare LASTRESULT 0x8
if 0x1 goto @venonatnormale
compare LASTRESULT 0x9
if 0x1 goto @venonatnormale
compare LASTRESULT 0xA
if 0x1 goto @venonatnormale
compare LASTRESULT 0xB
if 0x1 goto @venonatnormale
compare LASTRESULT 0xC
if 0x1 goto @venonatnormale
compare LASTRESULT 0xD
if 0x1 goto @venonatnormale
compare LASTRESULT 0xE
if 0x1 goto @venonatnormale
compare LASTRESULT 0xF
if 0x1 goto @venonatnormale
compare LASTRESULT 0x10
if 0x1 goto @venonatnormale
compare LASTRESULT 0x11
if 0x1 goto @venonatnormale
compare LASTRESULT 0x12
if 0x1 goto @venonatnormale
releaseall
end
#org @chinchou
random 0x13
compare LASTRESULT 0x0
if 0x1 goto @chinchoushiny
compare LASTRESULT 0x1
if 0x1 goto @chinchounormale
compare LASTRESULT 0x2
if 0x1 goto @chinchounormale
compare LASTRESULT 0x3
if 0x1 goto @chinchounormale
compare LASTRESULT 0x4
if 0x1 goto @chinchounormale
compare LASTRESULT 0x5
if 0x1 goto @chinchounormale
compare LASTRESULT 0x6
if 0x1 goto @chinchounormale
compare LASTRESULT 0x7
if 0x1 goto @chinchounormale
compare LASTRESULT 0x8
if 0x1 goto @chinchounormale
compare LASTRESULT 0x9
if 0x1 goto @chinchounormale
compare LASTRESULT 0xA
if 0x1 goto @chinchounormale
compare LASTRESULT 0xB
if 0x1 goto @chinchounormale
compare LASTRESULT 0xC
if 0x1 goto @chinchounormale
compare LASTRESULT 0xD
if 0x1 goto @chinchounormale
compare LASTRESULT 0xE
if 0x1 goto @chinchounormale
compare LASTRESULT 0xF
if 0x1 goto @chinchounormale
compare LASTRESULT 0x10
if 0x1 goto @chinchounormale
compare LASTRESULT 0x11
if 0x1 goto @chinchounormale
compare LASTRESULT 0x12
if 0x1 goto @chinchounormale
releaseall
end
#org @taillow
random 0x13
compare LASTRESULT 0x0
if 0x1 goto @taillowshiny
compare LASTRESULT 0x1
if 0x1 goto @taillownormale
compare LASTRESULT 0x2
if 0x1 goto @taillownormale
compare LASTRESULT 0x3
if 0x1 goto @taillownormale
compare LASTRESULT 0x4
if 0x1 goto @taillownormale
compare LASTRESULT 0x5
if 0x1 goto @taillownormale
compare LASTRESULT 0x6
if 0x1 goto @taillownormale
compare LASTRESULT 0x7
if 0x1 goto @taillownormale
compare LASTRESULT 0x8
if 0x1 goto @taillownormale
compare LASTRESULT 0x9
if 0x1 goto @taillownormale
compare LASTRESULT 0xA
if 0x1 goto @taillownormale
compare LASTRESULT 0xB
if 0x1 goto @taillownormale
compare LASTRESULT 0xC
if 0x1 goto @taillownormale
compare LASTRESULT 0xD
if 0x1 goto @taillownormale
compare LASTRESULT 0xE
if 0x1 goto @taillownormale
compare LASTRESULT 0xF
if 0x1 goto @taillownormale
compare LASTRESULT 0x10
if 0x1 goto @taillownormale
compare LASTRESULT 0x11
if 0x1 goto @taillownormale
compare LASTRESULT 0x12
if 0x1 goto @taillownormale
releaseall
end
#org @venonatshiny
setvar 0x8003 0x1
wildbattle 0x30 0x5 0x0
countpokemon
compare LASTRESULT 0x1
if 0x1 goto @rilotta
msgbox @dopocattura 0x6
special2 0x8005 0xBA
setvar 0x8004 0xA
bufferpokemon 0x0 0x8005
comparevars 0x8005 0x8004
if 0x0 goto @nulla
special 0x176
cmdc3 0x2F
msgbox @ripreso 0x4
closeonkeypress
fadescreen 0x1
hidesprite 0x2
setflag 0x200
fadescreen 0x0
setflag 0x828
releaseall
end
#org @venonatnormale
setvar 0x8003 0x0
wildbattle 0x30 0x5 0x0
countpokemon
compare LASTRESULT 0x1
if 0x1 goto @rilotta
msgbox @dopocattura 0x6
special2 0x8005 0xBA
setvar 0x8004 0xA
bufferpokemon 0x0 0x8005
comparevars 0x8005 0x8004
if 0x0 goto @nulla
special 0x176
cmdc3 0x2F
msgbox @ripreso 0x4
closeonkeypress
fadescreen 0x1
hidesprite 0x2
setflag 0x200
fadescreen 0x0
setflag 0x828
releaseall
end
#org @chinchoushiny
setvar 0x8003 0x1
wildbattle 0xAA 0x5 0x0
countpokemon
compare LASTRESULT 0x1
if 0x1 goto @rilotta
msgbox @dopocattura 0x6
special2 0x8005 0xBA
setvar 0x8004 0xA
bufferpokemon 0x0 0x8005
comparevars 0x8005 0x8004
if 0x0 goto @nulla
special 0x176
cmdc3 0x2F
msgbox @ripreso 0x4
closeonkeypress
fadescreen 0x1
hidesprite 0x2
setflag 0x200
fadescreen 0x0
setflag 0x828
releaseall
end
#org @chinchounormale
setvar 0x8003 0x0
wildbattle 0xAA 0x5 0x0
countpokemon
compare LASTRESULT 0x1
if 0x1 goto @rilotta
msgbox @dopocattura 0x6
special2 0x8005 0xBA
setvar 0x8004 0xA
bufferpokemon 0x0 0x8005
comparevars 0x8005 0x8004
if 0x0 goto @nulla
special 0x176
cmdc3 0x2F
msgbox @ripreso 0x4
closeonkeypress
fadescreen 0x1
hidesprite 0x2
setflag 0x200
fadescreen 0x0
setflag 0x828
releaseall
end
#org @taillowshiny
setvar 0x8003 0x1
wildbattle 0x130 0x5 0x0
countpokemon
compare LASTRESULT 0x1
if 0x1 goto @rilotta
msgbox @dopocattura 0x6
special2 0x8005 0xBA
setvar 0x8004 0xA
bufferpokemon 0x0 0x8005
comparevars 0x8005 0x8004
if 0x0 goto @nulla
special 0x176
cmdc3 0x2F
msgbox @ripreso 0x4
closeonkeypress
fadescreen 0x1
hidesprite 0x2
setflag 0x200
fadescreen 0x0
setflag 0x828
releaseall
end
#org @taillownormale
setvar 0x8003 0x0
wildbattle 0x130 0x5 0x0
countpokemon
compare LASTRESULT 0x1
if 0x1 goto @rilotta
msgbox @dopocattura 0x6
special2 0x8005 0xBA
setvar 0x8004 0xA
bufferpokemon 0x0 0x8005
comparevars 0x8005 0x8004
if 0x0 goto @nulla
special 0x176
cmdc3 0x2F
msgbox @ripreso 0x4
closeonkeypress
fadescreen 0x1
hidesprite 0x2
setflag 0x200
fadescreen 0x0
setflag 0x828
releaseall
end
#org @rilotta
random 0x3
compare LASTRESULT 0x0
if 0x1 goto @venonat
compare LASTRESULT 0x1
if 0x1 goto @chinchou
compare LASTRESULT 0x2
if 0x1 goto @taillow
releaseall
end
#org @nulla
releaseall
end
#org @prestato
= Ti presto Caterpie
#org @pokedex
= Tieni Pokedex
#org @masterball
= Tieni ball
#org @ottenuto
= Ottieni [buffer1]
#org @arriva
= Eccolo
#org @dopocattura
= Ben fatto
#org @ripreso
= Riprendo Caterpie
#org @sguardodx
#raw 0x3 0xFE
Non far caso ai messaggi, sono così solo per provare che funzioni tutto.
Certo che comunque io le cose facili mai
P.S.: si è vero che con la masterball non puoi perdere, ma potresti sbagliare tasto, volontario o involontario, devo coprire tutti i casi
 Mi Piace Ricevuti:  |
|
Messaggi: 1,850
Discussioni: 160
Registrato: 09-10-2014
Reputazione:
46
Oh mamma…un tuffo nel passato a quando iniziai a scriptare e facevo cose lunghissime e complicate come questa xD
Random va bene anche nel caso dello shiny ma basta tu metta solo il caso 0x0, poi puoi già trattare il pokémon non shiny. E poi…si può snellire parecchio lo script. Oggi pomeriggio ti faccio un po’ vedere come strutturarlo meglio, così inizi ad imparare per bene.
Posso dirti che l’errore “grave” è nel mettere il setvar del level script all’inizio. Ti chiedi perché? Semplice: prova a rimanere senza pokémon. Vieni rimandato dalla mamma o ad un centro pokémon e quel level script non si attiverà più. Se invece lo metti alla fine, finché lo script non si conclude se muori si ripeterà, perché non verrà letto il valore in questione. È un po’ il bug della pepita alla fine del ponte di celestopoli. Se vieni sconfitto dal rocket, quando ci parli di nuovo ti regala un’altra pepita, perché la flag la hanno impostata dopo la battaglia e non quando ti da lo strumento.
 Mi Piace Ricevuti:  |
ThePharaoh likes this post
|
Messaggi: 42
Discussioni: 7
Registrato: 13-09-2021
Reputazione:
0
Aggiornamento: per gli script ripetuti in due mappe è un bug di AMap proprio con i level script, basta chiudere e riaprire Amap. Menomale.
Poi: sì, le varie var negli script li ho impostati alla fine infatti, e ho risolto anche il problema dello script subito dopo un altro. Poi ho fatto in modo che se si preme fuga (sarebbe meglio che mi dicesse "Non puoi scappare!" ma immagino che per questo serva l'ASM al 100%) riparte la lotta dopo un messaggio che dice devi per forza catturarlo. E anche se io metto ko il pokemon con uno special 0x0 che ricura prima di riaffrontare la battaglia (sarebbe bellino se la battaglia che viene ripetuta si lockasse sul pokemon precedentemente affrontato ma non so se si può fare, per ora comunque non mi lamento, anche se così uno se lo sa potrebbe fare fuga per ripetere la battaglia e trovare alla fine lo shiny). Avrei da sistemare due cose se non ricordo male: la prima è che non funziona il movesprite. Praticamente dopo che esco dal laboratorio del prof con un warp (messo nello script) mi devo ritrovare nell'erba con lui accanto, invece ci sono solo io. Magari devo usare movesprite2 oppure cambio questa parte e metto un hidden (che però sembrerebbe un po' buggato su FireRed e volevo evitare) e quindi uno showsprite col prof che mi porta nell'erba o lo faccio comparire direttamente lì. La seconda è nel caso in cui mi faccio battere dal pokemon selvatico. mi ritrovo a casa ma appena esco parte lo script davanti la porta. è bruttissima questa cosa. Ho visto che il gioco si basa sulla flag 0x258 per quando il player perde (almeno lo script originale della mamma fa un chekcflag su quella). Se risolvo anche questa è perfetto.
Sì lo script mi pare un po' troppo ripetitivo in effetti, la cosa dello 0x0 sul random ha senso in effetti, ma non ci penso magari lì sul momento
 Mi Piace Ricevuti:  |
|
Messaggi: 396
Discussioni: 16
Registrato: 12-06-2014
Reputazione:
6
La butto lì: se nom hai intenzione di riciclare script dal gioco originale, invece di utilizzare il comando hidden di A-Map potresti utilizzare una delle flag già attivate di default ad inizio gioco ed assegnarla al npc in questione in modo da tenerlo invisibile, facendolo ricomparire quando ti serve con un clearflag (+showsprite se lo utilizzi nella stessa mappa in cui si trova l'Npc).
Qui puoi trovare delle flag che fanno al caso tuo!
https://pokehack.altervista.org/showthread.php?tid=4948
 Mi Piace Ricevuti:  |
ThePharaoh likes this post
|
Messaggi: 42
Discussioni: 7
Registrato: 13-09-2021
Reputazione:
0
04-11-2021, 06:46 PM
(Questo messaggio è stato modificato l'ultima volta il: 04-11-2021, 07:10 PM da ThePharaoh.)
(04-11-2021, 05:13 PM)~Ketan Ha scritto: La butto lì: se nom hai intenzione di riciclare script dal gioco originale, invece di utilizzare il comando hidden di A-Map potresti utilizzare una delle flag già attivate di default ad inizio gioco ed assegnarla al npc in questione in modo da tenerlo invisibile, facendolo ricomparire quando ti serve con un clearflag (+showsprite se lo utilizzi nella stessa mappa in cui si trova l'Npc).
Qui puoi trovare delle flag che fanno al caso tuo!
https://pokehack.altervista.org/showthread.php?tid=4948
hai ragionissima è una buona idea questa, potrei utilizzare la stessa flag che ha il prof oak a pallet
@ ~Ketan fatto, adesso lo sprite si vede, anche se all'inizio rimangono delle macchie nere sotto gli sprite sia del prof sia del player, ma quando esco dalla battaglia si vedono bene. è che non riesco a fare in modo che lui sia già là quando mi teletrasporto col warp dello script che rimanda a questo. l'idea mia è questa:
sono in laboratorio, il prof mi dice di seguirlo ed esce, io lo seguo. quando usciamo fuori non siamo davanti alla porta del laboratorio ma siamo nel punto in cui dico io. però succede che quando mi teletrasporto mi ritrovo all'inizio io soltanto, poi con lo script appare anche lui, ma dovrebbe essere già lì. mi sta venendo in mente una cosa: dovrei usare uno script "on entering map" per fare in modo che sia già lì nel punto che vorrei forse?
 Mi Piace Ricevuti:  |
|
Messaggi: 1,850
Discussioni: 160
Registrato: 09-10-2014
Reputazione:
46
04-11-2021, 07:11 PM
(Questo messaggio è stato modificato l'ultima volta il: 04-11-2021, 07:12 PM da eMMe97.)
Allora, ho un po' tagliuzzato lo script, almeno vedi come farne uno molto più pulito. Non ci sarebbero problemi con questo, sprecheresti solo spazio, ma quando inizia a fare script alla flygon (cioè mooooolto lunghi)...credimi, c'è bisogno che siano puliti altrimenti ti ci ammazzi a metà.
Unica perplessità sono le var 4001 e 8003 che non so se si resettano a fine wildbattle, nel caso dovresti usare una var diversa da 4001 (es. 4050) e nel caso della 8003 che a quanto ho capito serve per lo shiny dovresti fare un copyvar e "stivare" il risultato su un'altra var prima dello scontro e poi ricopiarlo dopo:
es.
copyvar 0x8003 0x4051
wildbattle ....
copyvar 0x4051 0x8003
in questo modo non hai più problemi.
Ho messo dei commenti nello script, li riconosci perché sono dopo i //
#dynamic 0x800000
#org @start
lockall
fadescreen 0x1
movesprite 0x2 0xC 0x2
applymovement 0xFF @sguardodx
waitmovement 0x0
fadescreen 0x0
msgbox @pokedex 0x6
setflag 0x829
msgbox @prestato 0x6
givepokemon 0xA 0x5 0x0 0x0 0x0 0x0
msgbox @masterball 0x6
additem 0x1 0x1
bufferitem 0x0 0x1
fanfare 0x101
msgbox @ottenuto 0x4
waitfanfare
closeonkeypress
msgbox @arriva 0x6
random 0x3
compare LASTRESULT 0x0
if 0x1 goto @venonat
compare LASTRESULT 0x1
if 0x1 goto @chinchou
goto @taillow //questo perché è ovvio che se non sono le prime due sarà per forza la terza, quindi non si ripete il controllo
end
#org @venonat
setvar 0x4001 0x30 //venonath
goto @dopo
end
#org @chinchou
setvar 0x4001 0xAA //chinchou
goto @dopo
end
#org @taillow
setvar 0x4001 0x114 //taillow
goto @dopo
end
#org @dopo
random 0x13
compare LASTRESULT 0x0
if 0x1 goto @ Shiny
goto @normale
end
#org @normale
setvar 0x8003 0x0
goto @battaglia
end
#org @ Shiny
setvar 0x8003 0x1
goto @battaglia
end
#org @battaglia
wildbattle 0x4001 0x5 0x0
countpokemon
compare LASTRESULT 0x1
if 0x1 goto @battaglia
msgbox @dopocattura 0x6
special 0xEF //elimina tutta la squadra
msgbox @ripreso 0x4
closeonkeypress
givepokemon 0x4001 0x5 0x0 0x0 0x0 0x0 //restituisce di nascosto il pokémon catturato
fadescreen 0x1
hidesprite 0x2
fadescreen 0x0
setflag 0x828 //allo sprite da nascondere dai questa flag, almeno risparmi la flag 200
setvar 0x4053 0x1
releaseall
end
#org @nulla
releaseall
end
#org @prestato
= Ti presto Caterpie
#org @pokedex
= Tieni Pokedex
#org @masterball
= Tieni ball
#org @ottenuto
= Ottieni [buffer1]
#org @arriva
= Eccolo
#org @dopocattura
= Ben fatto
#org @ripreso
= Riprendo Caterpie
#org @sguardodx
#raw 0x3 0xFE
 Mi Piace Ricevuti:  |
ThePharaoh likes this post
|
Messaggi: 42
Discussioni: 7
Registrato: 13-09-2021
Reputazione:
0
(04-11-2021, 07:11 PM)eMMe97 Ha scritto: Allora, ho un po' tagliuzzato lo script, almeno vedi come farne uno molto più pulito. Non ci sarebbero problemi con questo, sprecheresti solo spazio, ma quando inizia a fare script alla flygon (cioè mooooolto lunghi)...credimi, c'è bisogno che siano puliti altrimenti ti ci ammazzi a metà.
Unica perplessità sono le var 4001 e 8003 che non so se si resettano a fine wildbattle, nel caso dovresti usare una var diversa da 4001 (es. 4050) e nel caso della 8003 che a quanto ho capito serve per lo shiny dovresti fare un copyvar e "stivare" il risultato su un'altra var prima dello scontro e poi ricopiarlo dopo:
es.
copyvar 0x8003 0x4051
wildbattle ....
copyvar 0x4051 0x8003
in questo modo non hai più problemi.
Ho messo dei commenti nello script, li riconosci perché sono dopo i //
#dynamic 0x800000
#org @start
lockall
fadescreen 0x1
movesprite 0x2 0xC 0x2
applymovement 0xFF @sguardodx
waitmovement 0x0
fadescreen 0x0
msgbox @pokedex 0x6
setflag 0x829
msgbox @prestato 0x6
givepokemon 0xA 0x5 0x0 0x0 0x0 0x0
msgbox @masterball 0x6
additem 0x1 0x1
bufferitem 0x0 0x1
fanfare 0x101
msgbox @ottenuto 0x4
waitfanfare
closeonkeypress
msgbox @arriva 0x6
random 0x3
compare LASTRESULT 0x0
if 0x1 goto @venonat
compare LASTRESULT 0x1
if 0x1 goto @chinchou
goto @taillow //questo perché è ovvio che se non sono le prime due sarà per forza la terza, quindi non si ripete il controllo
end
#org @venonat
setvar 0x4001 0x30 //venonath
goto @dopo
end
#org @chinchou
setvar 0x4001 0xAA //chinchou
goto @dopo
end
#org @taillow
setvar 0x4001 0x114 //taillow
goto @dopo
end
#org @dopo
random 0x13
compare LASTRESULT 0x0
if 0x1 goto @Shiny
goto @normale
end
#org @normale
setvar 0x8003 0x0
goto @battaglia
end
#org @Shiny
setvar 0x8003 0x1
goto @battaglia
end
#org @battaglia
wildbattle 0x4001 0x5 0x0
countpokemon
compare LASTRESULT 0x1
if 0x1 goto @battaglia
msgbox @dopocattura 0x6
special 0xEF //elimina tutta la squadra
msgbox @ripreso 0x4
closeonkeypress
givepokemon 0x4001 0x5 0x0 0x0 0x0 0x0 //restituisce di nascosto il pokémon catturato
fadescreen 0x1
hidesprite 0x2
fadescreen 0x0
setflag 0x828 //allo sprite da nascondere dai questa flag, almeno risparmi la flag 200
setvar 0x4053 0x1
releaseall
end
#org @nulla
releaseall
end
#org @prestato
= Ti presto Caterpie
#org @pokedex
= Tieni Pokedex
#org @masterball
= Tieni ball
#org @ottenuto
= Ottieni [buffer1]
#org @arriva
= Eccolo
#org @dopocattura
= Ben fatto
#org @ripreso
= Riprendo Caterpie
#org @sguardodx
#raw 0x3 0xFE
wow grazie sei stato gentile a farmi vedere come risparmiare tempo e spazio non so ho letto ovunque che la var 4001 è temporanea e si resetta col cambio mappa, magari non la userò più in quella mappa. ma se uso la flag 0x828 sullo sprite che è uguale anche alla flag del menù pokemon, non succede niente? l'idea di farmi ripassare il pokemon catturato sottobanco è geniale comunque, settandolo con la var dovrebbe anche rimanere shiny nel caso lo si trova.
la var da settare alla fine (uso la var 4013 che a quanto ho capito non dovrebbe dare problemi) è settata 0x3 nello script perché è 2 su amap e appunto 0x2 nello script di quando sono in laboratorio per far partire lo script al momento giusto. era per fare chiarezza
dopo lo provo subito, però rimarrebbe il problema dello sprite che dovrebbe essere già lì, ho appena letto che un level script 04 farebbe al caso mio. nel level script 04 imposto che il prof appare in quel punto e il palyer è già girato nella giusta direzione, mettendo anche lì la var settata a 0x2 per farlo partire al momento giusto. e quindi togliendo i movimenti iniziali dal level script 02 che stiamo trattando ora. dico bene?
 Mi Piace Ricevuti:  |
|
Messaggi: 1,850
Discussioni: 160
Registrato: 09-10-2014
Reputazione:
46
(04-11-2021, 07:41 PM)ThePharaoh Ha scritto: ho letto ovunque che la var 4001 è temporanea e si resetta col cambio mappa, magari non la userò più in quella mappa. Si le var 4000, 4001 ed altre successive, e le var 8000 ed altre successive si resettano al cambio mappa. Questo vuol dire che possono essere riutilizzate in più ambiti.
La mia perplessità è che la wildbattle venga intesa come cambio mappa (non dovrebbe) e quindi riporterebbe quelle var al valore zero (in pratica ad ogni cambio mappa è come se scrivessi, per esempio setvar 0x8000 0x0), ma più probabilmente che la var 8003 sia automaticamente riportata a 0 ddalla routine per il pokémon shiny dopo che ha reso brillante il pokémon. In questo caso ci sarebbero problemi nello script sia per l'assegnazione del pokémon, perché resettando la var 4001 ti verrebbe dato il pokémon 0, che non esiste, sia per lo shiny, perché la var 8003 tornerebbe 0 e quindi sempre non shiny. Per ovviare a questo puoi usare al posto della var 4001 una var non temporanea, cioè che anche al cambio mappa conserva il valore (es. 4050 è una var non temporanea), mentre nel secondo caso, dato che bisogna per forza utilizzare la var 8003, si salva quel valore assegnato anche in una var non temporanea, per poi rimettere il valore con l'esempio del copyvar che ti ho scritto prima.
(04-11-2021, 07:41 PM)ThePharaoh Ha scritto: ma se uso la flag 0x828 sullo sprite che è uguale anche alla flag del menù pokemon, non succede niente? Allora te immagina la flag come un interruttore acceso/spento. Se è accesa succedono varie cose, se spenta altre. A questo interruttore si possono collegare più fili che ovviamente risentiranno tutti del acceso/spento. Se collego 8 luci ad un interruttore ovviamente tutte ed 8 dipenderanno da quello stesso interruttore.
Nel nostro caso "collego" la flag 828 sia al menu pokémon (cioè questo in realtà lo fa chi ha creato il gioco), che allo sprite del professore. Quindi quando la flag è a zero (spenta) non vedo la scritta Pokémon nel menu, ma vedo il personaggio del professore. Quando la setto (setflag 0x1), attivo la voce del menu ma nascondo il professore.
Per assurdo potrei fare uno script per utilizzate quella flag per il menu pokémon, nascondere il professore, togliere l'ow di un altro omino che bloccava la via finché non avevo un pokémon, e fare molte altre azioni. Ovviamente TUTTE queste azioni cambiano a seconda che la flag sia settata oppure no.
(04-11-2021, 07:41 PM)ThePharaoh Ha scritto: però rimarrebbe il problema dello sprite che dovrebbe essere già lì Non puoi spostare un ow da una mappa all'altra, quindi nel gioco di rosso fuoco, quando oak ti ferma che entri nell'erba alta e ti porta al laboratorio per poi assegnarti il pokémon, abbiamo in realtà 2 oak, uno a biancavilla ed uno nel laboratorio, non è che quello di biancavilla che entra dentro la porta poi lo ritrovi nel laboratorio, è solo un'illusione, sono due ow diversi e distinti.
Te devi mettere un ow del professore già lì. Se vuoi che non si veda puoi usare l'hidden, (che non capisco perché diciate sia buggato...se utilizzate l'hidden 0xC ovvio che non funziona, serve ad altro, dovete usare l'hidden 0x3F e funziona benissimo), oppure allo sprite dai la flag 2B oppure 2C o altre che sono già settate ad inizio partita, quindi dovrai usare un clearflag 0x2B ed uno showsprite per farlo apparire. Se non sbaglio nel warp puoi impostare il warp da cui esce il player, quindi si gira verso la direzione giusta.
 Mi Piace Ricevuti:  |
ThePharaoh likes this post
|
Messaggi: 42
Discussioni: 7
Registrato: 13-09-2021
Reputazione:
0
04-11-2021, 11:16 PM
(Questo messaggio è stato modificato l'ultima volta il: 04-11-2021, 11:48 PM da ThePharaoh.)
(04-11-2021, 10:09 PM)eMMe97 Ha scritto: .
bene pensavo che si sarebbe fatto casino impostando flag che erano già impostate per altre cose, ottimo a sapersi
si l'ow è già fuori dal laboratorio, ovviamente, e con la soluzione di ketan riesco poi a vederlo anche se come ho già detto nel momento in cui appare c'è un'ombra nera sotto che dopo la battle scompare e si vede bene, magari faccio uno screen per far vedere. a proposito piccolo ot: che programma devo usare per fare un video dell'emulatore come hanno alcuni utenti in firma? così magari faccio vedere come va e si potrebbe capire meglio.
come faccio a capire l'hidden qual è? ce ne sono 3, uno a quanto ho capito viene usato dai ninja nella cenere, ne rimangono 2 dove paco mi ha detto di utilizzare il primo dopo aver cambiato anche un pezzo di codice. lo avevo già utilizzato l'hidden in uno sprite precedente e l'ow rimaneva tagliato come avevo fatto notare.
Così è come viene, l'immagine a sx è prima della wildbattle, quella a dx subito dopo la wildbattle:
 Mi Piace Ricevuti:  |
|
Messaggi: 396
Discussioni: 16
Registrato: 12-06-2014
Reputazione:
6
(04-11-2021, 11:16 PM)ThePharaoh Ha scritto: (04-11-2021, 10:09 PM)eMMe97 Ha scritto: .
bene pensavo che si sarebbe fatto casino impostando flag che erano già impostate per altre cose, ottimo a sapersi
si l'ow è già fuori dal laboratorio, ovviamente, e con la soluzione di ketan riesco poi a vederlo anche se come ho già detto nel momento in cui appare c'è un'ombra nera sotto che dopo la battle scompare e si vede bene, magari faccio uno screen per far vedere. a proposito piccolo ot: che programma devo usare per fare un video dell'emulatore come hanno alcuni utenti in firma? così magari faccio vedere come va e si potrebbe capire meglio.
come faccio a capire l'hidden qual è? ce ne sono 3, uno a quanto ho capito viene usato dai ninja nella cenere, ne rimangono 2 dove paco mi ha detto di utilizzare il primo dopo aver cambiato anche un pezzo di codice. lo avevo già utilizzato l'hidden in uno sprite precedente e l'ow rimaneva tagliato come avevo fatto notare.
Così è come viene, l'immagine a sx è prima della wildbattle, quella a dx subito dopo la wildbattle:
Secondo me è il comando hidden che fa casino: prova ad utilizzare solo una delle flag già attivate di cui ti avevo parlato, assegnala all'Npc e cambia tipo di movimento a quest'ultimo in qualcos'altro rispetto ad Hidden.
Dopodiché ti basterà utilizzare un clearflag nello script prima del teletrasporto nella nuova mappa, in questa maniera l'Npc dovrebbe essere già visibile senza cose strane!
 Mi Piace Ricevuti:  |
ThePharaoh likes this post
|
Messaggi: 42
Discussioni: 7
Registrato: 13-09-2021
Reputazione:
0
05-11-2021, 12:08 AM
(Questo messaggio è stato modificato l'ultima volta il: 05-11-2021, 12:37 AM da ThePharaoh.)
(05-11-2021, 12:03 AM)~Ketan Ha scritto: Secondo me è il comando hidden che fa casino: prova ad utilizzare solo una delle flag già attivate di cui ti avevo parlato, assegnala all'Npc e cambia tipo di movimento a quest'ultimo in qualcos'altro rispetto ad Hidden.
Dopodiché ti basterà utilizzare un clearflag nello script prima del teletrasporto nella nuova mappa, in questa maniera l'Npc dovrebbe essere già visibile senza cose strane! ehm... questo è senza l'hidden veramente, è questa la cosa strana. ho usato la soluzione che mi hai dato, usare la flag già esistente dell'ow mettendo clearflag e showsprite all'inizio ma l'ow non è hidden. magari provo a metterlo hidden vediamo che succede.
aspetta ho riletto meglio. il clearflag dovrei metterlo nello script prima? cavolo hai ragione. provo subito.
Finalmente, lo sprite del prof ora è a posto e senza cose strane, devo aggiustare quello del player però. Nel senso che quando c'è il cambio mappa vorrei che avesse la faccia rivolta subito verso sinistra e non verso il basso. ho letto prima che emme97 ha detto che con un warp dovrebbe essere rivolto nella direzione giusta, come devo fare?
 Mi Piace Ricevuti:  |
|
Messaggi: 1,850
Discussioni: 160
Registrato: 09-10-2014
Reputazione:
46
Secondo me il problema è che fai andare in tilt il sistema palette degli sprite, infatti quel “nero” è lo sprite dei fili d’erba piegati che coprono gli ow del professore e del player. Dopo la wildbattle, con il ricaricamento delle palette, il problema scompare. Come fare allora? Molto semplice, posizioni gli ow fuori e li muovi dopo. La cosa viene anche più carina, magari il prof può dire:
“[player] fai molta attenzione adesso! Per prendere il tuo primo pokémon dobbiamo entrare nell’erba alta, ma non puoi farlo senza un aiuto ed uno strumento adatto per la cattura. Ti presterò momentaneamente il mio caterpie e ti regalerò questa ball.”
Dopo aver ricevuto il pokémon e la ball…
“Bene, adesso hai tutto ciò che ti serve, possiamo iniziare!”
E qui continua lo script come prima.
 Mi Piace Ricevuti:  |
ThePharaoh likes this post
|
|