RafaVK
-
Contador contenido
58 -
Ingreso
-
Última visita
-
Días ganados
2
Mensajes publicados por RafaVK
-
-
-
Les traigo este resumen de quest lo hice mientras estudiaba este lenguaje. Tiene lo básico no está completo (Me ha dado pereza completarlo hace casi 1 año que lo hice... pero les servirá a los que deseen aprender.
---Resumen de las Quest [*]Estructura de una quest quest capidos begin -----> Encabezado de la quesy seguido del nombre de la quest se recomienda que sea el mismo del archivo que se crea. state start begin -----> Indica que la quest empieza aquí when login begin -----> Pregunta por algo que esta pasando en este caso pregunta por un login es decir si un personaje se conecto. chat("Bienvenido al servidor, pasalo bien") -----> La acción que se realiza en al quest. end -----> Finaliza la acción end -----> Finaliza el estado end -----> Finaliza la quest [*] Comentarios Se hacen con un -- [*] Variables local nombre = variable -----> Nos sirve para almacenar datos. Ejemplo local nivel = pc.get_level() local texto = input() local numero = math.random(1,100) local s = select ("opcion1" , "opcion2" , "opcion3") -----> Sirve para colocar botones en los mensajes if s == 1 then -----> Sirve para preguntar por cual de las opciones se le dió clic es decir a la opcion1 corresponde el 1 a la opcion2 corresponde el 2 y asi sucesivamente con la cantidad de opciones que se coloquen. [*] Estados de las quest start -----> Estado de inicio de una quest. setstate("nombre estado") -----> Cambiar de estado. Tambien se usa la funcion set_state("nombre estado") set_quest_state(,) -----> Cambiar el estado de una quest distinta. Recordando que el nombre y el estado van dentro de comillas "" asi: set_quest_state("nombre", "estado") Ejemplo de estados: quest capidos begin -----> Encabezado de la quesy seguido del nombre de la quest se recomienda que sea el mismo del archivo que se crea. state start begin -----> Indica que la quest empieza aquí when login begin -----> Pregunta por algo que esta pasando en este caso pregunta por un login es decir si un personaje se conecto. setstate("run") -----> Ejecuta el cambio de STATE end -----> Finaliza la acción end -----> Finaliza el estado state run begin -----> Indica que la quest empieza aquí when enter begin -----> Se usa para que las acciones se hagan cuando se entra al estado. chat("Has entrado al state.") end when leave begin -----> Se usa para que las acciones se hagan cuando se finaliza o sale del estado. chat("Has salido del state.") end when login begin -----> Pregunta por algo que esta pasando en este caso pregunta por un login es decir si un personaje se conecto. return -----> Finaliza la quest end -----> Finaliza la acción end -----> Finaliza el estado end -----> Finaliza la quest [*] Operadores lógicos when -----> sirve para comenzar acciones. while -----> sirve para comenzar acciones. with -----> poner condiciones. and -----> poner condiciones. or -----> poner condiciones. if -----> poner condiciones. elseif -----> poner condiciones. else -----> poner condiciones. > -----> Comparación < -----> Comparación >= -----> Comparación <= -----> Comparación == -----> Comparación ~= -----> Comparación [*] Estructura de un IF if [X] then accion1 else if [X2] then accion2 end [*] Estructura de un when when condiciones begin accion end [*] Ciclos o Bucles Un BUCLE se puede romper con la palabra break [*] Bucle 1 repeat bloque de sentencias until (condición) [*] Bucle 2 while (condición) do bloque de sentencias end -- BUCLE INFINITO while true do bloque end -- FIN DE BUCLE INFINITO [*] Bucle 3 for var = start, stop , aumento do bloque de sentencias end [*] Bucle 4 -- FOR PARA ARRAY local tab = {"valor1", "valor2", "valor3"} for k, v in ipairs(tab) do say(k.." = "..v) end --for -- FIN FOR PARA ARRAY [*] Arrays local nombrearray = {10,20,34,43,57} -----> Array simple nombrearray[1] -----> Trae el contenido del array en la posición 1 en esta caso 10. EJEMPLO: local items = {160,161,162,163} for i=1, table.getn(items) do -- en la i ponemos igual a 1 y luego la cantidad de veces que se repita pc.give_item2(items[i]) -- te dara cada uno de los items que haya en la tabla end -- cada for le corresponde un end local nombre = { -- abres la tabla {} -- subcategoria 1 {} -- subcategoria 2 {} -- subcategoria 3 } -- cierras la tabla Una subcategoría sirve para agrupar una cantidad de elementos en si y para obtener los elementos se hace: nombre[subcategoria][posicion] Ejemplo: local cordes = { {12500,13400,17500,14000}, {12400,18900,13200} } cordes[1][4] -- 14000 cordes[2][2] -- 18900 EJEMPLO PRACTICO 1: local cordes = { {12500,13400}, {12400,18900}, {19800,12300} } pc.warp(cordes[1][1],cordes[1][2]) -- 12500, 13400 EJEMPLO PRACTICO 2: say("Que arma quieres") say("") local items = { {160,2}, {161,1}, {162,3} } local arma = select ("Ninfa +0" , "Ninfa +1" , "Ninfa +2" , "Cerrar") if arma == table.getn(items)+1 then return end pc.give_item2(items[arma][1],items[arma][2]) [*]Mostrar Texto En El Cliente chat("mensaje") -----> Mostrar chat de infromación en el chat general. Solo lo ve el personaje que se conecta. notice_all("mensaje") -----> Mostrar a todos los personajes Conectados. say_title("mensaje") -----> Mensaje en forma de título say("mensaje") -----> Mensaje que muestra el texto que se desea. Est mensaje es mostrado en un recuadro en medio de la pantalla. say_reward("mensaje") -----> Mensaje en forma de recompensa con color distinto. [*] Datos Curiosos. math.random(numero incial,numero final) -----> Funcion que devuelve un número aleatorio entre el numero inicial y el numero final que se establezca. pc -----> Es el usuario o personaje que esta conectado. pc.get_level() -----> Obteiene el nivel de un personaje. login -----> Acción que se da al conectarse un personaje. logout -----> Acción que se da al desconectarse un personaje. when vnum.chat."texto de opcion" begin -----> Se utiliza para activar la quest cuando le da en una opcion de un lista de opciones. Es decir, cuando se le da clic en la opcion "texto de opcion" del npv o item del vnum. pc.count_item("vnum") -----> Sirve para comprobar si el personaje tiene el item correspondiente al venum en su inventario. vnum.chat."texto" -----> Al darle clic en la npc con el vnum se abre un dialogo con opciones. Al dar click en la opción que contiene el texto empieza el contenido del when. vnum.click -----> Al hacer click en el npc del vnum, empieza el contenido del when. vnum.click -----> Al hacer click en el npc, empieza el contenido del when. kill -----> Cuando el jugador mata un enemigo, comienza el contenido del when. when vnum.kill begin -----> Indica si el monstruo que le corresponde el vnum esta muerto party_kill -----> Cuando un miembro del grupo mata a un enemigo inicia el contenido del when. vnum.party_kill -----> Cuando un miembro del grupo mata a aun enemigo con vnum, empieza el contenido del when. X.target.click -----> Cuando haces click al tarjet de nombre X empieza el contenido del when. X.target.arrive -----> Cuando llegas al punto con el tarje de nombre X empieza el contenido del when. pc.get_map_index == codigomapa -----> Indica si el personaje esta en el mapa de codigomapa pc.get_max_hp -----> Se puede preguntar por el nivel de hp que tienes. pc.is_mount -----> Se puede preguntar si estas montado en una montura o no. when condicion1 with condicion2 and condicion3 begin ----> Estrctura para 2 o mas condiciones pc.get_empire() -----> Se puede preguntar en que reino estas. vnum.use -----> Cuando se una un el item del vnum se activa esta quest pc.give_item2("vnum", cantidad) -----> Se utiliza para dar un item al inventario del personaje. return -----> Accion que se utiliza en la accion de un boton de cancelar o cerrar. Y sirve para cerrar la ventana de la quest. pc.change_money(-cantidad) -----> Acción que sirve para disminuir o aumentar la cantidad de yang de un personaje. pc.remove_item(vnum, cantidad) -----> Accion que sirve para remover un item del inventario del personaje. pc.gold -----> Pregunta por la cantidad de yang que tiene el personaje. pc.get_sex() -----> Obtiene el sexo de un personaje. Se compara 1 hombre 2 mujer. say_item_vnum(vnum) -----> Muestra 1 item con su imagen. pc.count_item(vnum) -----> Cuenta cuantos items hay. mob_name(vnum) -----> Nombre de un monstruo pc.getname() -----> Obtener el nombre del personaje. --------------------------------------------------------------------------------------------------------------------------------------------- ¡¡¡¡¡IMPORTANTE !!!! EL JUEGO ALMACENA PARA SIEMPRE LOS VALORES DE LOS SIGUIENTES COMANDOS pc.setqf -----> nos permite asignar un determinado valor a un personaje de modo que podamos usar el comando pc.getqf para crear condiciones que impliquen que el personaje tenga ese valor concreto para activarse. pc.setqf("nombredelqf", valor) otra forma pc.setqf("kekomola", pc.getqf("kekomola") + 1) ejemplo: pc.setqf("kekomola", 2) --> valor fijo pc.setqf("kekomola", pc.getqf("kekomola") + 1) ---> Cada que se use aumenta 1 pc.getqf -----> Chekea que valor tiene el comando anterior ejemplo: if pc.getqf("kekomola") == 5 then ----> se comprueba el valor de kemola que es el valor que se acumulo en el comando anterior. Ejemplo combinado: quest item begin state start begin when 70045.use begin pc.setqf("buenas", pc.getqf("buenas") + 1) if pc.getqf("buenas") == 1 then chat("buenas") elseif pc.getqf("buenas") == 2 then chat("que tal") elseif pc.getqf("buenas") >= 3 then chat("me aburro") end end end end Ejemplo Practico: quest muertes begin state start begin when kill with not npc.is_pc() begin pc.setqf("mobs", pc.getqf("mobs") + 1) chat("LLevas "..pc.getqf("mobs").." matados en tu juego") end end end --------------------------------------------------------------------------------------------------------------------------------------------- horse.unsummon() -----> Nos permite guardar el Caballo horse.summon() -----> Nos permite sacar el caballo horse.set_level(nivel) -----> Asigna un nivel al caballo letter : Relacionado con las letters (explicación en otro capitulo). button : Relacionado con las letters (explicación en otro capitulo). info : Relacionado con las letters (explicación en otro capitulo). nombre.timer : Cuando el timer llamado con nombre llega a 0, empieza el contenido del when. nombre.server_timer : Cuando el server_timer llamado con nombre llega a 0, empieza el contenido del when. ---------------------- Como hago yo para saber que valor tiene en el qf cierto personaje? es decir puedo poner una ques con el mismo nombre del qf para todos los personajes? y si es así como hago yo para saber con otra quest distinta que valor del qf tiene un personaje X ? pc.getf('nombrequest','nombreqf') pc.getqf = get playing character quest flag pc.getf = get playing character flag -----------------------
Debes iniciar sesión para ver el contenido del enlace en esta publicación. -
Buena noches.
alguien tiene un descompresor para clientes con lycan?
Eternexus o Zone Archiver...
Aunque depende si el cliente esta encriptado....
-
Esta la saque del guabina xD igual que otras armas, pero esta el gr2 esta dañado
Las haz sacado mal... xD! busca bien por que concuerdo con:
imposible en el guabina funcionan perfectas xD
XD!
-
-
Aqui Dejo Video chicos para los que quieran sabes cual es la contraseña de rar o zip de archivo
Cuando la saques con ese programa puedes postearla.... tarda demasiado en mi PC.
-
Buen aporte
-
-
Te vendría bien leyendo esto:
Debes iniciar sesión para ver el contenido del enlace en esta publicación.Está en inglés pero no debe ser un problema para el que programa :3
- Tiburon, eurotruck, ahmedhaies y 2 mas reacciono a esto
- 5
-
Redacta un poco mejor la explicación por que no entiendo claramente lo que pides.
-
Eso es como dijo shino, al no editar el source del GAME tiene varias opciones como el ofi que si se pasa de eso salta que es hack pero no lo es, no agas ni caso
tengo pruebas si quires me avisas xd
Gracias por aclararme la duda
-
algunas funciones del game o algo pueden estar malas, no te guies por eso. En mi server en una tabla decia que yo y que usaba hack y no era asi solo que los privados pasamos aveces una velocidad de movimiento normal o algo y al sobrepasarla el servidor lo detecta como hack.
Es raro que en un game oficial que la velocidad pueda ser ejemplo 20% max el tuyo le pongas 150% xd dice como que aquí pasa algo raro jaja y salen estos anuncio depende como lo configures.
igual puedo estar equibocado...
Gracias por la respuesta. Lo mismo pienso yo aunque es mejor esperar mas comentarios antes de sacar una conclusión
-
Me he encontrado con esto en mis syserr
SYSERR: Feb 28 19:36:55 :: Hack: HACK_DETECT: LorMuErte HprQ¨ÈçsZ¾[Ù)=œ¬GDÎŽš?YeHŽ÷!vż–œ¸ÉÆi”]X¸B@ܘ?Fc `š¦”Z''Rªu…ÃLA×Â_jû•á8¨óŬëç ¿¶šÒ=¬ÖjL´Þ²ÿfÙœÐqªæp«l#3ëyÔØÚÓ-£<K1•áèÆAåÖ€WFo5/+ßÖänf7Wーˆ™¬seµú«ŒIÆÆ¡‰µŽaªïÚ{oíÿË}n´oÝ&ð¾å$;µ‘°#ô"ÒyðüÝñôÍ•1º£\FÎjB å[Ek{»cà‰|ÂÓÌvªiͼ˜ SYSERR: Feb 28 19:41:18 :: Hack: HACK_DETECT: alejandra18 KHù¤>åE‡ÕVÜM ÕslÛk†L÷ÑèZŒ•=xtÁó„"2Ó“ÒÞEúٚɈÄ39Œ™yçÉ~] SYSERR: Feb 28 23:03:52 :: Hack: HACK_DETECT: espi Ÿ~Rá(e#g <²î«€Å8¹f¸õâ9³ÌtÊ[ær/Qª÷móéÔu‡=sÑëž °„gP`ÍT©l§´<Ým ªò6…%Ãía™,‰q·Ðÿû$ð‡Ö‘ÓùhOƸµj)p÷ù’x®Ú/ºƒ@üWý$Å}ëÓcáI SYSERR: Feb 28 23:55:04 :: Hack: HACK_DETECT: alejandra18 •úxzÂx1
-
quest test begin
state start begin
when 9003.chat."Tienda General" begin
setskin(NOWINDOW)
npc.open_shop(3)
end
when 9003.chat."Objeto Encantado" begin
setskin(NOWINDOW)
if pc.count_item(71084) > 0 then
chat("Lo siento , tienes que gastar tu Objeto Encantado")
return
else
pc.give_item2(71084,25)
pc.change_money(-122231) --Cantidad de dinero a cobrar. Importante dejar el -
chat("Has obtenido 25 Objeto Encantado")
end
end
end
end
-
Está mal, no puedes usar un "+", en lua es ".."
Tienes toda la razón no me fije en eso... ya lo edito...
-
Básicamente he echo esto, pero todavía no se si funciona. Tengo que probarlo.
quest pocion20 begin state start begin when 27118.use begin if get_time() < pc.getqf("tiempo1") then syschat("Aun no puedes, tienes que esperar "+ get_time() + " segundos") return else pc.setqf("tiempo1",0) pc.setqf("tiempo1",get_time()+4) affect.add_collect(apply.HP_REGEN, 20000, 3) pc.remove_item(27118,1) end end end end
Te recomiendo 2 estados para la quest debido que al hacer esto:
if get_time() < pc.getqf("tiempo1") then
Sin que tengas el qf antes definido puede darte errores (No graves) pero si te marcaría un error en locale algo de comparación con algo nulo o inexistente.
pc.setqf("tiempo1",0) pc.setqf("tiempo1",get_time()+4)
Es innecesario poner 2 setqf cuando en el segundo estás reemplazando completamente el primero....
Resumiendo.... Yo lo haría así...
quest pocion20 begin state start begin when login or enter begin pc.setqf("tiempo1",0) set_state(estado2) end end state estado2 begin when 27118.use begin if get_time() < pc.getqf("tiempo1") then syschat("Aun no puedes, tienes que esperar ".. pc.getqf("tiempo1")-get_time() .." segundos") return else pc.setqf("tiempo1",get_time()+4) affect.add_collect(apply.HP_REGEN, 20000, 3) item.remove() end end end end
- Dragonslayer reacciono a esto
- 1
-
Vale lo probare, gracias
Te dejo un ejemplo de una quest completa.
quest RestaurarVida begin state start begin when login begin if pc.get_hp() <=0 then affect.add_collect(apply.HP_REGEN, 1000000, 5) end if pc.get_sp() <=0 then affect.add_collect(apply.SP_REGEN, 1000000, 5) end end end end
-
Sabes que eso es un bonus no? Y eso no te regenera vida sino te aumenta la que tienes, si tienes 123/5000hp, en vez de regenerar te sube la de 5000 a mas vida, asi que tu vida baja se queda igual.
La puse por que en mi servidor me funciona de esa manera..... y lo que realmente hace es que te pone a que se regenere la vida en 100k durante un corto espacio de tiempo lo cual sirve para solucionar lo que pide el dueño del post...
Buenas, pues eso que busco una función que restaure el hp.
Me vale que restaure un porcentaje de hp o que restaure uno fijo, la restauración del hp tiene que ser inmediata.
Gracias de antemano.
Restaurar la HP inmediatamente....
E incluso si buscas un poco en este mismo foro.... veras que keko, noa la usan (Te dejo el link...
Debes iniciar sesión para ver el contenido del enlace en esta publicación.) -
Es fácil con quest...
affect.add_collect(apply.HP_REGEN, 100000, 5)
- Dragonslayer reacciono a esto
- 1
-
Para poder enterarme de la caida de un core tendría que haber algo en el servidor que me avisase, porque no sería eficiente tener que estar leyendo los syserr del servidor cada minuto para saber si se ha caido o sigue normal. A no ser que haciendo un "ping" al puerto del core se pierda cuando esta caido, la verdad es que no se como funcionan exactamente, pero si pasase esto no sería dificil añadir la funcion que pides.
Esto lo puedes hacer que cada cierto tiempo verifique el estado de un core. Puede ser la idea inicial. Si lo manejas como un hilo aparte no carga la memoria del celular. Se crea el hilo cuando se configura los core, se elimina el hilo cuando se desconfigure. Para evitar que varias app cierren el hilo podrías colocar que cada que se habra la app verifique que el hilo esté corriendo.
Lo de los personjes y gms funciona con la tabla log, con el campo "how" y los valores LOGIN y LOGOUT, es la forma mas fiable que se me ocurrio para hacerlo, con mis files funciona perfectamente y al instante. Al principio lo hice como creo que hacen las webs, usando el last_play de player.player, pero era muy lento y poco fiable. Despues se me ocurrio lanzar una sentencia por ssh para ver el numero de conexiones al servidor, pero no tengo ni idea de freebsd. Asique si alguien conoce una manera mejor para contar los jugadores del servidor soy todo oidos xD.
Ahora entiendo por que no funciona en mi servidor. Para la APP le tengo un user que está totalmente bloqueado en permisos
Para la conexión de los pj también lo tienes de esta manera? Con la tabla log?
-
Hola a todos, para los que no confian, e descompilado la APK y es totalmente correcta nada de terceros que mande nada a ningun sitio, podeis estar tranquilos
Ademas como bien dice el googleplay es bastante tajante en esas cosas
Saludos
Esto lo hice yo desde hace rato xD! llevo desde q salió usándola y me anda bien bueno como siempre tiene errores pero va progresando.
2 cosas Yori.
1. Debes hacerla más genérica no todos usamos las tablas originales del Metin2... En lo personal uso otra base de datos y otras tablas para hacer asignación de coins... Para hacer esto puedes poner que cada persona ingrese el nombre de la base de datos y pueda ingresar una consulta SQL que si está ingresada se use esta y no la genérica. Así que esta sección no la he podido testear.
2. Los jugadores online no me anda aún.... sigue saliendo en 0. Al igual que la lista del staff no muestra si está o no conectado.
Como sugerencia adicional podrías agregar que la app informe si hay algún error de caida de los Core que sería algo en lo personal fundamental a pesar de que el servidor tenga la posibilidad de levantar el core por si mismo.
-
y en donde se guarda ese QF? en la base de datos.
Ejemplo:
Si en una quest al PJ el doy el
setqf("drink_drug",0)
En donde se guarda ese valor?
Ya que, debe de estar guardado, si no seria imposible reconocer ese valor cuando se vuelva a loguear.
NO ENCUENTRO DONDE SE GUARDA
Se guarda en player.quest
-
No es problema de quest. Debes revisar en quest_function si las funciones que usas estan ahí agregadas. Sino lo estan debes agregarlas.
-
creo que lo que buscas es esto:
SELECT (t.columa1 + t.columna2 + t.columna3) as total from nombreBasededatos.NombreTabla t ORDER BY t.total
[Ayuda] Quest contraseña para una quest ingame
en Petición de quests
Publicado
Me imagino que es algo así lo que pides.... te hice lo básico tu ya haces lo que necesites...