Jump to content

Dextrok

Miembro
  • Contador contenido

    111
  • Ingreso

  • Última visita

  • Días ganados

    5

Actividad de reputación

  1. Me Gusta
    Dextrok reacted to PACI in [Ayuda]Quitar Lv al lado del nombre.   
    Abre tu binário con un editor de hex, busca por: Lv %d e haz NOP a sus valores.
     
    Buscar por texto: Lv %d
    Buscar por valores hexadecimales: 4C 76 20 25 64
     
    Yo no sé cual es tu binário así que sin los offset no te podré hacer el dif xD pero solo tienes que substituir esto 4C 76 20 25 64 por 90 90 90 90 90. O entonces ponlo en 00 en vez de 90.
  2. Me Gusta
    Dextrok got a reaction from Reload in Cual seria la solucion para esta quest   
    quest guild_manage begin state start begin when 11000.chat."Dejar Gremio" or 11002.chat."Dejar Gremio" or 11004.chat."Dejar Gremio" with pc.hasguild() and not pc.isguildmaster() and (pc.is_gm() or npc.empire == pc.empire) begin -- ?? say_orange("Guardían:") say("") say_reward(locale.guild.withdraw_confirm) say("") local s = select("Si", "Cancelar") if s==1 then say_orange("Guardían:") say("") say("Usted abandono el Gremio.") say_reward("Recuerde que deberá esperar 1 día") say_reward("para poderse unir en otro Gremio.") say("") pc.remove_from_guild() pc.setqf("new_withdraw_time",get_global_time()) end end when 11000.chat."Disolver Gremio" or 11002.chat."Disolver Gremio" or 11004.chat."Disolver Gremio" with pc.hasguild() and pc.isguildmaster() and (pc.is_gm() or npc.empire == pc.empire) begin -- ?? say_orange("Guardían:") say(locale.guild.disband_confirm) say("") say_reward("¿Está realmente seguro de disolver el gremio?") say("") local s = select("Si", "Cancelar") if s==1 then say_orange("Guardían:") say("") say("El Gremio se disolvió.") say_reward("Recuerde que deberá esperar 1 día") say_reward("para crear un Gremio o bien pertenecer") say_reward("a otro Gremio.") say("") pc.destroy_guild() pc.setqf("new_disband_time",get_global_time()) pc.setqf("new_withdraw_time",get_global_time()) end end when 11000.chat."Crear Gremio" or 11002.chat."Crear Gremio" or 11004.chat."Crear Gremio" with not pc.hasguild() and (pc.is_gm() or npc.empire == pc.empire) begin local level_limit; local guild_create_item if get_locale() == "euckr" then level_limit = 40 guild_create_item = false else level_limit = 40 guild_create_item = false end if pc.hasguild() then return end if game.get_event_flag("guild_withdraw_delay")*86400 > get_global_time() - pc.getqf("new_withdraw_time") then say(string.format("Du kannst jetzt noch keine neue Giled gründen! Warte noch eine Weile!", game.get_event_flag("guild_withdraw_delay"))) return end if game.get_event_flag("guild_disband_delay")*86400 > get_global_time() - pc.getqf("new_disband_time") then say(string.format("Du kannst jetzt noch keine neue Giled gründen! Warte noch eine Weile!", game.get_event_flag("guild_disband_delay"))) return end say_orange("Guardían:") say("") say("Para ser líder de gremio, deberá[ENTER]tener los siguientes requisitos:") say("") say_reward("Deberá ser Nivel 40 y") say_reward("tener 200.000 de Yang.") say("") local s = select("Si", "Cancelar") if s == 2 then return end if pc.level >= level_limit then if pc.gold >= 200000 then if not guild_create_item or pc.countitem(guild_create_item)>0 then game.request_make_guild() else say("Dir Fehlt das Buch der Vorsehung!") end else say_orange("Guardían:") say("") say_reward("Usted no tiene suficiente Yang.") say("") end else say_orange("Guardían:") say("") say_reward("Su nivel no es suficiente para crear un gremio.") say("") end end endend No me enfoque en la correcion de la quest como tal puesto que has dicho que te compila, pruebalo así.
  3. Me Gusta
    Dextrok reacted to ™.Ninjaman28xD ツ in Remix que hice en el Virtual DJ de canciones de Metin2 (Test)   
    Metin2, City1

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Metin2, City2

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Metin2, Valle del Dragón

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Aclaro, estuve probando efectos, o sea, no sería el remix final xD son test.
  4. Gracias
    Dextrok got a reaction from Csiszer Szilard in Item Proto FULL Converter!!!   
    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
     
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    MEDIAFIRE
     
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  5. Me Gusta
    Dextrok reacted to KeKo in Quest Evento De Pesca   
    Sigo aqui sep, simplemente no aporto. Pero hacer spam es divertido :3
  6. Me Gusta
    Dextrok reacted to KeKo in [Evento] Coliseo PvM   
    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
  7. Me Gusta
    Dextrok got a reaction from Frank Arkero in [AYUDA]Query   
    te recomiendo utilizar mi programa, sirve para crear cualqueir Query que necesites al instante:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  8. Me Gusta
    Dextrok reacted to Croqueta in [HowTo] como meter las quests en el Foro(con tabs)   
    1.paso copia la quest

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. 2.paso

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. 3.paso escribe el codigo

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. 4.paso pone la quest en el codigo

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. 5.paso la resulta

    quests croquetatest begin state start begin when login begin say("hola, soi la croqueta, bien tostaita y calientita.") end end end
  9. Me Gusta
    Dextrok reacted to Croqueta in memorizar tablas en un archivo y leer   
    do local function exportstring( s ) return string.format("%q", s) end function table.save( tbl,filename ) local charS,charE = " ","n" local file,err = io.open( filename, "wb" ) if err then return err end local tables,lookup = { tbl },{ [tbl] = 1 } file:write( "return {"..charE ) for idx,t in ipairs( tables ) do file:write( "-- Table: {"..idx.."}"..charE ) file:write( "{"..charE ) local thandled = {} for i,v in ipairs( t ) do thandled[i] = true local stype = type( v ) if stype == "table" then if not lookup[v] then table.insert( tables, v ) lookup[v] = #tables end file:write( charS.."{"..lookup[v].."},"..charE ) elseif stype == "string" then file:write( charS..exportstring( v )..","..charE ) elseif stype == "number" then file:write( charS..tostring( v )..","..charE ) end end for i,v in pairs( t ) do if (not thandled[i]) then local str = "" local stype = type( i ) if stype == "table" then if not lookup[i] then table.insert( tables,i ) lookup[i] = #tables end str = charS.."[{"..lookup[i].."}]=" elseif stype == "string" then str = charS.."["..exportstring( i ).."]=" elseif stype == "number" then str = charS.."["..tostring( i ).."]=" end if str ~= "" then stype = type( v ) if stype == "table" then if not lookup[v] then table.insert( tables,v ) lookup[v] = #tables end file:write( str.."{"..lookup[v].."},"..charE ) elseif stype == "string" then file:write( str..exportstring( v )..","..charE ) elseif stype == "number" then file:write( str..tostring( v )..","..charE ) end end end end file:write( "},"..charE ) end file:write( "}" ) file:close() end function table.load( sfile ) local ftables,err = loadfile( sfile ) if err then return _,err end local tables = ftables() for idx = 1,#tables do local tolinki = {} for i,v in pairs( tables[idx] ) do if type( v ) == "table" then tables[idx][i] = tables[v[1]] end if type( i ) == "table" and tables[i[1]] then table.insert( tolinki,{ i,tables[i[1]] } ) end end for _,v in ipairs( tolinki ) do tables[idx][v[2]],tables[idx][v[1]] = tables[idx][v[1]],nil end end return tables[1] end end
     
    pro ejemplo

    tabla={ minombre='Noa', ano='23', pais='Alemania' } table.save(tabla,"mitabla.lua") local tabla=table.load("mitabla.lua") for _,i in next, tabla do say(i) end o say("mi nombre es "..tabla.minombre.." tengo "..tabla.ano.." anos y bivo en "..tabla.pais)
  10. Me Gusta
    Dextrok got a reaction from Yori in ayuda de los pro de las quest   
    local a,b = math.modf(25/10) Eso está mal, debería ser de esta manera:
     

    local a,b = math.modf(25, 10) Porque lo que estás invocando es un método, el cuál recibe 2 parámetros, igual con el math.mod(dividendo, divisor)
  11. Me Gusta
    Dextrok reacted to Croqueta in [Bonus]Power_Mount   
    escriben en quest_functions
    esto

    pc.is_riding()
    en la quest estan cosas escribido para ajudar a editar la quest.
    Con la quest se puede llamar los Caballos como el leon, tigre ... y los demas y te da tambien los bonus
    el nivel de los Mounts(Caballos) se pude cambiar aqi, un ejemplo
     

    [71114]={20110, 999999999, 75,
    el 75 es el Nivel que nesesita para montar el Caballo
     

    quest power_mount begin
    state start begin
    --: Items
    when 71114.use or 71116.use or 71118.use or 71120.use or 71124.use or 71125.use or
    71126.use or 71127.use or 71128.use or 52006.use or 52021.use or 52051.use or
    52036.use or 52011.use or 52026.use or 52056.use or 52041.use or 52066.use or 52071.use or
    52076.use or 52081.use or 52086.use begin
    -- Nuevos items se escribe arriba
    -- para pones mas bonus sige el esquema

    --: Bonus
    local mB = {
    [71114]={20110, 999999999, 75,{{apply.ATT_GRADE_BONUS, 100, 999999999},{apply.DEF_GRADE_BONUS, 50, 999999999}}},
    [71116]={20111, 999999999, 75,{{apply.ATT_GRADE_BONUS, 100, 999999999},{apply.DEF_GRADE_BONUS, 50, 999999999}}},
    [71118]={20112, 999999999, 75,{{apply.ATT_GRADE_BONUS, 100, 999999999},{apply.DEF_GRADE_BONUS, 50, 999999999}}},
    [71120]={20113, 999999999, 75,{{apply.ATT_GRADE_BONUS, 100, 999999999},{apply.DEF_GRADE_BONUS, 50, 999999999}}},
    [71124]={20114, 999999999, 80,{{apply.ATT_GRADE_BONUS, 150, 999999999},{apply.DEF_GRADE_BONUS, 80, 999999999}}},
    [71125]={20115, 999999999, 90,{{apply.ATT_GRADE_BONUS, 200, 999999999},{apply.MAX_HP, 2000, 999999999}}},
    [71126]={20116, 999999999, 90,{{apply.ATT_GRADE_BONUS, 200, 999999999},{apply.MAX_HP, 2000, 999999999}}},
    [71127]={20117, 999999999, 90,{{apply.ATT_GRADE_BONUS, 200, 999999999},{apply.MAX_HP, 2000, 999999999}}},
    [71128]={20118, 999999999, 90,{{apply.ATT_GRADE_BONUS, 200, 999999999},{apply.MAX_HP, 2000, 999999999}}},
    [52006]={20201, 999999999, 100,{{apply.ATT_GRADE_BONUS, 250, 999999999},{apply.MAX_HP, 2500, 999999999},{apply.BLOCK, 10, 999999999}}},
    [52021]={20202, 999999999, 100,{{apply.ATT_GRADE_BONUS, 250, 999999999},{apply.MAX_HP, 2500, 999999999},{apply.BLOCK, 10, 999999999}}},
    [52051]={20203, 999999999, 100,{{apply.ATT_GRADE_BONUS, 250, 999999999},{apply.MAX_HP, 2500, 999999999},{apply.BLOCK, 10, 999999999}}},
    [52036]={20204, 999999999, 100,{{apply.ATT_GRADE_BONUS, 250, 999999999},{apply.MAX_HP, 2500, 999999999},{apply.BLOCK, 10, 999999999}}},
    [52011]={20209, 999999999, 110,{{apply.ATT_GRADE_BONUS, 300, 999999999},{apply.MAX_HP, 3000, 999999999},{apply.CRITICAL_PCT, 15, 999999999}}},
    [52026]={20210, 999999999, 110,{{apply.ATT_GRADE_BONUS, 300, 999999999},{apply.MAX_HP, 3000, 999999999},{apply.CRITICAL_PCT, 15, 999999999}}},
    [52056]={20211, 999999999, 110,{{apply.ATT_GRADE_BONUS, 300, 999999999},{apply.MAX_HP, 3000, 999999999},{apply.CRITICAL_PCT, 15, 999999999}}},
    [52041]={20212, 999999999, 110,{{apply.ATT_GRADE_BONUS, 300, 999999999},{apply.MAX_HP, 3000, 999999999},{apply.CRITICAL_PCT, 15, 999999999}}},
    [52061]={20213, 999999999, 1,{{apply.ATT_GRADE_BONUS, 50, 999999999}}},
    [52066]={20214, 999999999, 120,{{apply.ATT_GRADE_BONUS, 300, 999999999},{apply.ATTBONUS_MONSTER, 10, 999999999},{apply.CRITICAL_PCT, 25, 999999999}}},
    [52071]={20215, 999999999, 130,{{apply.ATT_GRADE_BONUS, 300, 999999999},{apply.ATTBONUS_MONSTER, 15, 999999999},{apply.BLOCK, 15, 999999999},{apply.CRITICAL_PCT, 20, 999999999}}},
    [52076]={20216, 999999999, 1,{{apply.ATT_GRADE_BONUS, 50, 999999999}}},
    [52081]={20217, 999999999, 120,{{apply.ATT_GRADE_BONUS, 300, 999999999},{apply.ATTBONUS_MONSTER, 10, 999999999},{apply.CRITICAL_PCT, 25, 999999999}}},
    [52086]={20218, 999999999, 130,{{apply.ATT_GRADE_BONUS, 300, 999999999},{apply.ATTBONUS_MONSTER, 15, 999999999},{apply.BLOCK, 15, 999999999},{apply.CRITICAL_PCT, 20, 999999999}}}
    }
    -- es mejor no editir nada que no tenga esto --> --cambiar
    local item = item.get_vnum()
    local lvl = pc.get_level()
    local mM = mB[item][1]
    local mTime = mB[item][2]
    local nlvl = mB[item][3]
    local bN = table.getn(mB[item][4])
    --Controllar
    if pc.is_mount() or pc.is_riding() or pc.is_polymorphed()==false then
    if lvl >= nlvl then
    chat("Cuando el Mount se llamo!") --cambiar
    pc.mount(mM, mTime)
    for i=1, bN do
    pc.mount_bonus(mB[item][4][i][1], mB[item][4][i][2], mB[item][4][i][3])
    end
    else
    syschat(string.format(" tienes que ser %d nivel", nlvl)) --cambiar
    end
    end
    end
    end
    end[/Php]
  12. Me Gusta
    Dextrok got a reaction from Riochu™ no es in [Peticiòn]Quest para mapas   
    quest mapas begin
    state start begin
    when 20011.chat."Ir a mapas" begin
    --Aca van todas las coordenadas de todos los mapas.
    local coord_map = {
    {coord1x, coord1y },
    {coord2x, coord2y },
    {coord3x, coord3y },
    {coord4x, coord4y },
    {coord5x, coord5y },
    }
     
    say_title("Viajero:")
    say("Selecciona el mapa al que quieres ir")
    local result = select("map1", "map2", "map3", "map4", "map5", "Cancelar")
    if result != 6 then
    pc.warp(coord_map[result])
    end
    end
    end
    end

  13. Me Gusta
    Dextrok got a reaction from Riochu™ no es in [Peticiòn]Quest para mapas   
    Umm, gracias por la info mejor dejo de inventar con las listas, aun me falta hacer más pruebas.
  14. Me Gusta
    Dextrok got a reaction from nekorr in Testing Map Tool   
    Hola Zoneros, como muchos han visto anteriormente, he estado tratando de crear quest que sean útiles a la hora de modificar un servidor, está vez les traigo una bastante básica, que les muestra la infomación respectiva al mapa en que se encuentran.
     
    Si pudieran sugerir cosas que se le podrían agregar sería una maravilla.
     
    Con esta quest puedes conseguir las coordenadas tanto locales como globales de un mapa, el index del mapa, y además puedes crear un regen en tiempo de ejecución para ese mapa. ¿Cómo funciona esto?
     
    Pues para crear el regen lo que tienen que hacer es activar la opción de Regen Creator, y luego darse un paseo por todos los lugares que desean que salgan mobs. Y posteriormente para finalizar la creación del regen, deben darle click nuevamente al objeto.
     

    quest test_map_tool begin state start begin when 71035.use begin local local_x = pc.get_local_x() local local_y = pc.get_local_y() local global_x = pc.get_x() local global_y = pc.get_y() local k = select("Coordenadas Locales", "Coordenadas Globales" , "Index del mapa", "Regen Creator", "Cerrar") if k == 1 then say_title("Coordenadas Locales") say("Estas en las coordenadas:") say("( ".. local_x .. "," .. local_y .." )") elseif k == 2 then say_title("Coordenadas Globales") say("Estas en las coordenadas:") say("( ".. global_x .. "," .. global_y .." )") elseif k == 3 then say_title("Index del mapa actual") say("El index es: " .. pc.get_map_index()) elseif k == 4 then say_title("Regen Creator") if game.get_event_flag("regen_creator") == 0 then say("Deseas comenzar?") local t = select("Si", "No") if t == 1 then game.set_event_flag("regen_creator", 1) io.open("/usr/game/share/locale/germany/quest/regen.txt", "a+") io.output("/usr/game/share/locale/germany/quest/regen.txt") loop_timer("regen_timer", 1) end else say("Deseas terminar?") local t = select("Si", "No") if t == 1 then cleartimer("regen_timer") io.close() game.set_event_flag("regen_creator", 0) end end end end when regen_timer.timer begin io.write("r\t"..pc.get_local_x().."\t"..pc.get_local_y().."\t10\t10\t0\t0\t80s\t100\t1\t80") io.write("\\n") chat("Posicion Guardada en: (".. pc.get_local_x() .. ", " .. pc.get_local_y() .. ")") end end end
  15. Me Gusta
    Dextrok got a reaction from Yori in Testing Map Tool   
    Hola Zoneros, como muchos han visto anteriormente, he estado tratando de crear quest que sean útiles a la hora de modificar un servidor, está vez les traigo una bastante básica, que les muestra la infomación respectiva al mapa en que se encuentran.
     
    Si pudieran sugerir cosas que se le podrían agregar sería una maravilla.
     
    Con esta quest puedes conseguir las coordenadas tanto locales como globales de un mapa, el index del mapa, y además puedes crear un regen en tiempo de ejecución para ese mapa. ¿Cómo funciona esto?
     
    Pues para crear el regen lo que tienen que hacer es activar la opción de Regen Creator, y luego darse un paseo por todos los lugares que desean que salgan mobs. Y posteriormente para finalizar la creación del regen, deben darle click nuevamente al objeto.
     

    quest test_map_tool begin state start begin when 71035.use begin local local_x = pc.get_local_x() local local_y = pc.get_local_y() local global_x = pc.get_x() local global_y = pc.get_y() local k = select("Coordenadas Locales", "Coordenadas Globales" , "Index del mapa", "Regen Creator", "Cerrar") if k == 1 then say_title("Coordenadas Locales") say("Estas en las coordenadas:") say("( ".. local_x .. "," .. local_y .." )") elseif k == 2 then say_title("Coordenadas Globales") say("Estas en las coordenadas:") say("( ".. global_x .. "," .. global_y .." )") elseif k == 3 then say_title("Index del mapa actual") say("El index es: " .. pc.get_map_index()) elseif k == 4 then say_title("Regen Creator") if game.get_event_flag("regen_creator") == 0 then say("Deseas comenzar?") local t = select("Si", "No") if t == 1 then game.set_event_flag("regen_creator", 1) io.open("/usr/game/share/locale/germany/quest/regen.txt", "a+") io.output("/usr/game/share/locale/germany/quest/regen.txt") loop_timer("regen_timer", 1) end else say("Deseas terminar?") local t = select("Si", "No") if t == 1 then cleartimer("regen_timer") io.close() game.set_event_flag("regen_creator", 0) end end end end when regen_timer.timer begin io.write("r\t"..pc.get_local_x().."\t"..pc.get_local_y().."\t10\t10\t0\t0\t80s\t100\t1\t80") io.write("\\n") chat("Posicion Guardada en: (".. pc.get_local_x() .. ", " .. pc.get_local_y() .. ")") end end end
  16. Me Gusta
    Dextrok reacted to Ðro in Curso creación de quest sin símbolos raros   
    Buenas gente de metin2zone!!!
     
    Les vengo a postear el curso de creación de quest que crearon KeKo y ElRaulxX un poco arregladito, porque los post originales tienen símbolos todos raros y dificulta entenderlos un poquitin, hoy andaba desparchado (aburrido) y me puse a "arreglar los símbolos" ya que ese curso merece ser leído con claridad, sin mas que decir aquí se los dejo adjuntos.
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    PD: Tiene los
    [ quote][ /quote], [ code] [ /code], [ spoiler] [ /spoiler]
    Por si algún moderador decide re editar los post originales
    PD2: Ahí les deje una quest de regalo :trollface:
     
    Saludos.
  17. Me Gusta
    Dextrok got a reaction from LORDCarlo™ in [QUEST]Generadora de Regens   
    Hola, hoy vengo a dejarles este pedazo de quest que sirve para crear los regen mediante quest.
     
    ¿Cómo utilizar esta Quest?
     
    Fácil, la quest se base en mirar a los mapas en formas cuadradas, de esta manera tomamos un cuadrado de ejemplo y este es llenado en todo su interior mediante la quest, por ejemplo:
     
    -Tenemos el siguiente mapa cuadrado el cuál está completamente vacío y necesita ser llenado de mobs.
     

     
    Por cierto, deben de agregarle al foro el re-dimensionamiento de las imágenes.
     
    Volviendo al tema, como podemos ver el siguiente mapa está conformado mayormente por un plano cartesiano el cuál tiene componentes X1 y X2, y tambíen Y1 y Y2.
     
    El valor maximo y el minimo ya sea en X o en Y puede ser invertido.
     
    Ya entendida la parte de arriba, explico el funcionamiento total de la quest:
     
    Lo primero que debemos de hacer es verificar esta parte de aca:
     
    "/usr/game/share/locale/germany/quest/"
     
    Y fijarnos que sea la ruta en la cuál tenemos nuestras Quest, o sino la ruta en dónde se generará el archivo regen que vayamos a crear.
     
    luego al utilizarla le tendremos que poner un nombre a nuestra quest: por ejemplo regen.txt
     
    Luego tocará colocar los X y los Y que sacamos en la parte de arriba, como dije anteriormente es relativo el maximo y el minimo con saber que tenemos los (x) y los (y) uno al extremo del otro nos basta.
     
    Posteriormente se procede a insertar el group_group que va a salir en el mapa.
     
    [El group_group no es más que la agrupación de varios group]
     
    Después la cantidad de grupos que queremos que salgan en el mapa. Y finalmente los segundos que tardan en salir, sin la (S).
     
    Eso es todo.
     

    quest regen begin state start begin when 50512.use begin local sciezka = "/usr/game/share/locale/germany/quest/" say_title("New file name :") say() say_yellow("Example : regen.txt") say() local newfile = input() if newfile == "" then say_red("Name can not be empty.") return end if io.open(sciezka..newfile, "r") != nil then say_red("File "..newfile.." exist now.") else say_title("Great ! Next step.") local xx = select("Next") if xx == 1 then say_title("Minimum value x :") local x_min = tonumber(input()) if x_min == "" then say_red("This value can not be empty.") return end say_title("Maximum value x :") local x_max = tonumber(input()) if x_max == "" then say_red("This value can not be empty.") return end say_title("Minimum value y :") local y_min = tonumber(input()) if y_min == "" then say_red("This value can not be empty.") return end say_title("Maximum value y :") local y_max = tonumber(input()) if y_max == "" then say_red("This value can not be empty.") return end say_title("Group ID :") local id_grupy = tonumber(input()) if id_grupy == "" then say_red("This value can not be empty.") return else say_title("Amount of groups on this cords :") local max_count = 150 local count = tonumber(input()) if count <= 0 then say_red("Value of this field must be higher than 0.") return elseif count >= max_count then say_red("To large value of this field. Must be lower than "..max_count.." loop circulation.") else say_title("Seconds to next respawn : ") say() say_red("Just number, without 's'") local time = tonumber(input()) if time <= 0 then say_red("This field must be higher than 0.") return else io.output(sciezka..newfile) for i = 1, count do local liczx = number(x_min, x_max) local liczy = number(y_min, y_max) io.write("rt"..liczx.."t"..liczy.."t10t10t0t0t"..time.."st100t1t"..id_grupy) io.write("n") end io.close() say_title("File saved.") end end end end end end end end Creditos:
     
     
  18. Me Gusta
    Dextrok got a reaction from Milkee in Item Proto FULL Converter!!!   
    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
     
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    MEDIAFIRE
     
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  19. Me Gusta
    Dextrok reacted to Shiindrex in Npc_Talk - Conversaciones con Npc Esp.   
    Hola gente!
     
    Hoy les traigo un material de traducción, el archivo Npc_talk, de que va esta quest?
    La quest trata de cuando apretas sobre un Npc te pone como una "conversación" y te cuenta lo que piensa o sucede. La traducción esta basada en el Metin2.es cada renglón.
     
    Si tiene algún fallo ortográfico por favor díganme así lo corrijo.
     
    Enlace a la quest:

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Solo para Mt2Zone.
     
    Espero que les haya servido esta quest para traducir un poco mas el server, por favor darle Un Me Gusta al tema y un Gracias!
     
    Saludos!
  20. Me Gusta
    Dextrok reacted to Robert in Quest evento pascua   
    Bueno estaba mirando la seccion de quest y no vi ninguna quest de pascuas si la hay pido que el post sea borrado !

    -Hay 2 quests:
    -La primera es el evento

    -La segunda es para el drop de los huevos


    -La 3 cosa se tiene que meter en special_drop_item.txt porque ally se edita los items que tienen que dar los huevos.



    Teneis que tener el mob conejo sino lo teneis modificais el id del npc en vez de 30129 otro.Los mobs solo dropean 1 huevo si quereis agregar mas tendreis que modificar en special_drop_item y en la quest!
    Bueno esto es todo yo creo que es bastante facil si hay algo que no entendeis decirmelo.La quest es 100% ya que la tengo en mi servidor.Os dejo las quest en adjuntos por si algo.
  21. Me Gusta
    Dextrok reacted to KeKo in [TIP] Reparar texturas solo con el gr2   
    Buenas zoneros,
     
    Hoy os voi a explicar un truquillo que aprendi hace mucho tiempo y que a algunos os puede ser muy util en algunas ocasiones. Antes de nada: a que me refiero con "reparar texturas solo cn el gr2"? Pues la cosa es que con este sencillo truco os enseñare a sacar la textura de un gr2 para casos en los que la textura no viene en la descarga de lo que nos hemos bajado
     
    1 - Abrimos el gr2 del cual queremos recuperar la textura con el granny:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    2 - Pinchamos en texture inspection y veremos la textura asi:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    3 - Pinchamos en back to main menu, le damos a camera y seleccionamos 90 vertical FOV para que la imagen se haga mas pequeña:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    4 - Ahora le damos a impr pantalla para hacer una screenshot. Una vez hecha abrimos el paint (o cualquier otro programa de edicion de graficos) y le damos pegar, nos quedara algo asi:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    5 - Pues ahora le damos a la herramienta seleccionar y rodeamos la textura y le damos a cortar:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    6 - Le damos a nueva imagen y pegamos la textura que hemos recortado. Ahora solo tenemos que guardarla en el formato y con el nombre que diga el gr2. Para ello lo comprobamos abriendo el gr2 y dandole a texture list:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Y eso sería todo, ya podeis recuperar texturas de gr2 que no las traen en sus descargas
     
     
    P.D: Ademas os dejo adjunta el arma que he usado en la guía como regalo, es adaptada por mi
     
    Un saludo, KeKo

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  22. Me Gusta
    Dextrok reacted to Croqueta in [Q]Itemshop without Mysql   
    Informacion:
    Hola a todos aca les traigo una quest de una item shop en el juego. realizada en su totalidad por mi
    Contiene:
    -Historial de Compras(log)
    -Historial De Donaciones (log)
    -Ingreso Como administrador (Agregar artículos / y quitarlos)
    -Tienda: Lecto de coins (Este archivo ha de ser creado manualmente)
    -Imagenes:
     
    Importante:
     
    Dentro de la descarga hay un archivo llamado vnumUtype.txt este se le modifica la extencion a .lua
     
    pathti="/usr/home/game/share/locale/germany/quest/test/" <<-- en esta ruta la tabla de la item shop y el vnumUtype.lua
    pathtc="/usr/home/game/share/locale/germany/quest/coins/"
     
    Se crea una nueva carpeta en las rutas anteriores, que depende de usted.
    Más importante aún es un punto que hay que generar la tabla en el juego,
    como un ejemplo de la matriz que me queda, por lo que puede orientarse a la misma.
     
    special thx on stein20 for help to translate
     
    imagen
     
     
     
    Quest
     

    quest ingameshop begin state start begin when 20006.chat."recharge ccoins" begin say_title(mob_name(npc.get_race())) spenden() end when 20006.chat."generate table" with pc.is_gm() begin --if pc.get_gm_level()!=5 then return end say("really generate table?") if select("Yes","No")==2 then return end local ingameshop={ --[[ if you use this first time, push Yes ]] {--weapons {item1,item2},--ids {coins1,cois2}--coins }, {--armor {item1,item2},--ids {coins1,coins2}--coins }, {--special tems {item1,item2},--ids {coins1,item2}--coins } } table.save(ingameshop,pathti.."testtabelle.lua") end when 20006.chat."ItemShop" begin local name_items={} local ingameshop=table.load(pathti.."testtabelle.lua") say_title(mob_name(npc.get_race())) say() say("Choose your category") local auswahl=select3(itemshopk) for i=1,table.getn(ingameshop[auswahl][1]) do table.insert(name_items,tostring(item_name(ingameshop[auswahl][1][i]))) end say_title(mob_name(npc.get_race())) say() say("select the item ") say() local itemshop_i = select3(name_items) if itemshop_i == table.getn(name_items) then return end say_title(string.format("Coins :%d ", get_coins())) say() say("Would you really buy the item?") say() say_gold("it cost "..ingameshop[auswahl][2][itemshop_i].." Coins") say_item_vnum(ingameshop[auswahl][1][itemshop_i]) say("") if select("Yes","No") == 2 then return end if get_coins()<ingameshop[auswahl][2][itemshop_i] then say("not enough coins ") return end say_green("you have buy "..item_name(ingameshop[auswahl][1][itemshop_i]).." for- ") say_green(ingameshop[auswahl][2][itemshop_i].." Coins") say_item_vnum(ingameshop[auswahl][1][itemshop_i]) coins_write((get_coins()-ingameshop[auswahl][2][itemshop_i])) pc.give_item2(ingameshop[auswahl][1][itemshop_i]) write_log(ingameshop[auswahl][1][itemshop_i],ingameshop[auswahl][2][itemshop_i]) end when 20006.chat."Manage Itemshop" with pc.is_gm() begin local tabelle=table.load(pathti.."vnumUtype.lua") local i_shop=table.load(pathti.."testtabelle.lua") say_title(mob_name(npc.get_race())) say() say("Hello "..string.format("%s",pc.get_name())) say("What would you like do?") local s=select("add new items","removing Items","Nothig") if s==3 then return end if s==1 then say_title(mob_name(npc.get_race())) say() say("Choose a category") say("where you want to add the item") local auswahl=select3(itemshopk) say_title(mob_name(npc.get_race())) say() say(itemshopk[auswahl]..": insert into this category?") if select("Yes","No") == 2 then return end say_title(mob_name(npc.get_race())) say() say("Which item you wish to add?") say("Enter the vnum") local vnum= tonumber(input()) if vnum ==nil then say("You have to enter something") return end if auswahl== 1 then if tabelle[vnum][1] != 1 then say("This is not a weapon") return end elseif auswahl == 2 then if tabelle[vnum][1] != 2 then say("This is not a amor") return end elseif auswahl == 3 then if tabelle[vnum][1] == 1 or tabelle[vnum][1]==2 then say("only for special items") return end end say_title(mob_name(npc.get_race())) say() say("Give the price of that item") say() local money= tonumber(input()) if money==nil then say("You have to enter something") return end say_title(mob_name(npc.get_race())) say() say("keeping?") say() say("Item: "..item_name(vnum).." Price: "..money) say_item_vnum(vnum) if select("Yes","No") == 2 then return end i_shop[auswahl][1][table.getn(i_shop[auswahl][1])+1]=vnum i_shop[auswahl][2][table.getn(i_shop[auswahl][2])+1]=money --table.insert(i_shop[auswahl][1],vnum) --table.insert(i_shop[auswahl][2],money) table.save(i_shop,pathti.."testtabelle.lua") say("you have add "..item_name(vnum)) elseif s==2 then local auswahl_items={} say("Choose the item that you wish to remove") say() local a=select3(itemshopk) for i=1,table.getn(i_shop[a][1]) do table.insert(auswahl_items,tostring(item_name(i_shop[a][1][i]))) end say("Choose the item that you wish to remove") say() local itemshop_r = select3(auswahl_items) if itemshop_r==table.getn(auswahl_items) then return end table.remove(i_shop[a][1],i_shop[a][1][itemshop_r]) table.remove(i_shop[a][2],i_shop[a][2][itemshop_r]) table.save(i_shop,pathti.."testtabelle.lua") --[[for i= 1,table.getn(ingameshop[auswahl][1]) do say(i_shop[auswahl][1][i].."\t"..i_shop[auswahl][2][i]) end]] end end end end questlib.lua
     

    pathti="/usr/home/game/share/locale/germany/quest/test/"--ruta de la tabla pathtc="/usr/home/game/share/locale/germany/quest/coins/"--ruta de los coins itemshopk={"Waffe","Rüstungen","Sonstiges"} function write_log(vnum,coins) local i_name=item_name(vnum) datei = io.open(pathti.."shop_log.lua", "a+") if datei==nil then say("Error loading the file") return end datei:write("PLayerID:\t"..pc.get_player_id().."\tPlayerName:\t"..pc.get_name().."\tItemName:\t"..i_name.."\tDate/Time:\t"..os.date("%c").."\tCoins:\t"..coins.."\n") datei:close() end function get_coins() local file = io.open(pathtc..""..pc.get_player_id()..".txt",'r') if file==nil then return 0 end for line in file:lines() do return line end file:close() end function coins_write(coins) file = io.open(pathtc..""..pc.get_player_id()..".txt","w") file:write(coins) file:close() end function spenden() say() say("How much you want to donate?") say_reward("Online Paysafecard will not be accepted") say() s = select("10","25","50","100","cancel") wert = { 10 , 25 , 50 , 100} if s==table.getn(wert)+1 then return end say_title(mob_name(20006)) say() say("Now give the PSC numbers") say() eing2= input() if string.len(eing2)~=16 then say("Your input has no 16 numbers") return end if string.sub(eing2,0,1)=='1' or string.sub(eing2,0,2)=='00' then say("Online Paysafecard will not be accepted") return end say_title(mob_name(20006)) say() say('The PSC is protected with a password?') if select("Yes","No")==2 then eing3=0 else say("Enter the password") eing3 = input() if eing3=='' then say("You have to enter something") return end end say() say("Your input:") say("cash: "..wert[s]) say("PSC: "..eing2) if eing3 == 0 then say("PW: /") else say("PW: "..eing3) end say("Keeping?") say() if select("Yes","No") == 2 then return end say("your Coins will be credited to you after the control") file = io.open(pathti.."psc_log.lua","a+") --file:write("PlayerName:\t"..pc.get_name().."\tCash:\t"..wert[s].."\tPSC:\t"..eing2.."\tPW:\t"..eing3.."\tDate/Time:\t"..os.date("%c").."\n") file:write("ID:\t"..pc.get_player_id().."PlayerName:\t"..pc.get_name().."\tCash:\t"..wert[s].."\tPSC:\t"..eing2.."\tPW:\t"..eing3.."\tDate:\t"..os.date("%c").."\t\n") file:close() end function select3(...) arg.n = nil local tp,max = arg,5 if type(tp[1]) == 'number' then max = tp[1] if type(tp[2]) == 'table' then tp = tp[2] else table.remove(tp,1) end elseif type(tp[1]) == 'table' then if type(tp[1][1]) == 'number' then max = tp[1][1] table.remove(tp[1],1) tp = tp[1] end tp = tp[1] end local str = '{' local tablen,act,incit = table.getn(tp),0,0 table.foreach(tp,function(i,l) act = act + 1 if act == 1 then str = str .. '{'..string.format('%q',l) elseif act == max+1 and tablen > act+incit then if tablen ~= act+incit+1 then str = str..'},{'..string.format('%q',l) else str=str..','..string.format('%q',l) end incit = incit + max act = 1 else str=str..','..string.format('%q',l) end end) local px = loadstring('return '..str ..'}}')() local function copy_tab(t) local p= {} for i = 1,table.getn(t) do p[i] = t[i] end return p end local pe = {} for i = 1,table.getn(px) do pe [i] = copy_tab(px[i]) end local function init(i,ip) pe[i] = copy_tab(px[i]) local next,back,exit = 0,0,0 if i < table.getn(pe) and table.getn(pe) ~=1 then table.insert(pe[i],table.getn(pe[i])+1,'Para alante Pagina '..(i+1)); next = table.getn(pe[i]) end if i > 1 then table.insert(pe[i],table.getn(pe[i])+1,'Para atraz pagina '..(i-1)); back = table.getn(pe[i]) end table.insert(pe[i],table.getn(pe[i])+1,'Cerrar'); exit = table.getn(pe[i]) if table.getn(pe) > 1 then say('pagina '..i..' de '..table.getn(pe)) end local e = select_table(pe[i]) if e == next then return init(i+1,ip+max) elseif e == back then return init(i-1,ip-max) elseif e == exit then return -1 else return e+ip,pe[i][e] end end return init(1,0) or -1 end local function exportstring( s ) return string.format("%q", s) end function table.save( tbl,filename ) local charS,charE = " ","\n" local file,err = io.open( filename, "wb" ) if err then return err end local tables,lookup = { tbl },{ [tbl] = 1 } file:write( "return {"..charE ) for idx,t in ipairs( tables ) do file:write( "-- Table: {"..idx.."}"..charE ) file:write( "{"..charE ) local thandled = {} for i,v in ipairs( t ) do thandled[i] = true local stype = type( v ) if stype == "table" then if not lookup[v] then table.insert( tables, v ) lookup[v] = table.getn(tables) end file:write( charS.."{"..lookup[v].."},"..charE ) elseif stype == "string" then file:write( charS..exportstring( v )..","..charE ) elseif stype == "number" then file:write( charS..tostring( v )..","..charE ) end end for i,v in pairs( t ) do if (not thandled[i]) then local str = "" local stype = type( i ) if stype == "table" then if not lookup[i] then table.insert( tables,i ) lookup[i] = table.getn(tables) end str = charS.."[{"..lookup[i].."}]=" elseif stype == "string" then str = charS.."["..exportstring( i ).."]=" elseif stype == "number" then str = charS.."["..tostring( i ).."]=" end if str ~= "" then stype = type( v ) if stype == "table" then if not lookup[v] then table.insert( tables,v ) lookup[v] = table.getn(tables) end file:write( str.."{"..lookup[v].."},"..charE ) elseif stype == "string" then file:write( str..exportstring( v )..","..charE ) elseif stype == "number" then file:write( str..tostring( v )..","..charE ) end end end end file:write( "},"..charE ) end file:write( "}" ) file:close() end function table.load( sfile ) local ftables,err = loadfile( sfile ) if err then return _,err end local tables = ftables() for idx = 1,table.getn(tables) do local tolinki = {} for i,v in pairs( tables[idx] ) do if type( v ) == "table" then tables[idx][i] = tables[v[1]] end if type( i ) == "table" and tables[i[1]] then table.insert( tolinki,{ i,tables[i[1]] } ) end end for _,v in ipairs( tolinki ) do tables[idx][v[2]],tables[idx][v[1]] = tables[idx][v[1]],nil end end return tables[1] end quest_function
     

    write_log get_coins coins_write spenden select3 table.save table.load
    http-~~-//www.youtube.com/watch?v=5avAKriuCTg

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  23. Me Gusta
    Dextrok reacted to Anthony's in Zona Mapping   
    Buenas, pedí a Keko que nos pusiera una nueva sección para enseñaros tutoriales de crear Mapas nuevos.
     
    ¿Que pienso postear?
     
    1.- Vídeo Tutoriales.
    2.- Tutoriales Escritos.
    3.- Muestras de Mapeos.
    4.- Responder vuestras dudas.
     
     
    Gracias Keko otra vez por abrir esta sección Hoy o Mañana pondré Tutoriales.
     
    PD: ¿Sabes Mapear? ¿Y quieres enseñar a la gente? Pues agregame en el Skype -> vampirito.uj
     
    Para poder hablar de que posteamos cada uno. "Porque casi todos los tutos son "iguales" así podríamos quedar en un Acuerdo para saber que posteara cada uno y EVITAR EL SPAM"
  24. Me Gusta
    Dextrok got a reaction from EzekielitohMercury in [PETICION]Quest Bienvenida   
    Pues la verdad sólo es cosa de un:

    end quedaría así:
     

    quest entrada_server begin state start begin when login begin notice_all("Bienvenido ".. pc.get_name() .." a TheBlackMt2") set_state(__COMPLETE__) end end state __COMPLETE__ begin end end
  25. Me Gusta
    Dextrok got a reaction from EzekielitohMercury in [PETICION]Quest Bienvenida   
    Pues los 3 los tienen fíjate al final:
     

    state __COMPLETE__ begin end end Ahora me explico mejor: Así tiens tu quest sin contenido:
     

    quest entrada_server begin state start begin when login begin end end end state __COMPLETE__ begin end end Si te puedes fijar hay 2 end al final, en tontal 5, para un total de 4 begins.
     
    En cambio, en la que te mostré.
     

    quest entrada_server begin state start begin when login begin end end state __COMPLETE__ begin end end El último end que crees que falta se encuentra al final de todo.
×
×
  • Crear nuevo...