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

Lever Raidsystem Function (not my script)

Wolferion

Well-Known Member
Joined
Dec 3, 2007
Messages
83
Reaction score
59
Hello Otland,

On an other Open Tibia forum, I found this following script:

Credits to bncplix!

Code:
function onUse(cid, item, frompos, item2, topos)
if item.uid == 9160 and item.itemid == 2711 then
orc1pos = {x=159, y=154, z=7, stackpos=1}
orc2pos = {x=163, y=150, z=7, stackpos=1}
orc3pos = {x=150, y=156, z=7, stackpos=1}
orc4pos = {x=140, y=157, z=7, stackpos=1}
orc5pos = {x=142, y=165, z=7, stackpos=1}
orc6pos = {x=141, y=171, z=7, stackpos=1}
orc7pos = {x=131, y=166, z=7, stackpos=1}
orc8pos = {x=130, y=156, z=7, stackpos=1}
orc9pos = {x=121, y=155, z=7, stackpos=1}
orc10pos = {x=123, y=150, z=7, stackpos=1}
orc11pos = {x=123, y=148, z=8, stackpos=1}
orc12pos = {x=130, y=154, z=7, stackpos=1}
orc13pos = {x=139, y=157, z=7, stackpos=1}
orc14pos = {x=151, y=157, z=7, stackpos=1}
orc15pos = {x=159, y=155, z=7, stackpos=1}
orc16pos = {x=157, y=151, z=7, stackpos=1}

doSummonCreature("Orc",orc1pos)
doSummonCreature("Orc",orc2pos)
doSummonCreature("Orc",orc3pos)
doSummonCreature("Orc Leader",orc4pos)
doSummonCreature("Orc Warlord",orc5pos)
doSummonCreature("Orc Berserker",orc6pos)
doSummonCreature("Orc Spearman",orc7pos)
doSummonCreature("Orc Warlord",orc8pos)
doSummonCreature("Orc Warlord",orc9pos)
doSummonCreature("Orc Leader",orc10pos)
doSummonCreature("Orc Leader",orc11pos)
doSummonCreature("Orc Berserker",orc12pos)
doSummonCreature("Orc Warlord",orc13pos)
doSummonCreature("Orc Warrior",orc14pos)
doSummonCreature("Orc Warrior",orc15pos)
doSummonCreature("Orc Leader",orc16pos)

doSendMagicEffect(orc1pos,10)
doSendMagicEffect(orc2pos,10)
doSendMagicEffect(orc3pos,10)
doSendMagicEffect(orc4pos,10)
doSendMagicEffect(orc5pos,10)
doSendMagicEffect(orc6pos,10)
doSendMagicEffect(orc7pos,10)
doSendMagicEffect(orc8pos,10)
doSendMagicEffect(orc1pos,11)
doSendMagicEffect(orc2pos,11)
doSendMagicEffect(orc3pos,11)
doSendMagicEffect(orc4pos,11)
doSendMagicEffect(orc5pos,11)
doSendMagicEffect(orc6pos,11)
doSendMagicEffect(orc7pos,11)
doSendMagicEffect(orc8pos,11)
doSendMagicEffect(orc1pos,12)
doSendMagicEffect(orc2pos,12)
doSendMagicEffect(orc3pos,12)
doSendMagicEffect(orc4pos,12)
doSendMagicEffect(orc5pos,12)
doSendMagicEffect(orc6pos,12)
doSendMagicEffect(orc7pos,12)
doSendMagicEffect(orc8pos,12)

doSendMagicEffect(orc9pos,12)
doSendMagicEffect(orc10pos,12)
doSendMagicEffect(orc11pos,12)
doSendMagicEffect(orc12pos,12)
doSendMagicEffect(orc13pos,12)
doSendMagicEffect(orc14pos,12)
doSendMagicEffect(orc15pos,12)
doSendMagicEffect(orc16pos,12)
doSendMagicEffect(orc9pos,10)
doSendMagicEffect(orc10pos,10)
doSendMagicEffect(orc11pos,10)
doSendMagicEffect(orc12pos,10)
doSendMagicEffect(orc13pos,10)
doSendMagicEffect(orc14pos,10)
doSendMagicEffect(orc15pos,10)
doSendMagicEffect(orc16pos,10)
doPlayerSay(cid,'/B Orc invasion! Orc invasion triggered through Orc invasion lever.',23)
end
return 1
end

This is a item/lever based raid system. Now my question is about this last line. I use TFS, and doPlayerSay doesn't work. What do i have to fill in, to make the GM that switches it says the text?
 
I have a much more customizable raid system that uses levers.
* Easier to modifiy positions, randomizes within a range.
* Easier to add monsters.
* Checks access so that only GMs can use it.
Do you want me to post it?
 
If you want to share it, I would be really thankfull :D

Edit: Will it send out a pre-set text? Cause the script already works, it's the text I need.
 
Code:
doPlayerSay(cid,'/B Orc invasion! Orc invasion triggered through Orc invasion lever.',23)
o_O no wonder it doesn't work.. try this instead:

Code:
function onUse(cid, item, frompos, item2, topos)
if item.uid == 9160 and item.itemid == 2711 then
orc1pos = {x=159, y=154, z=7, stackpos=1}
orc2pos = {x=163, y=150, z=7, stackpos=1}
orc3pos = {x=150, y=156, z=7, stackpos=1}
orc4pos = {x=140, y=157, z=7, stackpos=1}
orc5pos = {x=142, y=165, z=7, stackpos=1}
orc6pos = {x=141, y=171, z=7, stackpos=1}
orc7pos = {x=131, y=166, z=7, stackpos=1}
orc8pos = {x=130, y=156, z=7, stackpos=1}
orc9pos = {x=121, y=155, z=7, stackpos=1}
orc10pos = {x=123, y=150, z=7, stackpos=1}
orc11pos = {x=123, y=148, z=8, stackpos=1}
orc12pos = {x=130, y=154, z=7, stackpos=1}
orc13pos = {x=139, y=157, z=7, stackpos=1}
orc14pos = {x=151, y=157, z=7, stackpos=1}
orc15pos = {x=159, y=155, z=7, stackpos=1}
orc16pos = {x=157, y=151, z=7, stackpos=1}

doSummonCreature("Orc",orc1pos)
doSummonCreature("Orc",orc2pos)
doSummonCreature("Orc",orc3pos)
doSummonCreature("Orc Leader",orc4pos)
doSummonCreature("Orc Warlord",orc5pos)
doSummonCreature("Orc Berserker",orc6pos)
doSummonCreature("Orc Spearman",orc7pos)
doSummonCreature("Orc Warlord",orc8pos)
doSummonCreature("Orc Warlord",orc9pos)
doSummonCreature("Orc Leader",orc10pos)
doSummonCreature("Orc Leader",orc11pos)
doSummonCreature("Orc Berserker",orc12pos)
doSummonCreature("Orc Warlord",orc13pos)
doSummonCreature("Orc Warrior",orc14pos)
doSummonCreature("Orc Warrior",orc15pos)
doSummonCreature("Orc Leader",orc16pos)

doSendMagicEffect(orc1pos,10)
doSendMagicEffect(orc2pos,10)
doSendMagicEffect(orc3pos,10)
doSendMagicEffect(orc4pos,10)
doSendMagicEffect(orc5pos,10)
doSendMagicEffect(orc6pos,10)
doSendMagicEffect(orc7pos,10)
doSendMagicEffect(orc8pos,10)
doSendMagicEffect(orc1pos,11)
doSendMagicEffect(orc2pos,11)
doSendMagicEffect(orc3pos,11)
doSendMagicEffect(orc4pos,11)
doSendMagicEffect(orc5pos,11)
doSendMagicEffect(orc6pos,11)
doSendMagicEffect(orc7pos,11)
doSendMagicEffect(orc8pos,11)
doSendMagicEffect(orc1pos,12)
doSendMagicEffect(orc2pos,12)
doSendMagicEffect(orc3pos,12)
doSendMagicEffect(orc4pos,12)
doSendMagicEffect(orc5pos,12)
doSendMagicEffect(orc6pos,12)
doSendMagicEffect(orc7pos,12)
doSendMagicEffect(orc8pos,12)

doSendMagicEffect(orc9pos,12)
doSendMagicEffect(orc10pos,12)
doSendMagicEffect(orc11pos,12)
doSendMagicEffect(orc12pos,12)
doSendMagicEffect(orc13pos,12)
doSendMagicEffect(orc14pos,12)
doSendMagicEffect(orc15pos,12)
doSendMagicEffect(orc16pos,12)
doSendMagicEffect(orc9pos,10)
doSendMagicEffect(orc10pos,10)
doSendMagicEffect(orc11pos,10)
doSendMagicEffect(orc12pos,10)
doSendMagicEffect(orc13pos,10)
doSendMagicEffect(orc14pos,10)
doSendMagicEffect(orc15pos,10)
doSendMagicEffect(orc16pos,10)
BroadcastMessage('Orc invasion! Orc invasion triggered through Orc invasion lever.', MESSAGE_STATUS_WARNING)
end
return 1
end
Tell me if it works.
 
data/actions/scripts/raids/orcraid.lua:23: attempt to call global 'BroadcastMessage' <a nil value>

Still doesnt work =/
 
Code:
local startingRange = {x = XXX, y = YYY, z = ZZZ}
local endingRange = {x = XXX, y = YYY, z = ZZZ}
local monsters = {
	{name = "Demon", chance = 50, maxcount = 20},
	{name = "Hero", chance = 70, maxcount = 40},
	{name = "Orshabaal", chance = 10, maxcount = 1}
}

function onUse(cid, item, frompos, item2, topos)
	local access = getPlayerAccess(cid)
	if(access > 0) then
		doRaid(startingRange, endingRange, monsters)
		broadcastMessage("IT'S A RAIDDD!!!!")
		return TRUE
	else
		return FALSE
	end
end

function doRaid(startpos, endpos, monsters)
	local checking = {x = startpos.x, y = startpos.y, z = startpos.z}
	while(checking.y <= endpos.y) do
		for i, monster in ipairs(monsters) do
			if(monster.maxcount > 0) then
				local chance = (math.random(1, 100) <= monster.chance)
				if(chance) then
					monster.maxcount = monster.maxcount - 1
					doSummonCreature(monster.name, checking)
					doSendMagicEffect(checking, math.random(10, 12))
					break
				end
			end
		end	
				
		if(checking.x == endpos.x) then
			checking.x = startpos.x
			checking.y = checking.y + 1
		else
			checking.x = checking.x + 1
		end
	end
end

This should be a bit more randomized and easier to setup. I haven't tested this script, I just made it in 5 minutes but it's self explanatory and someone with a bit of knowledge can fix it if there is a bug.
 
Last edited:
How do i set it up? Where is the item + action/unique id?
I did not put an item, action or uniqueid check. You can just have the same exact thing in actions.xml that you use for your script except that you change the script.

startingRange in this script would be the top left sqm of the your 'starting point'. For example, you would like a certain area to be raided, you'll need to type of the top left sqm of that area and the bottom right in endingRange. It's similar to Annhilator's clean function.
 
Edit: Sorry about the double post, I'm having internet problems.
 
Last edited:
I have a much more customizable raid system that uses levers.
* Easier to modifiy positions, randomizes within a range.
* Easier to add monsters.
* Checks access so that only GMs can use it.
Do you want me to post it?
yes plz post it
 
oh, now that i remember i have one too

Code:
local montype1 = { 
	{x=993, y=1006, z=7},
	{x=1008, y=1006, z=7},
  	{x=1000, y=1006, z=7},
 	{x=1009, y=992, z=7},
	{x=1000, y=991, z=7},
  	{x=991, y=991, z=7},
  	{x=991, y=999, z=7},
	{x=991, y=1019, z=7},
  	{x=1019, y=991, z=7},
  	{x=1005, y=1017, z=7},
	{x=1000, y=1000, z=5},
  	{x=1006, y=1002, z=6},
  	{x=994, y=995, z=6},
  	{x=977, y=998, z=7},
	{x=976, y=1032, z=7},
  	{x=977, y=993, z=7},
  	{x=982, y=982, z=7}
}
local montype2 = {
	{x=1022, y=998, z=7},
	{x=963, y=982, z=7},
  	{x=965, y=999, z=7},
  	{x=967, y=1026, z=7},
	{x=1001, y=974, z=7}
}
local montype3 = {
	{x=1003, y=1006, z=7},
  	{x=1009, y=998, z=7},
  	{x=987, y=999, z=7},
  	{x=995, y=987, z=7},
  	{x=985, y=1031, z=7},
  	{x=974, y=1017, z=7}
}
local montype4 = {
	{x=1008, y=1032, z=7},
	{x=1025, y=982, z=7},
  	{x=1038, y=991, z=7},
	{x=1032, y=1014, z=7}
}
local montype5 = {
	{x=991, y=1012, z=7},
  	{x=1030, y=987, z=6}
}
local montype6 = {
  	{x=1039, y=998, z=7},
  	{x=1000, y=990, z=7}
}
function doSummonCreatures(creature, spawns)
    for _, v in pairs(spawns) do
        doSummonCreature(creature, v)
    end
end
function onUse(cid, item, frompos, item2, topos)
if item.uid == 8000 and item.itemid == 1945 then
	doSummonCreatures("dragon", montype1)
	doSummonCreatures("dragon lord", montype2)
	doSummonCreatures("undead dragon", montype3)
	doSummonCreatures("frost dragon", montype4)
	doSummonCreatures("demodras", montype5)
	doSummonCreatures("dracola", montype6)
	doPlayerSendTextMessage(cid, 22, "Raid Started.")
	doTransformItem(item.uid,item.itemid+1)
elseif item.uid == 8000 and item.itemid == 1946 then
	doTransformItem(item.uid,item.itemid-1)
end
return 1
end
 
Yeah there is many new ways of making this, even back then when i made it there was easier ways :D
 
let say i got script like that
Code:
function onUse(cid, item, frompos, item2, topos)
if item.uid == 9160 and item.itemid == x then
orc1pos = {x=159, y=154, z=7, stackpos=1}
doSummonCreature("Orc",orc1pos)
doSendMagicEffect(orc1pos,10)
BroadcastMessage('Orc invasion! Orc invasion triggered through Orc invasion lever.', MESSAGE_STATUS_WARNING)
end
return 1
end

am i able to make movable item with that unique id? (for example book, amulet, anythink) what i can have in BP.. and when i use it the raid will be executed? :p
i just dont want the lever :p
 
Last edited:
can someone make it for group id 4 or 5 w/e and makes the lever transform?
+make it send cancel msg saying only gms can use it
 
Back
Top