• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • New resources must be posted under Resources tab. A discussion thread will be created automatically, you can't open threads manually anymore.

TalkAction Bomberman

OK now teleport won players but not cleaning a map and not respawn barrels.
Which lines talking about it?

Oh and it's an error:

data/talkactions/scripts/bomb.lua:eek:nSay
Description:
(luaDoTileQueryAdd) Thing not found

[Error - TalkAction Interface]
In a timer event called from:
data/talkactions/scripts/bomb.lua:eek:nSay
Description:
(luaDoTileQueryAdd) Thing not found

[Error - TalkAction Interface]
In a timer event called from:
data/talkactions/scripts/bomb.lua:eek:nSay
Description:
(luaDoTileQueryAdd) Thing not found

[Error - TalkAction Interface]
In a timer event called from:
data/talkactions/scripts/bomb.lua:eek:nSay
Description:
(luaDoRemoveItem) Item not found
 
OK now teleport won players but not cleaning a map and not respawn barrels.
Which lines talking about it?

Oh and it's an error:

have u changed
Code:
        local dummy = doCreateItem(10570, 1, {x=486,y=498,z=9})
 
It'ss id of barrel?
But must i write all positions from the map and barrels?

Scripts doesn't respawn new barrels?
 
no, that's not id of barrel

in table 'exceptions', you add positions where you DON'T want barrels to spawn. these are usually tiles around players' spawn positions
 
Ufff, The talk action z or Z is not working in the bomber area configured.

I configured the area in bomb.lua but still nothing happends ;/
Also placed the dummy thing in a valid area. Have no other idea what might be wrong because there shows no error in my console

Edit: FOUND a error NOW WORKING yeyeye :D
 
Last edited:
Bomb

PHP:
[14/08/2010 10:36:19] [Error - TalkAction Interface] 
[14/08/2010 10:36:19] In a timer event called from: 
[14/08/2010 10:36:19] data/talkactions/scripts/bomb.lua:onSay
[14/08/2010 10:36:19] Description: 
[14/08/2010 10:36:19] (luaDoTileQueryAdd) Thing not found

How to fix it ?

bomb.lua

PHP:
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=32214, y=32175, z=8},
	to = {x=32228, y=32185, z=8},
	storage = {
		placed = 10001,
		max = 10002,
		radius = 10003
	},
	delay = 3000,
	bombID = 10570,
	effect = CONST_ME_FIREAREA,
	blockID = 9468,
	text = "BOOM!",
	temple = {x=32222, y=32221, z=8},
	exceptions = {
		{x=32214, y=32175, z=8},
		{x=32214, y=32176, z=8},
		{x=32215, y=32175, z=8},
		
		{x=32228, y=32185, z=8},
		{x=32227, y=32185, z=8},
		{x=32228, y=32184, z=8},
		
		{x=32214, y=32185, z=8},
		{x=32214, y=32184, z=8},
		{x=32215, y=32185, z=8},
		
		{x=33228, y=32175, z=8},
		{x=33227, y=32175, z=8},
		{x=33228, y=32176, z=8}
	}
}
function reset()
	local dummy = doCreateItem(10570, 1, {x=33228, y=32175, z=8	})
	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=32221, y=32180, z=8}, 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=32221, y=32180, z=8}, 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
 
where do I paste this file:

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

local t, n, storage = {
{x=496, y=537, z=9},
{x=497, y=537, z=9},
{x=498, y=537, z=9},
{x=499, y=537, z=9}
}, {
{x=490, y=495, z=9},
{x=504, y=505, z=9},
{x=504, y=495, z=9},
{x=490, y=505, z=9}
}, {
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=497, y=500, z=9}, 7, 5)
if #v > 0 then
return doPlayerSendCancel(cid, "Please wait for the current match to end.")
end

local players = {}
for i = 1, #t do
local v = getTopCreature(t).uid
players = isPlayer(v) and v or nil
end

if #players < 2 then
return doPlayerSendCancel(cid, "You need at least 2 players to enter.")
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 then
setPlayerStorageValue(players, storage.placed, 0)
setPlayerStorageValue(players, storage.max, 1)
setPlayerStorageValue(players, storage.radius, 1)
doSendMagicEffect(t, CONST_ME_TELEPORT)
doTeleportThing(players, n)
doSendMagicEffect(n, CONST_ME_TELEPORT)
end
end

doTransformItem(item.uid, item.itemid + 1)
return true
end
 
Can someone explain where every move? And I did not want to work... :/ Please help


@up
actions / talkactions ??? where?
 
Back
Top