Hola, buenas a todos, estuve viendo que en la sección de quest y/o LUA de este foro no estaba un capitulo de operadores lógicos (y si lo hay borren mi post).
PD: ACLARO QUE ALGUNAS DEFINICIONES LAS SAQUE DE INTERNET POR QUE NO SABÍA DECIRLAS CON MIS PROPIAS PALABRAS.
Bueno, primero que nada, ¿Qué es un operador lógico?.
Los operadores relacionales son símbolos que se usan para comparar dos valores. Si el resultado de la comparación es correcto la expresión considerada es verdadera, en caso contrario es falsa. Por ejemplo, 8>4 (ocho mayor que cuatro) es verdadera, se representa por el valor true del tipo básico boolean, en cambio, 8<4 (ocho menor que cuatro) es falsa, false
y tu te preguntaras, ¿Para qué coño me sirve esto en metin2?, bien la respuesta es:
Cuando por ejemplo, iniciamos una quest con la siguiente sentencia:
when login with pc.is_gm() and pc.get_level() >= 110 begin
básicamente a qui estamos haciendo una expresión de tipo bool, en la que si esta es "true" entrara a la función, y en caso de que no se cumpla la expresión lógica no entrara.
Tú diras... Mmmmh okey, ya entendí un poco de su utilidad, ¿Pero qué más puedo hacer?
y la respuesta es... BASTANTES COSAS.
Yo, en lo personal, las expresiones lógicas son uno de mis mejores aliados cuando hablamos de meterle un poco de razonamiento y limitar ACCIONES en un determinado programa.
Os daré un mejor ejemplo de como darle un buen uso a los operadores lógicos...
(quest completa)
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
mira esta sentencía:
if game.get_event_flag("Guerra_Jinno") == 1 and pc.get_empire() == 3 then
Básicamente aqui estoy diciendo lo siguiente:
Si game.get_event_flag("Guerra_Jinno") == 1 Y el pc.get_empire() == 3 entonces hacer lo siguiente:
<EXPRESION>
Es decir, con los operadores lógicos puedes LIMITAR las cosas para que sea más restringidas las acciones.
Cabe mencionar que no solo existen los tipos de operadores que he puesto, tambíen existen una gran variedad como por ejemplo:
OR ------ Si es por lo menos una de las acciones esta será un "true".
AND ----- Ambos valores tienen que ser "True" para que te regrese un "True"
XOR ----- (No sé su sintaxis para el LUA) Sí los valores son diferentes entonces retornara un "True"
ETC...
AQUI MÁS COMPLETO PARA EL QUE LE INTERESE SABER QUE VALORES RETORNAN:
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
Bien chavos, esto es todo de momento por mí parte, no sé si le falte algo, y si le falta lo anexaré posteriormente...
Hola, que tal a todos, como hice un capitulo donde menciono esta quest, decidi postearla directamente, esta limpia, solamente tiene las funciones de una guerra, cabe decir que tenia pensarlo hacerla con 2 fases, pero, como siempre me ha ganado la flogera...
---------------------------
-- Quest creada por MesterLum
-- Mis huevos son sus ojos
---------------------------
quest evento_mesterlum begin
state start begin
when 9004.chat."GM: Evento_reino" with pc.is_gm() begin
say_title(""..pc.get_name()..":")
say("")
local se = select ("Activar evento","Desactivar evento","Salir")
if se == 1 then
game.set_event_flag("Guerra_Jinno", 1)
game.set_event_flag("Guerra_Chunjo", 1)
game.set_event_flag("Guerra_Shinso", 1)
game.set_event_flag("Jinno", 1)
game.set_event_flag("Chunjo", 1)
game.set_event_flag("Shinso", 1)
game.set_event_flag("Jinno_kill", 1)
game.set_event_flag("Chunjo_kill", 1)
game.set_event_flag("Shinso_kill", 1)
notice_all("Evento_reino activado")
elseif se == 2 then
game.set_event_flag("Guerra_Jinno", 0)
game.set_event_flag("Guerra_Chunjo", 0)
game.set_event_flag("Guerra_Shinso", 0)
game.set_event_flag("Jinno", 0)
game.set_event_flag("Chunjo", 0)
game.set_event_flag("Shinso", 0)
game.set_event_flag("Jinno_kill", 0)
game.set_event_flag("Chunjo_kill", 0)
game.set_event_flag("Shinso_kill", 0)
notice_all("Evento_reino desactivado")
else
return
end
end
when 9004.chat."Acerca del evento pvp" begin
if game.get_event_flag("Guerra_Chunjo") == 0 and pc.get_empire() == 2 then
say_title("El evento:")
say("Actualmente esta desactivado")
say("")
end
if game.get_event_flag("Guerra_Chunjo") == 1 and pc.get_empire() == 2 then
say_title("El evento:")
say("Actualmente esta activo")
local temo = select ("Quiero entrar", "Salir")
if temo == 1 then
pc.warp(819200, 204800)
else
return
end
end
if game.get_event_flag("Guerra_Jinno") == 0 and pc.get_empire() == 3 then
say_title("El evento:")
say("Actualmente esta desactivado")
say("")
end
if game.get_event_flag("Guerra_Jinno") == 1 and pc.get_empire() == 3 then
say_title("El evento:")
say("Actualmente esta activo")
local temo1 = select ("Quiero entrar", "Salir")
if temo1 == 1 then
pc.warp(819200, 204800)
else
return
end
end
if game.get_event_flag("Guerra_Shinso") == 0 and pc.get_empire() == 1 then
say_title("El evento:")
say("Actualmente esta desactivado")
say("")
end
if game.get_event_flag("Guerra_Shinso") == 1 and pc.get_empire() == 1 then
say_title("El evento:")
say("Actualmente esta activo")
local temo2 = select ("Quiero entrar", "Salir")
if temo2 == 1 then
pc.warp(819200, 204800)
else
return
end
end
end
when login with pc.get_map_index() == 43 begin
if pc.get_empire() == 1 then
game.set_event_flag("Shinso", game.get_event_flag("Shinso")+1)
chat(""..game.get_event_flag("Shinso").." en el evento hay esos shinsos")
elseif pc.get_empire() == 2 then
game.set_event_flag("Chunjo", game.get_event_flag("Chunjo")+1)
chat(""..game.get_event_flag("Chunjo").." en el evento hay esos chunjos")
elseif pc.get_empire() == 3 then
game.set_event_flag("Jinno", game.get_event_flag("Jinno")+1)
chat(""..game.get_event_flag("Jinno").." en el evento hay esos Jinno")
end
if game.get_event_flag("Shinso") == 2 then
notice_all("El reino shinso ya alcanso su maximo numero de jugadores, esta listo para comenzar")
notice_all("Las puertas para este imperio han sido bloqueadas")
game.set_event_flag("Guerra_Shinso", 0)
elseif game.get_event_flag("Jinno") == 2 then
notice_all("El reino Jinno ya alcanso su maximo numero de jugadores, esta listo para comenzar")
notice_all("Las puertas para este imperio han sido bloqueadas")
game.set_event_flag("Guerra_Jinno", 0)
elseif game.get_event_flag("Chunjo") == 2 then
notice_all("El reino Chunjo ya alcanso su maximo numero de jugadores, esta listo para comenzar")
notice_all("Las puertas para este imperio han sido bloqueadas")
game.set_event_flag("Guerra_Chunjo", 0)
end
end
when kill with npc.is_pc() and pc.get_map_index() == 43 begin
loop_timer("Tiempo", 20*1)
if pc.get_empire() == 3 then
game.set_event_flag("Jinno_kill", game.get_event_flag("Jinno_kill")+1)
notice_all("Jinno lleva:"..game.get_event_flag("Jinno_kill").." puntos")
elseif pc.get_empire() == 2 then
game.set_event_flag("Chunjo_kill", game.get_event_flag("Chunjo_kill")+1)
notice_all("Chunjo lleva:"..game.get_event_flag("Chunjo_kill").." puntos")
elseif pc.get_empire() == 1 then
game.set_event_flag("Shinso_kill", game.get_event_flag("Shinso_kill")+1)
notice_all("shinso lleva:"..game.get_event_flag("Shinso_kill").." puntos")
end
end
when Tiempo.timer begin
chat("El tiempo ha acabado")
if game.get_event_flag("Jinno_kill") > game.get_event_flag("Chunjo_kill") > game.get_event_flag("Shinso_kill") then -------- Aqui shinso pierde
notice_all("Shinso ha sido eliminado")
elseif game.get_event_flag("Jinno_kill") > game.get_event_flag("Shinso_kill") > game.get_event_flag("Chunjo_kill") then ------- Aqui chunjo pierde
notice_all("Chunjo ha sido eliminado")
elseif game.get_event_flag("Chunjo_kill") > game.get_event_flag("Shinso_kill") > game.get_event_flag("Jinno_kill") then ------- Aqui jinno pierde
notice_all("Jinno ha sido eliminado")
end
end
end
end
Suerte, falta anexarle funciones para que tenga un mejor uso, suerte.
Desde hace dias me he preguntado que utilidad podria tener una matriz en un servidor de metin2, y sinceramente creo que es algo que podria tener algo de útilidad, por ejemplo, se pueden hacer itemshop, o algo parecido, guardar datos, o X cosas en la FUNCTION, y pues bueno, he hecho una buena variedad de cosas con ella, y pues, aqui esta mi function (aunque sinceramente no se si ya estaba inventada.
Por ejemplo, la útilidad que podriamos darle es que en: (COLUMNA) podríamos poner por ejemplo: ARMAS, y en "RENGLON" podriamos poner X ITEM, o algo así, la funciones o la logica tocara para vosotros.
(SOLAMENTE ES UN EJEMPLO)
Esta es mi function de la matriz (Básica), aunque claro, podeís hacer muchas cosas...
function matriz_temo(x,y) ------ X= VALOR DE COLUMNA, Y = valor del renglon (o vector)
for temo = 1, x do
say("Columna: ", temo)
for temo1 = 1, y do
say("Renglon: ", temo1)
end
end
end
y este es un ejemplo de la utilisacion en la quest
quest matriz_mesterlum begin
state start begin
when 20094.chat."Matriz" begin
matriz_temo(2,3)
end
end
end
Suerte, ya ós tocara hacer vuestra logica con esto...
Debes iniciar sesión para ver el contenido del archivo adjunto en esta publicación.