Registrarse

script de gatillo con variables

Estado
Cerrado para nuevas respuestas.

Shido

comiendo personas
Como puedo hacer script de gatillo con variables?

.se hacerlos con flags pero me he enterado por ahí que es mejor no desperdiciar las flags y usar variables.
 

Laquin

Usuario mítico
Pues es muy fácil, de hecho, lo mismo casi.

En vez de checkflag, compare 0x(N de var) 0x(Valor) y luego ya el if 0xX y todo eso.

En vez de setflag, setvar 0x(N de var) 0x(valor)

Luego para sumar valor etc. pues addvar 0x(Valor a añadir) etc. Hay muchos tutos.

Cualquier duda di ;)
 

Naren Jr.

Puto amo
Usuario de Platino
Pues depende de donde uses la variable jajaja ya que puedes usarla para varias cosas usala como base o usar un compare 0xN° de variable asi compruebas de que un evento ya este realizado o no hay muchas formas de usar una variable ya depende del uso que lee des


Un saludo
 
Supongo que sabes que, mientras que las flags son como unos "interruptores", una variable es como un cajón enorme en el que puedes meter muchas cosas, no?

Una variable, imagina: 0x5000. Puedes asignarle tantos valores como te dé la gana.
Tan solo hace falta activar la variable y ponerle el valor.
También hará falta comprobar si la variable tiene algún valor.
Es igual que las flags.

Ejemplo: Nos dirigimos a un mini, y queremos que nos diga por primera vez:
-Hola, amigo.
Luego, hablamos de nuevo con ese mini y te dirá:
-Ya te he dicho hola. Déjame en paz, ¿vale?

Te pongo cómo sería con flags y con variables, para que compares...

#dynamic 0x800000

#org @inicio
checkflag 0x200
if 0x1 goto @inicio2
msgbox @1 0x2
setflag 0x200
end

#org @1
= Hola, amigo.

#org @inicio2
msgbox @2 0x2
end

#org @2
= Ya te he dicho hola. Déjame en paz, ¿vale?

#dynamic 0x800000

#org @inicio
compare 0x5000 0x1
if 0x1 goto @inicio2
msgbox @1 0x2
setvar 0x5000 0x1
end

#org @1
= Hola, amigo.

#org @inicio2
msgbox @2 0x2
end

#org @2
= Ya te he dicho hola. Déjame en paz, ¿vale?

Comandos usados en la variable:
-compare 0x5000 0x1 ---> Comprueba si la variable 0x5000 tiene valor 1 (esto es como checkflag 0x200).
-if 0x1 goto @inicio2 ---> OJO!! Ese 0x1 no hay que confundirlo con el valor 1. Ese 0x1 se refiere a una afirmación (Sí)(Si fuera negación: 0x0)(Esto es como en la flag). Le dices que si tiene valor 1, que vaya al puntero @inicio2.
-setvar 0x5000 0x1 ---> Aquí estás activando la variable 0x5000 y le estás poniendo el valor 1.


Algo que no está en el script.
Aquí se está activando una variable. Imagínate que ahora hacemos otro evento con un mini distinto. Imagina que queremos que diga algo específico si la variable 0x5000 tiene valor 2.
Recuerda que la variable ya estaba activada y que tenía valor 1.
Pues para ello, tendremos que sumarle un valor a la variable para que dé como resultado: 2, ¿no? (no te pierdas, que esto lo aprendemos en primaria xD)

Para jugar con las variables, tendrás que sumar y restar todo el tiempo (sumar, más bien). Estos son los comandos:

-addvar 0x5000 0x1 ---> Le sumas 1 valor a la variable 0x5000.
-subvar 0x5000 0x1 ---> Le restas 1 valor a la variable 0x5000.

Un saludo!
 

eing

Miembro de honor
Miembro de honor
Lo unico que tiene de guay poner en ub gatillo una variable en vez de una flag, es que al estar dicha var desactivada el gatillo ni se imuta.
Mientras que con flags, hace el release y como que da un poquillo de lag.

Pero que bueno, eso es lo unico porqje a la larga vas a gastar las mismas vars que flags, y mas cuando estas NO conllevan a eventos relacionados entre si.
Me explico, tipico gatillo para no dejarte salir de un pueblo, habra de tener un valor igual que el asignado.
Entonces se ejecutara siempre, hasta que la var esa tenga OTRO valor.
Pero y que pasa si quiero tener otro evento, pero aue diga ejecutandose ese anterior?
Pues que necesito seguir usando otra var, porque como use la amterior, le cambiare el valor y ya los dos scripts no estaran activos a la vez.
Asi que.. Si es por gastar vas a gastar de los dos xD
Yo lo que haria es tener activos los gatillos con una var, y desactivarlos com flag.
 
Estado
Cerrado para nuevas respuestas.
Arriba