potinho
Intermediate OT User
I have this script to show monster life, exp and loots:
But give a error with specific monster, like "Elder Beholder", this monster exists in server. Follow error:
2022-07-06 17:19:05 - [Error - TalkAction Interface]
2022-07-06 17:19:05 - data/talkactions/scripts/info.lua
nSay
2022-07-06 17:19:05 - Description:
2022-07-06 17:19:05 - data/lib/100-shortcut.lua:260: attempt to index a boolean value
2022-07-06 17:19:05 - stack traceback:
2022-07-06 17:19:05 - data/lib/100-shortcut.lua:260: in function 'getItemNameById'
2022-07-06 17:19:05 - data/talkactions/scripts/info.lua:22: in function 'getMonsterLootItens'
2022-07-06 17:19:05 - data/talkactions/scripts/info.lua:48: in function <data/talkactions/scripts/info.lua:38>
Can u guys help me to fix?
Lua:
function ExistMonsterByName(name) -- by vodka
local monster = io.open("data/monster/monsters.xml", "r"):read("*all")
local get = monster:lower():match('name="' .. name:lower() ..'"')
if get == nil or get == "" then
return false
end
return true
end
function getDirMonsterByNameMonster(name)
local t = {}
local monster = io.open("data/monster/monsters.xml", "r")
for i in monster:read("*a"):gmatch('<monster name="'..tostring(name)..'" file="(.-)"/>') do
table.insert(t, tostring(i))
end
return t[1] or 0
end
function getMonsterLootItens(name)
local dir = "data/monster/"..getDirMonsterByNameMonster(name)..""
local monster = io.open(""..dir.."", "r")
str = ""
for i in monster:read("*a"):gmatch('id="(.-)"') do
str = ""..str.." - "..getItemNameById(i)..""
end
return str
end
function getAllMonster()
local str = ""
local monster = io.open("data/monster/monsters.xml", "r")
str = "Voce digitou incorretamente o nome do monstro veja a lista de monstro\n"
for i in monster:read("*a"):gmatch('<monster name="(.-)"') do
str = ""..str.." - "..i..""
end
return str
end
function getAttrMonster(name)
return "Life = "..getMonsterInfo(name).health.."\nExp = "..getMonsterInfo(name).experience.."\n"
end
function onSay(cid, words, param, channel)
if param == "" or not param or param == " " then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to enter the monster's name.")
return true
end
local name = param:lower():gsub("%p", "")
if not ExistMonsterByName(name) then
doShowTextDialog(cid, 1397, getAllMonster()) return true
end
local name = name:gsub("(%l)(%w*)", function(a,b) return string.upper(a)..b end)
doShowTextDialog(cid, 1397, "Info Monster "..name.."\n"..getAttrMonster(name).."\n\nLoots = "..getMonsterLootItens(name).."")
return true
end
But give a error with specific monster, like "Elder Beholder", this monster exists in server. Follow error:
2022-07-06 17:19:05 - [Error - TalkAction Interface]
2022-07-06 17:19:05 - data/talkactions/scripts/info.lua
2022-07-06 17:19:05 - Description:
2022-07-06 17:19:05 - data/lib/100-shortcut.lua:260: attempt to index a boolean value
2022-07-06 17:19:05 - stack traceback:
2022-07-06 17:19:05 - data/lib/100-shortcut.lua:260: in function 'getItemNameById'
2022-07-06 17:19:05 - data/talkactions/scripts/info.lua:22: in function 'getMonsterLootItens'
2022-07-06 17:19:05 - data/talkactions/scripts/info.lua:48: in function <data/talkactions/scripts/info.lua:38>
Can u guys help me to fix?