Jump to content

Dextrok

Miembro
  • Contador contenido

    111
  • Ingreso

  • Última visita

  • Días ganados

    5

Todo lo publicado por Dextrok

  1. quest inicio_diferente begin state start begin when login begin pc.setqf("iniciar", 1) if pc.getqf("iniciar") == 0 then local arma = 19 local armadura = 11209 if pc.get_job() == 1 then arma = 1009 armadura = 11409 elseif pc.get_job() == 2 then arma = 19 armadura = 11609 elseif pc.get_job() == 3 then arma = 7009 armadura = 11809 end end set_state(inicio) end end state inicio begin when letter begin send_letter("Bem Vindo") end when button or info begin say_title("Bem Vindo") say("Olá "..pc.get_name().."") say("Bem vindo ao servidor.") say("") say("O Ferreiro está à tua procura para") say("te dar as boas vindas.") say("Vai até ele, pode ser que te ofereça algo.") local ferreiro = find_npc_by_vnum(20016) if ferreiro != 0 then target.vid("__TARGET__", ferreiro, "Ir ao Ferreiro") end end when __TARGET__.target.click or 20016.chat."Sou Novo Por Aqui" begin target.delete("__TARGET__") say_title("Ferreiro:") say("") say("Olá!") say("és novo por aqui? é a primeira vez que te vejo.") say("Como te chamas?") say("") wait() say_title("Ferreiro:") say("") say("Ah, Então prazer em conhecer-te "..pc.get_name().."") say("Pelo que vejo, não tens qualquer item para") say("começares as tuas aventuras e evoluir.") say("") wait() say_title("Ferreiro:") say("") say("Vá... como és novo na cidade, vou-te oferecer") say("uma armadura e uma espada, ambas a +9, atenção!") say("Não é todos os dias que se arranja algo disto.") wait() if pc.count_item(149) != arma and pc.count_item(11299) != armadura then pc.give_item2(149) pc.give_item2(11299) say_title("Ferreiro:") say("") say("Pronto, aqui tens, espero que aproveites") say("os itens e te consigas tornar num guerreiro admirável!") say("") say("Até logo !") set_state(acabou) end end end state acabou begin end end
  2. ... quest laBusqueda begin state start begin when 20016.click begin --20016 es el npc a buscar. if 60*30 > get_global_time() - pc.getqf("object_time") then --Tiempo en este caso 30 minutos say_title("En espera") say("Todavia no puedes recibir un nuevo objeto") say("te corresponde seguir esperando") else say_title("Enhorabuena:") say("Has recibido el objeto") pc.give_item2(objeto, cantidad) --Se le coloca el objeto y la cantidad a recibir pc.setqf("object_delay", get_global_time()) end end end end
  3. búsqueda de que tipo?, será que podrías especificar mejor la QUEST que quieres?
  4. Los que están bugeados no tienen el valor de cero, sino que poseen un valor negativo por ejemplo -2757454, y si le +1, como es que pasará de 0 a 1?
  5. Aquí tienes. quest achievement_points begin state start begin when 20091.chat begin say_title ( "Canjea tus puntos logro" ) local actual_achievement_points = pc . getqf ( "achievement_points" ) local p = select ( "Caballo armado - 5 puntos" , "Caballo militar - 30 puntos" , "Bonus mediohumanos +20% por 30min - 50 puntos" , "Bonus HP +5000 por 30min - 60 puntos" , "Armadura divina - 400 logros" , "Mascota de ataque - 30 puntos" , "Mas" ) if p == 1 then if pc . getqf ( "achievement_points" ) <= 4 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) say ( "Has recibido un caballo armado" ) horse . set_level ( "11" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50052" , 1 ) return elseif p == 2 then if pc . getqf ( "achievement_points" ) <= 29 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 30 ) say ( "Has recibido un caballo militar" ) horse . set_level ( "21" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50053" , 1 ) return elseif p == 3 then if pc . getqf ( "achievement_points" ) <= 49 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 50 ) say ( "Has recibido 20% fuerza contra mediohumanos por 30min" ) affect . add_collect ( apply . ATTBONUS_HUMAN , 20 , 60 * 30 ) return elseif p == 4 then if pc . getqf ( "achievement_points" ) <= 59 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 60 ) say ( "Has recibido 5000hp por 30min" ) affect . add_collect ( apply . MAX_HP , 5000 , 60 * 30 ) return elseif p == 5 then if pc. getqf ( "achievement_points" ) <= 399 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 399 ) local armor = select ( "Armd. divina (G)" , "Armd. divina (N)" , "Armd. divina (S)" , "Armd. divina ©" ) if armor == 1 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "42080" , 1 ) return elseif armor == 2 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "44080" , 1 ) return elseif armor == 3 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "46080" , 1 ) return elseif armor == 4 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "48080" , 1 ) return end elseif p == 6 then if pc . getqf ( "achievement_points" ) <= 29 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 29 ) say ( "Has recibido la mascota de ataque" ) pc . give_item2 ( "30312" , 1 ) return elseif p == 7 then local p2 = select ( "Leon Blanco - 40 puntos" , "Anillo experiencia - 5 puntos" , "Fuerza monstruo +20% 30min - 15 puntos" , "Velocidad movimiento +25% 30min - 10 puntos" , "Mascota de defensa - 25 puntos" , "Cuantos logros tengo?" , "Cerrar" ) if p2 == 1 then if pc . getqf ( "achievement_points" ) <= 39 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 40 ) say ( "Has recibido un leon blanco disfrtualo, no se acaba" ) pc . give_item2 ( "50110" , 1 ) return elseif p2 == 2 then if pc . getqf ( "achievement_points" ) <= 4 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) say ( "Disfruta de un anillo de experiencia" ) pc . give_item2 ( "71015" , 1 ) return elseif p2 == 3 then if pc . getqf ( "achievement_points" ) <= 14 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 15 ) say ( "Has recibido 20% fuerza monstruo por 30min" ) affect . add_collect ( apply . ATTBONUS_MONSTER , 20 , 60 * 30 ) return elseif p2 == 4 then if pc . getqf ( "achievement_points" ) <= 9 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 10 ) say ( "Has recibido 25% velo.movimiento por 30min" ) affect . add_collect ( apply . MOV_SPEED , 25 , 60 * 30 ) return elseif p2 == 5 then if pc . getqf ( "achievement_points" ) <= 24 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 25 ) say ( "Has recibido la mascota de defensa" ) pc . give_item2 ( "71124" , 1 ) return elseif p2 == 6 then local Reward = 0 local Achievement = "Ver_tus_logros" local killcount = pc.getqf("logros") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") elseif p2 == 7 then return end end end end end
  6. Bueno, al fin no me respondistes, sería algo como esto, termina de editar los comentarios. ------------------------------------- --Metin2 - 2012 ------------------------------------- quest special_drop begin state start begin when 20086.chat."Evento de pascua" with pc.is_gm() begin say_title("Empezar el evento") say("Metin2 QueSuerte") say("Quieres comenzar el evento?") say("los monstruos que maten los users") say("les dara unos items especiales") say("") say_reward("Que quieres hacer??") local evento = select ("Actvarlo" , "Desactivarlo" , "Salir") if evento == 1 then game.set_event_flag("pascua_drop", 1) notice_all("El evento de huevos de pascua a comenzado") notice_all("Solo los personajes del 1 al 99 les caera el items") notice_all("Que tengais Mucha Suerte....") elseif evento == 2 then game.set_event_flag("pascua_drop", 0) notice_all("El evento de huevos de pascua a terminado") notice_all("esperamos que os haya gustado") elseif evento == 3 then return end end when 101.kill or 102.kill or 103.kill or 104.kill or 105.kill or 106.kill or 107.kill or 108.kill or 109.kill or 110.kill or 111.kill or 112.kill or 113.kill or 114.kill or 115.kill or 171.kill or 172.kill or 173.kill or 174.kill or 175.kill or 176.kill or 178.kill or 179.kill or 180.kill or 181.kill or 182.kill or 183.kill or 184.kill or 185.kill or 301.kill or 302.kill or 303.kill or 304.kill or 331.kill or 332.kill or 333.kill or 334.kill or 351.kill or 352.kill or 353.kill or 354.kill or 401.kill or 402.kill or 403.kill or 404.kill or 405.kill or 406.kill or 431.kill or 432.kill or 433.kill or 434.kill or 435.kill or 436.kill or 451.kill or 452.kill or 453.kill or 454.kill or 455.kill or 456.kill or 501.kill or 502.kill or 503.kill or 504.kill or 551.kill or 552.kill or 553.kill or 554.kill or 601.kill or 602.kill or 603.kill or 604.kill or 631.kill or 632.kill or 633.kill or 634.kill or 635.kill or 636.kill or 637.kill or 651.kill or 652.kill or 653.kill or 654.kill or 655.kill or 656.kill or 657.kill or 701.kill or 702.kill or 703.kill or 704.kill or 705.kill or 706.kill or 707.kill or 731.kill or 732.kill or 733.kill or 734.kill or 735.kill or 736.kill or 737.kill or 751.kill or 752.kill or 753.kill or 754.kill or 755.kill or 756.kill or 757.kill or 771.kill or 772.kill or 773.kill or 774.kill or 775.kill or 776.kill or 777.kill or 795.kill or 901.kill or 902.kill or 903.kill or 904.kill or 905.kill or 906.kill or 907.kill or 931.kill or 932.kill or 933.kill or 934.kill or 935.kill or 936.kill or 937.kill or 1001.kill or 1002.kill or 1003.kill or 1004.kill or 1061.kill or 1062.kill or 1063.kill or 1064.kill or 1065.kill or 1066.kill or 1067.kill or 1068.kill or 1069.kill or 1070.kill or 1071.kill or 1101.kill or 1102.kill or 1103.kill or 1104.kill or 1105.kill or 1106.kill or 1107.kill or 1131.kill or 1132.kill or 1134.kill or 1135.kill or 1136.kill or 1137.kill or 1171.kill or 1172.kill or 1173.kill or 1174.kill or 1175.kill or 1176.kill or 1177.kill or 1301.kill or 1302.kill or 1303.kill or 1305.kill or 1331.kill or 1332.kill or 1333.kill or 1334.kill or 1335.kill or 2001.kill or 2002.kill or 2003.kill or 2004.kill or 2005.kill or 2031.kill or 2032.kill or 2033.kill or 2034.kill or 2035.kill or 2036.kill or 2061.kill or 2062.kill or 2063.kill or 2064.kill or 2065.kill or 2051.kill or 2052.kill or 2053.kill or 2054.kill or 2055.kill or 2071.kill or 2072.kill or 2073.kill or 2074.kill or 2075.kill or 2076.kill or 2101.kill or 2102.kill or 2103.kill or 2104.kill or 2105.kill or 2106.kill or 2107.kill or 2108.kill or 2131.kill or 2132.kill or 2133.kill or 2134.kill or 2135.kill or 2151.kill or 2152.kill or 2152.kill or 2153.kill or 2154.kill or 2155.kill or 2156.kill or 2157.kill or 2158.kill or 2201.kill or 2202.kill or 2203.kill or 2204.kill or 2205.kill or 2231.kill or 2232.kill or 2233.kill or 2234.kill or 2235.kill or 2291.kill or 1401.kill or 1402.kill or 1403.kill or 1501.kill or 1502.kill or 1503.kill or 1601.kill or 1602.kill or 1603.kill or 2301.kill or 2302.kill or 2303.kill or 2304.kill or 2305.kill or 2311.kill or 2312.kill or 2313.kill or 2314.kill or 2315.kill or 2306.kill or 2307.kill or 7013.kill or 7014.kill or 7015.kill or 7016.kill or 7017.kill or 7018.kill or 1151.kill or 1152.kill or 1153.kill or 1154.kill or 1155.kill or 1156.kill or 1157.kill with game.get_event_flag("pascua_drop") == 1 begin local s = number(1, 500) if s <= 20 then if pc.get_level() >= 1 and pc.get_level() <= 20 then local huevo = { 50160, 50161, 50162, 50163, 50164, 50165, 50166, 50167, 50168, 50169 50170, 50171, 50172, 50173, 50174, 50175, 50176, 50177, 50178, 50179 } game.drop_item(huevo[math.random(1, 20)]) end elseif s <= 18 then if pc.get_level() >= 21 and pc.get_level() <= 40 then game.drop_item(50095) return end elseif s <= 16 then if pc.get_level() >= 41 and pc.get_level() <= 50 then game.drop_item(50095) return end else if s <= 15 then if pc.get_level() >= 51 and pc.get_level() <= 60 then game.drop_item(50095) return end elseif s <= 14 then if pc.get_level() >= 61 and pc.get_level() <= 99 then game.drop_item(50095) end end end when 9005.chat."Los Huevos" begin --Elige tu NPC for go = 50160, 50179, 1 do cantidad = pc.count_item(go) + cantidad end say("Tienes un total de " .. cantidad .. " huevos") say("Quieres cambiarlos?") local k = select("Si", "No") if k == 1 then local premios = {idpremio1, idpremio2, idpremio3, idpremio4, idpremio5, idpremio6, idpremio7} --Aca van los codigos de los premios local huevos_necesarios = {uno, dos, tres, cuatro, cinco, seis, siete} --Aca van los numeros de los huevos necesarios para cada premio local p = select("Premio 1", "Premio 2", "Premio 3", "Premio 4", "Premio 5", "Premio 6", "Premio 7", "Cancelar") if p != 8 and cantidad >= huevos_necesarios[p] then say("Ahora tienes " .. item_name(premios[p])) pc.give_item2(premios[p]) say("Felicitaciones.") local acumulador_de_huevos = 0 for go = 50160, 50179, 1 do if pc.count_item(go) >= huevos_necesarios[p] and acumulador_de_huevos == 0 then pc.remove_item(go, huevos_necesarios[p]) break else acumulador_de_huevos = pc.count_item(go) + acumulador_de_huevos if acumulador_de_huevos <= huevos_necesarios[p] then pc.remove_item(go, pc.count_item(go)) else pc.remove_item(go, pc.count_item(go) - (acumulador_de_huevos - huevos_necesarios[p])) end end end else say("No tienes los huevos necesarios WEON") end end end end end
  7. Dime los 7 item que quieren que den de recompenza (el codigo), y los huevos no importa cual sea? o sea en los 80 huevos pueden haber 50161, 50175, 50179, te los cuenta igual?
  8. Pues así lo tienes bien, habría que revisar la quest, para ver los lugares en donde se altera.
  9. Group Item_Expe { Vnum 30119 1 °æÇèÄ¡ 55000 100 } Agrega esto en el Special Item Group, dónde 30119, es el item al que le quieres poner experiencia, 55,000 es la experiencia que quieres que reciba, y 100 es la probabilidad de que ese objeto de esa experiencia.
  10. --Sistema de Estadisticas en Guerra de Gremios quest Kills begin state start begin when kill with npc.is_pc() and pc.get_guild() != npc.get_guild() and pc.get_map_index(index) begin --index = mapa de guerra de gremios pc.setqf("estado", pc.getqf("estado")+1) if pc.getqf("estado") == 1 then pc.setqf("asesinatos", pc.getqf("asesinatos")+1) timer("FristKill", 60) chat("He tio, pero si has hecho un *FristKill*") elseif pc.getqf("estado") == 2 then pc.setqf("asesinatos", pc.getqf("asesinatos")+2) timer("DoubleKill", 50) chat("He tio, pero si has hecho un *DoubleKill*") elseif pc.getqf("estado") == 3 then chat("He tio, pero si has hecho un *TripleKill*") timer("TripleKill", 40) pc.setqf("asesinatos", pc.getqf("asesinatos")+4) elseif pc.getqf("estado") == 4 then chat("He tio, pero si has hecho un *MultiKill*") timer("MultiKill", 30) pc.setqf("asesinatos", pc.getqf("asesinatos")+7) elseif pc.getqf("estado") == 5 then chat("He tio, pero si has hecho un *UltraKill*") timer("UltraKill", 20) pc.setqf("asesinatos", pc.getqf("asesinatos")+15) elseif pc.getqf("estado") == 6 then say_in_map( pc.get_name() .. ", acaba de hacer un *PerfectKill*") pc.setqf("estado", 0) pc.setqf("asesinatos", pc.getqf("asesinatos")+30) -- timer("PerfectKill", 0) end end when FristKill.timer with pc.getqf("estado") == 1 begin pc.setqf("estado", 0) end when DoubleKill.timer with pc.getqf("estado") == 2 begin pc.setqf("estado", 0) end when TripleKill.timer with pc.getqf("estado") == 3 begin pc.setqf("estado", 0) end when MultiKill.timer with pc.getqf("estado") == 4 begin pc.setqf("estado", 0) end when UltraKill.timer with pc.getqf("estado") == 5 begin pc.setqf("estado", 0) end -- when PerfectKill.timer with pc.getqf("estado") == 6 begin pc.setqf("estado", 0) end when 20017.chat."Ver Ranking de Guerras de Gremio" begin local USER = "USUARIO_ACA" --USUARIO de Su base de Datos local PASSWORD = "CONTRASEÑA_ACA" --CONTRASEÑA de su base de datos local SERVERIP = "IP_ACA" --IP DE SU SERVIDOR local rangliste = mysql_query("SELECT * FROM player, quest WHERE player.name NOT LIKE '[%]%' ORDER BY quest.IValue DESC AND szState='asesinatos'","'" .. USER .. "'","'" .. PASSWORD .. "'","player","" .. SERVERIP .. ";") say_title("Top 10") say("#: Nombre Cantidad de Muertes ") say_reward("Top 1: "..rangliste.name[1].." "..rangliste.Ivalue[1].." ") say_title("Top 2: "..rangliste.name[2].." "..rangliste.Ivalue[2].." ") say("Top 3: "..rangliste.name[3].." "..rangliste.Ivalue[3].." ") say("Top 4: "..rangliste.name[4].." "..rangliste.Ivalue[4].." ") say("Top 5: "..rangliste.name[5].." "..rangliste.Ivalue[5].." ") say("Top 6: "..rangliste.name[6].." "..rangliste.Ivalue[6].." ") say("Top 7: "..rangliste.name[7].." "..rangliste.Ivalue[7].." ") say("Top 8: "..rangliste.name[8].." "..rangliste.Ivalue[8].." ") say("Top 9: "..rangliste.name[9].." "..rangliste.Ivalue[9].." ") say("Top 10: "..rangliste.name[10].." "..rangliste.Ivalue[10].." ") end end end
  11. Pues la verdad es que en el mundo de la Programacion, hay varias maneras de codificar algo, no siempre hay un camino, que mi quest no sea igual a la tuya, no precisamente eso quiere decir que este mal, o que su funcionamiento este errado. De hecho esta quest la codifique de tipo Spaghetty Code, o sea lo primero que me salio. Mira como funciona esta quest, te explico: Matan a una persona, entonces empieza un timer de 60 segundos a contar, si esos 60 segundos terminaron antes de que mataran a la siguiente persona, entonces le informan que ha hecho un FristKill, si los 50 segundos acaban antes de que maten a 2 personas entonces le informan de un DoubleKill, y asi sucevamente. Pues la de MT2Hispano esta un poco diferente, ya que ellos van almacenando los diferentes Kills por separado. Pero bueno basada en tu idea salio esta Quest , que como tu has dicho es diferente a la de MT2Hispano y a la que creastes tu.
  12. --Sistema de Estadisticas en Guerra de Gremios quest Kills begin state start begin when kill with npc.is_pc() and pc.get_guild() != npc.get_guild() and pc.get_map_index(index) begin --index = mapa de guerra de gremios pc.setqf("estado", pc.getqf("estado")+1) if pc.getqf("estado") == 1 then pc.setqf("asesinatos", pc.getqf("asesinatos")+1) timer("FristKill", 60) chat("He tio, pero si has hecho un *FristKill*") elseif pc.getqf("estado") == 2 then pc.setqf("asesinatos", pc.getqf("asesinatos")+2) timer("DoubleKill", 50) chat("He tio, pero si has hecho un *DoubleKill*") elseif pc.getqf("estado") == 3 then chat("He tio, pero si has hecho un *TripleKill*") timer("TripleKill", 40) pc.setqf("asesinatos", pc.getqf("asesinatos")+4) elseif pc.getqf("estado") == 4 then chat("He tio, pero si has hecho un *MultiKill*") timer("MultiKill", 30) pc.setqf("asesinatos", pc.getqf("asesinatos")+7) elseif pc.getqf("estado") == 5 then chat("He tio, pero si has hecho un *UltraKill*") timer("UltraKill", 20) pc.setqf("asesinatos", pc.getqf("asesinatos")+15) elseif pc.getqf("estado") == 6 then say_in_map( pc.get_name() .. ", acaba de hacer un *PerfectKill*") pc.setqf("estado", 0) pc.setqf("asesinatos", pc.getqf("asesinatos")+30) -- timer("PerfectKill", 0) end end when FristKill.timer with pc.getqf("estado") == 1 begin pc.setqf("estado", 0) end when DoubleKill.timer with pc.getqf("estado") == 2 begin pc.setqf("estado", 0) end when TripleKill.timer with pc.getqf("estado") == 3 begin pc.setqf("estado", 0) end when MultiKill.timer with pc.getqf("estado") == 4 begin pc.setqf("estado", 0) end when UltraKill.timer with pc.getqf("estado") == 5 begin pc.setqf("estado", 0) end -- when PerfectKill.timer with pc.getqf("estado") == 6 begin pc.setqf("estado", 0) end when 20017.chat."Ver Ranking de Guerras de Gremio" begin local USER = "USUARIO_ACA" --USUARIO de Su base de Datos local PASSWORD = "CONTRASEÑA_ACA" --CONTRASEÑA de su base de datos local SERVERIP = "IP_ACA" --IP DE SU SERVIDOR local rangliste = mysql_query("SELECT * FROM player, quest WHERE player.name NOT LIKE '[%]%' ORDER BY quest.IValue DESC AND szState='asesinatos'","'" .. USER .. "'","'" .. PASSWORD .. "'","player","" .. SERVERIP .. ";") say_title("Top 10") say("#: Nombre Cantidad de Muertes ") say_reward("Top 1: "..rangliste.name[1].." "..rangliste.Ivalue[1].." ") say_title("Top 2: "..rangliste.name[2].." "..rangliste.Ivalue[2].." ") say("Top 3: "..rangliste.name[3].." "..rangliste.Ivalue[3].." ") say("Top 4: "..rangliste.name[4].." "..rangliste.Ivalue[4].." ") say("Top 5: "..rangliste.name[5].." "..rangliste.Ivalue[5].." ") say("Top 6: "..rangliste.name[6].." "..rangliste.Ivalue[6].." ") say("Top 7: "..rangliste.name[7].." "..rangliste.Ivalue[7].." ") say("Top 8: "..rangliste.name[8].." "..rangliste.Ivalue[8].." ") say("Top 9: "..rangliste.name[9].." "..rangliste.Ivalue[9].." ") say("Top 10: "..rangliste.name[10].." "..rangliste.Ivalue[10].." ") end end end Aviso: Aun no la testeo, pero por lo menos les dejo una visión inicial de la idea que nos trajo KeKo al foro sobre el Sistema de Gremios, en cuanto termine de hacerle las pruebas, se la reparo si tiene errores claro.
  13. y en el setf, como altero el flag? no le falta un parametro, o sea por ejemplo: Hacer esto desde la quest2 pc.getf("quest1", "entradas") eso es lo que me estás diciendo?
  14. Tampoco me sirve, ya que, debe de ser uno para cada personaje independiente.
  15. Hola, quería saber si alguien conocía algo sobre algún QF como el de pc.setqf() o pc.getqf(), que me permitiera llamarlo desde otra Quest y posea el mismo valor, estaba intentando hacerlo con el pc.setf, pero no me funciono, esto no se trata de hacer ningún mysql_query, ya sé que es una opción, pero para lo que quiero hacer no es la opción más viable. Por ejemplo, tengo la quest: quest quest1 begin state start begin when login begin say("Que bueno que entrastes. te esperabamos") pc.setqf("entradas", pc.getqf("entradas")+1) end end end Y esta una segunda quest: quest quest2 begin state start begin when 50000.chat."Consultar entradas" begin say("Usted tiene: " .. pc.getqf("entradas")) end end end El objetivo es que ese QF sirva para ambas quest, o sea tenga el mismo valor, y sea en quest completamente diferentes.
  16. Esta seria una opcion: quest npc_change_item begin state start begin when 20016.take with item.vnum == 11299 begin say_title("Herrero:") say("Me has traido " .. item_name(11299)) say("Te la cambio por " .. item_name(11971)) say("Para hacer el cambio necesitaras lo siguiente:") say("- 3 Perlas Rojas") say("- 2 Perlas Azules") say("- 1 Perla Blanca") say("") say_reward("Quieres hacer el cambio?") local decision = select("Si", "No") if decision == 1 and pc.count_item(27994) >= 3 and pc.count_item(27993) >= 2 and pc.count_item(27992) >= 1 then item.remove() pc.remove_item(27994) pc.remove_item(27993) pc.remove_item(27992) pc.give_item2(11971) end end end end
  17. Bueno KeKo, pero es que hay varias formas para hacerlo, si no lo quieres hacer con un cambio de state, podrías hacerlo o con un game.get_event_flag(), o sino con otro pc.getqf(), o si tanto molesta el cambio de estado podría estar de esta forma: quest matanza begin state start begin when kill with npc.is_pc() begin local nivel_maximo = 250 --Se indica el nivel maximo local cantidad_muertes = 20 --Se indican la cantidad de muertes necesarias if pc.get_level() < nivel_maximo then if pc.getqf("muertes") == 0 then pc.setqf("muertes", cantidad_muertes) else pc.setqf("muertes", pc.getqf("muertes") - 1) if pc.getqf("muertes") == 0 then pc.give_exp2(pc.get_next_exp() + 100) chat("Has subido al nivel " .. pc.get_level()) set_state(start) end chat("Restan " .. pc.getqf("muertes") .. " para subir al siguiente nivel.") end else chat("Ya eres el nivel maximo, no puedes seguir subiendo") end end end end
  18. Ah, no sabía que el pc.set_level no existia sorry, es que nunca lo había probado, y lo tengo en mi lista de funciones, bueno pero por el lado del cambio de estado mi quest sigue necesitando eso, ya que va en un orden descendiente no ascendiente como el de ustedes. Acá te dejo la mejorada: quest matanza begin state start begin pc.setqf("muertes", 20) --Aca se pone el numero de muertes necesarias set_state(levelup) end state levelup begin maximo = 250 --Se indica el nivel maximo when kill with npc.is_pc() begin if pc.get_level() < maximo begin pc.setqf("muertes", pc.getqf("muertes") - 1) if pc.getqf("muertes") == 0 then pc.give_exp2(pc.get_next_exp() + 100) chat("Has subido al nivel " .. pc.get_level()) set_state(start) end chat("Restan " .. pc.getqf("muertes") .. " para subir al siguiente nivel.") else chat("Ya eres el nivel maximo, no puedes seguir subiendo") end end end end
  19. quest matanza begin state start begin pc.setqf("muertes", 20) --Aca se pone el numero de muertes necesarias set_state(levelup) end state levelup begin maximo = 250 --Se indica el nivel maximo when kill with npc.is_pc() begin if pc.get_level() < maximo begin pc.setqf("muertes", pc.getqf("muertes") - 1) if pc.getqf("muertes") == 0 then pc.set_level(pc.get_level()+1) chat("Has subido al nivel " .. pc.get_level()) set_state(start) end chat("Restan " .. pc.getqf("muertes") .. " para subir al siguiente nivel.") else chat("Ya eres el nivel maximo, no puedes seguir subiendo") end end end end
  20. Hola comunidad de Metin2Zone! Acá les traigo una de mis creaciones para Metin2: Item_Profo Full converter. Es un programa que tiene distintas funcionalidades, para el Item Proto, como son las siguientes: <El que no entienda que avise que se le explica> En seguida una breve explicación del funcionamiento: Convertir Item_Proto Cliente <=> Querys: Al elegir esta opcion, podran insertar una linea del item proto(Cliente) ejemplo: Código: <Item vnum="80013" hashName="'Barra de 500K'" name="Barra de 500K" type="18" subtype="0" weight="0" size="1" antiflag="128" flag="0" wearflag="0" immuneflag="0" gold="500000" buy_price="500000" limittype0="0" limitvalue0="0" limittype1="0" limitvalue1="0" applytype0="0" applyvalue0="0" applytype1="0" applyvalue1="0" applytype2="0" applyvalue2="0" value0="0" value1="0" value2="0" value3="0" value4="0" value5="0" socket0="65535" socket1="65535" socket2="65535" socket3="65535" socket4="65535" socket5="65535" refine_vnum="0" refine_set="0" magic_pct="0" specular="0" socket_pct="0" /> o sino, utilizar una linea de codigo del formato Insert into para convertirla a la del cliente ejemplo: Código: INSERT INTO item_proto VALUES (80013, 'Barra de 500K', 'Barra de 500K', 18, 0, 0, 1, 128, 0, 0, 0, 500000, 500000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0); Ese es el formato en esa parte, recuerden que solo pueden insertar una linea a la vez no más. Además podran generar items que ya tengan insertados en la base de datos con el fin de cambiarles el valor, o bien, generarlos nuevos. Crear set de Arma: Con esta opción podemos crear el arma que queramos, así como los creadores de arma que andan por ahí lo único que este está mas completo, en español y con nuevas opciones. Si es un item+9 siempre el vnum= vnum del item+0 para que aumente desde +0 hasta +9. Luego todo debe de colocarse como se lo piden, y en la parte que dice +% que esta al lado del valor5 o incremento, como deseen llamarle es una forma de incrementar porcentuadamente, osea que no siempre siga un orden fijo. Por ejemplo en los creadores de armas comunes siempre les colocamos 10 al valor 5 por ejemplo y queda así: Item+0, Value5 = 10 Item+1, Value5 = 20 Item+2, Value5 = 30 y asi consecutivamente, si lo desean de esa manera dejan el campo de +% en cero de lo contrario si por ejemplo quieren que en cada + que se aumente sea con un porcentaje del 50% sería asi: Item+0, Value5 = 10 Item+1, Value5 = 25 Item+2, Value5 = 47 Con todo eso pueden generar el Item_Proto del cliente este formato: Código: <Item vnum="210" hashName="'Espada Rara+0'" name="Espada Rara+0" type="1" subtype="0" weight="0" size="2" antiflag="32" flag="1" wearflag="16" immuneflag="0" gold="200" buy_price="300" limittype0="1" limitvalue0="90" limittype1="0" limitvalue1="0" applytype0="0" applyvalue0="0" applytype1="0" applyvalue1="0" applytype2="0" applyvalue2="0" value0="0" value1="210" value2="220" value3="230" value4="250" value5="0" socket0="65535" socket1="65535" socket2="65535" socket3="65535" socket4="65535" socket5="65535" refine_vnum="211" refine_set="911" magic_pct="15" specular="0" socket_pct="0" /> El generador para items nuevos(o sea, que no esten en la base de datos) Código: INSERT INTO item_proto VALUES (210, 'Espada Rara+0', 'Espada Rara+0', 1, 0, 0, 2, 32, 1, 16, 0, 200, 300, 211, 911, 0, 15, 1, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 220, 230, 250, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0); El generador para items existentes(que ya esta en la base de datos, solo les altera los valores) Código: UPDATE item_proto SET name='Espada Rara+0', locale_name='Espada Rara+0', type=1, subtype=0, weight=0, size=2, antiflag=32, flag=1, wearflag=16, immuneflag=0, gold=300, shop_buy_price=200, refined_vnum=211, refine_set=911, refine_set2=0, limittype0=1, limitvalue0=90, limittype1=0, limitvalue1=0, applytype0=0, applyvalue0=0, applytype1=0, applyvalue1=0, applytype2=0, applyvalue2=0, value0=0, value1=210, value2=220, value3=230, value4=250, value5=0, addon_type=0 WHERE vnum=210; Cabe destacar la explicación de los botones TABLA y ENTABLAR DATOS: TABLA: Al clickear este boton, lo que hace es que si por ejemplo necesitamos ver como será el valor de un ítem en +9, podemos tener una visualización de como será el ítem en +9. Basicamente es eso lo que nos ofrece. ENTABLAR DATOS: Nos permite poner como base el valor que está en TABLA. O sea, si por ejemplo necesitamos evolucionar algo, esto nos permite poner el valor de +9 de ese item como base en el item+0, o sea, para que el item +0 la evolución nueva tenga el valor de su anterior +9, esto ahorra mucho trabajo a la hora de tener que ir colocandolos manualmente. Y por último, esta el tipico Convertidor de archivos .xml a archivos .sql completo. Para los que les parezca muy tedioso estar convirtiendo uno a uno por el convertidor de arriba, solo deben de crear un archivo .xml, con todos los items que deseen que sean convertidos para que les genere el item_proto.sql de esos items que desean convertir y solo sera copiarlos y pegarlos en la base de datos, OJO les recuerdo que ese convertidor de Item_Proto tambien posee la posiblidad de cambiar los valores para los que posean todos los items existentes. Espero que les sirva, sobre todo en lo que he agregado como nuevo. LINK: 2SHARED http://www.2shared.c..._Converter.html MEDIAFIRE http://www.mediafire.com/?yytgj6xlum57lgw
  21. Restringeles que puedan sacar items por la BD, es mejor así se termina la corrupción de una.
×
×
  • Crear nuevo...