Ir para conteúdo

Posts Recomendados

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

 

Eu 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..

[19/07/2011 14:59:43] Styller Yourots, version 0.7.5 (Styller Yourots)
[19/07/2011 14:59:44] Styller Yourots 8.60 criado por LeozeraRox. 
[19/07/2011 14:59:44] Compilado versao 8.60 por LeozeraRox - 31/07/2010.
[19/07/2011 14:59:44] Sources do Robson Dias! Obrigado!
[19/07/2011 14:59:44] Um Salve ao XTibia: http://xtibia.com.

 

Deve ser 0.7.5 xP

 

Valeu galera..

Link para o comentário
https://xtibia.com/forum/topic/162162-duvidatalkaction-bomberman/
Compartilhar em outros sites

×
×
  • Criar Novo...