[RH - Scripting] Pregunta/respuesta rápida

Avisos


Like Tree167Gracias
Tema cerrado
 
Herramientas Desplegado
  #431  
04/03/2018
Predeterminado Respuesta: Pregunta/respuesta rápida
Dicho por GSSPG87 Ver mensaje
Tengo una duda. Puse un mini en la puerta de mi casa para que al empezar el juego tengas que hablarle, te diga un texto 1, se mueva, te diga un texto 2 y ya siempre dice el segundo texto. Vale, hasta ahí bien. Pero al cambiar de mapa y volver a entrar ha vuelto a su posición inicial y vuelve a repetir el primer texto. ¿Cómo hago para que eso no ocurra?
Usando un script de nivel, para no complicar más las cosas. La idea se trata de que el script se ejecute una sola vez, para eso usa cualquier variable y haz que se ejecute el script solo si la variable tenga un determinado valor, y al final del script añádele un valor para que la próxima vez no se vuelva a repetir.

Pasanos el script para que te ayudemos mejor.
  #432  
04/03/2018
Predeterminado Respuesta: Pregunta/respuesta rápida
Dicho por Gorkawaii Ver mensaje
Usando un script de nivel, para no complicar más las cosas. La idea se trata de que el script se ejecute una sola vez, para eso usa cualquier variable y haz que se ejecute el script solo si la variable tenga un determinado valor, y al final del script añádele un valor para que la próxima vez no se vuelva a repetir.

Pasanos el script para que te ayudemos mejor.
Ahora mismo no puedo pasar el script, pero ya le puse una variable y añadí al final un valor diferente a esa variable.
  #433  
04/03/2018
Predeterminado Respuesta: Pregunta/respuesta rápida
Dicho por GSSPG87 Ver mensaje
Ahora mismo no puedo pasar el script, pero ya le puse una variable y añadí al final un valor diferente a esa variable.
Ahora que lo pienso puedes usar un script de nivel o un script de gatillo, aunque si lo que quieres es que se ejecute al instante de cargar el mapa usa el primero. Te advierto de que el script de nivel debes de hacerlo de una forma especial. Te paso un tuto de javi4315 que lo explica muy bien.

https://whackahack.com/foro/t-8621/g...ues-facilmente
Gracias: Yainish
  #434  
22/03/2018
Predeterminado Respuesta: Pregunta/respuesta rápida
Hola necesito ayuda, Como hago para que cuando pise un script de gatillo solo se active una sola vez ? así como cuando no te deja pasar por que no tienes un Pokemon pero luego cuando lo obtienes ya si te deja pasar, o como cuando lo pisas y Oak aparece para darte un Pokemon y ya el Script no se activa mas
  #435  
22/03/2018
Predeterminado Re: Respuesta: Pregunta/respuesta rápida
Dicho por Enroke Ver mensaje
Hola necesito ayuda, Como hago para que cuando pise un script de gatillo solo se active una sola vez ? así como cuando no te deja pasar por que no tienes un Pokemon pero luego cuando lo obtienes ya si te deja pasar, o como cuando lo pisas y Oak aparece para darte un Pokemon y ya el Script no se activa mas
Te comento, para que el script de gatillo se ejecute, la variable que configures, en "var number", para ese script de gatillo tiene que tener el valor que pongas en "value".
Por lo tanto, en el propio script de gatillo, con hacer un setvar 0x(variable) 0x(valor) o con un addvar/subvar 0x(variable) 0x(valor a sumar/restar), ya estarías cambiando ese valor establecido y el script no se volvería a ejecutar.

Por ejemplo, si en var number pones 4FFF y en value pones 3, eso indicará que el script de gatillo se ejecutará cuando la var 4FFF tenga el valor 3, por lo tanto tu en el script de gatillo puedes poner por ejemplo un setvar 0x4FFF 0x4, pasando así a tener el valor 4.
Gracias: Alvarez G
La diferencia entre la genialidad y la estupidez es que la genialidad tiene un límite.
~Albert Einstein

  #436  
22/03/2018
Videojuego Respuesta: Pregunta/respuesta rápida
Hola gente, vengo a hacerles un pedido... como es obvio estoy empezando a hacer lo mismo que todos por aqui mi propio hack rom... pero estoy probando dos posible historias (si ya se es un poco ambicioso) pero solo estoy viendo cual se acomoda a lo que busco hacer...

aqui el pedido hasta ahora he utilizado A-map y en una de las historias cree dos nuevos mapas (a los cuales se accede por warp de una casa desde la cuidad inicial) pero llegue a la parte en que para entrar a un sector determinado del mapa ( hierba alta) un mini me diga que si no tengo 5 medallas no me deja pasar ... y el scripting no se me da mucho todavia... al segundo mini le haria lo mismo pero que no me deje pasar hasta haber ganado la liga...

habra por ahi algun alma generosa que pueda explicarme como hacer ese tipo de script... se que es algo avanzado y con muchas variables ( eso creo) ...

y si se puede los script para cortar arboles y romper rocas... (si ya lo se estoy pidiendo mucho) pero se que alguien me va a poder ayudar...

gracias gente ...

creditos a @Javi4315 por su tutorial en pdf de A-Map que le autorizo a @Oscarbrock para utilizarlo en uno de sus videos... y a @Xabier2012 por su tutorial...
  #437  
23/03/2018
Predeterminado Re: Respuesta: Pregunta/respuesta rápida
Dicho por Blackjack69 Ver mensaje
Hola gente, vengo a hacerles un pedido... como es obvio estoy empezando a hacer lo mismo que todos por aqui mi propio hack rom... pero estoy probando dos posible historias (si ya se es un poco ambicioso) pero solo estoy viendo cual se acomoda a lo que busco hacer...

aqui el pedido hasta ahora he utilizado A-map y en una de las historias cree dos nuevos mapas (a los cuales se accede por warp de una casa desde la cuidad inicial) pero llegue a la parte en que para entrar a un sector determinado del mapa ( hierba alta) un mini me diga que si no tengo 5 medallas no me deja pasar ... y el scripting no se me da mucho todavia... al segundo mini le haria lo mismo pero que no me deje pasar hasta haber ganado la liga...

habra por ahi algun alma generosa que pueda explicarme como hacer ese tipo de script... se que es algo avanzado y con muchas variables ( eso creo) ...

y si se puede los script para cortar arboles y romper rocas... (si ya lo se estoy pidiendo mucho) pero se que alguien me va a poder ayudar...

gracias gente ...

creditos a @Javi4315 por su tutorial en pdf de A-Map que le autorizo a @Oscarbrock para utilizarlo en uno de sus videos... y a @Xabier2012 por su tutorial...

Sobre lo de las medallas, existen una serie de flags especiales las cuales están ligadas a las medallas, lo que sucede es que, cuando estas flags se activan, la medalla se muestran en la trainer card y los efectos de la medalla se activan también.
No te tienes por que complicar, siendo para Fire Red las flag de las medallas:
Código:
#define FRBADGE_1 0x820
#define FRBADGE_2 0x821
#define FRBADGE_3 0x822
#define FRBADGE_4 0x823
#define FRBADGE_5 0x824
#define FRBADGE_6 0x825
#define FRBADGE_7 0x826
#define FRBADGE_8 0x827
Con hacer un script donde compruebes si la flag 0x824 (la que corresponde a la quinta medalla) está activa ya serviría:

Ejemplo

Código:
#dynamic 0x800000

#org @start
lock
faceplayer
checkflag 0x824
if 0x1 goto @pasar
goto @nopasar

#org @pasar
msgbox @msg1 0x6
release
end

#org @nopasar
msgbox @msg2 0x6
release
end

#org @msg1
= Puedes pasar.

#org @msg2
= No puedes pasar.


Ahora también está la posibilidad de que el orden de entrega de medallas no sea lineal, es decir, que no te vayan entregado las medallas en orden, si se da el caso lo que puedes hacer es comprobar el estado de todas las flags y llevar un contador a través de una variable, luego haces la condición de que, si el contador (la variable) es mayor o igual a 5 (equivale a tener 5 o más medallas) que haga determinada cosa y si es menor (equivalente a tener menos de 5 medallas) que haga otra.

Ejemplo

Código:
#dynamic 0x800000

#org @start
lock
faceplayer
setvar 0x4FFF 0x0
checkflag 0x820
if 0x1 call @contador
checkflag 0x821
if 0x1 call @contador
checkflag 0x822
if 0x1 call @contador
checkflag 0x823
if 0x1 call @contador
checkflag 0x824
if 0x1 call @contador
checkflag 0x825
if 0x1 call @contador
checkflag 0x826
if 0x1 call @contador
checkflag 0x827
if 0x1 call @contador
compare 0x4FFF 0x5
if 0x4 goto @requisito_cumplido
goto @no_cumplido

#org @contador
addvar 0x4FFF 0x1
return

#org @requisito_cumplido
msgbox @msg1 0x6
release
end

#org @no_cumplido
msgbox @msg2 0x6
release
end

#org @msg1
= Ya puedes pasar.

#org @msg2
= No puedes pasar. igual a 5 (equivale a tener 5 o más medallas) que puedas pasar:


----------------
----------------

Para comprobar si se ha pasado la liga también se puede hacer por flags o por variables, por defecto, la flag que controla si nos hemos pasado la liga Pokémon es la 0x844 creo recordar, pero vamos eso es algo indiferente, porque tú si en el script del final de la liga activas por ejemplo la flag 0x2FF o le das a la variable 0x40FF el valor 8, luego para comprobar si nos hemos pasado la liga bastaría con usar o bien un checkflag o un compare var, de modo que, si la flag está activa o la var corresponde con el valor (indicación de que nos hemos pasado la liga) haga la acción que tenga que hacer si la condición de pasarse la liga se cumple.

----------------
----------------

Para lo de corte y golpe roca lo recomendable es que utilices el script que viene ya por defecto, mejor dicho el offset, porque si te fijas todos los árboles de corte por ejemplo comparten el mismo offset y eso se debe a que se aprovecha el mismo script para todos.
Para hacer el efecto de que el objeto vuelva a aparecer una vez cambies de mapa debes asignarle una flag, para asignar flags a minis se hace en la casilla "People ID" ahí debes poner la flag que asignes, pero no sirve cualquier flag, hay una serie de flags especiales que se usan en estos casos, puesto que se refrescan solas, sin tener que estar usando clearflags ni nada, sayer las dejó hace un rato en otro tema:

Dicho por Sayer:
Esas flags son de la 0x011 a la 0x01F
Gracias: Blackjack69
La diferencia entre la genialidad y la estupidez es que la genialidad tiene un límite.
~Albert Einstein


Última edición por Inferno; 23/03/2018 a las 01:40
  #438  
23/03/2018
Predeterminado Respuesta: Re: Respuesta: Pregunta/respuesta rápida
inferno gracias por tu ayuda ... lo de los arboles y rocas tenia la duda de usar los mismos script pero me lo acabas de simplificar ... respecto a la flag de la liga (0x844) la voy a insertar en el mini y si es esa me dira que no la he pasado y bueno que continue el juego...

Dicho por Inferno Ver mensaje
Sobre lo de las medallas, existen una serie de flags especiales las cuales están ligadas a las medallas, lo que sucede es que, cuando estas flags se activan, la medalla se muestran en la trainer card y los efectos de la medalla se activan también.
No te tienes por que complicar, siendo para Fire Red las flag de las medallas:
Código:
#define FRBADGE_1 0x820
#define FRBADGE_2 0x821
#define FRBADGE_3 0x822
#define FRBADGE_4 0x823
#define FRBADGE_5 0x824
#define FRBADGE_6 0x825
#define FRBADGE_7 0x826
#define FRBADGE_8 0x827
Con hacer un script donde compruebes si la flag 0x824 (la que corresponde a la quinta medalla) está activa ya serviría:

Ejemplo

Código:
#dynamic 0x800000

#org @start
lock
faceplayer
checkflag 0x824
if 0x1 goto @pasar
goto @nopasar

#org @pasar
msgbox @msg1 0x6
release
end

#org @nopasar
msgbox @msg2 0x6
release
end

#org @msg1
= Puedes pasar.

#org @msg2
= No puedes pasar.


Ahora también está la posibilidad de que el orden de entrega de medallas no sea lineal, es decir, que no te vayan entregado las medallas en orden, si se da el caso lo que puedes hacer es comprobar el estado de todas las flags y llevar un contador a través de una variable, luego haces la condición de que, si el contador (la variable) es mayor o igual a 5 (equivale a tener 5 o más medallas) que haga determinada cosa y si es menor (equivalente a tener menos de 5 medallas) que haga otra.

Ejemplo

Código:
#dynamic 0x800000

#org @start
lock
faceplayer
setvar 0x4FFF 0x0
checkflag 0x820
if 0x1 call @contador
checkflag 0x821
if 0x1 call @contador
checkflag 0x822
if 0x1 call @contador
checkflag 0x823
if 0x1 call @contador
checkflag 0x824
if 0x1 call @contador
checkflag 0x825
if 0x1 call @contador
checkflag 0x826
if 0x1 call @contador
checkflag 0x827
if 0x1 call @contador
compare 0x4FFF 0x5
if 0x4 goto @requisito_cumplido
goto @no_cumplido

#org @contador
addvar 0x4FFF 0x1
return

#org @requisito_cumplido
msgbox @msg1 0x6
release
end

#org @no_cumplido
msgbox @msg2 0x6
release
end

#org @msg1
= Ya puedes pasar.

#org @msg2
= No puedes pasar. igual a 5 (equivale a tener 5 o más medallas) que puedas pasar:


----------------
----------------

Para comprobar si se ha pasado la liga también se puede hacer por flags o por variables, por defecto, la flag que controla si nos hemos pasado la liga Pokémon es la 0x844 creo recordar, pero vamos eso es algo indiferente, porque tú si en el script del final de la liga activas por ejemplo la flag 0x2FF o le das a la variable 0x40FF el valor 8, luego para comprobar si nos hemos pasado la liga bastaría con usar o bien un checkflag o un compare var, de modo que, si la flag está activa o la var corresponde con el valor (indicación de que nos hemos pasado la liga) haga la acción que tenga que hacer si la condición de pasarse la liga se cumple.

----------------
----------------

Para lo de corte y golpe roca lo recomendable es que utilices el script que viene ya por defecto, mejor dicho el offset, porque si te fijas todos los árboles de corte por ejemplo comparten el mismo offset y eso se debe a que se aprovecha el mismo script para todos.
Para hacer el efecto de que el objeto vuelva a aparecer una vez cambies de mapa debes asignarle una flag, para asignar flags a minis se hace en la casilla "People ID" ahí debes poner la flag que asignes, pero no sirve cualquier flag, hay una serie de flags especiales que se usan en estos casos, puesto que se refrescan solas, sin tener que estar usando clearflags ni nada, sayer las dejó hace un rato en otro tema:
@Inferno gracias por tu ayuda... ahora se que no me voy a cargar la rom por usar los mismos script de los arboles y rocas... lo de la liga probare el checkflag en el mini a ver que pasa ...

Última edición por Blackjack69; 23/03/2018 a las 01:46
  #439  
23/03/2018
Predeterminado Respuesta: Re: Respuesta: Pregunta/respuesta rápida
tengo una pequeño inconveniente con mi script ... me reconoce que no he obtenido la medalla y quedo bien ... pero no me bloquea el paso , es decir puedo pasar por delante del mini y no me detiene ... y tendria que hacerlo... como lo soluciono?? y de paso donde tendria que insertar el applymovement (en el script) y las raw para que se mueva despues de confirmar que obtuve la medalla... se como insertarlo pero no encuentro el lugar exacto donde ponerlo ... probe ponerlo despues del (if goto) y despues del msg1 (el que te dice al confirmar) y no hace nada...
@Inferno ... gracias por tu tiempo... espero me puedas ayudar con esto... ya que si logro hacerlo puedo continuar con los otros mapas...

de paso te adelanto que pienso poner todos los iniciales y legendarios de las 7 generaciones ... por eso las condiciones que le estoy colocando a los minis...
  #440  
23/03/2018
Predeterminado Respuesta: Re: Respuesta: Pregunta/respuesta rápida
Dicho por Blackjack69 Ver mensaje
tengo una pequeño inconveniente con mi script ... me reconoce que no he obtenido la medalla y quedo bien ... pero no me bloquea el paso , es decir puedo pasar por delante del mini y no me detiene ... y tendria que hacerlo... como lo soluciono?? y de paso donde tendria que insertar el applymovement (en el script) y las raw para que se mueva despues de confirmar que obtuve la medalla... se como insertarlo pero no encuentro el lugar exacto donde ponerlo ... probe ponerlo despues del (if goto) y despues del msg1 (el que te dice al confirmar) y no hace nada...
@Inferno ... gracias por tu tiempo... espero me puedas ayudar con esto... ya que si logro hacerlo puedo continuar con los otros mapas...

de paso te adelanto que pienso poner todos los iniciales y legendarios de las 7 generaciones ... por eso las condiciones que le estoy colocando a los minis...
No soy Inferno, pero bueno. Tampoco tendrías que comprometer a alguien a que te ayude x'D

Advertencia: según tus peticiones, lo ideal seria poner el script en uno de gatillo, pero podes ponerlo en cualquiera. También estoy contando con que tienes cierto conocimiento básico sobre algunas cosas.

Bueno, las medallas se activan con flags, entonces lo que hay que hacer es comparar si esta activada o no. Se puede hacer fácilmente de esta forma:


Código:
checkflag 0x(flag de la medalla)
if 0x1 goto @activada
Entonces lo que haría esto seria verificar si esta activada la flag, si no lo esta, seguirá de largo. Pero si lo esta, se ira a la dirección offset en cuestión; @activada
Para lo segundo amplio un poco el script...


Código:
checkflag 0x(flag de la medalla)
if 0x1 goto @activada
end

#org @activada
applymovement 0x1 @moves
end

#org @moves
#raw 0x9
#raw 0x9
#raw 0x9
#raw 0xFE
Cuando ponemos el appymovement, el primer parámetro corresponde al "Person event N°". Vendria a ser el numero del mini que quieres que se mueva. Cito a Xabier2012:

El person event nº corresponderá al número del mini al cual queremos mover. Es importante no confundir el número de evento con el número de evento de la persona. El número en el cual nos fijamos nosotros es este:

Ahora una explicación breve de lo que hicimos...
Comparamos si estaba activa la flag, si lo estaba va directamente a "@activada". En esa dirección se ejecuta el applymovement que va a la dirección "@moves", luego en esa dirección offset pones los raw correspondientes.


Uff, espero que te haya servido, cualquier duda la puedes decir


Arrivederci~
Gracias: Blackjack69
Tema cerrado

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado



Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 02:22.

© Whack a Hack! 2019