Olá pessoal do xtibia, eu gostaria de saber porque da esse erro:
[19/07/2011 15:02:26] [Error - TalkAction Interface]
[19/07/2011 15:02:26] In a timer event called from:
[19/07/2011 15:02:26] data/talkactions/scripts/BOMB.lua:onSay
[19/07/2011 15:02:26] Description:
[19/07/2011 15:02:26] (luaGetCreatureName) Creature not found
[19/07/2011 15:02:26] [Error - TalkAction Interface]
[19/07/2011 15:02:26] In a timer event called from:
[19/07/2011 15:02:26] data/talkactions/scripts/BOMB.lua:onSay
[19/07/2011 15:02:26] Description:
[19/07/2011 15:02:26] data/talkactions/scripts/BOMB.lua:134: attempt to concatenate a boolean value
[19/07/2011 15:02:26] stack traceback:
[19/07/2011 15:02:26] data/talkactions/scripts/BOMB.lua:134: in function 'loopDir'
[19/07/2011 15:02:26] data/talkactions/scripts/BOMB.lua:180: in function <data/talkactions/scripts/BOMB.lua:87>
Bem, olha o Bomb.lua
function getPlayersInRange(position, radiusx, radiusy)
local creaturesList = {}
for x = -radiusx, radiusx do
for y = -radiusy, radiusy do
if not (x == 0 and y == 0) then
local creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z})
if creature.type == 1 then
table.insert(creaturesList, creature.uid)
end
end
end
end
local creature = getTopCreature(position)
if creature.type == 1 then
if not(table.find(creaturesList, creature.uid)) then
table.insert(creaturesList, creature.uid)
end
end
return creaturesList
end
function isPositionInArray(haystack, needle)
for i = 1, #haystack do
if haystack[i].x == needle.x and haystack[i].y == needle.y and haystack[i].z == needle.z then
return true
end
end
return false
end
local t = {
from = {x=699, y=848, z=7},
to = {x=713, y=858, z=7},
storage = {
placed = 10001,
max = 10002,
radius = 10003
},
delay = 3000,
bombID = 10570,
effect = CONST_ME_FIREAREA,
blockID = 9468,
text = "BOOM!",
temple = {x=160, y=51, z=7},
exceptions = {
{x=699, y=848, z=7},
{x=700, y=848, z=7},
{x=699, y=849, z=7},
{x=712, y=848, z=7},
{x=713, y=848, z=7},
{x=713, y=849, z=7},
{x=699, y=858, z=7},
{x=699, y=857, z=7},
{x=700, y=858, z=7},
{x=712, y=858, z=7},
{x=713, y=858, z=7},
{x=713, y=857, z=7}
}
}
function reset()
local dummy = doCreateItem(10570, 1, {x=486,y=498,z=7})
for x = t.from.x, t.to.x do
for y = t.from.y, t.to.y do
local pos = {x=x,y=y,z=t.from.z}
local i1, i2, i3 = getTileItemById(pos, 8304).uid, getTileItemById(pos, 8306).uid, getTileItemById(pos, 8310).uid
if i1 > 0 then
doRemoveItem(i1)
end
if i2 > 0 then
doRemoveItem(i2)
end
if i3 > 0 then
doRemoveItem(i3)
end
if queryTileAddThing(dummy, pos, 4) == RETURNVALUE_NOERROR and not isPositionInArray(t.exceptions, pos) then
doCreateItem(t.blockID, 1, pos)
end
end
end
doRemoveItem(dummy)
end
local function boom(pos, cid)
local v = getTileItemById(pos, t.bombID).uid
if isPlayer(cid) and isInRange(getThingPos(cid), t.from, t.to) then
setPlayerStorageValue(cid, t.storage.placed, getPlayerStorageValue(cid, t.storage.placed) - 1)
doCreatureSay(cid, t.text, TALKTYPE_ORANGE_2, false, nil, pos)
doSendMagicEffect(pos, t.effect)
local c = getTopCreature(pos).uid
if isPlayer(c) and isInRange(getThingPos(c), t.from, t.to) then
doSendMagicEffect(pos, CONST_ME_GIFT_WRAPS)
doTeleportThing(c, t.temple)
doSendMagicEffect(t.temple, CONST_ME_MORTAREA)
local n1, n2 = getPlayerName(c), getPlayerName(cid)
doBroadcastMessage(n1==n2 and n1 .. " killed " .. (getPlayerSex(c) == 0 and "her" or "him") .. "self!" or n1 .. " was killed by " .. n2 .. "!", MESSAGE_STATUS_WARNING)
local a = getPlayersInRange({x=706, y=853, z=7}, 7, 5)
if #a < 2 then
doBroadcastMessage(getPlayerName(a[1]) .. " has won the match!", MESSAGE_STATUS_WARNING)
doPlayerAddLevel(a[1], 1)
doTeleportThing(a[1], t.temple)
doSendMagicEffect(t.temple, CONST_ME_FIREWORK_RED)
reset()
reset()
end
else
local b = getTileItemById(pos, t.blockID).uid
if b > 0 then
doSendMagicEffect(pos, CONST_ME_BLOCKHIT)
doRemoveItem(b)
local r = math.random(10)
if r < 4 then
doCreateItem(r==1 and 8304 or r==2 and 8306 or r==3 and 8310, 1, _pos)
end
end
end
local N, E, W, S, l = 1, 1, 1, 1, getPlayerStorageValue(cid, t.storage.radius)
function loopDir(dir)
local _pos = {x=pos.x+(dir=="E" and E or dir=="W" and -W or 0), y=pos.y+(dir=="N" and -N or dir=="S" and S or 0), z=pos.z}
if queryTileAddThing(v, _pos, 4) == RETURNVALUE_NOERROR or getTileItemById(_pos, t.blockID).uid > 0 then
doSendMagicEffect(_pos, t.effect)
local c = getTopCreature(_pos).uid
if isPlayer(c) and isInRange(getThingPos(c), t.from, t.to) then
doSendMagicEffect(_pos, CONST_ME_GIFT_WRAPS)
doTeleportThing(c, t.temple)
doSendMagicEffect(t.temple, CONST_ME_MORTAREA)
local n1, n2 = getPlayerName(c), getPlayerName(cid)
doBroadcastMessage(n1==n2 and n1 .. " killed " .. (getPlayerSex(c) == 0 and "her" or "him") .. "self!" or n1 .. " was killed by " .. n2 .. "!", MESSAGE_STATUS_WARNING)
local a = getPlayersInRange({x=497, y=500, z=9}, 7, 5)
if #a < 2 then
doBroadcastMessage(getPlayerName(a[1]) .. " has won the match!", MESSAGE_STATUS_WARNING)
doPlayerAddLevel(a[1], 1)
doTeleportThing(a[1], t.temple)
doSendMagicEffect(t.temple, CONST_ME_FIREWORK_RED)
reset()
reset()
return "endgame"
end
else
local b = getTileItemById(_pos, t.blockID).uid
if b > 0 then
doSendMagicEffect(_pos, CONST_ME_BLOCKHIT)
doRemoveItem(b)
local r = math.random(10)
if r < 4 then
doCreateItem(r==1 and 8304 or r==2 and 8306 or r==3 and 8310, 1, _pos)
end
return false
end
end
elseif queryTileAddThing(v, _pos, 4) == 3 then
return false
end
return true
end
while N <= l do
local q = loopDir("N")
if q == "endgame" then
return doRemoveItem(v, 1)
elseif not q then
break
else
N = N + 1
end
end
while E <= l do
local q = loopDir("E")
if q == "endgame" then
return doRemoveItem(v, 1)
elseif not q then
break
else
E = E + 1
end
end
while W <= l do
local q = loopDir("W")
if q == "endgame" then
return doRemoveItem(v, 1)
elseif not q then
break
else
W = W + 1
end
end
while S <= l do
local q = loopDir("S")
if q == "endgame" then
return doRemoveItem(v, 1)
elseif not q then
break
else
S = S + 1
end
end
end
doRemoveItem(v, 1)
end
function onSay(cid, words, param, channel)
if isInRange(getThingPos(cid), t.from, t.to) then
setPlayerStorageValue(cid, t.storage.placed, math.max(getPlayerStorageValue(cid, t.storage.placed), 0))
setPlayerStorageValue(cid, t.storage.max, math.max(getPlayerStorageValue(cid, t.storage.max), 1))
setPlayerStorageValue(cid, t.storage.radius, math.max(getPlayerStorageValue(cid, t.storage.radius), 1))
if getPlayerStorageValue(cid, t.storage.placed) < getPlayerStorageValue(cid, t.storage.max) then
doCreateItem(t.bombID, 1, getThingPos(cid))
addEvent(boom, t.delay, getThingPos(cid), cid)
setPlayerStorageValue(cid, t.storage.placed, getPlayerStorageValue(cid, t.storage.placed) + 1)
end
return true
end
end
Eu acho que não tem nenhum erro más o ot fica acusando que está com problema..
Quando eu testo no meu ot as bombas explodem e os barrils explodem tambêm normalmente, más quando eu me mato eu sou teletransportado para o templo e quando eu volto la os barrils não voltam ao normal, continua como se o jogo estivesse acontecendo, e quando eu puxo a alavanca, ela não teletransporta os jogadores para o bomberman..
Eu presciso ir dentro do jogo com o god e teletransportar pelo comando /c "user" para jogar, e quando eu mato o player não aparece que eu ganhei, só aparece que eu matei ele e eu não sou teletransportado para o templo, eu continuo la dentro..
Eu gostaria de saber oque há de errado.
Olha o lever.lua que é acionado pela alavanca
function getPlayersInRange(pos, rX, rY)
local ret = {}
for x = -rX, rX do
for y = -rY, rY do
local v = getTopCreature({x = pos.x+x, y = pos.y+y, z = pos.z}).uid
if isPlayer(v) == TRUE then
table.insert(ret, v)
end
end
end
return ret
end
local t, n, storage = {
{x=699, y=897, z=7},
{x=700, y=897, z=7},
{x=701, y=897, z=7},
{x=702, y=897, z=7}
}, {
{x=699, y=848, z=7},
{x=713, y=848, z=7},
{x=713, y=858, z=7},
{x=699, y=858, z=7}
}, {
placed = 10001,
max = 10002,
radius = 10003
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
if item.itemid == 1946 then
return doTransformItem(item.uid, item.itemid - 1)
end
local v = getPlayersInRange({x=706, y=856, z=7}, 7, 5)
if #v > 0 then
return doPlayerSendCancel(cid, "Espere a partida acabar.")
end
local players = {}
for i = 1, #t do
local v = getTopCreature(t[i]).uid
players[i] = isPlayer(v) and v or nil
end
if #players < 2 then
return doPlayerSendCancel(cid, "Para jogar tem que ter dois players ou mais.")
end
local first = players[1] and 1 or players[2] and 2 or players[3] and 3 or players[4] and 4
for i = 1, 4 do
if players[i] then
setPlayerStorageValue(players[i], storage.placed, 0)
setPlayerStorageValue(players[i], storage.max, 1)
setPlayerStorageValue(players[i], storage.radius, 1)
doSendMagicEffect(t[i], CONST_ME_TELEPORT)
doTeleportThing(players[i], n[i])
doSendMagicEffect(n[i], CONST_ME_TELEPORT)
end
end
doTransformItem(item.uid, item.itemid + 1)
return true
end
info
Grupo: Campones
Registrado: 27/02/08
Posts: 3
Reputação: 0
Char no Tibia: Journament
Olá pessoal do xtibia, eu gostaria de saber porque da esse erro:
Bem, olha o Bomb.lua
function getPlayersInRange(position, radiusx, radiusy) local creaturesList = {} for x = -radiusx, radiusx do for y = -radiusy, radiusy do if not (x == 0 and y == 0) then local creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z}) if creature.type == 1 then table.insert(creaturesList, creature.uid) end end end end local creature = getTopCreature(position) if creature.type == 1 then if not(table.find(creaturesList, creature.uid)) then table.insert(creaturesList, creature.uid) end end return creaturesList end function isPositionInArray(haystack, needle) for i = 1, #haystack do if haystack[i].x == needle.x and haystack[i].y == needle.y and haystack[i].z == needle.z then return true end end return false end local t = { from = {x=699, y=848, z=7}, to = {x=713, y=858, z=7}, storage = { placed = 10001, max = 10002, radius = 10003 }, delay = 3000, bombID = 10570, effect = CONST_ME_FIREAREA, blockID = 9468, text = "BOOM!", temple = {x=160, y=51, z=7}, exceptions = { {x=699, y=848, z=7}, {x=700, y=848, z=7}, {x=699, y=849, z=7}, {x=712, y=848, z=7}, {x=713, y=848, z=7}, {x=713, y=849, z=7}, {x=699, y=858, z=7}, {x=699, y=857, z=7}, {x=700, y=858, z=7}, {x=712, y=858, z=7}, {x=713, y=858, z=7}, {x=713, y=857, z=7} } } function reset() local dummy = doCreateItem(10570, 1, {x=486,y=498,z=7}) for x = t.from.x, t.to.x do for y = t.from.y, t.to.y do local pos = {x=x,y=y,z=t.from.z} local i1, i2, i3 = getTileItemById(pos, 8304).uid, getTileItemById(pos, 8306).uid, getTileItemById(pos, 8310).uid if i1 > 0 then doRemoveItem(i1) end if i2 > 0 then doRemoveItem(i2) end if i3 > 0 then doRemoveItem(i3) end if queryTileAddThing(dummy, pos, 4) == RETURNVALUE_NOERROR and not isPositionInArray(t.exceptions, pos) then doCreateItem(t.blockID, 1, pos) end end end doRemoveItem(dummy) end local function boom(pos, cid) local v = getTileItemById(pos, t.bombID).uid if isPlayer(cid) and isInRange(getThingPos(cid), t.from, t.to) then setPlayerStorageValue(cid, t.storage.placed, getPlayerStorageValue(cid, t.storage.placed) - 1) doCreatureSay(cid, t.text, TALKTYPE_ORANGE_2, false, nil, pos) doSendMagicEffect(pos, t.effect) local c = getTopCreature(pos).uid if isPlayer(c) and isInRange(getThingPos(c), t.from, t.to) then doSendMagicEffect(pos, CONST_ME_GIFT_WRAPS) doTeleportThing(c, t.temple) doSendMagicEffect(t.temple, CONST_ME_MORTAREA) local n1, n2 = getPlayerName(c), getPlayerName(cid) doBroadcastMessage(n1==n2 and n1 .. " killed " .. (getPlayerSex(c) == 0 and "her" or "him") .. "self!" or n1 .. " was killed by " .. n2 .. "!", MESSAGE_STATUS_WARNING) local a = getPlayersInRange({x=706, y=853, z=7}, 7, 5) if #a < 2 then doBroadcastMessage(getPlayerName(a[1]) .. " has won the match!", MESSAGE_STATUS_WARNING) doPlayerAddLevel(a[1], 1) doTeleportThing(a[1], t.temple) doSendMagicEffect(t.temple, CONST_ME_FIREWORK_RED) reset() reset() end else local b = getTileItemById(pos, t.blockID).uid if b > 0 then doSendMagicEffect(pos, CONST_ME_BLOCKHIT) doRemoveItem(b) local r = math.random(10) if r < 4 then doCreateItem(r==1 and 8304 or r==2 and 8306 or r==3 and 8310, 1, _pos) end end end local N, E, W, S, l = 1, 1, 1, 1, getPlayerStorageValue(cid, t.storage.radius) function loopDir(dir) local _pos = {x=pos.x+(dir=="E" and E or dir=="W" and -W or 0), y=pos.y+(dir=="N" and -N or dir=="S" and S or 0), z=pos.z} if queryTileAddThing(v, _pos, 4) == RETURNVALUE_NOERROR or getTileItemById(_pos, t.blockID).uid > 0 then doSendMagicEffect(_pos, t.effect) local c = getTopCreature(_pos).uid if isPlayer(c) and isInRange(getThingPos(c), t.from, t.to) then doSendMagicEffect(_pos, CONST_ME_GIFT_WRAPS) doTeleportThing(c, t.temple) doSendMagicEffect(t.temple, CONST_ME_MORTAREA) local n1, n2 = getPlayerName(c), getPlayerName(cid) doBroadcastMessage(n1==n2 and n1 .. " killed " .. (getPlayerSex(c) == 0 and "her" or "him") .. "self!" or n1 .. " was killed by " .. n2 .. "!", MESSAGE_STATUS_WARNING) local a = getPlayersInRange({x=497, y=500, z=9}, 7, 5) if #a < 2 then doBroadcastMessage(getPlayerName(a[1]) .. " has won the match!", MESSAGE_STATUS_WARNING) doPlayerAddLevel(a[1], 1) doTeleportThing(a[1], t.temple) doSendMagicEffect(t.temple, CONST_ME_FIREWORK_RED) reset() reset() return "endgame" end else local b = getTileItemById(_pos, t.blockID).uid if b > 0 then doSendMagicEffect(_pos, CONST_ME_BLOCKHIT) doRemoveItem(b) local r = math.random(10) if r < 4 then doCreateItem(r==1 and 8304 or r==2 and 8306 or r==3 and 8310, 1, _pos) end return false end end elseif queryTileAddThing(v, _pos, 4) == 3 then return false end return true end while N <= l do local q = loopDir("N") if q == "endgame" then return doRemoveItem(v, 1) elseif not q then break else N = N + 1 end end while E <= l do local q = loopDir("E") if q == "endgame" then return doRemoveItem(v, 1) elseif not q then break else E = E + 1 end end while W <= l do local q = loopDir("W") if q == "endgame" then return doRemoveItem(v, 1) elseif not q then break else W = W + 1 end end while S <= l do local q = loopDir("S") if q == "endgame" then return doRemoveItem(v, 1) elseif not q then break else S = S + 1 end end end doRemoveItem(v, 1) end function onSay(cid, words, param, channel) if isInRange(getThingPos(cid), t.from, t.to) then setPlayerStorageValue(cid, t.storage.placed, math.max(getPlayerStorageValue(cid, t.storage.placed), 0)) setPlayerStorageValue(cid, t.storage.max, math.max(getPlayerStorageValue(cid, t.storage.max), 1)) setPlayerStorageValue(cid, t.storage.radius, math.max(getPlayerStorageValue(cid, t.storage.radius), 1)) if getPlayerStorageValue(cid, t.storage.placed) < getPlayerStorageValue(cid, t.storage.max) then doCreateItem(t.bombID, 1, getThingPos(cid)) addEvent(boom, t.delay, getThingPos(cid), cid) setPlayerStorageValue(cid, t.storage.placed, getPlayerStorageValue(cid, t.storage.placed) + 1) end return true end endEu acho que não tem nenhum erro más o ot fica acusando que está com problema..
Quando eu testo no meu ot as bombas explodem e os barrils explodem tambêm normalmente, más quando eu me mato eu sou teletransportado para o templo e quando eu volto la os barrils não voltam ao normal, continua como se o jogo estivesse acontecendo, e quando eu puxo a alavanca, ela não teletransporta os jogadores para o bomberman..
Eu presciso ir dentro do jogo com o god e teletransportar pelo comando /c "user" para jogar, e quando eu mato o player não aparece que eu ganhei, só aparece que eu matei ele e eu não sou teletransportado para o templo, eu continuo la dentro..
Eu gostaria de saber oque há de errado.
Olha o lever.lua que é acionado pela alavanca
function getPlayersInRange(pos, rX, rY) local ret = {} for x = -rX, rX do for y = -rY, rY do local v = getTopCreature({x = pos.x+x, y = pos.y+y, z = pos.z}).uid if isPlayer(v) == TRUE then table.insert(ret, v) end end end return ret end local t, n, storage = { {x=699, y=897, z=7}, {x=700, y=897, z=7}, {x=701, y=897, z=7}, {x=702, y=897, z=7} }, { {x=699, y=848, z=7}, {x=713, y=848, z=7}, {x=713, y=858, z=7}, {x=699, y=858, z=7} }, { placed = 10001, max = 10002, radius = 10003 } function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 1946 then return doTransformItem(item.uid, item.itemid - 1) end local v = getPlayersInRange({x=706, y=856, z=7}, 7, 5) if #v > 0 then return doPlayerSendCancel(cid, "Espere a partida acabar.") end local players = {} for i = 1, #t do local v = getTopCreature(t[i]).uid players[i] = isPlayer(v) and v or nil end if #players < 2 then return doPlayerSendCancel(cid, "Para jogar tem que ter dois players ou mais.") end local first = players[1] and 1 or players[2] and 2 or players[3] and 3 or players[4] and 4 for i = 1, 4 do if players[i] then setPlayerStorageValue(players[i], storage.placed, 0) setPlayerStorageValue(players[i], storage.max, 1) setPlayerStorageValue(players[i], storage.radius, 1) doSendMagicEffect(t[i], CONST_ME_TELEPORT) doTeleportThing(players[i], n[i]) doSendMagicEffect(n[i], CONST_ME_TELEPORT) end end doTransformItem(item.uid, item.itemid + 1) return true endEu retirei isso do link: http://otland.net/f81/bomberman-73864/
Mais lá eu não consegui nenhuma informação com esse erro.
Quem tiver alguma ideio do que esteja errado, posta ai
E como eu não sei a versão do meu sv..
eu acho que vocês devem conhecer..
Deve ser 0.7.5 xP
Valeu galera..