Muy buenas a todos.
Soy nuevo en esto del ROMHACKING pero tengo un montón de ideas y sigo aprendiendo. Me encanta esto de hacer modificar Roms.
Llevo un tiendo programando y se me ocurrio hacer una cosa.
Porque no hacer un evento el cual no se activara si no has derrotado a 3 de 5 entrenadores?
Entonces me puse a ello.
Pense en utilizar flags al principio, pero despues me di cuenta que tenia las trainerflags! Algo mucho mejor ya que no tendria que usar flags normales.
Tambien pense en el metodo que podia utilizar y que activaria. Cosa que es irrelevante en lo que quiero tratar.
Bien, probe si un NPC con algunos trainerflags podia decirme:
Has derrotado a 0 entrenadores.
o bien si derrotaba al trainer en concreto
Has derrotado a 1 entrenador, te quedan 2!
Hasta ahi todo bien. Luego la cosa enpezo a complicarse.
Intente hacerlo con 2 entrenadores.(Lamentablemente esos scripts los borre mientras hacia pruebas aunque use la misma base que dejare abajo)
Luego al hablar con el NPC decia cuantos habia derrotado.
Pero hacia cosas raras.
Al fianl de todo hice esto que ire explicando brevemente.
Vale, cuanto material y ahora lo explicare mas o menos cual era mi idea.
Según tengo entendido cada entrenador tiene su propia flag, es decir, cuando ganas al entrenador 0x001, su flag automáticamente se coloca. Por lo tanto mi idea era comprobar las flags de los entrenadores como si fuese un árbol, es decir:
Comprueba flag 001
si la tiene comprueba la del 2 y así asta los que queráis.
Pero ojo que esto tiene que ser con orden.
Es decir si compruebas el 1, 2, 3.
También deberás comprobar el 2, 3 ,1. Sino el entrenador tendrá que derrotarlos en el orden 1,2,3 para que sea correcto. Esto solo es necesario en el caso de que por ejemplo en una zona hubiesen 5 entrenadores, y solo necesitáramos pelear contra 3 para abrir una puerta.
Es un poco complejo pero si etendeis programacion sabreis a lo que me refiero.
El problema esta en que por lo que sea. No consigo ejecutarlo bien. La practica bien pero no consigo saber que es lo que ocurre.
Se que mi script es tedioso y no hace falta que lo lean ni comprendan completamente, solo quiero saber si algo tipo así (script simple debajo) es posible.
Quiza se pueda arreglar incluso mejorar o simplificar.
Muchas gracias por leer el post buenos días.
Soy nuevo en esto del ROMHACKING pero tengo un montón de ideas y sigo aprendiendo. Me encanta esto de hacer modificar Roms.
Llevo un tiendo programando y se me ocurrio hacer una cosa.
Porque no hacer un evento el cual no se activara si no has derrotado a 3 de 5 entrenadores?
Entonces me puse a ello.
Pense en utilizar flags al principio, pero despues me di cuenta que tenia las trainerflags! Algo mucho mejor ya que no tendria que usar flags normales.
Tambien pense en el metodo que podia utilizar y que activaria. Cosa que es irrelevante en lo que quiero tratar.
Bien, probe si un NPC con algunos trainerflags podia decirme:
Has derrotado a 0 entrenadores.
o bien si derrotaba al trainer en concreto
Has derrotado a 1 entrenador, te quedan 2!
Hasta ahi todo bien. Luego la cosa enpezo a complicarse.
Intente hacerlo con 2 entrenadores.(Lamentablemente esos scripts los borre mientras hacia pruebas aunque use la misma base que dejare abajo)
Luego al hablar con el NPC decia cuantos habia derrotado.
Pero hacia cosas raras.
Al fianl de todo hice esto que ire explicando brevemente.
Código:
#dynamic 0x800000
//---------------
#org @start
lock
faceplayer
msgbox @t1 0x6
goto @entrenadores
//---------------
#org @entrenadores
checktrainerflag 0x001
compare LASTRESULT 0x1
if 0x1 goto @1
checktrainerflag 0x002
compare LASTRESULT 0x1
if 0x1 goto @2
checktrainerflag 0x003
compare LASTRESULT 0x1
if 0x1 goto @3
pause 0x15
msgbox @ninguno 0x6
release
end
//------POINTERS---------
#org @1
checktrainerflag 0x002
compare LASTRESULT 0x1
if 0x1 goto @12
checktrainerflag 0x003
compare LASTRESULT 0x1
if 0x1 goto @13
pause 0x15
msgbox @llevas1 0x6
release
end
#org @12
checktrainerflag 0x003
compare LASTRESULT 0x1
if 0x1 goto @vencidos
pause 0x15
msgbox @llevas2 0x6
release
end
#org @13
msgbox @calculando 0x4
checktrainerflag 0x002
if 0x1 goto @vencidos
compare LASTRESULT 0x1
pause 0x15
msgbox @llevas2 0x6
release
end
//---------------
#org @2
checktrainerflag 0x001
compare LASTRESULT 0x1
if 0x1 goto @21
checktrainerflag 0x003
compare LASTRESULT 0x1
if 0x1 goto @23
pause 0x15
msgbox @llevas1 0x6
release
end
#org @21
checktrainerflag 0x003
compare LASTRESULT 0x1
if 0x1 goto @vencidos
pause 0x15
msgbox @llevas2 0x6
release
end
#org @23
checktrainerflag 0x001
compare LASTRESULT 0x1
if 0x1 goto @vencidos
pause 0x15
msgbox @llevas2 0x6
release
end
//---------------
#org @3
checktrainerflag 0x001
compare LASTRESULT 0x1
if 0x1 goto @31
checktrainerflag 0x002
compare LASTRESULT 0x1
if 0x1 goto @32
pause 0x15
msgbox @llevas1 0x6
release
end
#org @31
msgbox @calculando 0x4
checktrainerflag 0x002
compare LASTRESULT 0x1
if 0x1 goto @vencidos
pause 0x15
msgbox @llevas2 0x6
release
end
#org @32
msgbox @calculando 0x4
checktrainerflag 0x001
compare LASTRESULT 0x1
if 0x1 goto @vencidos
pause 0x15
msgbox @llevas2 0x6
release
end
//---------------
#org @vencidos
msgbox @llevas3 0x6
giveitem 0xE 0x1 0x1
release
end
//------DIALOGUE---------
#org @llevas3
= Has derrotado a todos los\nentrenadores, buen trabajo!\pTen esto.
#org @llevas2
= Has derrotado a 2 entrenadores.
#org @llevas1
= Has derrotado a 1 entrenador.
#org @ninguno
= Has derrotado a 0 entrenadores.
#org @t1
= Veamos a cuantos entrenadores has\npodido derrotar.
Vale, cuanto material y ahora lo explicare mas o menos cual era mi idea.
Según tengo entendido cada entrenador tiene su propia flag, es decir, cuando ganas al entrenador 0x001, su flag automáticamente se coloca. Por lo tanto mi idea era comprobar las flags de los entrenadores como si fuese un árbol, es decir:
Comprueba flag 001
si la tiene comprueba la del 2 y así asta los que queráis.
Pero ojo que esto tiene que ser con orden.
Es decir si compruebas el 1, 2, 3.
También deberás comprobar el 2, 3 ,1. Sino el entrenador tendrá que derrotarlos en el orden 1,2,3 para que sea correcto. Esto solo es necesario en el caso de que por ejemplo en una zona hubiesen 5 entrenadores, y solo necesitáramos pelear contra 3 para abrir una puerta.
Es un poco complejo pero si etendeis programacion sabreis a lo que me refiero.
El problema esta en que por lo que sea. No consigo ejecutarlo bien. La practica bien pero no consigo saber que es lo que ocurre.
Se que mi script es tedioso y no hace falta que lo lean ni comprendan completamente, solo quiero saber si algo tipo así (script simple debajo) es posible.
Código:
#org @entrenadores
checktrainerflag 0x001
compare LASTRESULT 0x1
if 0x1 goto @1
checktrainerflag 0x002
compare LASTRESULT 0x1
if 0x1 goto @2
checktrainerflag 0x003
compare LASTRESULT 0x1
if 0x1 goto @3
pause 0x15
msgbox @ninguno 0x6
release
end
//------POINTERS---------
#org @1
checktrainerflag 0x002
compare LASTRESULT 0x1
if 0x1 goto @12
checktrainerflag 0x003
compare LASTRESULT 0x1
if 0x1 goto @13
pause 0x15
msgbox @llevas1 0x6
release
end
#org @12
checktrainerflag 0x003
compare LASTRESULT 0x1
if 0x1 goto @vencidos
pause 0x15
msgbox @llevas2 0x6
release
end
Quiza se pueda arreglar incluso mejorar o simplificar.
Muchas gracias por leer el post buenos días.
Última edición por un moderador: