Jump to content
  • 0

Ayuda con esta quest!


ragnarok1515

Pregunta

Hola metin2 zone, hace tiempo tengo esta quest de biologo, funciona bien y cumple la funcion pero tiene un pequeño error de sysser que se me repite todo el rato. No he podido localizar el problema. Alguien experto en lua que pueda ayudarme? gracias de antemano. 

Aqui dejo el error: 

SYSERR: Apr 19 01:55:30 :: RunState: LUA_ERROR: locale/germany/quest/object/state/biologo_camilo:45: attempt to index field `?' (a nil value)
SYSERR: Apr 19 01:55:30 :: WriteRunningStateToSyserr: LUA_ERROR: quest biologo_camilo.mision leave

aqui la quest:

 

quest biologo_camilo begin
    state start begin
        when login with pc.get_level() <= 170 begin
            clear_letter()
        end
        function info()
            return{
                [0] = { -- nivel
                    {30, 30006, 20}, -- nivel_mision, ítem a entregar, cantidad del ítem a entregar, map index
                    {635, 636, 637}, -- mobs que dropean el ítem
                    {{8, 10}} -- bonus (attr, value) formato: {{attr1, value1}, {attr2, value2}, {attr3, value3}}
                    },
                    
                [1] = {
                    {40, 30047, 25}, 
                    {703, 704, 705, 706, 707},
                    {{7, 5}}
                    },
                    
                [2] = {
                    {50, 30015, 30}, 
                    {1001, 1002, 1003, 1004},
                    {{54, 60}}
                    },
                    
                [3] = {
                    {60, 30050, 35}, 
                    {1101, 1103, 1104, 1105, 1106},
                    {{53, 50}}
                    },
                    
                [4] = {
                    {70, 30165, 30}, 
                    {2301, 2302, 2303, 2304, 2305},
                    {{8, 10}, {65, 10}}
                    },
                    
                [5] = {
                    {80, 30166, 35}, 
                    {1401, 1402, 1403, 1601, 1602, 1603},
                    {{7, 6}, {64, 10}}
                    },
                    
                [6] = {
                    {85, 30167, 15}, 
                    {2311, 2312, 2313, 2314, 2315, 7024},
                    {{78, 10}, {79, 10}, {80, 10}, {81, 10}, {1, 100}}
                    },
                    
                [7] = {
                    {90, 30168, 15}, 
                    {691, 693, 791, 1306, 1307, 1093, 1901, 1903, 2091, 2206, 2207, 2307, 2491, 2492, 2493, 2597, 2598},
                    {{59, 8}, {60, 8}, {61, 8}, {62, 8}, {1, 100}}
                    }
            }
        end
            
        when login or levelup with pc.get_level() >= biologo_camilo.info()[pc.getqf("blevel")][1][1]
                                and pc.get_level() <= biologo_camilo.info()[table.getn(biologo_camilo.info())][1][1] and pc.get_level() <= 170 begin
            local v = find_npc_by_vnum(20084)
            if v != 0 then
                target.vid("__TARGET__", v, "Chaegirab")
            end
            send_letter("¡Ve con el biólogo!")
        end
        when button or info begin
            say_title("!Ve con el biólogo!")
            say("¡El biólogo está buscando gente!")
            say("Búscalo y pregúntale si necesita")
            say("ayuda con sus investigaciones.")
            say("")
        end
        when __TARGET__.target.click or 20084.chat."Busco ayuda..." with pc.get_level() <= 170 begin
            target.delete("__TARGET__")
            say_npc()
            say("Hola joven guerrero,")
            say("estaba buscando gente dispuesta a ayudarme con")
            say("mis investigaciones de monstruos y de los cambios")
            say("que están ocurriendo en nuestro mundo.")
            say("")
            say_reward("¡Lea cuidadosamente esta información!")
            say("")
            wait()
            say_title("Investigacion del biólogo")
            say("Mi investigacion sobre monstruos tiene que")
            say("ver con ciertos materiales que sueltan")
            say("algunos monstruos de todo el continente.")
            say("Tráeme los materiales que necesito de los")
            say("monstruos que estoy investigando.")
            say("y a cambio te recompensaré muchísimo!")
            say_reward("ADVERTENCIA: No podras completar estas misiones")
            say_reward("si eres mayor del nivel 170.")
            say("")
            clear_letter()
            set_state(mision)
        end
    end
    state mision begin
        
        when letter begin
            local s = biologo_camilo.info()
            local blevel = pc.getqf("blevel")
            local item_vnum = s[blevel][1][2]
            send_letter(item_name(item_vnum))
            if pc.count_item(item_vnum) > 0 then
                local v = find_npc_by_vnum(20084)
                if v != 0 then
                    target.vid("__TARGET__", v, "Chaegirab")
                end
            end
        end
        when button or info begin
            local s = biologo_camilo.info()
            local blevel = pc.getqf("blevel")
            local item_vnum = s[blevel][1][2]
            local item_max = s[blevel][1][3]
            local faltantes = item_max - pc.getqf("bcount")
            say_npc()
            say("Hola joven guerrero,")
            say("Llévale al biólogo:")
            say_item_vnum(item_vnum)
            say("Te faltan "..faltantes.." por entregar.")
        end
        
        function isInList(vnum)
            local s = biologo_camilo.info()
            local blevel = pc.getqf("blevel")
            for i = 1, table.getn(s[blevel][2]) do
                if vnum == s[blevel][2] then
                    return true
                end
            end
        end
        
        when kill with biologo_camilo.isInList(npc.get_race()) begin
            local s = biologo_camilo.info()
            local blevel = pc.getqf("blevel")
            local item_vnum = s[blevel][1][2]
            if number(1, 50) == 1 then
                game.drop_item_with_ownership(item_vnum)
            end
        end
        
        when __TARGET__.target.click or 20084.chat."te traigo material" with pc.get_level() <= 170 begin
            target.delete("__TARGET__")
            local s = biologo_camilo.info()
            local blevel = pc.getqf("blevel")
            local item_vnum = s[blevel][1][2]
            local item_max = s[blevel][1][3]
            say_title(item_name(item_vnum))
            say("Hola "..pc.get_name().."!")
            say("Tienes ya los materiales?")
            say("")
            wait()
            say_title(item_name(item_vnum))
            say("Has venido a traerme "..item_name(item_vnum).."?")
            say("estoy verificando que lo tengas en el inventario..")
            if pc.is_gm() then
                pc.setqf("duration", get_time()+0)
            end
            if pc.count_item(item_vnum) < 1 then
                chat_npc("no encuentro "..item_name(item_vnum).." en tu inventario, no puedo investigar.")
                return
            end
            if get_time() < pc.getqf("duration") then 
                chat_npc("espera, aún estoy investigando. Tráemelo más tarde.")
                return
            end
            local bcount = pc.getqf("bcount")+1
            if bcount >= item_max then
                pc.remove_item(item_vnum)
                say("Felicitaciones!")
                say("Me has traido todos los objetos!")
                say("muchas gracias, con esto finalizo mi estudio.")
                say("")
                say_reward("Recompensa: ")
                for i = 1, table.getn(s[blevel][3]) do
                    local attr = s[blevel][3][1]
                    local value = s[blevel][3][2]
                    say(apply_human[attr][2].." +"..value..apply_human[attr][3])
                    affect.add_collect(attr, value,60*60*24*365*60)
                end
                pc.setqf("blevel", pc.getqf("blevel")+1)
                pc.setqf("bcount", 0)
                pc.setqf("duration", get_time())
                if pc.getqf("blevel") >= table.getn(s) then
                    set_state(__END__)
                end
                set_state(start)
            else
                local restantes = item_max - pc.getqf("bcount") - 1
                say("Ooh...encontraste "..item_name(item_vnum).."?")
                say("Déjame que lo estudie...")
                say("...")
                say("parece que está en buen estado.")
                say("Te queda por traerme "..restantes.."!")
                say("")
                pc.remove_item(item_vnum)
                pc.setqf("duration", get_time()+0)
                pc.setqf("bcount", bcount)
            end
        end
    end
    state __END__ begin
    end
end

Enlace para comentar
Compartir en otros sitios

1 respuesta a esta pregunta

Mensajes recomendados

Unirse a la conversación

Puedes publicar ahora y registrarte más tarde. Si tienes una cuenta, regístrate para publicar con su cuenta.

Guest
Responder esta pregunta...

×   Has pegado contenido con formato .   Eliminar formato

  Only 75 emoji are allowed.

×   Tu enlace se ha incorporado automáticamente.   Mostrar un enlace en su lugar

×   Se ha restaurado el contenido anterior. .   Borrar editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recientemente navegando por este tema   0 miembros

    • No hay usuarios registrados visitando esta página.
×
×
  • Crear nuevo...