• 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!

[LUA] Item on Tile do function

Delconis

Software Engineer
Joined
Apr 3, 2008
Messages
96
Reaction score
3
I getting better at scripting every day. But this one has me stumped, How would I got about making a script that when a pushable item is on a certain tile it runs a function.

Example, I push a dead rot worm on a specific tile and a wall disapers.

I can do the wall and all that, but just need to know how to make the script run when the condition is completed.
 
Code:
onAddItem(moveItem, tileItem, position, cid)
You can use the parameter 'position' to check the id of the item that was placed on the tile
;d
 
One question. How do I get my script to execute. Do I have to add line lets say

<action actionid="30040" event="script" value="quest/barrel.lua"/>

or do I go by itemid or what?
 
Add a tag like this:
Code:
<movevent type="AddItem" itemid="" event="script" value="script.lua"/>
Change the itemid to the item that you want to when you add it on some tile, execute the script, and check the position, like this
Lua:
function onAddItem(moveItem, tileItem, position, cid)
 local tilepos = {}
	if position == tilepos then
	 block
	end
 return true
end
Hope it helps ;p
 
Ok I am haveing trouble with this. It just seems not to work. What i have for Code.

Movements.xml
PHP:
	<movevent type="AddItem" itemid="2562" event="script" value="150quest.lua"/>

150quest.lua
PHP:
function onAddItem(moveItem, tileItem, position, cid)

local _tilepos = {x=1285, y=469, z=10} -- Postion of Pot

local row1_tile1 = {x=1791, y=505, z=4, stackpos=1} --change tilepos
local row1_tile2 = {x=1792, y=505, z=4, stackpos=1} --change tilepos
local row1_tile3 = {x=1793, y=505, z=4, stackpos=1} --change tilepos
local row1_tile4 = {x=1794, y=505, z=4, stackpos=1} --change tilepos
local row1_tile5 = {x=1795, y=505, z=4, stackpos=1} --change tilepos
local row1_tile6 = {x=1796, y=505, z=4, stackpos=1} --change tilepos
local row1_tile7 = {x=1797, y=505, z=4, stackpos=1} --change tilepos
local row1_tile8 = {x=1798, y=505, z=4, stackpos=1} --change tilepos
local row1_tile9 = {x=1799, y=505, z=4, stackpos=1} --change tilepos
local row1_tile10 = {x=1800, y=505, z=4, stackpos=1} --change tilepos
local row1_tile11 = {x=1801, y=505, z=4, stackpos=1} --change tilepos
local row1_tile12 = {x=1802, y=505, z=4, stackpos=1} --change tilepos
local row1_tile13 = {x=1803, y=505, z=4, stackpos=1} --change tilepos
local row1_tile14 = {x=1804, y=505, z=4, stackpos=1} --change tilepos
local row1_tile15 = {x=1805, y=505, z=4, stackpos=1} --change tilepos
local row1_tile16 = {x=1806, y=505, z=4, stackpos=1} --change tilepos
local row2_tile1 = {x=1791, y=506, z=4, stackpos=1} --change tilepos
local row2_tile2 = {x=1792, y=506, z=4, stackpos=1} --change tilepos
local row2_tile3 = {x=1793, y=506, z=4, stackpos=1} --change tilepos
local row2_tile4 = {x=1794, y=506, z=4, stackpos=1} --change tilepos
local row2_tile5 = {x=1795, y=506, z=4, stackpos=1} --change tilepos
local row2_tile6 = {x=1796, y=506, z=4, stackpos=1} --change tilepos
local row2_tile7 = {x=1797, y=506, z=4, stackpos=1} --change tilepos
local row2_tile8 = {x=1798, y=506, z=4, stackpos=1} --change tilepos
local row2_tile9 = {x=1799, y=506, z=4, stackpos=1} --change tilepos
local row2_tile10 = {x=1800, y=506, z=4, stackpos=1} --change tilepos
local row2_tile11 = {x=1801, y=506, z=4, stackpos=1} --change tilepos
local row2_tile12 = {x=1802, y=506, z=4, stackpos=1} --change tilepos
local row2_tile13 = {x=1803, y=506, z=4, stackpos=1} --change tilepos
local row2_tile14 = {x=1804, y=506, z=4, stackpos=1} --change tilepos
local row2_tile15 = {x=1805, y=506, z=4, stackpos=1} --change tilepos
local row2_tile16 = {x=1806, y=506, z=4, stackpos=1} --change tilepos
local row1_gettile1 = getThingfromPos(row1_tile1)
local row1_gettile2 = getThingfromPos(row1_tile2)
local row1_gettile3 = getThingfromPos(row1_tile3)
local row1_gettile4 = getThingfromPos(row1_tile4)
local row1_gettile5 = getThingfromPos(row1_tile5)
local row1_gettile6 = getThingfromPos(row1_tile6)
local row1_gettile7 = getThingfromPos(row1_tile7)
local row1_gettile8 = getThingfromPos(row1_tile8)
local row1_gettile9 = getThingfromPos(row1_tile9)
local row1_gettile10 = getThingfromPos(row1_tile10)
local row1_gettile11 = getThingfromPos(row1_tile11)
local row1_gettile12 = getThingfromPos(row1_tile12)
local row1_gettile13 = getThingfromPos(row1_tile13)
local row1_gettile14 = getThingfromPos(row1_tile14)
local row1_gettile15 = getThingfromPos(row1_tile15)
local row1_gettile16 = getThingfromPos(row1_tile16)
local row2_gettile1 = getThingfromPos(row2_tile1)
local row2_gettile2 = getThingfromPos(row2_tile2)
local row2_gettile3 = getThingfromPos(row2_tile3)
local row2_gettile4 = getThingfromPos(row2_tile4)
local row2_gettile5 = getThingfromPos(row2_tile5)
local row2_gettile6 = getThingfromPos(row2_tile6)
local row2_gettile7 = getThingfromPos(row2_tile7)
local row2_gettile8 = getThingfromPos(row2_tile8)
local row2_gettile9 = getThingfromPos(row2_tile9)
local row2_gettile10 = getThingfromPos(row2_tile10)
local row2_gettile11 = getThingfromPos(row2_tile11)
local row2_gettile12 = getThingfromPos(row2_tile12)
local row2_gettile13 = getThingfromPos(row2_tile13)
local row2_gettile14 = getThingfromPos(row2_tile14)
local row2_gettile15 = getThingfromPos(row2_tile15)
local row2_gettile16 = getThingfromPos(row2_tile16)
	if position == _tilepos then
		doRemoveItem(row1_gettile1.uid,1)
		doRemoveItem(row1_gettile2.uid,1)
		doRemoveItem(row1_gettile3.uid,1)
		doRemoveItem(row1_gettile4.uid,1)
		doRemoveItem(row1_gettile5.uid,1)
		doRemoveItem(row1_gettile6.uid,1)
		doRemoveItem(row1_gettile7.uid,1)
		doRemoveItem(row1_gettile8.uid,1)
		doRemoveItem(row1_gettile9.uid,1)
		doRemoveItem(row1_gettile10.uid,1)
		doRemoveItem(row1_gettile11.uid,1)
		doRemoveItem(row1_gettile12.uid,1)
		doRemoveItem(row1_gettile13.uid,1)
		doRemoveItem(row1_gettile14.uid,1)
		doRemoveItem(row1_gettile15.uid,1)
		doRemoveItem(row1_gettile16.uid,1)
		doRemoveItem(row2_gettile1.uid,1)
		doRemoveItem(row2_gettile2.uid,1)
		doRemoveItem(row2_gettile3.uid,1)
		doRemoveItem(row2_gettile4.uid,1)
		doRemoveItem(row2_gettile5.uid,1)
		doRemoveItem(row2_gettile6.uid,1)
		doRemoveItem(row2_gettile7.uid,1)
		doRemoveItem(row2_gettile8.uid,1)
		doRemoveItem(row2_gettile9.uid,1)
		doRemoveItem(row2_gettile10.uid,1)
		doRemoveItem(row2_gettile11.uid,1)
		doRemoveItem(row2_gettile12.uid,1)
		doRemoveItem(row2_gettile13.uid,1)
		doRemoveItem(row2_gettile14.uid,1)
		doRemoveItem(row2_gettile15.uid,1)
		doRemoveItem(row2_gettile16.uid,1)
	end
return true
end

What I thought this would do, Is when I put a Pot Items ID 2562 it would remove all the searing fires from the locations. But it dosn't if anyone could help me get this to work i will so REP++ Also condensing it would be helpfull to.
 
Last edited:
Use loops, dammit!
Code:
local removeID = 1506
function onAddItem(moveitem, tileitem, pos, cid)
	if pos.x == 1585 and pos.y == 469 and pos.z == 10 then
		for x = 1791, 1806 do
			for y = 505, 506 do
				local v = getTileItemById({x=x, y=y, z=4}, removeID).uid
				if v > 0 then
					doRemoveItem(v)
				end
			end
		end
	end
end
 
Back
Top