KeKo
-
Contador contenido
518 -
Ingreso
-
Última visita
-
Días ganados
74
Mensajes publicados por KeKo
-
-
-
Buenas zoneros,
Aqui teneis una vieja quest que hice para el mistery2masters en su momento, en la que al crear el pj a lvl 1 te va llevando por la city a hablar con cada npc y ellos te van dando el equipo.
Tiene mucho tiempo asi que podria hacerse con menos lineas, pero me da pereza reducirla ya se queda como cuando la hice
quest comienzo begin state start begin when login begin set_state(comenzar) end end state comenzar begin when letter begin send_letter("Eres nuevo?") end end when button or info begin say_title("Eres nuevo?") say("") say("Hola "..pc.get_name().." he oido que eres nuevo") say("asi que te dare un buen consejo") say("") say("Si vas hasta city los npcs") say("te iran explicando su funcion") say("y te daran tu equipo basico") say("") say("Vete a hablar primero con npcarma") say("tendra una flecha encima, habla con el") say("y el te seguira explicando") say("") set_state(arma) end end state arma begin when letter begin local v = find_npc_by_vnum(9001) if v != 0 then target.vid("__TARGET__", v, "Npcarma") send_letter("Vete con npcarma") end end when button or info begin say_title("Vete con Npcarma") say("") say("Npcarma te esta buscando") say("tiene encima una flecha") say("asi que lo encontraras facilmente") say("") say_reward("Vete a hablar cn el!") say("") end when __TARGET__.target.click or 9001.chat."Npcarma" begin target.delete("__TARGET__") say_title("Npcarma") say("") say("Hola "..pc.get_name()..", yo soi npcarma") say("y soi el que vende armas aqui") say("") say("Aunque para ti por ser nuevo") say("tengo una arma de regalo") say("") say("No es muy buena pero") say("para empezar te gustara") say("") if pc.job == 0 then pc.give_item2(idarma,1) --espada pc.give_item2(idarma,1) --lanza elseif pc.job == 1 then pc.give_item2(idarma,1) --espada pc.give_item2(idarma,1) --arco pc.give_item2(idarma,1) --daga pc.give_item2(8000,200) --flechas elseif pc.job == 2 then pc.give_item2(idarma,1) --espada elseif pc.job == 3 then pc.give_item2(idarma,1) --fan pc.give_item2(idarma,1) --campana end say_reward("Me han contado que te busca") say_reward("npcarmadura, asi que ve con el") set_state(armor) end end state armor begin when letter begin local v = find_npc_by_vnum(9002) if v != 0 then target.vid("__TARGET__", v, "Npcarmor") send_letter("Vete con npcarmor") end end when button or info begin say_title("Vete con npcarmor") say("") say("Npcarmor te esta buscando") say("tiene encima una flecha") say("asi que lo encontraras facilmente") say("") say_reward("Vete a hablar cn el!") say("") end when __TARGET__.target.click or 9002.chat."Npcarmor" begin target.delete("__TARGET__") say_title("Npcarmor") say("") say("Hola "..pc.get_name().." he oido que eres nuevo") say("asi que te contare algo") say("") say("Yo soi el que vende las armaduras aqui") say("y por ser nuevo tengo un regalito para ti") say("") say("No es mi mejor armor, pero creo") say("que a tu nivel te gustara") say("") say_reward("He oido que el fabricante de piedras") say_reward("te estaba buscando, asi que ve con el") set_state(fabricante_piedras) if pc.job == 0 then pc.give_item2(idarmor,1) --armadura pc.give_item2(idcasco,1) --casco pc.give_item2(idescudo,1) --escudo elseif pc.job == 1 then pc.give_item2(idarmor,1) --armadura pc.give_item2(idcasco,1) --casco pc.give_item2(idescudo,1) --escudo elseif pc.job == 2 then pc.give_item2(idarmor,1) --armadura pc.give_item2(idcasco,1) --casco pc.give_item2(idescudo,1) --escudo elseif pc.job == 3 then pc.give_item2(idarmor,1) --armadura pc.give_item2(idcasco,1) --casco pc.give_item2(idescudo,1) --escudo end end end state fabricante_piedras begin when letter begin local v = find_npc_by_vnum(Npcpiedras) if v != 0 then target.vid("__TARGET__", v, "Npcpiedras") send_letter("El fabricante de piedras") end end when button or info begin say_title("El fabricante de piedras") say("") say("El fabricante de piedras te esta buscando") say("tiene encima una flecha") say("asi que lo encontraras facilmente") say("") say_reward("Vete a hablar cn el!") say("") end when __TARGET__.target.click or npcpiedras.chat."El fabricante de piedras" begin target.delete("__TARGET__") say_title("El fabricante de piedras") say("") say("Hola "..pc.get_name().." he oido que eres nuevo") say("asi que te contare quien soi yo") say("") say("Si tu me traes 3 piedras del mismo tipo") say("yo te dare una piedra mejor") say("Que te parece? Es buen trato?") say("") say("Bueno mientras no tengas piedras") say("te dare un collar para que mates monstruos") say("") say_reward("He oido que el fabricante de gemas") say_reward("tambien quiere hablar contigo") say("") pc.give_item2("idcollar", 1) set_state(fabricante_gemas) end end state fabricante_gemas begin when letter begin local v = find_npc_by_vnum(npcgemas) if v != 0 then target.vid("__TARGET__", v, "npcgemas") send_letter("El fabricante de gemas") end end when button or info begin say_title("El fabricante de gemas") say("") say("El fabricante de gemas te esta buscando") say("tiene encima una flecha") say("asi que lo encontraras facilmente") say("") say_reward("Vete a hablar cn el!") say("") end when __TARGET__.target.click or npcpiedras.chat."El fabricante de gemas" begin target.delete("__TARGET__") say_title("El fabricante de gemas") say("") say("Hola "..pc.get_name().." he oido que eres nuevo") say("asi que te contare quien soi yo") say("") say("Si tu me traes piedras") say("yo te dare a cambio gemas") say("Que te parece? Es buen trato?") say("") say("Las gemas son items que te daran") say("mejores bonus que las piedras normales") say("") say("Bueno mientras no tengas piedras") say("te dare unos zapatos para que no vayas descalzo") say("") say_reward("He oido que el comerciante de doblones") say_reward("tambien quiere hablar contigo") say("") pc.give_item2("idzapatos", 1) set_state(comerciante_doblones) end end state comerciante_doblones begin when letter begin local v = find_npc_by_vnum(npcdoblones) if v != 0 then target.vid("__TARGET__", v, "npcdoblones") send_letter("El Comerciante de Doblones") end end when button or info begin say_title("El Comerciante de Doblones") say("") say("El Comerciante de Doblones te esta buscando") say("tiene encima una flecha") say("asi que lo encontraras facilmente") say("") say_reward("Vete a hablar cn el!") say("") end when __TARGET__.target.click or npcdoblones.chat."El Comerciante de Doblones" begin target.delete("__TARGET__") say_title("El Comerciante de Doblones") say("") say("Hola "..pc.get_name().." he oido que eres nuevo") say("asi que te contare quien soi yo") say("") say("Los doblones son un item especial") say("de nuestro servidor") say("") say("Si tu me traes doblones") say("podras conseguir nuevos items") say("y tener privilegios que no podrias tener") say("") say("Asi es un doblon") say_item_vnum("iddoblon") say("") say("Cuando tengas alguno ven conmigo") say("Mientras te dare unos pendientes y brazalete") say("") pc.give_item2("idpendis", 1) pc.give_item2("idbraza", 1) set_state(finalmision) end end state finalmision begin when letter begin send_letter("Ya conoces la ciudad") end end when button or info begin say_title("Ya conoces la ciudad") say("") say("Bueno ahora ya sabes mejor") say("que hace cada npc de la ciudad") say("") say("Asi que ahora ya puedes irte") say("a matar monstruos y subir de nivel") say("") say("Esperamos que disfrutes tu juego") say("en nuestro servidor") say("") set_state(__complete) end end state __complete begin end end
Saludos
-
Me refiero a que cuando seleccionas y creas un pj la imagen de fondo es la misma no? Bueno, pues lo que yo busco, es si cuando creas un pj salga un fondo diferente al de seleccionar personaje, entiendes ahora? (UNA IMAGEN PARA SELECCIONAR PJ OTRA TOTALMENTE DIFERENTE PARA CREAR PJ.)
No, no se puede
-
No si se habran arreglado ese mapa, yo lo tengo en el pc, no hay "limites" por lo tanto, puedes ir por el interior de los muros y tal, nose si lo abran arreglado, el mapa esta genial salvo por eso, y muy buena la quest. Un saludo.
Eso es que no tiene mdatr, habria que hacerselo o seguira atravesando.
De todos modos es un mapa posible, puedes hacerlo en el que quieras
-
una foto viene bn
De que? xd
Lo unico de lo que puedo hacer foto en este evento es del mensaje de: El coliseo va en la ronda X
-
- Este es un tema popular.
- Este es un tema popular.
Bueenas zoneros y zoneras,
Hoy os traigo otro evento cosecha propia. Hace tiempo que habia escrito esta quest, que iba ser para un evento publico para mz, pero al final me dio pereza acabarla y quedo mi baul de las quests no acabdas.
Bueno os comento: activas el evento mediante un npc, que le da 20min a todos los posibles jugadores para entrar al mapa hablando con el npc del evento. Una vez los 20min se cierra la entrada y si los jugadores hablan con el npc que debereis poner en el centro del mapa (o donde querais pero en el mapa) empezara el evento.
La cosa es sencilla: acaba con todos los mobs de cada ronda. Si lo haces empezará la siguiente ronda (asi hasta la ronda que pongais de limite), perooo si moris os ireis para city. En este evento puede no haber ganadores asi que aconsejo a los usuarios que se preparen bien para el evento xd.
Si los jugadores llegan a la ronda final aparecera un jefe especial que deberan matar entre todos, y si lo consiguen se les dara un premio (eso lo poneis ya de drop del jefe)
El evento esta pensando para este mapa, pero podeis usar el que querais
Debes iniciar sesión para ver el contenido del enlace en esta publicación.Tambien esta pensado para usar este mob como jefe final (es un metin gigante hecho por Chaoss) pero de nuevo usad el que querais.
Debes iniciar sesión para ver el contenido del enlace en esta publicación.Y bueno aqui teneis la quest:
quest evento_coliseo begin state start begin when 20012.chat."GM: Evento Coliseo" with pc.is_gm() begin say_title("Evento Coliseo") say("") say("Buenas tardes caballero") say("que quiere hacer con el evento") say("") local pregunta = select ("Activar Coliseo" , "Desactivar Coliseo" , "Ir alli" , "Cerrar") if pregunta == 1 then notice_all("*El Evento Coliseo ha comenzado, hablad con el npc para ir alli*") notice_all("*teneis 20minutos para entrar todos los que querais*") server_timer("coliseo", 20) game.set_event_flag("evencoliseo", 1) elseif pregunta == 2 then notice_all("*El Evento Coliseo se ha acabado, esperamos que lo hayais disfrutado*") warp_all_to_village(250,2) game.set_event_flag("evencoliseo", 0) game.set_event_flag("empezar_coli",0) elseif pregunta == 3 then pc.warp(3107100, 3196900) end end when 20012.chat."Evento Coliseo" begin if game.get_event_flag("evencoliseo") == 0 then say_title("Evento Coliseo") say("") say("Hola "..pc.get_name().." soi el encargado del Coliseo") say("y lamento decirte que en estos momentos") say("el evento no se encuentra activo") say("") say("Estate atento que se avisara") say("cuando puedas entrar al Coliseo") say("") return end say_title("Evento Coliseo") say("") say("Buenas "..pc.get_name().." el evento Coliseo") say("en su evento en el que tendras que superar") say("montones de hordas de enemigos") say("") say("Si mueres seras enviado a city") say("pero si consigues llegar a la ultima ronda") say("te espera una gran recompensa") say("") say("Que haras, te atreves?") say("") local coli = select ("Quiero ir" , "Paso") if coli == 1 then pc.warp(3107000, 3208300) end end when coliseo.server_timer begin notice_all("*El Evento Coliseo se ha puesto en marcha*") game.set_event_flag("empezar_coli",1) end when 20012.chat."Comenzar el coliseo" with game.get_event_flag("empezar_coli") == 1 begin npc.purge() d.new_jump_all(238,31080,32065) d.setf("coliseo",1)d.regen_file("data/dungeon/coliseo.txt") end when login with d.getf("coliseo") == 1 begin loop_timer("salvar", 2) end when kill with not npc.is_pc() and d.getf("coliseofinal") != 1 begin local rondas = { [1] = {5}, [2] = {30}, [3] = {15}, [4] = {20}, [5] = {50}, [6] = {30}, [7] = {35} } d.setf("mobsronda", d.getf("mobsronda") + 1) if rondas[d.getf("coliseo")][1] == d.getf("mobsronda") then d.setf("coliseo", d.getf("coliseo") + 1) d.notice("*El Coliseo se encuentra en la ronda "..d.getf("coliseo").."*") d.regen_file("data/dungeon/coliseo"..d.getf("coliseo").."txt") d.setf("mobsronda",0) end if d.getf("coliseo") == 7 then -- ultima ronda notice_all("*Habeis llegado a la ultima ronda, mucha suerte con el metin final*") d.regen_file("data/dungeon/colifinal.txt") d.setf("coliseofinal", 1) end end when idjefe.kill with d.getf("coliseofinal") == 1 begin -- poneis la id del jefe notice_all("*Habeis superado el Coliseo, recoged vuestras recompensas") timer("pafuera", 10) end when salvar.timer begin if pc.get_hp() <= 0 then warp_to_village() end end when pafuera.timer begin d.exit_all() end endend
Os explico como funciona:
d.new_jump_all(238,31080,32065)d.setf("coliseo",1)d.regen_file("data/dungeon/coliseo.txt")
Al hablar con el npc una vez comenzado el evento se hace un salto para comenzar una dungeon y se carga la primera ronda. Como no siempre usareis el mismo numero de mobs en cada rondas, he puesto un array en el que tendreis que configurar las rondas:
local rondas = { [1] = {5}, -- [] numero ronda {} cantidad de mobs[2] = {30},[3] = {15},[4] = {20},[5] = {50},[6] = {30},[7] = {35} }
Debereis añadir una linea al array por cada ronda que querais hacer. En el [ ] va el numero de ronda y en el { } la cantidad de mobs que tiene esa ronda de mobs.
Al matarlos a todos saldra un mensaje diciendo en que ronda vais y se cargara la siguiente:
d.setf("coliseo", d.getf("coliseo") + 1)d.notice("*El Coliseo se encuentra en la ronda "..d.getf("coliseo").."*")d.regen_file("data/dungeon/coliseo"..d.getf("coliseo").."txt")
Como veis debereis meter vuestros regens en data/dungeon y se deberan llamar: el primero coliseo y de ahi en adelante seran coliseo2.txt,coliseo3.txt,coliseo4.txt,etc,etc (ojo, no hay coliseo1)
Para limitar cual es la ronda del jefe lo pondreis aqui
if d.getf("coliseo") == 7 then
La ronda que pongais ahi sera la del jefe, que debereis cargar del regen
d.regen_file("data/dungeon/colifinal.txt")
Y bueno, espero que os guste el evento saludos
-
por cierto, tú lees libros? xD.
._.
Pues si, los que me mandan en la uni y los que leo yo, como la gente normal xd
-
Aqui teneis una quest que hice cuando me aburria. Es mi propia version del evento de Los Juegos del Hambre que hice tras leerme el libro, con una votacion via mysql para elegir a los jugadores del evento.
Esta sin acabar, y no lo acabare, asi que pa quien quiera adaptarla a su server ahi va
Debes iniciar sesión para ver el contenido del enlace en esta publicación.quest juegos_del_hambre begin state start begin when 20012.chat."Los Juegos del Hambre" begin if pc.is_gm() then say_title("Los Juegos del Hambre") say("") say("Que quieres hacer?") say("") local juego = select ("Elecciones" , "Juegos" , "Cerrar") if juego == 1 then say_title("Los Juegos del Hambre") say("") local ele = select ("Abrir las elecciones" , "Cerrar las elecciones" , "Elegir Seleccionados" , "Cerrar") if ele == 1 then notice_all("Ha empezado el periodo de elecciones para los Juegos del Hambre") notice_all("podeis presentaros como tributos en el npc del evento") game.set_event_flag("juegos_elecciones",1) game.set_event_flag("juegos_hambre",1) elseif ele == 2 then notice_all("Se han cerrado las elecciones a tributo de cada distrito") notice_all("pronto se anunciaran los resultados") game.set_event_flag("juegos_elecciones", 0) local reino = {"Shinso","Chunjo","Jinno"} for i=1, table.getn(reino) do mysql_query("UPDATE player.juegos_hambre SET elegido='1' WHERE distrito='"..reino[i].."' ORDER BY votos desc LIMIT 8;") end elseif ele == 3 then notice_all("Ya se han seleccionado los tributos para Los Juegos del Hambre") notice_all("id al npc para ver quienes son los afortunados") game.set_event_flag("juegos_elecciones", 2) local elegi = mysql_query("SELECT tributo FROM player.juegos_hambre WHERE elegido='1';") for i=1, table.getn(elegi) do game.set_event_flag("elegido"..elegi.tributo[i].."",1) end end elseif juego == 2 then say_title("Los Juegos del Hambre") say("") local ele = select ("Empezar los Juegos" , "Cerrar") if ele == 1 then notice_all("Que den comienzo los Juegos del Hambre!") notice_all("los tributos elegidos de cada distrito deben dirigirse al npc del evento") game.set_event_flag("juegos_hambre", 1) server_timer("juegos_contador_muertes", 60*5) server_timer("juegos_contador_final", 60*5) end end elseif pc.is_gm() == false then if game.get_event_flag("juegos_hambre") == 0 then say_title("Los Juegos del Hambre") say("") say("Lo siento, en este momento no esta activo el evento") say("") elseif game.get_event_flag("juegos_elecciones") == 1 then say_title("Los Juegos del Hambre") say("") say("Buenas tardes posible tributo") say("que te gustaria hacer?") say("") local elecciones = select ("Presentarme a tributo" , "Ver tributos" , "Votar tributos" , "Cerrar") if elecciones == 1 then if pc.getqf("presentado_hambre") == 1 then say_title("Los Juegos del Hambre") say("") say("Lo siento, ya te has presentado como tributo") say("") return end if pc.get_level() < 80 then say_title("Los Juegos del Hambre") say("") say("Lo siento pero para ser tributo hay que ser nivel 80") say("") return end say_title("Los Juegos del Hambre") say("") say("Admiro tu valentia ofreciendote!") say("") say("Dime, como te llamas para anotarte como tributo?") say("") local nombre = input() local reino = {"Shinso","Chunjo","Jinno"} if nombre != pc.get_name() or nombre == nil then say_title("Los Juegos del Hambre") say("") say("Oye, no puedes dejar esto en blanco") say("o poner el nombre de otros") say("") return end pc.setqf("presentado_hambre",1) mysql_query("INSERT INTO player.juegos_hambre SET tributo='"..nombre.."',distrito='"..reino[pc.get_empire()].."',votos='0';") chat("Te has presentado a tributo por el Distrito "..pc.get_empire().." mucha suerte") elseif elecciones == 2 then local reino = {"Shinso","Chunjo","Jinno"} local candida = mysql_query("SELECT tributo FROM player.juegos_hambre WHERE distrito='"..reino[pc.get_empire()].."';") table.insert(candida.tributo,"Cancelar") say_title("Los Juegos del Hambre - Candidatos a tributo") say("") say_size(350,360) local elegido = select_table(candida.tributo) elseif elecciones == 3 then say_title("Los Juegos del Hambre") say("") say("Aqui podras votar a tu candidato favorito") say("elige al que mejor creas que vaya a defender") say("el honor de tu distrito y votalo") say("") local o = select ("Ok, votare" , "Paso") if o == 1 then if pc.getqf("has_votado_hambre") == 1 then say_title("Los Juegos del Hambre") say("") say("Lo siento, ya has votado a un tributo") say("") return end local reino = {"Shinso","Chunjo","Jinno"} local candida = mysql_query("SELECT tributo,votos FROM player.juegos_hambre WHERE distrito='"..reino[pc.get_empire()].."';") table.insert(candida.tributo, "Cancelar") say_title("Los Juegos del Hambre - Elige tu preferido") say("") say_size(350,360) local elegido = select_table(candida.tributo) if elegido == table.getn(candida.tributo) then return; else mysql_query("UPDATE player.juegos_hambre SET votos=votos+1 WHERE tributo='"..candida.tributo[elegido].."';") pc.setqf("has_votado_hambre", 1) chat("Has votado a "..candida.tributo[elegido]..", esperemos que salga elegido para el evento") end end end elseif game.get_event_flag("juegos_elecciones") == 2 then say_title("Los Juegos del Hambre") say("") say("Que quieres hacer?") say("") local cosa = select ("Participar en los Juegos","Ver las estadisticas","Ver los elegidos","Cerrar") if cosa == 1 then if game.get_event_flag("juegos_hambre") != 1 then say_title("Los Juegos del Hambre") say("") say("Espera a que empiecen los Juegos") say("") return end if game.get_event_flag("elegido"..pc.get_name().."") == 1 then chat("Adelante, la gloria te espera") pc.warp(8763200,8828900) game.set_event_flag("tributos_distrito"..pc.get_empire().."",game.get_event_flag("tributos_distrito"..pc.get_empire().."") + 1) game.set_event_flag("tributos_dentro",game.get_event_flag("tributos_dentro")+1) game.set_event_flag("elegido"..pc.get_name().."",0) notice_all(pc.get_name().." ha entrado a Los Juegos del Hambre") pc.setqf("vidas_hambre",3) return end say_title("Los Juegos del Hambre") say("") say("Lo siento no eres uno de los elegidos") say("") elseif cosa == 2 then local reino = {"Shinso","Chunjo","Jinno"} local elegidos = mysql_query("SELECT tributo,asesinatos FROM player.juegos_hambre WHERE distrito='"..reino[pc.get_empire()].."' ORDER BY votos desc LIMIT 8;") say_title("Los Juegos del Hambre - Estado de los tributos") say("") table.foreachi(elegidos,function(nr,dato) say(nr.." Tributo: "..dato[1].." Asesinatos: "..dato[2]) end) say("") elseif cosa == 3 then local reino = {"Shinso","Chunjo","Jinno"} local elegidos = mysql_query("SELECT tributo,distrito,votos FROM player.juegos_hambre WHERE distrito='"..reino[pc.get_empire()].."' ORDER BY votos desc LIMIT 8;") say_title("Los Juegos del Hambre - Tributos Seleccionados") say("") table.foreachi(elegidos,function(nr,dato) say(nr.." Tributo: "..dato[1].." Distrito: "..dato[2]) end) say("") end end end end when logout with pc.get_map_index() == 250 and game.get_event_flag("juegos_hambre") == 1 begin local reino = {"Shinso","Chunjo","Jinno"} notice_all(""..pc.get_name().." ha desertado de los Juegos del Hambre, el distrito "..reino[pc.get_empire()].." ha perdido un tributo") pc.setqf("vidas_hambre",5) game.set_event_flag("tributos_dentro",game.get_event_flag("tributos_dentro")-1) game.set_event_flag("elegido"..pc.get_name().."",0) game.set_event_flag("tributos_distrito"..pc.get_empire().."",game.get_event_flag("tributos_distrito"..pc.get_empire().."") - 1) end when kill with npc.is_pc() and pc.get_map_index() == 250 and game.get_event_flag("juegos_hambre") == 1 begin mysql_query("UPDATE player.juegos_hambre SET asesinatos=asesinatos+1 WHERE tributo='"..pc.get_name().."';") local vid = npc.get_vid() pc.select(vid) pc.setqf("vidas_hambre", pc.getqf("vidas_hambre") - 1) chat("Te quedan todavía "..pc.getqf("vidas_hambre").." vidas asi que ten cuidado") if pc.getqf("vidas_hambre") == 0 then warp_to_village() notice_all(""..pc.get_name().." ha sido eliminado de Los Juegos del Hambre") game.set_event_flag("elegido"..pc.get_name().."",0) game.set_event_flag("tributos_distrito"..npc.get_empire().."", game.get_event_flag("tributos_distrito"..npc.get_empire().."") - 1) if game.get_event_flag("tributos_distrito"..npc.get_empire().."") == 0 then local reino = {"Shinso","Chunjo","Jinno"} notice_all("El distrito "..reino[pc.get_empire()].." ha sido elimando de Los Juegos del Hambre") end end end when juegos_contador_final.server_timer with game.get_event_flag("juegos_hambre") == 1 begin local flags = {game.get_event_flag("tributos_distrito1"),game.get_event_flag("tributos_distrito2"),game.get_event_flag("tributos_distrito3")} if flags[1] != 0 and flags[2] == 0 and flags[3] == 0 then notice_all("El Distrito Shinso ha ganado los Juegos del Hambre") clear_server_timer("juegos_contador_muertes") server_timer("final_juegos",10) elseif flags[2] != 0 and flags[1] == 0 and flags[3] == 0 then notice_all("El Distrito Chunjo ha ganado los Juegos del Hambre") clear_server_timer("juegos_contador_muertes") server_timer("final_juegos",10) elseif flags[3] != 0 and flags[1] == 0 and flags[2] == 0 then notice_all("El Distrito Jinno ha ganado los Juegos del Hambre") clear_server_timer("juegos_contador_muertes") server_timer("final_juegos",10) end server_timer("juegos_contador_final",60*5) end when juegos_contador_muertes.server_timer with game.get_event_flag("juegos_hambre") == 1 begin server_timer("juegos_contador_muertes",60*5) for i=1, 3 do local reino = {"Shinso","Chunjo","Jinno"} notice_all("El distrito "..reino[i].." todavia tiene "..game.get_event_flag("tributos_distrito"..i.."").." tributos vivos") end end when final_juegos.server_timer begin notice_all("Los Juegos del Hambre han terminado, pero hay una nueva regla") notice_all("solo puede haber un ganador, asi que mataos entre vosotros hasta que solo quede 1") game.set_event_flag("tributos_distrito1",0) game.set_event_flag("tributos_distrito2",0) game.set_event_flag("tributos_distrito3",0) clear_server_timer("juegos_contador_final") clear_server_timer("juegos_contador_muertes") server_timer("campeon_juegos",60*1) mysql_query("UPDATE player.juegos_hambre SET campeon='1' WHERE asesinatos>'0' ORDER BY asesinatos desc LIMIT 1;") end when campeon_juegos.server_timer begin if game.get_event_flag("tributos_dentro") == 1 then local elegi = mysql_query("SELECT tributo FROM player.juegos_hambre WHERE campeon='1';") game.set_event_flag("campeon_juegos"..elegi.tributo[1].."",1) game.set_event_flag("tributos_dentro", 0) game.set_event_flag("juegos_hambre", 0) notice_all(""..elegi.tributo[1].." es el nuevo |*|Campeon de los Juegos|*|, muchas felicidades") notice_all("Con esto se acaba esta edicion de Los Juegos del Hambre") return end server_timer("campeon_juegos",60*1) end endend
Pa quien lo este implementado, os aconsejo usar esto:
Debes iniciar sesión para ver el contenido del enlace en esta publicación.O el mega select de los candidatos os bugeara el chat con el npc.
Y la tabla de mysql:
Debes iniciar sesión para ver el contenido del enlace en esta publicación.Saludos
- RaggedFaun7, Marcos Pinheiro, boker9999 y 12 mas reacciono a esto
- 14
- 1
-
Me han pedido ayuda con una cosa de esta quest y me fije que el warp no funciona, meted asi el primer when
when 11001.chat."Guerra de reinos" or 11003.chat."Guerra de reinos" or 11005.chat."Guerra de reinos" begin local akroma_war = { {19900, 30000}, {20000, 30000}, {30000, 30000} } if game.get_event_flag("nation_war")== 0 then say("La Nation War esta cerrada, en este momento") elseif game.get_event_flag("nation_war")== 1 then say("La Nation War esta abierta, quieres acceder viajero?") local nation_war = select("Si","No") if nation_war == 1 then if pc.level < 65 then say("Eres nivel "..pc.level()..", necesitas ser 65.") return end pc.warp(akroma_war[pc.get_empire()][1],akroma_war[pc.get_empire()][2]) end end end
- elpram2008 reacciono a esto
- 1
-
Falta la parte server y si me arias una pequeña guia en que ruta meter las carpetas primer y 2 mapa y como aria los epk y eix
No os voy a dejar todo hecho no
Si no sabes en que ruta va ni hacer los epk no sabes implementar un mapa....
-
lol, creo que no hacia falta postearlos habiendolos puesto en el post anterior a este
-
El primero:
Debes iniciar sesión para ver el contenido del enlace en esta publicación.El segundo
Debes iniciar sesión para ver el contenido del enlace en esta publicación.El tercero (#128)
Debes iniciar sesión para ver el contenido del enlace en esta publicación. -
LA VIEJA ESCUELA JAJAJA XD :3
vieja escuela del copy paste
-
Monturas mas viejas que matusalen, del antiguo server de mi colega aquiles.
-
Y una cosa , mata el metine que mata me dan 13 puntos , como hago para cambiarlo y el primer item pida 50 puntos segundo 100 ... etc
y si compro algo si tengo 100 puntos compro algo y sigo teniendo lso 100 puntos ..
Esta explicado en el texto, es ir editando los datos de los arrays.
-
Tio si pudieras hacer la quest del sistema kill que cristOx pidio en un post ojala que MasterLum dijo que podría sacar la parte del cliente.Si se pudiera estaria padre!!
No se yo si podra hacerla xd
La parte del cliente esta tirada, con ver como funciona el sistema de prestigios se hace en 0,
-
keko no lo entiendo por q en la parte esta
2 - Arrays con subcategorías:
cordes[4][2] es -> 12300
ami me da nil
por q son solo 3 tablas
en esta parte
4 - KeKo, no lo hemos entendido!!!!
local sitio = select ("Mapa1" , "Mapa2", "Mapa3" , "Cerrar")
sito es un select no una tabla
por eso me pregunto por q usas esto
if sitio == table.getn(sitio)+1 then return end
table.getn(tala) esta funcion cuenta las cosas en la tabla por ejemplo
a={4,5,6,13,5}
print(table.getn(a))-->5
del select debe de ser nil por q el sitio no es una tabla
perdona por corregirte pero es mejor saver los errores y no aserlo muchas veses, por q con una script complicada puede ser ese error mui grave
Pos en el primer caso era un 3, me equivoque al escribirlo [3][2]
En el segundo caso también me equivoqué, era table.getn(cordes) no (sitio).
-
Aqui te falta un ), si no me equivoco KeKo.
pc.give_item2(items[math.random(1,table.getn(items)][1],items[math.random(1,table.getn(items))][2])
Supongo que seria así: pc.give_item2(items[math.random(1,table.getn(items))][1],items[math.random(1,table.getn(items))][2])Um sep se me colo el ) las prisas son malas compañeras perdonad
-
Muy buena tio!! Oie este lenguaje se basa en python no???
Ese lenguaje se llama lua
-
Buenas zoneros, hoy que me encuentro especialmente trabajador (es decir, que no me apetece estudiar) voy a publicar una nueva entrega del curso de creación de quests de metin2zone.
Esta nueva guía se la dedico a mi amigo raul, que siempre me habia dicho que debería aprender esto :trollface: y que era una de las guias que teniamos planeadas cuando configuramos el curso por primera vez pero que no se llego a llevar a cabo.
Como veis la he titulado: amigas o enemigas? es para que os deis cuenta de que como programadores que somos los que nos especializamos en lua es importante reducir el código lo máximo posible por diferentes razones: ocupa menos, es menos texto para la vista, queda mas guay, etc y tu quest seguirá haciendo lo mismo que antes pero con menos código.
1 - Tablas:
Bueno, antes de nada vamos a crear nuestra tabla o array sencillo:
local keko = {10,20,34,43,57}
Como veis, a diferencia de los selects a los que estáis acostumbrados los elementos de la tabla estan dentro de { }
---------------------------------------------------------------------------------------------------------------------------
Ojo:Los elementos deben estar separados por comas, y el último de ellos NO debe llevar la coma.
---------------------------------------------------------------------------------------------------------------------------
Bueno, ahora que tenemos una mini tabla vamos a llamar a los diferentes elementos de la misma. La sintaxis es la siguiente:
nombre[posicion]
keko[1] -- 10 keko[2] -- 20 keko[3] -- 34 keko[4] -- 43 keko[5] -- 57
Como veis escribimos el nombre del local y luego entre [ ] ponemos la posicion del elemento que queramos seleccionar dentro del array.
Asi que ahora ya podeis meter vuestras tablas en la quest del siguiente modo:
local items = {160,161,162,163} pc.give_item2(items[1]) -- te dara el 160 pc.give_item2(items[2]) -- te dara el 161 pc.give_item2(items[3]) -- etc pc.give_item2(items[4]) -- etc
De todos modos en ese ejemplo un for lo haría mucho mas sencillo, aunque ya os explicare mas a fondo como se usa
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
2 - Arrays con subcategorías:
Bueno, hemos visto una tabla sencillita, vamos a complicar un poco la cosa:
local cordes = { {12500,13400}, {12400,18900}, {19800,12300} }
Ahora tenemos una tabla con diferentes apartados dentro della. Vamos a ver como sería la sintaxis en este caso:
nombre[subcategoria][posicion]
cordes[1][1] -- 12500 cordes[1][2] -- 13400 cordes[2][1] -- 12400 cordes[2][2] -- 18900 cordes[3][1] -- 19800 cordes[3][2] -- 12300
-----------------------------------------------------------------------------------------------------
Ojo:Las subcategorias deben estar separadas por comas, y la ultima NO la lleva
-----------------------------------------------------------------------------------------------------
Como veis, de nuevo escribimos el nombre, luego pondremos un primer [ ] con la subcategoría, que es el número de arrays simples dentro del array compuesto:
local nombre = { -- abres la tabla {} -- subcategoria 1 {} -- subcategoria 2 {} -- subcategoria 3 } -- cierras la tabla
En el segundo [ ] va la posicion del elemento como habiamos hecho con el array simple
local cordes = { {12500,13400,17500,14000}, {12400,18900,13200} }
cordes[1][4] -- 14000 cordes[2][2] -- 18900
Veamoslo en una quest:
local cordes = { {12500,13400}, {12400,18900}, {19800,12300} } pc.warp(cordes[1][1],cordes[1][2]) -- 12500, 13400
3. Arrays + funciones + selects = locura?
Bien, hasta ahora solo hemos visto ejemplos sin llegar a hacer una quest en condiciones. Lo más habitual usando arrays es combinarlos con un local = select del siguiente modo
say("Que arma quieres") say("") local items = {160,161,162} 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)
De este modo, segun lo que eligamos en el select, nos asignara uno de los elementos del array, si pinchamos en Ninfa +0 el juego enviara al array la orden de mostrar el elemento de posicion 1, si pinchas en Ninfa +1 te enviará la de posicion 2 y así sucesivamente.
Por lo tanto, al meter el resultado del select en el array
pc.give_item2(items[arma],1)
Te dara la que hayas seleccionado, y así te evitarás tener que poner tres if y solo pondras 1
Ahora con un array doble:
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])
Tal y como está ahora, cogera la subcategoría del select, y una vez la tenga te dara lo que tengas en la posicion 1 y en la cantidad pondra lo que tengas en la posicion 2. De este modo, aunque las cantidades del item sean diferentes podrás hacerlo con un solo if.
Y por último vamos a meterle mas complicacion, una funcion dentro del array!
say("Te voi a dar un arma aleatoria") say("") local items = { {160,2}, {161,1}, {162,3} } local arma = select ("OK" , "Cerrar") if arma == 2 then return end pc.give_item2(items[math.random(1,table.getn(items))][1],items[math.random(1,table.getn(items))][2])
Bien, ahora en este caaso el juego nos va a dar un arma aleatoria, porque hemos incluido la funcion math.random dentro del array. Tal y como la hemos puesto:
[math.random(1,table.getn(items))]
Nos dara un resultado que puede estar entre 1 y el numero de subcategorias que tiene la tabla items.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
(table.getn(nombretabla)) es una función muy útil que devuelve el número maximo de elementos que tiene una tabla simple o de subcategorias de una compuesta)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Por lo tanto tal y como esta configurada la quest buscara primero la subcategoría, que sera el número aleatorio, y después irá a la posicion dentro de ella que le hemos dicho (1 para la id y 2 para la cantidad)
4 - KeKo, no lo hemos entendido!!!!
Bueno vale, os pondré otro ejemplo:
say("A donde quieres ir?") sa("") local sitio = select ("Mapa1" , "Mapa2", "Mapa3" , "Cerrar") local cordes = { {cordx,cordy}, {cordx,cordy}, {cordx,cordy} } if sitio == table.getn(cordes)+1 then return end pc.warp(cordes[sitio][1],cordes[sitio][2])
5 - Subcategorías numeradas
Vamos a probar otra cosa: y si metemos un numero determinado para cada subcategoría en vez de 1,2,3,etc?
local prueba = { [100] = {10,11}, [1001] = {12,13}, [134] = {14,15} }
Veamos la sintaxis de esto:
chat(prueba[100][1]) -- 10 chat(prueba[1001][2] -- 13
De nuevo debemos hacer referencia primero a la subcategoria y luego a la posicion detro de la misma.
Y para que nos sirve esto? Tiene un monton de aplicaciones pero una muy típica es igualar la numeración de la subcategoría a una funcion:
when 45000.use or 45001.use or 45002.use begin local premios = { [45000] = {30,31}, [45001] = {32,33}, [45002] = {34,35} } chat(premios[item.get_vnum()][1]) -- si tu item es 45000 esto es 30 chat(premios[item.get_vnum()][2]) -- si tu item es 45002 esto es 34 end
De este modo la subcategoría la reconoce el juego segun el item que hayas usado.
Y bueno chicos, eso sería todo. Todavía me quedaría muchísimo de explicar sobre el uso de las tablas, pero el hecho de que no tengo demasiado tiempo y de que mis conocimientos de las mismas no son tan amplios como los de Noa (y muchos otros xd) lo dejaré aqui en esta entrega del curso de quests. Espero que os sea útil.
-
Revisa que tu serverside use estas cordes:
d.new_jump_all(46, 5131, 4089)
Si escribes /warp 5131 4089 deberia llevarte a algun lado, si no cambia las cordes en el Setting o en la quest
-
Alguien me pasaria Itemproto itemlist icon y esas cosas lo intente poner y me salio sin el icono bn ni nah
Solo tienes que usar el de otro item y cambiarle la id
ami me da problemas la quest xd
Pos tal y como esta carga bien...
-
No la encuentro.. xd
Pos hazle el motlist
-Motlist.txt: En cada carpeta de un mob debe aver un archivo con este nombre, ya que es el que le dije al juego a que movimiento se corresponde cada uno de los gr2 de animaciones del mob.
Explicacion del motlist:
-Cada linea lleva GENERAL luego el nombre del movimiento, que puede ser WAIT, RUNT, DIE, ATTACK, etc (nombres en ingles de las acciones de los mobs) y luego el nombre del .msa que enlaza con esa animacion. El numero despues del nombre del msa poned el mismo que en otra linea.
- Riochu™ no es reacciono a esto
- 1
-
A esa le falta el motlist, la corregi yo para inforge el dia que la publicaron.
Error al iniciar
en Temas resueltos
Publicado
Como dijo fuuton si pones fsck -y ya responde solo yes a todo.