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}}
},
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
Pregunta
ragnarok1515
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.