carlinhous1996
New Member
could someone help me with this error please?
[Error - Npc interface]
data/npc/scripts/guildbank.luanCreatureSay
Description:
data/npc/scripts/guildbank.lua:63: attempt to call global 'ou' (a nil value)
stack traceback:
data/npc/scripts/guildbank.lua:63: in function 'callback'
data/npc/lib/npcsystem/npchandler.lua:383: in function 'onCreatureSay'
data/npc/scripts/guildbank.lua:8: in function <data/npc/scripts/guildbank.lua:8>
Lua:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function writeBankFile(guildname, name, amount, operation)
local file = io.open("guild_bank/" .. guildname .. ".txt", "a+")
if file then
file:write(name .. " - " .. operation .. " - " .. amount .. " - " .. os.date("%c") .. "\n")
file:close()
return true
end
return false
end
function testGuildFile(guildname)
local file = io.open("guild_bank/" .. guildname .. ".txt", "r")
if file then
file:close()
return true
end
return false
end
function getBankLog(guildname)
local file = io.open("guild_bank/" .. guildname .. ".txt", "r")
local content = file:read("*a")
file:close()
return content
end
function creatureSayCallback(cid, typ, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
local STG_ACCOUNT = 950
local STG_WITHDRAW_PERMISSION = 951
local STG_DEPOSIT_PERMISSION = 952
local guild_rank = getPlayerGuildLevel(cid)
local guild = getPlayerGuildId(cid)
if msgcontains(msg, "guild bank") then
if not hasGuild(cid) then
selfSay("Isto e o Guild Bank, " .. getCreatureName(cid) .. ". Voce precisa de uma guilda para abrir uma conta aqui.", cid)
elseif getGuildStorageValue(guild, STG_ACCOUNT) == 1 then
selfSay("Vejo aqui que sua guilda ja tem uma conta. Voce gostaria de {manage}?", cid)
talkState[talkUser] = 1
elseif guild_rank >= 3 then
selfSay("Sua guilda ainda nao tem uma conta. Gostaria de {create}?", cid)
talkState[talkUser] = 2
else
selfSay("Sinto muito, sua guilda ainda nao tem uma conta conosco. Por favor, diga ao seu lider para vir e criar um aqui.", cid)
end
elseif msgcontains(msg, "manage") and talkState[talkUser] == 1 then
local str = guild_rank < 3 and "OK entao. Voce pode verificar o {balance}, {withdraw} or {deposit}." ou "Ok, entao. Voce pode verificar o {balance}, a transaçao {list}, {withdraw}, {deposit} ou gerenciar contas {permissions}."
selfSay(str, cid)
talkState[talkUser] = 3
elseif msgcontains(msg, "create") and talkState[talkUser] == 2 then
selfSay("Para criar sua conta, precisamos definir algumas permissoes. Existem 3 niveis de permissao: 1 - members, 2 - vice-leaders, 3 - leaders. Para retirar dinheiro da conta da guilda, qual permissao voce deseja definir?", cid)
talkState[talkUser] = 4
elseif talkState[talkUser] == 4 then
local permission, permissions = tonumber(msg), {1, 2, 3}
if isInArray(permissions, permission) then
setGuildStorageValue(guild, STG_WITHDRAW_PERMISSION, permission)
selfSay("Ok. A permissao de retirada esta definida. Agora, para depositar dinheiro na conta da sua guilda, qual permissao voce deseja definir?", cid)
talkState[talkUser] = 5
else
selfSay("Essa nao era uma permissao valida. existem 3 permission levels: 1 - members, 2 - vice-leaders, 3 - leaders.", cid)
end
elseif talkState[talkUser] == 5 then
local permission, permissions = tonumber(msg), {1, 2, 3}
if isInArray(permissions, permission) then
setGuildStorageValue(guild, STG_DEPOSIT_PERMISSION, permission)
setGuildStorageValue(guild, STG_ACCOUNT, 1)
selfSay("Ok. A permissao de deposito esta definida e sua conta de guilda foi criada com sucesso. Voce gostaria de fazer um {deposit}?", cid)
talkState[talkUser] = 3
else
selfSay("Essa nao era uma permissao valida. Existem 3 niveis de permissao: 1 - members, 2 - vice-leaders, 3 - leaders.", cid)
end
elseif msgcontains(msg, "withdraw") and talkState[talkUser] == 3 then
if guild_rank >= getGuildStorageValue(guild, STG_WITHDRAW_PERMISSION) then
selfSay("Quanto voce gostaria de retirar?", cid)
talkState[talkUser] = 6
else
selfSay("Desculpe, mas voce nao tem permissao para sacar dinheiro desta conta. Fale com o lider da sua guild.", cid)
end
elseif talkState[talkUser] == 6 then
local withdraw_amount = tonumber(msg)
local guild_balance = getGuildBalance(guild)
if withdraw_amount and withdraw_amount >= 1 and guild_balance > withdraw_amount then
withdraw_amount = math.floor(withdraw_amount)
if doGuildAddBalance(guild, - withdraw_amount) then
doPlayerAddMoney(cid, withdraw_amount)
selfSay("Feito. Voce gostaria de mais alguma coisa?", cid)
writeBankFile(getGuildName(guild), getCreatureName(cid), withdraw_amount, "withdraw")
talkState[talkUser] = 3
else
selfSay("Ocorreu um erro e a transacao nao pode ser concluida.", cid)
talkState[talkUser] = 3
end
else
selfSay("Voce nao pode sacar esse valor da conta da sua guilda. seu saldo e " .. guild_balance .. ".", cid)
end
elseif msgcontains(msg, "deposit") and talkState[talkUser] == 3 then
if guild_rank >= getGuildStorageValue(guild, STG_WITHDRAW_PERMISSION) then
selfSay("Quanto voce gostaria de depositar?", cid)
talkState[talkUser] = 10
else
selfSay("Desculpe, mas voce nao tem permissao para depositar dinheiro nesta conta. Fale com o lider da sua guilda.", cid)
end
elseif talkState[talkUser] == 10 then
local deposit_amount = tonumber(msg)
local guild_balance = getGuildBalance(guild)
if deposit_amount and math.floor(deposit_amount) > 0 then
deposit_amount = math.floor(deposit_amount)
if doPlayerRemoveMoney(cid,deposit_amount) then
doGuildAddBalance(guild, deposit_amount)
writeBankFile(getGuildName(guild), getCreatureName(cid), deposit_amount, "deposit")
selfSay("Feito. Voce gostaria de mais alguma coisa?", cid)
talkState[talkUser] = 3
else
selfSay("Me desculpe, mas Voce nao tem tanto dinheiro.", cid)
end
else
selfSay("Por favor, nao desperdice meu tempo.", cid)
end
elseif msgcontains(msg, "balance") and talkState[talkUser] == 3 then
selfSay("O saldo da conta e " .. getGuildBalance(guild) .. ". Ha algo mais em que posso ajuda-lo?", cid)
elseif msgcontains(msg, "permissions") and talkState[talkUser] == 3 and guild_rank >= 3 then
selfSay("Existem 3 niveis de permissao: 1 - members, 2 - vice-leaders, 3 - leaders. Para retirar dinheiro da conta da guilda, qual permissao Voce deseja definir?", cid)
talkState[talkUser] = 7
elseif talkState[talkUser] == 7 then
local permission, permissions = tonumber(msg), {1, 2, 3}
if isInArray(permissions, permission) then
setGuildStorageValue(guild, STG_WITHDRAW_PERMISSION, permission)
selfSay("OK. A permissao de retirada esta definida. Agora, para depositar dinheiro na conta da sua guilda, qual permissao Voce deseja definir?", cid)
talkState[talkUser] = 8
else
selfSay("Essa nao era uma permissao valida. Existem 3 niveis de permissao: 1 - members, 2 - vice-leaders, 3 - leaders.", cid)
end
elseif talkState[talkUser] == 8 then
local permission, permissions = tonumber(msg), {1, 2, 3}
if isInArray(permissions, permission) then
setGuildStorageValue(guild, STG_DEPOSIT_PERMISSION, permission)
selfSay("OK. A permissao de deposito esta definida. Posso te ajudar em mais alguma coisa?", cid)
talkState[talkUser] = 3
else
selfSay("Essa nao era uma permissao valida. Existem 3 niveis de permissao: 1 - members, 2 - vice-leaders, 3 - leaders.", cid)
end
elseif msgcontains(msg, "list") and talkState[talkUser] == 3 and guild_rank >= 3 then
local guildName = getGuildName(guild)
if not testGuildFile(guildName) then
selfSay("That option is currently disabled.", cid)
else
local str = getBankLog(guildName)
str = string.explode(str, "\n")
local newStr = ""
local tableSize = type(str) == "table" and #str or false
if not tableSize or (tableSize and tableSize <= 1) then
selfSay("Nenhuma transacao foi cadastrada ainda. Posso te ajudar em mais alguma coisa?", cid)
else
for i = 0, 9 do
local str_add = str[tableSize - 10 + i]
if str_add then
newStr = newStr .. str_add .. "\n"
end
end
selfSay("Aqui esta, as ultimas 10 transacoes feitas nessa conta.", cid)
doPlayerPopupFYI(cid, newStr)
end
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())