Rispondi 
[Rosso fuoco] Wonder Trade Tutorial
eMMe97
Professione: Genio
******
Online

Messaggi: 1,295
Registrato: 09-10-2014
Reputazione: 17
Mi Piace Ricevuti: 1165
PokéMoney: 1,551.00₱
Messaggio: #1
Wonder Trade Tutorial
Salve ragazzi! Oggi voglio farvi vedere cosa sono riuscito a fare, partendo da un tutorial di Harlee Quinn, utente di un altro forum.

Questo utente aveva creato una bozza di un effetto molto carino che può essere implementato nel gioco. Sto parlando del: Wonder Trade!

Per chi, come me, mastica poco l'inglese, questo tutorial consiste nel creare uno script che permetta di scambiare un Pokémon della nostra squadra con uno totalmente casuale all'interno del gioco.
Harlee Quinn è stato molto furbo e ha trovato il modo di escludere i Pokémon leggendari tramite un "filtro" che può essere adattato a nostro piacimento.
La guida presentava qualche errore di compilazione e problemi non risolvibili con un semplice script, come il fatto che bisognasse impostare un livello fisso per il givepokemon. La cosa più fastidiosa era data dall'impossibilità di utilizzare la guida se non si installava l'hacked engine di JPAN.
Dopo qualche oretta di prove sono riuscito a trovare la soluzione.
Posterò entrambe le soluzioni, così che tutti possano utilizzare questo metodo.
[...e per emerald? ci sarà qualcun altro che lo convertirà, io no Tongue ]

Cool Se AVETE l'Hacked Engine di JPAN installato

In questo caso sarà tutto molto semplice, basta applicare questo script

Codice:
#dynamic 0x800000
#org @starting
lock
faceplayer
msgbox @qw MSG_YESNO
compare LASTRESULT 0x1
if 0x0 goto @end
msgbox @by MSG_NORMAL
special 0x9f
waitstate
compare 0x8004 0x6
if 0x4 goto @end
goto @start

#org @end
msgbox @as MSG_NORMAL
release
end

#org @start
random 0x19C

FILTRO**

bufferpokemon 0x0 LASTRESULT
goto @trade

#org @trade
showpokepic 0x800D 0x3 0x3
preparemsg @get-msg
fanfare 0x101
waitmsg
waitfanfare
waitkeypress
hidepokepic
special 0x6
copyvar 0x8005 LASTRESULT
special 0x16
special 0x6
release
end



'---------
' Strings
'---------
#org @ty
= Thank you!

#org @qw
= Do you want to Wonder Trade?\pThe choice is yours...

#org @as
= We hope to see you again.

#org @by
= Pick your Pokemon to give up.

#org @get-msg
= You got a [BUFFER1]\pTake good care of it!



Blush Se NON avete l'Hacked Engine di JPAN installato.

Qui la cosa si complica un pochino, in pratica dobbiamo inserire una routine per ricreare l'effetto dato dall'hacked engine.

La routine è questa

Codice:
.text
.align 2
.thumb
.thumb_func
.global Indexnumber_changeand20bytes_recalc

main:
    push {r0-r3, lr}
getpokeoffset:
    ldr r0, varnumber_8004
    ldrh r2, [r0]
    mov r0, #100
    mul r2, r0
    ldr r0, partystart
    add r3, r2, r0
    push {r3}
getandsetnewindexnumber:
    ldr r0, vartocontainnewindexnumber
    mov r2, r0
    mov r1, #0xB
    ldr r0, [sp]
    ldr r3, pokeencrypt
    bl bxr3
recalc20bytes:
    pop {r0}
    ldr r3, effectivestatsrecalc
    bl bxr3
    pop {r0-r3, pc}
bxr3:
    bx r3
    
.align 2
    varnumber_8004:            .word 0x020370C0
    partystart:            .word 0x02024284
    vartocontainnewindexnumber:    .word 0x020370D0
    pokeencrypt:            .word 0x0804037C+1
    effectivestatsrecalc:        .word 0x0803e47c+1

Inserite la routine in uno spazio libero e ricordatevi l'offset di dove l'avete inserita.

Passiamo ora allo script, che in questo caso sarà un po' diverso dal primo

Codice:
#Dynamic 0x740000
#org @starting
lock
faceplayer
msgbox @qw MSG_YESNO
compare LASTRESULT 0x1
if 0x0 goto @end
msgbox @by MSG_NORMAL
special 0x9f
waitstate
compare 0x8004 0x6
if 0x4 goto @end
goto @start

#org @end
msgbox @as MSG_NORMAL
release
end

#org @start
random 0x19C

FILTRO**

goto @trade

#org @trade
showpokepic 0x800D 0x3 0x3
preparemsg @get-msg
fanfare 0x101
waitmsg
waitfanfare
waitkeypress
hidepokepic
callasm 0x8offset routine di prima+1
release
end



'---------
' Strings
'---------
#org @ty
= Thank you!

#org @qw
= Do you want to Wonder Trade?\pThe choice is yours...

#org @as
= We hope to see you again.

#org @by
= Pick your Pokemon to give up.

#org @get-msg
= You got a [BUFFER1]\pTake good care of it!


Al posto delle FFFFFF dovrete inserire l'offset della routine di prima aumentato di 1


Pokéball FILTRO**
Questa parte deve essere compilata con il vostro filtro, vi lascio l'esempio che esclude Missingno e tutti i Leggendari

Codice:
compare LASTRESULT 0x0
if 0x1 goto @start
compare LASTRESULT 0xFC
if 0x1 goto @start
compare LASTRESULT 0xFD
if 0x1 goto @start
compare LASTRESULT 0xFE
if 0x1 goto @start
compare LASTRESULT 0xFF
if 0x1 goto @start
compare LASTRESULT 0x100
if 0x1 goto @start
compare LASTRESULT 0x101
if 0x1 goto @start
compare LASTRESULT 0x102
if 0x1 goto @start
compare LASTRESULT 0x103
if 0x1 goto @start
compare LASTRESULT 0x104
if 0x1 goto @start
compare LASTRESULT 0x105
if 0x1 goto @start
compare LASTRESULT 0x106
if 0x1 goto @start
compare LASTRESULT 0x107
if 0x1 goto @start
compare LASTRESULT 0x108
if 0x1 goto @start
compare LASTRESULT 0x109
if 0x1 goto @start
compare LASTRESULT 0x10A
if 0x1 goto @start
compare LASTRESULT 0x10B
if 0x1 goto @start
compare LASTRESULT 0x10C
if 0x1 goto @start
compare LASTRESULT 0x10D
if 0x1 goto @start
compare LASTRESULT 0x10E
if 0x1 goto @start
compare LASTRESULT 0x10F
if 0x1 goto @start
compare LASTRESULT 0x110
if 0x1 goto @start
compare LASTRESULT 0x111
if 0x1 goto @start
compare LASTRESULT 0x112
if 0x1 goto @start
compare LASTRESULT 0x113
if 0x1 goto @start
compare LASTRESULT 0x114
if 0x1 goto @start
compare LASTRESULT 0x90
if 0x1 goto @start
compare LASTRESULT 0x91
if 0x1 goto @start
compare LASTRESULT 0x92
if 0x1 goto @start
compare LASTRESULT 0x96
if 0x1 goto @start
compare LASTRESULT 0x97
if 0x1 goto @start
compare LASTRESULT 0xF3
if 0x1 goto @start
compare LASTRESULT 0xF4
if 0x1 goto @start
compare LASTRESULT 0xF5
if 0x1 goto @start
compare LASTRESULT 0xF9
if 0x1 goto @start
compare LASTRESULT 0xFA
if 0x1 goto @start
compare LASTRESULT 0xFB
if 0x1 goto @start
compare LASTRESULT 0x191
if 0x1 goto @start
compare LASTRESULT 0x192
if 0x1 goto @start
compare LASTRESULT 0x193
if 0x1 goto @start
compare LASTRESULT 0x194
if 0x1 goto @start
compare LASTRESULT 0x195
if 0x1 goto @start
compare LASTRESULT 0x196
if 0x1 goto @start
compare LASTRESULT 0x197
if 0x1 goto @start
compare LASTRESULT 0x198
if 0x1 goto @start
compare LASTRESULT 0x199
if 0x1 goto @start
compare LASTRESULT 0x19A
if 0x1 goto @start

[Immagine: 51ppxl.png] [Immagine: 1zlgf2o.png] [Immagine: http1t.png] [Immagine: 2i1cze0.png] [Immagine: 122knxf.png] [Immagine: veu3h5.png] [Immagine: 33u6d86.png]

[Immagine: Targhetta_e_MMe.png]
07-10-2017 01:38 PM
Cerca Cita
 Mi piace ricevuti da: Andrea , Carl_J90 , Bonnox
Wendrew
Futura Promessa
**
Offline

Messaggi: 127
Registrato: 15-10-2016
Reputazione: 4
Mi Piace Ricevuti: 66
PokéMoney: 553.25₱
Messaggio: #2
RE: Wonder Trade Tutorial
(07-10-2017 01:38 PM)eMMe97 Ha scritto:  Salve ragazzi! Oggi voglio farvi vedere cosa sono riuscito a fare, partendo da un tutorial di Harlee Quinn, utente di un altro forum.

Questo utente aveva creato una bozza di un effetto molto carino che può essere implementato nel gioco. Sto parlando del: Wonder Trade!

Per chi, come me, mastica poco l'inglese, questo tutorial consiste nel creare uno script che permetta di scambiare un Pokémon della nostra squadra con uno totalmente casuale all'interno del gioco.
Harlee Quinn è stato molto furbo e ha trovato il modo di escludere i Pokémon leggendari tramite un "filtro" che può essere adattato a nostro piacimento.
La guida presentava qualche errore di compilazione e problemi non risolvibili con un semplice script, come il fatto che bisognasse impostare un livello fisso per il givepokemon. La cosa più fastidiosa era data dall'impossibilità di utilizzare la guida se non si installava l'hacked engine di JPAN.
Dopo qualche oretta di prove sono riuscito a trovare la soluzione.
Posterò entrambe le soluzioni, così che tutti possano utilizzare questo metodo.
[...e per emerald? ci sarà qualcun altro che lo convertirà, io no Tongue ]

Cool Se AVETE l'Hacked Engine di JPAN installato

In questo caso sarà tutto molto semplice, basta applicare questo script

Codice:
#dynamic 0x800000
#org @starting
lock
faceplayer
msgbox @qw MSG_YESNO
compare LASTRESULT 0x1
if 0x0 goto @end
msgbox @by MSG_NORMAL
special 0x9f
waitstate
compare 0x8004 0x6
if 0x4 goto @end
goto @start

#org @end
msgbox @as MSG_NORMAL
release
end

#org @start
random 0x19C

FILTRO**

bufferpokemon 0x0 LASTRESULT
goto @trade

#org @trade
showpokepic 0x800D 0x3 0x3
preparemsg @get-msg
fanfare 0x101
waitmsg
waitfanfare
waitkeypress
hidepokepic
special 0x6
copyvar 0x8005 LASTRESULT
special 0x16
special 0x6
release
end



'---------
' Strings
'---------
#org @ty
= Thank you!

#org @qw
= Do you want to Wonder Trade?\pThe choice is yours...

#org @as
= We hope to see you again.

#org @by
= Pick your Pokemon to give up.

#org @get-msg
= You got a [BUFFER1]\pTake good care of it!



Blush Se NON avete l'Hacked Engine di JPAN installato.

Qui la cosa si complica un pochino, in pratica dobbiamo inserire una routine per ricreare l'effetto dato dall'hacked engine.

La routine è questa

Codice:
.text
.align 2
.thumb
.thumb_func
.global Indexnumber_changeand20bytes_recalc

main:
    push {r0-r3, lr}
getpokeoffset:
    ldr r0, varnumber_8004
    ldrh r2, [r0]
    mov r0, #100
    mul r2, r0
    ldr r0, partystart
    add r3, r2, r0
    push {r3}
getandsetnewindexnumber:
    ldr r0, vartocontainnewindexnumber
    mov r2, r0
    mov r1, #0xB
    ldr r0, [sp]
    ldr r3, pokeencrypt
    bl bxr3
recalc20bytes:
    pop {r0}
    ldr r3, effectivestatsrecalc
    bl bxr3
    pop {r0-r3, pc}
bxr3:
    bx r3
    
.align 2
    varnumber_8004:            .word 0x020370C0
    partystart:            .word 0x02024284
    vartocontainnewindexnumber:    .word 0x020370D0
    pokeencrypt:            .word 0x0804037C+1
    effectivestatsrecalc:        .word 0x0803e47c+1

Inserite la routine in uno spazio libero e ricordatevi l'offset di dove l'avete inserita.

Passiamo ora allo script, che in questo caso sarà un po' diverso dal primo

Codice:
#Dynamic 0x740000
#org @starting
lock
faceplayer
msgbox @qw MSG_YESNO
compare LASTRESULT 0x1
if 0x0 goto @end
msgbox @by MSG_NORMAL
special 0x9f
waitstate
compare 0x8004 0x6
if 0x4 goto @end
goto @start

#org @end
msgbox @as MSG_NORMAL
release
end

#org @start
random 0x19C

FILTRO**

goto @trade

#org @trade
showpokepic 0x800D 0x3 0x3
preparemsg @get-msg
fanfare 0x101
waitmsg
waitfanfare
waitkeypress
hidepokepic
callasm 0x8offset routine di prima+1
release
end



'---------
' Strings
'---------
#org @ty
= Thank you!

#org @qw
= Do you want to Wonder Trade?\pThe choice is yours...

#org @as
= We hope to see you again.

#org @by
= Pick your Pokemon to give up.

#org @get-msg
= You got a [BUFFER1]\pTake good care of it!


Al posto delle FFFFFF dovrete inserire l'offset della routine di prima aumentato di 1


Pokéball FILTRO**
Questa parte deve essere compilata con il vostro filtro, vi lascio l'esempio che esclude Missingno e tutti i Leggendari

Codice:
compare LASTRESULT 0x0
if 0x1 goto @start
compare LASTRESULT 0xFC
if 0x1 goto @start
compare LASTRESULT 0xFD
if 0x1 goto @start
compare LASTRESULT 0xFE
if 0x1 goto @start
compare LASTRESULT 0xFF
if 0x1 goto @start
compare LASTRESULT 0x100
if 0x1 goto @start
compare LASTRESULT 0x101
if 0x1 goto @start
compare LASTRESULT 0x102
if 0x1 goto @start
compare LASTRESULT 0x103
if 0x1 goto @start
compare LASTRESULT 0x104
if 0x1 goto @start
compare LASTRESULT 0x105
if 0x1 goto @start
compare LASTRESULT 0x106
if 0x1 goto @start
compare LASTRESULT 0x107
if 0x1 goto @start
compare LASTRESULT 0x108
if 0x1 goto @start
compare LASTRESULT 0x109
if 0x1 goto @start
compare LASTRESULT 0x10A
if 0x1 goto @start
compare LASTRESULT 0x10B
if 0x1 goto @start
compare LASTRESULT 0x10C
if 0x1 goto @start
compare LASTRESULT 0x10D
if 0x1 goto @start
compare LASTRESULT 0x10E
if 0x1 goto @start
compare LASTRESULT 0x10F
if 0x1 goto @start
compare LASTRESULT 0x110
if 0x1 goto @start
compare LASTRESULT 0x111
if 0x1 goto @start
compare LASTRESULT 0x112
if 0x1 goto @start
compare LASTRESULT 0x113
if 0x1 goto @start
compare LASTRESULT 0x114
if 0x1 goto @start
compare LASTRESULT 0x90
if 0x1 goto @start
compare LASTRESULT 0x91
if 0x1 goto @start
compare LASTRESULT 0x92
if 0x1 goto @start
compare LASTRESULT 0x96
if 0x1 goto @start
compare LASTRESULT 0x97
if 0x1 goto @start
compare LASTRESULT 0xF3
if 0x1 goto @start
compare LASTRESULT 0xF4
if 0x1 goto @start
compare LASTRESULT 0xF5
if 0x1 goto @start
compare LASTRESULT 0xF9
if 0x1 goto @start
compare LASTRESULT 0xFA
if 0x1 goto @start
compare LASTRESULT 0xFB
if 0x1 goto @start
compare LASTRESULT 0x191
if 0x1 goto @start
compare LASTRESULT 0x192
if 0x1 goto @start
compare LASTRESULT 0x193
if 0x1 goto @start
compare LASTRESULT 0x194
if 0x1 goto @start
compare LASTRESULT 0x195
if 0x1 goto @start
compare LASTRESULT 0x196
if 0x1 goto @start
compare LASTRESULT 0x197
if 0x1 goto @start
compare LASTRESULT 0x198
if 0x1 goto @start
compare LASTRESULT 0x199
if 0x1 goto @start
compare LASTRESULT 0x19A
if 0x1 goto @start

Ottimo!
C'è un modo per rendere più probabile trovare Pokémon come Pidgey o Rattata e meno probabile trovarne altri come Charizard e Metagross? xD
07-10-2017 03:12 PM
Cerca Cita
eMMe97
Professione: Genio
******
Online

Messaggi: 1,295
Registrato: 09-10-2014
Reputazione: 17
Mi Piace Ricevuti: 1165
PokéMoney: 1,551.00₱
Messaggio: #3
RE: Wonder Trade Tutorial
Volendo si, per esempio nel primo random metti dei valori che ti danno più rattata ed un valore che ti rimanda ad un nuovo random per pokemon rari. Quindi la probabilità è molto più scarsa.

[Immagine: 51ppxl.png] [Immagine: 1zlgf2o.png] [Immagine: http1t.png] [Immagine: 2i1cze0.png] [Immagine: 122knxf.png] [Immagine: veu3h5.png] [Immagine: 33u6d86.png]

[Immagine: Targhetta_e_MMe.png]
07-10-2017 03:41 PM
Cerca Cita
MegaTorterra
Pokémaniaco campione di Alola
***
Offline

Messaggi: 151
Registrato: 04-05-2017
Reputazione: 0
Mi Piace Ricevuti: 54
PokéMoney: 321.75₱
Messaggio: #4
RE: Wonder Trade Tutorial
Scusate se rispondo ad una discussione vecchia, ma se per esempio volessi rendere possibile trovare anche i pokemon leggendari ma non missingno (in quanto è un glitch) qual è il valore che devo lasciare nel filtro per non trovarlo?
10-08-2018 10:45 AM
Cerca Cita
eMMe97
Professione: Genio
******
Online

Messaggi: 1,295
Registrato: 09-10-2014
Reputazione: 17
Mi Piace Ricevuti: 1165
PokéMoney: 1,551.00₱
Messaggio: #5
RE: Wonder Trade Tutorial
Il solo valore che devi lasciare è ovviamente

Codice:
compare LASTRESULT 0x0
if 0x1 goto @start

Questo perchè il comando LASTRESULT 0x... indica il pokèmon che sarà escluso, quindi 0x0 è missingNo, 0x1 bulbasaur, etc per tutti gli altri.
10-08-2018 09:57 PM
Cerca Cita
 Mi piace ricevuti da: MegaTorterra
Bonnox
Signore del Tempo un po' imbranato
*****
Offline

Messaggi: 1,871
Registrato: 06-07-2014
Reputazione: 8
Mi Piace Ricevuti: 405
PokéMoney: 2,049.75₱
Messaggio: #6
RE: Wonder Trade Tutorial
bellu! :3
11-08-2018 05:29 PM
Cerca Cita
MegaTorterra
Pokémaniaco campione di Alola
***
Offline

Messaggi: 151
Registrato: 04-05-2017
Reputazione: 0
Mi Piace Ricevuti: 54
PokéMoney: 321.75₱
Messaggio: #7
RE: Wonder Trade Tutorial
Grazie mille! (non conoscevo l'id di missingno, per questo avevo chiesto)
11-08-2018 05:47 PM
Cerca Cita
Rispondi 




Utente(i) che stanno guardando questa discussione: 1 Ospite(i)
Powered by MyBB, © 2002-2018 MyBB Group. Copyright © | 2015 Pokémon Hacking