Zak.Tibiam
New Member
- Joined
- Mar 25, 2012
- Messages
- 150
- Reaction score
- 3
Hello guys please help me with this error!
entrada.lua
modalWindows.lua
Code:
Lua Script Error: [Action Interface]
data/actions/scripts/entrada.lua:onUse
data/lib/warantientrosa/modalWindows.lua:45: attempt to call method 'isInWar' (a nil value)
stack traceback:
[C]: in function 'isInWar'
data/lib/warantientrosa/modalWindows.lua:45: in function 'main'
data/actions/scripts/entrada.lua:4: in function <data/actions/scripts/entrada.lua:1>
entrada.lua
Code:
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
player:registerEvent("WarModals")
player:registerEvent("WarText")
warModalConfig:main(player)
return true
end
modalWindows.lua
Code:
warModalConfig = {
mainId = 0,
invite = 0,
ir = 1,
numeroId = 1,
semLimite = 1,
dez = 2,
quinze = 3,
vinte = 4,
trinta = 5,
quarenta = 6,
modoId = 2,
tradicional = 7,
semUe = 8,
soSd = 9,
tempoId = 3,
sessenta_min = 10,
trinta_min = 11,
quinze_min = 12,
cidadeId = 4,
edron = 13,
darashia = 14,
lb = 15,
carlin = 16,
cormaya = 17,
svar = 18,
yalahar = 19,
venore = 20,
convidado = 5,
aceitar = 21,
recusar = 22,
nome_guild = 1971,
guild_choice = {}
}
function warModalConfig:main(player)
if not player:isInWar() then
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must be in war system.")
return false
end
local modalWindow = ModalWindow(warModalConfig.mainId, "War Anti Entrosa")
if player:getGuildLevel() == 3 then
local isInWar = false
for _, v in pairs(Wars) do
if v:isGuildInWar(guild) then
isInWar = true
end
end
if not isInWar then
modalWindow:addChoice(warModalConfig.invite, "Invite")
end
local guild = player:getGuild()
index = 2
for k, v in pairs(Wars) do
if Guild(v.guilds.a) and v.aceito == false and v.guilds.b == guild:getId() and not isInWar then
modalWindow:addChoice(index, "Accept invite from ".. Guild(v.guilds.a):getName())
Wars[k].choiceId = index
elseif v.aceito == true and v:isGuildInWar(guild:getId()) then
local name = (v.guilds.a == guild:getId()) and Guild(v.guilds.b):getName() or Guild(v.guilds.a):getName()
modalWindow:addChoice(warModalConfig.ir, "Go war against ".. name)
end
index = index + 1
end
else
local guild = player:getGuild()
for k, v in pairs(Wars) do
if v.aceito == true and v:isGuildInWar(guild:getId()) then
local name = (v.guilds.a == guild:getId()) and Guild(v.guilds.b):getName() or Guild(v.guilds.a):getName()
modalWindow:addChoice(warModalConfig.ir, "Go war against ".. name)
end
end
end
if modalWindow:getChoiceCount() == 0 then
player:sendTextMessage(22, "You are not a guild leader and there is no War running.")
return false
end
modalWindow:addButton(1, "Ok")
modalWindow:addButton(2, "Cancel")
modalWindow:setDefaultEnterButton(1)
modalWindow:setDefaultEscapeButton(2)
return modalWindow:sendToPlayer(player)
end
function warModalConfig:inviteGuild(player)
-- query para pegar todos os inimigos da guild
-- registra o nome e o id da guild inimiga em uma posição da tabela de inimigos (que é uma posição da tabela guild_choice na posição do id da Guild)
-- as atuais wars são salvas globalmente para reconhecer a choice do player posteriormente
-- ficou muito lixo, esse war system é um coco fedido que fudeu tudo
local guild = player:getGuild():getId()
if table.elements(warModalConfig.guild_choice[guild]) > 0 then
return false
end
local query = {}
query[1] = db.storeQuery("SELECT `guild2` FROM `guild_wars` WHERE `status` = 1 AND `guild1` = " .. guild)
query[2] = db.storeQuery("SELECT `guild1` FROM `guild_wars` WHERE `status` = 1 AND `guild2` = " .. guild)
warModalConfig.guild_choice[guild] = {}
for k, v in pairs(query) do
local tmpResult = v
while tmpResult ~= false do
enemyGuild = k == 1 and result.getNumber(v, "guild2") or result.getNumber(v, "guild1")
enemyName = Guild(enemyGuild) and Guild(enemyGuild):getName() or false
if enemyName then
table.insert(warModalConfig.guild_choice[guild], {name = enemyName, enemy = enemyGuild})
end
tmpResult = result.next(v)
end
end
local modalWindow = ModalWindow(warModalConfig.nome_guild, "Choose your enemy.")
for k, v in pairs(warModalConfig.guild_choice[guild]) do
if Guild(v.enemy):hasLeaderOnline() and not Guild(v.enemy):isInWarAntiEntrosa() then
modalWindow:addChoice(k, v.name)
end
end
if modalWindow:getChoiceCount() == 0 then
player:sendTextMessage(22, "No available guild to fight against.")
eraseAntiEntrosa(player)
return false
end
modalWindow:addButton(1, "Ok")
modalWindow:addButton(2, "Cancel")
modalWindow:setDefaultEnterButton(1)
modalWindow:setDefaultEscapeButton(2)
return modalWindow:sendToPlayer(player)
end
function warModalConfig:convidado(player, nome)
local modalWindow = ModalWindow(warModalConfig.convidado, "The guild " .. nome .. " inveted your guild to War Anti Entrosa.")
modalWindow:addChoice(warModalConfig.aceitar, "Accept")
modalWindow:addChoice(warModalConfig.recusar, "Recuse")
modalWindow:addButton(1, "Ok")
modalWindow:addButton(2, "Cancel")
modalWindow:setDefaultEnterButton(1)
modalWindow:setDefaultEscapeButton(2)
return modalWindow:sendToPlayer(player)
end
function warModalConfig:numeroJogadores(player)
local modalWindow = ModalWindow(warModalConfig.numeroId, "Amount of players for each team:")
modalWindow:addChoice(warModalConfig.semLimite, "No limit")
modalWindow:addChoice(warModalConfig.dez, "10x10")
modalWindow:addChoice(warModalConfig.quinze, "15x15")
modalWindow:addChoice(warModalConfig.vinte, "20x20")
modalWindow:addChoice(warModalConfig.trinta, "30x30")
modalWindow:addChoice(warModalConfig.quarenta, "40x40")
modalWindow:addButton(1, "Ok")
modalWindow:addButton(2, "Cancel")
modalWindow:setDefaultEnterButton(1)
modalWindow:setDefaultEscapeButton(2)
return modalWindow:sendToPlayer(player)
end
function warModalConfig:modo(player)
local modalWindow = ModalWindow(warModalConfig.modoId, "Choose the mode:")
modalWindow:addChoice(warModalConfig.tradicional, "Traditional")
modalWindow:addChoice(warModalConfig.semUe, "Without spell/runes area")
modalWindow:addChoice(warModalConfig.soSD, "Only Sudden Death")
modalWindow:addButton(1, "Ok")
modalWindow:addButton(2, "Cancel")
modalWindow:setDefaultEnterButton(1)
modalWindow:setDefaultEscapeButton(2)
return modalWindow:sendToPlayer(player)
end
function warModalConfig:tempo(player)
local modalWindow = ModalWindow(warModalConfig.tempoId, "Pick the time, both leaders will pay.")
modalWindow:addChoice(warModalConfig.quinze_min, "15 min: " .. War.preco.quinze_min .. " gold")
modalWindow:addChoice(warModalConfig.trinta_min, "30 min: " .. War.preco.trinta_min .. " gold")
modalWindow:addChoice(warModalConfig.sessenta_min, "60 min: " .. War.preco.sessenta_min .. " gold")
modalWindow:addButton(1, "Ok")
modalWindow:addButton(2, "Cancel")
modalWindow:setDefaultEnterButton(1)
modalWindow:setDefaultEscapeButton(2)
return modalWindow:sendToPlayer(player)
end
function warModalConfig:cidade(player)
local modalWindow = ModalWindow(warModalConfig.cidadeId, "Pick a city to fight:\n\n")
local maps = Instance:getMaps()
for v, _ in pairs(maps) do
if v == War.cidade.edron then modalWindow:addChoice(warModalConfig.edron, "Edron")
elseif v == War.cidade.cormaya then modalWindow:addChoice(warModalConfig.cormaya, "Cormaya")
elseif v == War.cidade.darashia then modalWindow:addChoice(warModalConfig.darashia, "Darashia")
elseif v == War.cidade.carlin then modalWindow:addChoice(warModalConfig.carlin, "Carlin")
elseif v == War.cidade.lb then modalWindow:addChoice(warModalConfig.lb, "Liberty Bay")
elseif v == War.cidade.svar then modalWindow:addChoice(warModalConfig.svar, "Svargrond")
elseif v == War.cidade.yalahar then modalWindow:addChoice(warModalConfig.yalahar, "Yalahar")
elseif v == War.cidade.venore then modalWindow:addChoice(warModalConfig.venore, "Venore")
end
end
if modalWindow:getChoiceCount() == 0 then
player:sendTextMessage(22, "No available city to fight.")
eraseAntiEntrosa(player)
return false
end
modalWindow:addButton(1, "Ok")
modalWindow:addButton(2, "Cancel")
modalWindow:setDefaultEnterButton(1)
modalWindow:setDefaultEscapeButton(2)
return modalWindow:sendToPlayer(player)
end