Jump to content

Fiti

Miembro
  • Contador contenido

    27
  • Ingreso

  • Última visita

  • Días ganados

    1

Actividad de reputación

  1. Me Gusta
    Fiti got a reaction from Princemueka in Imágenes para rangos de foros   
    Como siempre os traigo algo así para los foros y demás xD Éstos son discretos, así que supongo que a alguien les pueden ser de utilidad. Dejo una preview: 
     

     
    Especialmente en las configuraciones oscuras, pueden quedar bien
     
    Para descargar, os dejo el link de mediafire, sin contraseña. 
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    ¡Un saludo!
  2. Gracias
    Fiti got a reaction from Rodrigo Zacky in Imágenes para rangos de foros   
    Como siempre os traigo algo así para los foros y demás xD Éstos son discretos, así que supongo que a alguien les pueden ser de utilidad. Dejo una preview: 
     

     
    Especialmente en las configuraciones oscuras, pueden quedar bien
     
    Para descargar, os dejo el link de mediafire, sin contraseña. 
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    ¡Un saludo!
  3. Me Gusta
    Fiti got a reaction from elche595 in Imágenes para rangos de foros   
    Como siempre os traigo algo así para los foros y demás xD Éstos son discretos, así que supongo que a alguien les pueden ser de utilidad. Dejo una preview: 
     

     
    Especialmente en las configuraciones oscuras, pueden quedar bien
     
    Para descargar, os dejo el link de mediafire, sin contraseña. 
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    ¡Un saludo!
  4. Me Gusta
    Fiti got a reaction from orionxd in Imágenes para rangos de foros   
    Como siempre os traigo algo así para los foros y demás xD Éstos son discretos, así que supongo que a alguien les pueden ser de utilidad. Dejo una preview: 
     

     
    Especialmente en las configuraciones oscuras, pueden quedar bien
     
    Para descargar, os dejo el link de mediafire, sin contraseña. 
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    ¡Un saludo!
  5. Me Gusta
    Fiti got a reaction from NiiceGamer in Imágenes para rangos de foros   
    Como siempre os traigo algo así para los foros y demás xD Éstos son discretos, así que supongo que a alguien les pueden ser de utilidad. Dejo una preview: 
     

     
    Especialmente en las configuraciones oscuras, pueden quedar bien
     
    Para descargar, os dejo el link de mediafire, sin contraseña. 
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    ¡Un saludo!
  6. Gracias
    Fiti got a reaction from Jean Díaz in Imágenes para rangos de foros   
    Como siempre os traigo algo así para los foros y demás xD Éstos son discretos, así que supongo que a alguien les pueden ser de utilidad. Dejo una preview: 
     

     
    Especialmente en las configuraciones oscuras, pueden quedar bien
     
    Para descargar, os dejo el link de mediafire, sin contraseña. 
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    ¡Un saludo!
  7. Me Gusta
    Fiti got a reaction from Matias Olivieri in Imágenes para rangos de foros   
    Como siempre os traigo algo así para los foros y demás xD Éstos son discretos, así que supongo que a alguien les pueden ser de utilidad. Dejo una preview: 
     

     
    Especialmente en las configuraciones oscuras, pueden quedar bien
     
    Para descargar, os dejo el link de mediafire, sin contraseña. 
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    ¡Un saludo!
  8. Me Gusta
    Fiti got a reaction from Rinnegan in Imágenes para rangos de foros   
    Como siempre os traigo algo así para los foros y demás xD Éstos son discretos, así que supongo que a alguien les pueden ser de utilidad. Dejo una preview: 
     

     
    Especialmente en las configuraciones oscuras, pueden quedar bien
     
    Para descargar, os dejo el link de mediafire, sin contraseña. 
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    ¡Un saludo!
  9. Me Gusta
    Fiti got a reaction from LORDCarlo™ in Imágenes para rangos de foros   
    Como siempre os traigo algo así para los foros y demás xD Éstos son discretos, así que supongo que a alguien les pueden ser de utilidad. Dejo una preview: 
     

     
    Especialmente en las configuraciones oscuras, pueden quedar bien
     
    Para descargar, os dejo el link de mediafire, sin contraseña. 
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    ¡Un saludo!
  10. Me Gusta
    Fiti got a reaction from llollo300 in Intro para tu servidor   
    Bueno pues os dejo una cosilla que he hecho ahora en un ratillo por aburrimiento más que por nada.
    Lo dejo aquí, como todas mis cosas, es personalizable; Pero, si lo dejo aquí toda la gente lo copiará, y no tendría mérito ni originalidad ninguna que varios o todos los servidores tenga la misma intro. Así que para el que esté interesado, me agrege a skype: lfitil
    Preview:
  11. Me Gusta
    Fiti got a reaction from Raziel in Intro para tu servidor   
    Bueno pues os dejo una cosilla que he hecho ahora en un ratillo por aburrimiento más que por nada.
    Lo dejo aquí, como todas mis cosas, es personalizable; Pero, si lo dejo aquí toda la gente lo copiará, y no tendría mérito ni originalidad ninguna que varios o todos los servidores tenga la misma intro. Así que para el que esté interesado, me agrege a skype: lfitil
    Preview:
  12. Me Gusta
    Fiti got a reaction from Joakin47 in Banner Metin2Sample   
    Bueno os dejo una cosilla que he hecho con el único objetivo de no atascarme en el el Photoshop, ya que apenas puedo parar en mi ordenador.
     

  13. Me Gusta
    Fiti got a reaction from SeMa™ in Banner Metin2Sample   
    Bueno os dejo una cosilla que he hecho con el único objetivo de no atascarme en el el Photoshop, ya que apenas puedo parar en mi ordenador.
     

  14. Me Gusta
    Fiti reacted to cristianvar in Función para evitar inyecciones SQl con PHP   
    Exacto, pero yo, por ejemplo, cuando recién empecé con PHP y MySQL, no conocía esto, y como ningún trabajo de los que hacía era para algún proyecto importante, nunca me molesté en buscar vulnerabilidades y soluciones en mis scripts.
     
    Un saludo!
  15. Me Gusta
    Fiti reacted to Elite™ in Levelup(Metin2.es)   
    ----------------------------------
    -- Cazeria
    -- Traducida como el metin2.es
    -- Creditos: Eliteâ„¢
    ----------------------------------
    quest levelup begin
    state run begin
    when letter begin
    local current = pc.getqf("current")
    local completed_level = pc.getqf("complete");
    if current == 0 and
    pc.get_level() > completed_level and
    pc.get_level() > 1 and
    pc.get_level() < 60 then
    local lev = pc.get_level()
    pc.setqf("buttonstate", 2)
    makequestbutton("Comenzar tarea "..lev.."")
    pc.setqf("current", lev)
    pc.setqf("select", 1)
    pc.setqf("remain", special.levelup_quest[lev][2])
    setskin(NOWINDOW)
    end
    setstate(start)
    end
    end
    state start begin
    when info begin
    local lev = pc.getqf("current")
    if lev == 0 then return end
    setskin(SCROLL)
    setbgimage('level_bg.tga')
    local s = pc.getqf("select")
    if s == 0 then s = 1 end
    addimage(20,12,special.levelup_img[special.levelup_quest[lev][s*2-1]])
    setcolor(0,0,0)
    say("¡Elimina a ",mob_name(special.levelup_quest[lev][s*2-1])," !")
    say("Número de objetivos: "..special.levelup_quest[lev][s*2])
    raw_script("Recompensa: ".. special.levelup_quest[lev][5].."% de experiencia.")
    say("")
    if lev <= table.getn(special.levelup_reward1) then
    raw_script(" "..item_name(special.levelup_reward1[lev][pc.job+1]))
    else
    raw_script(" ".."Objeto Aleatorio")
    end
    raw_script(newline)
    levelup.show_mob_pos(lev)
    select("Confirmar")
    clearmapsignal()
    setskin(NOWINDOW)
    end
    when login begin
    local lev = pc.getqf("current")
    if lev != 0 then
    if pc.getqf("remain") <= 0 then
    setskin(NOWINDOW)
    pc.setqf("buttonstate", 3)
    makequestbutton(""..lev.." misión - terminada")
    else
    setskin(NOWINDOW)
    pc.setqf("buttonstate", 1)
    makequestbutton("Comenzar tarea "..lev.." ")
    end
    end
    end
    when button begin
    local lev = pc.getqf("current")
    if lev == 0 then return end
    if pc.getqf("buttonstate") == 3 then
    local s = pc.getqf("select")
    if s == 0 then s = 1 end
    say_title(" "..lev.." misión - terminada")
    say("Bien, has terminado con éxito la misión.")
    wait()
    if lev <= 20 then
    if lev <= table.getn(special.levelup_reward1) then
    pc.give_item("Nivel "..lev.." Objeto",
    special.levelup_reward1[lev][pc.job+1])
    else
    local v = number(1,100)
    if v <= special.levelup_reward3[1][1] then
    pc.give_item("Nivel "..lev.." Objeto",
    special.levelup_reward3[1][2],special.levelup_reward3[1][3])
    elseif v <= special.levelup_reward3[2][1] then
    pc.give_item("Nivel "..lev.." Objeto",
    special.levelup_reward3[2][2],special.levelup_reward3[2][3])
    elseif v <= special.levelup_reward3[3][1] then
    pc.give_item("Nivel "..lev.." Objeto",
    special.levelup_reward3[3][2],special.levelup_reward3[3][3])
    elseif v <= special.levelup_reward3[4][1] then
    pc.give_item("Nivel "..lev.." Objeto",
    special.levelup_reward3[4][2],special.levelup_reward3[4][3])
    else
    pc.give_item("Nivel "..lev.." Objeto",
    special.levelup_reward3[5][2],special.levelup_reward3[5][3])
    end
    end
    pc.give_exp_perc("Nivel "..lev.." Experiencia",
    lev, special.levelup_quest[lev][5])
    if lev == 12 or lev == 14 or lev == 16 or lev == 18 or lev == 20 then
    pc.give_item2(50083)
    say_reward(item_name(50083) .. " recibido.")
    end
    else
    local ll = lev - 20
    if lev < 26 then
    local n = table.getn(special.levelup_reward_item_21[ll])
    local t = special.levelup_reward_item_21[ll][number(1, n)]
    say_reward("Recompensa: ")
    if type(t) == 'table' then
    pc.give_item2(t[1], t[2])
    say_reward("Recibido "..item_name(t[1])..
    ""..t[2].."")
    else
    pc.give_item2(t)
    say_reward("Recibido "..item_name(t)..
    "")
    end
    end
    local reward_gold = special.levelup_reward_gold21
    local reward_exp = special.levelup_reward_exp21
    if lev >= 31 and lev <= 40 then
    reward_gold = special.levelup_reward_gold31
    reward_exp = special.levelup_reward_exp31
    elseif lev >= 41 and lev <= 50 then
    reward_gold = special.levelup_reward_gold41
    reward_exp = special.levelup_reward_exp41
    elseif lev >= 51 and lev <= 60 then
    reward_gold = special.levelup_reward_gold51
    reward_exp = special.levelup_reward_exp51
    end
     
    n = number(0, 99)
    local i = 0
    for i = 1, table.getn(reward_gold) do
    if n < reward_gold[2] then
    pc.change_money(reward_gold[1])
    say_reward("Recibes "..reward_gold[1].." Yang.")
    break
    else
    n = n - reward_gold[2]
    end
    end
     
    n = number(0, 99)
    i = 0
    for i = 1, table.getn(reward_exp) do
    if n < reward_exp[2] then
    pc.give_exp_perc("Nivel"..lev.." Experiencia",
    lev, reward_exp[1])
    say_reward("Recibes "..reward_exp[1].."% de Experiencia.")
    break
    else
    n = n - reward_exp[2]
    end
    end
    say("")
    end
    local old_lev = lev
    lev = lev + 1
     
    if lev > 1 and lev < 60 and pc.level >= lev then
    pc.setqf("buttonstate", 2)
    makequestbutton(" "..lev.." misión")
    pc.setqf("current", lev)
    pc.setqf("select", 1)
    pc.setqf("remain",special.levelup_quest[lev][2])
    setskin(NOWINDOW)
    return
    else
    pc.setqf("complete", old_lev)
    pc.setqf("current", 0)
    q.done()
    end
    elseif pc.getqf("buttonstate") == 2 then
    local lev = pc.getqf("current")
    if lev == 0 then
    q.done()
    end
    say_title("Tarea de caza:")
    say("Para la siguiente tarea de caza, tienes que")
    say("elegir cuál de los dos monstruos quieres matar.")
    local sel = select(
    mob_name(special.levelup_quest[lev][1]).." "..special.levelup_quest[lev][2].." ",
    mob_name(special.levelup_quest[lev][3]).." "..special.levelup_quest[lev][4].." "
    )
     
     
    setskin(SCROLL)
    setbgimage('level_bg.tga')
    pc.setqf("select", sel)
    addimage(20, 12, special.levelup_img[special.levelup_quest[lev][sel*2-1]])
    setcolor(0,0,0)
    say("¡Elimina a ",mob_name(special.levelup_quest[lev][sel*2-1])," .!")
    say("Número de objetivos: "..special.levelup_quest[lev][sel*2])
    raw_script("Recompensa: ".. special.levelup_quest[lev][5].."% de experiencia")
    say("")
    if lev <= table.getn(special.levelup_reward1) then
    raw_script(" "..item_name(special.levelup_reward1[lev][pc.job+1]))
    else
    say("")
    raw_script(" ".." Objeto aleatorio")
    end
    raw_script(newline)
    levelup.show_mob_pos(lev)
    local s = select("¡Bien! ¡Vamos!")
    if s == 1 then
    setskin(NOWINDOW)
    pc.setqf("remain",special.levelup_quest[lev][sel*2])
    syschat("<Tarea> ", mob_name(special.levelup_quest[lev][sel*2-1])," "..
    special.levelup_quest[lev][sel*2].." número de victorias.")
    q.set_title("mata "..mob_name(special.levelup_quest[lev][sel*2-1]).." ")
    q.set_counter("Restantes : ", pc.getqf("remain"))
    q.start()
    end
    setskin(NOWINDOW)
    clearmapsignal()
    elseif pc.getqf("buttonstate") == 1 then
    local s = pc.getqf("select")
    if s == 0 then s = 1 end
    local lev = pc.getqf("current")
    if lev != 0 then
    say_title("Tarea de caza:")
    say("Tienes que matar")
    say(pc.getqf("remain").." Número de este tipo:",mob_name(special.levelup_quest[lev][s*2-1]), "")
    say("más para completar la misión de caza.")
    local ss = select("Información sobre la misión de caza","Continuar")
     
     
    if ss == 1 then
    setskin(SCROLL)
    setbgimage('level_bg.tga')
    addimage(20,12,special.levelup_img[special.levelup_quest[lev][s*2-1]])
    setcolor(0,0,0)
    say("¡Elimina a ",mob_name(special.levelup_quest[lev][s*2-1])," !")
    say("Número de objetivos: "..special.levelup_quest[lev][s*2])
    raw_script("Recompensa: ".. special.levelup_quest[lev][5].."% de experiencia")
    say("")
    if lev <= table.getn(special.levelup_reward1) then
    raw_script(" "..item_name(special.levelup_reward1[lev][pc.job+1]))
    else
    raw_script(" ".." Objeto Aleatorio")
    end
    raw_script(newline)
    q.set_title("mata ", mob_name(special.levelup_quest[lev][s*2-1]), " ")
    q.set_counter("Restantes : ", pc.getqf("remain"))
    q.start()
    levelup.show_mob_pos(lev)
    select("Confirmar")
    setskin(NOWINDOW)
    clearmapsignal()
    end
    setskin(NOWINDOW)
    q.set_title(" matar "..mob_name(special.levelup_quest[lev][s*2-1]).." ")
    q.set_counter("Restantes:",
    pc.getqf("remain"))
    --q.set_icon(string.format("level_%02d.sub", lev))
    q.start()
    end
    end
    pc.setqf("buttonstate", -1)
    end
    when levelup begin
    local lev = pc.getqf("current");
    if lev == 0 then
    lev = pc.level
     
    if lev < 2 or lev > 60 then return end
    pc.setqf("buttonstate", 2)
    makequestbutton(""..lev.." misión")
    pc.setqf("current", lev)
    pc.setqf("select", 1)
    pc.setqf("remain", special.levelup_quest[lev][2])
    setskin(NOWINDOW)
    end
    end
    when kill begin
    local sel = pc.getqf("select")
    if sel == 0 then
    sel = 1
    end
    local lev = pc.getqf("current")
    if lev != 0 and npc.race == (special.levelup_quest[lev][sel*2-1]) and pc.getqf("buttonstate") == -1 then
    local remain = pc.getqf("remain") - 1
    if remain <= 0 then
    pc.setqf("remain", 0)
    q.set_counter_value(0)
    setskin(NOWINDOW)
    makequestbutton(" "..lev.." Misión - terminada")
    pc.setqf("buttonstate", 3)
    else
    pc.setqf("remain", remain)
    q.set_counter_value(remain)
    end
    end
    end
    function show_mob_pos(lev)
    map_index = pc.get_map_index()
    if map_index <= 0 then
    test_chat("show_mob_pos: map_index("..map_index..") < 0")
    return
    end
    if map_index > table.getn(special.lvq_map) then
    test_chat("show_mob_pos: map_index("..map_index..") > max("..table.getn(special.lvq_map)..")")
    return
    end
    lev_quest_list = special.lvq_map[map_index]
    if not lev_quest_list then
    test_chat("show_mob_pos: special.lvq_map[map_index("..map_index..")] is nil")
    return
    end
    mob_pos_list = lev_quest_list[lev]
    if not mob_pos_list then
    test_chat("show_mob_pos: special.lvq_map[map_index("..map_index..")][lev("..lev..")] is nil")
    return
    end
    table.foreachi(
    mob_pos_list,
    function (n, mob_pos)
    test_chat("addmapsignal("..mob_pos[1]..", "..mob_pos[2]..")")
    addmapsignal(mob_pos[1]*100, mob_pos[2]*100)
    end
    )
    setmapcenterposition(200, 0)
    end
    end
    end

  16. Me Gusta
    Fiti reacted to KeKo in [Capitulo Especial] Funciones de uso habitual   
    Buenas zoneros! Despues de unas pequeñas ( :menti: ) vacaciones sin hacer ningún capítulo vuelvo a la carga cn el curso de creación de quests.
     
    El capítulo de hoy es especial, ya que no sigue el recorrido que estamos haciendo raul y yo a la hora de enseñaros a hacer quests de metin2. Os hemos estado enseñando qué es una quest, como se estructura, cuales son los elementos que la forman, etc pero nos faltaba contaros un poco sobre las acciones que realiza una quest.
     
    Por lo tanto esta vez os explicaré como se utilizan unas cuantas funciones que usareis con mucha frecuencia mientras hagais quests básicas de metin2.
     
     
    Antes de nada: Qué es una función en una quest?
     
    Como tengo dicho en este curso:
     
    Por lo tanto: Una funcion es una accion que se desarrolla en una quest. Si lo pensais de esta manera, los otros elementos de una quest son como preposiciones, adverbios, etc que ayudan a enlazar o condicionar las funciones: que son como los verbos dentro del lenguaje de las quests (si os fijais la funcion say es como pensar en el verbo decir).
     
     
    En la lengua hay muchos verbos, hay muchas funciones de las quests tambien??
     
    Por supuesto! La cantidad de funciones que nos permite utilizar un game de metin2 es enorme, y es como la tabla periódica de los elementos: os puede acojonar diciendo que hay que saberselos todos, pero no es necesario saberselos todos, sino entender como funcionan (saberse unos cuantos claros) y mediante la práctica y la revision de otras quests aprender a utilizarlos.
     
     
    Y cuando estoi haciendo una quest que funcion debo usar??
     
    Eso depende de la quest, si tu quieres hacer una quest en la que un npc te habla pues usarás la funcion say, si quieres dar un item a un personaje utilizarás la funcion pc.give_item2, etc Cada quest es un mundo, pero vereis que hay una serie de funciones que se suelen utilizar con mas frecuencia.
     
    Por lo tanto, me dejo de explicaciones y vamos al rollo
     
     
    Funciones habituales y como utlizarlas:
     
    Funciones numero 1 - Say , chat y notice_all:
     
    La que para mi es la funcion más utilizada de todas es la funcion:
     

    say Esta funcion nos permite que el personaje que está jugando a nuestro servidor vea un diálogo en su pantalla, ya sea un diálogo empezado por un item, por un npc, en un momento concreto (logeandote, siendo cierto nivel, entrado a cierto mapa...).
     
    El funcionamiento básico de la funcion say es el siguiente:
     

    say("Texto") Como veis ponemos la funcion say, luego abrimos un partentesis y entre " " ponemos el texto que queremos que se vea en el juego. Ojo! Si se os cuela alguno de los " " al principio o al final del texto, la quest no irá correctamente.
     
    Cada vez que que pongais otro say os pondra la nueva linea debajo de la anterior, es decir:
     

    say("Hola keko") say("estas enseñando a usar el say") Este texto tendra 2 lineas, la primera dirá: hola keko, y la segunda estará justo debajo de la primera y dirá: estas enseñando a usar el say.
     
    Un pequeño detalle: cuando usamos un say es como cuando escribimos en una libreta, no podemos escribir infinitamente, sino que cada linea tiene una cantidad de letras en las que pasa a la siguiente linea aunque no pongamos otro say.
     
    Lo bueno es que el zonero Elite ha compartido un archivo para el root de vuestro cliente que os permite alagar ese número de palabras, y aqui lo teneis en el spoiler por si quereis ponerlo en vuestro cliente, si no tened en cuenta que muchas palabras en un say harán que se escriban en varias lineas.
     
     
     
     
    Ahora otro detalle: si queremos dejar una linea en blanco (seria como darle a enter si escribieramos normal) simplemente tendreis que poner un say sin nada dentro, de esta manera:
     

    say("") Es algo que yo os aconsejo como creador de quests, ya que quedan mucho mas ordenado un diálogo con espacios entre párrafos, y aunque puedes ponerlo todo seguido siempre queda más bonito esteticamente.
     
    Otra cosa a tener en cuenta es que hay varios tipos de says, que son los siguientes:
     

    say_title("Curso de quests: Capitulo especial") - El say_title nos permite escribir (como dice su nombre) el título de un diálogo, que se distingue porque sale de color blanco en la quest.
     

    say_reward("Enseña a metin2zone como usar el say") - El say_reward significa literalmente que es un say para una recompensa, y si lo ponemos en nuestra quests se verá de un color mas oscuro que el resto del diálogo.
     

    say_red("Metin2Zone curso de quests") say_blue("Metin2Zone curso de quests") say_yellow("Metin2Zone curso de quests") - El say_color se utiliza si antes habías añadido al questlib de vuestro servidor la libreria de BlackYuko que hace que las funciones say_red/blue/green/etc enlacen con la funcion que permite cambiar el color de un say y así poder ver en nuestros diálogos lineas de diferentes colores.
     
    En el spoiler teneis el post de BlackYuko por si quereis usar says en colores.
     
     
     
     
    Por último, puede haber casos en los que querais mostrar una variable en un say (el siguiente capi habla sobre las variables no os preocupeis si no os enterais mucho) lo hareis de la siguiente manera:
     

    say("Hola, me llamo "..pc.get_name().."") Como veis, para mostrar la variable del nombre teneis que ponerlo entre ".. .." con la funcion que quieres mostrar como texto entre ellos.
     
    La funcion chat funciona igual que la funcion say, pero simplemente os saldrá el dialogo escrito en la barra de chat en vez de una ventana.
     

    chat("Hola") Por ultimo otra funcion muy comun es la de notice_all("Texto"), que escribira el dialogo como si un gm hablara poniendo /n
     

    notice_all("Tonto el que lo lea") Esta funcion tiene una variante que es notice_in_map, que no se utiliza mucho pero que hace lo mismo que un notice_all pero solo en el mapa en el se activa el dialogo.
     

    quest ejemplo begin state start begin when 70045.use with pc.get_map_index() == 103 begin notice_in_map("los que esteis en este mapa me leereis") end end end Os habreis quedado pensando: tanto rollo para aprender a usar el say??? Pues sí, por mucho que parezca la funcion más básica tiene sus detalles que es bueno saber para utlizarla lo mejor posible. 
    Funciones numero 2 : Los pc.algo
     
    En la ultima parte de la explicacion del say os habreis fijado (espero) que he usado la funcion pc.get_name() para explicaros como mostrar eso en una quest. Pues hay una serie de funciones que afectan al personaje al que va encaminada la quest: ya sea para cojer información del jugador al que afectan, para poner una condicion al personaje, o para añadir algo informacion al personaje.
     
    Esta serie de funciones son las que llamaremos pc.algo y son muy variadas (asi que solo os contaré como funcionan algunas que usareis habitualmente)
     
    - pc.get_name() , pc.get_level() , pc.get_empire() , pc.get_map_index() , pc.get_hp() , pc.get_sp() , pc.get_exp() , pc.get_job() , pc.get_sex() , pc.get_local_x , pc.get_local_y , etc : Cada una de estas funciones nos proporciona informacion del personaje al que afectan y en el orden en el que están: nos dan su nombre, nivel, reino, mapa en que esta, cantidad de hp, cantidad de sp, de exp, profesion (cuerpo/magia negra, etc) , sexo , cordes x en la que se encuentra y cordes y en las que se encuentra.
     
    Para usarlas simplemente debereis escribirlas asi como las puse. Ojo! No os olvideis nunca del parentesis en funciones que lo necesitan, o no funcionaŕan (pc.get_map_index == 240 esta mal escrito, tiene que ser pc.get_map_index() == 240).
     
    Se utiliza para 2 cosas: comparar el nivel del pj con el nivel que queramos a la hora de hacer una condicion, o para mostrarlo en un diálogo (recordad que es entre ".. .." en el segundo caso). Veamos ejemplos de algunas de ellas.
     

    quest nombre begin state start begin when login with pc.get_hp() <= 0 begin chat("jajajajaja estas muerto") end end end
    quest nombre2 begin state start begin when login begin chat("Bienvenido al servidor "..pc.get_name()..", que lo pases bien") end end end  

    quest item begin state start begin when item.use begin if pc.get_empire() == 1 then notice_all("Soi del reino shinsoo") elseif pc.get_empire() == 2 then notice_all("Soi del reino chunjoo") elseif pc.get_empire() == 3 then notice_all("Soi del reino jinno") end end end end
    quest exp begin state start begin when login with pc.get_exp() < 0 begin local exppj = pc.get_exp() chat("Anda tienes exp negativa") chat("te la pondre en 0 otra vez") pc.give_exp2(-exppj) end end end  
     
     
     

    quest nivel begin state start begin when levelup begin chat("Has subido a nivel "..pc.get_level()..", enorabuena") end end end Bien creo que ya os haceis una idea de como va la cosa, pasemos a otras funciones del tipo pc.algo muy utilizadas:
     
    - pc.give_item2("iditem" , cantidad) , pc.remove_item("iditem", cantidad) , pc.count_item("iditem", cantidad) : Otras de las funciones mas utlizadas de todas. Estas funcione nos permite dar un objeto, quitar un objeto o comprobar si tiene un objeto el jugador al que afecte la quest.
     
    La forma de escribir esta funcion es la que pongo ahi: especificando en el parentesis la id del item y la cantidad del mismo. Veamos algunos ejemplos:
     

    quest toma begin state start begin when 20095.chat."Regalitooo" begin say("Hola feo, quieres un item?") say("") local regalo = select ("Si" , "No") if regalo == 1 then pc.give_item2("27003", 200) -- aqui esta el que nos interesa chat("toma potas!") elseif regalo == 2 then return end end end end
    quest curso begin state start begin when 70044.use begin pc.give_item2("71042", 1) pc.remove_item("70044", 1) end end end
    quest hola begin state start begin when 20095.chat."Condiciones" begin if pc.count_item("27003") < 200 then say("Vaya no tienes lo que quiero") say("vente otro dia") return end say("Yupi tienes mis potas!") say("me las quedo y te doi unas peores muajaja") pc.remove_item("27003", 200) pc.give_item2("27002", 200) end end end Vamos con otras funcion muy habituales:
     
    - pc.warp(cordesx , cordesy) : Esta funcion nos permite llevar a un personaje a unas cordes concretas, que debemos especificar en el parentesis, poniendo al final de las cordes los dos ceros tipicos de un atlasinfo.
     

    quest porterdemano begin state start begin when 70045.use begin say_title("Porter") say("") say("Nos vamos a otro mapa?") local port = select ("Vale" , "Paso") if port == 1 then pc.warp(510400 , 408800) elseif port == 2 then return end end end end - pc.mount(idmontura, tiempo) : Esta funcion os servira para montar al personaje en un mob (que se suele ser uno que se pueda montar xd). Debemos poner en el parentesis la id de la montura y el tiempo que queremos que esté montado.
     
    Nota: el tiempo se puede escribir en segundos o multiplicando. Si lo hacemos en segundos pues ponemos por ejemplo 60 y durará un minuto, y si lo hacemos multiplicando 60*5 son 5 minutos, 60*60*5 son cinco horas y así.
     

    quest montura begin state start begin when 70044.use begin pc.mount(20110, 60*30) pc.remove_item("70044" , 1) end end end - pc.change_money(cantidad) y pc.give_exp2(cantidad): Estas dos funciones os sirven para dar yang (change_money) o exp a un personaje (give_exp2).
     
    Para usarlas simplemente debeis poner entre el parentesis la cantidad de yang o exp que quereis dar al personaje
     

    quest famoso begin state start begin when 20094.chat."Soi famoso" begin say_title("La fama") say("") say("Si quieres hablarme") say("tendras que darme 500k") local fama = select ("Lo hare" , "Paso") if fama == 1 then pc.change_money(-500000) say("Ala, ya hablaste conmigo") elseif fama == 2 then return end end end end
    quest expmas begin state start begin when 70042.use begin pc.give_exp2(100000) pc.remove_item("70042", 1) chat("Toma exp!") end end end - pc.is_gm() , pc.is_dead() , pc.is_guild_master() , pc.is_polimorphed() : Este tipo de funciones os permiten que tenga lugar la accion si el personaje cumple lo que dice la funcion, como puede ser ser gm, estar muerto, ser jefe de gremio, estar polimorfado, etc
     

    quest gm begin state start begin when login with pc.is_gm() begin chat("Bienvenido a tu servidor gm") end end end
    quest caballo begin state start begin when 70045.use begin if pc.is_polymorphed() then chat("No puedes montarte a una montura polimorfado") return end pc.mount("20111", 60*60*60*60*5) end end end Y por supuesto hay muchas mas funciones que afectan a un personaje, pero tendreis que ir descubriendolas y probandolas :yaoming: , yo solo os dire algunas.
     
    3 - Funciones varias:
     
    Veamos ahora algunas funciones que no son diálogos ni pc.algo:
     
    - mob.spawn(mob, cordesx, cordesy, cantidad) : Con esta funcion podreis invocar un mob en el mapa en el que os encontreis en unas cordes concretas.
     
    Para usarla ponemos la id del mob, las cordes x, las cordes y y la cantidad de ese mob.
     

    quest itemmaldito begin state start begin when 70042.use begin chat("Ha aparecido un monstruo en el mapa") mob.spawn(1903, 340, 250, 1) pc.remove_item("70042" , 1) end end end - affect.add_collect(apply.bonus,cantidad,tiempo) y affect.remove_collect(apply.bonus,cantidad,tiempo): Estas dos funciones os permiten dar un bonus a un personaje, durante un tiempo determinado y quitarselo.
     
    Para usarlas pondremos en el parentesis el nombre que el bonus tiene en la tabla item_attr o item_attr_rare del navicat, la cantidad, y el tiempo (como explique antes) que durará. Si quereis que deje de tener efecto el bonus antes del tiempo estipulado pondreis la funcion igual pero con affect.remove en vez de affect.add.
     

    quest fuerza begin state start begin when 70072.use begin affect.add_collect(apply, ATT_SPEED, 15, 60*15) chat("Has ganado 15% de velocidad de ataque") chat("durante media hora, aprovechala") end end end - horse.summon() , horse.unsummon(), horse.set_level("nivel") , horse.advance() , horse.ride(), etc: Las funciones tipicas de un caballo, como son las de invocarlo, mandarlo al establo, subirlo a un nivel concreto , subirlo un nivel o montar el caballo.
     
    La funcion de ponerle un nivel debe llevarlo en el parentesis:
     

    quest librocaballo begin state start begin when 50053.use begin horse.summon() horse.ride() end end end - pc.setqf y pc.getqf, game.set_event_flag y game.get_event_flag : Estas 4 funciones son muy comunes pero tendrán sus capítulos aparte explicando su funcionamiento.
     
    Como veis hay muchisimas funciones y aqui solo os he explicado unas pocas, si quereis saber todas las que hay yo suelo mirarlo en este post:
     
     
     
     
    Y bueno eso es todo amigos!! El mundo de las quest se os va desvelando cada vez más, espero que ahora ya podais hacer mejor vuestras quests y preparaos porque va a haber un examen!! :trolldad:
     
    Y por terminar, recordad!!
     
    :pokerface:
×
×
  • Crear nuevo...