• 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 Anihi Quest TUT

Some posts up*

It's working correlt but i'm working on my own script
It checks if other players are already in side.
If anni = empty and the demons aren't 100% health it will remove the demons and put new ones (Or give them hp)
i would like to check it out ^_^
 
I dont know but this is taken from the Forgoton server. follow these instructions!
Data/actions/scripts/quests/annihilator.php
PHP:
local playerPosition =
{
	{x = 123, y = 123, z = 11, stackpos = 253},
	{x = 122, y = 123, z = 11, stackpos = 253},
	{x = 121, y = 123, z = 11, stackpos = 253},
	{x = 120, y = 123, z = 11, stackpos = 253}
}

local newPosition =
{
	{x = 123, y = 123, z = 12},
 	{x = 122, y = 123, z = 12},
	{x = 121, y = 123, z = 12},
	{x = 120, y = 123, z = 12}
}

-- Do not modify the declaration lines below.
local player = {0, 0, 0, 0}
local failed = FALSE

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if item.itemid == 1945 then
		for i = 0, 3 do
			failed = TRUE
			player[i] = getThingfromPos(playerPosition[i])
			if player[i].itemid > 0 then
				if isPlayer(player[i].uid) == TRUE then
					if getPlayerStorageValue(player[i].uid, 30015) == -1 then
						if getPlayerLevel(player[i].uid) >= 100 then
							failed = FALSE
						end
					end
				end
			end
			if failed == TRUE then
				doPlayerSendCancel(cid, "Sorry, not possible.")
				return failed
			end
		end
		for i = 0, 3 do
			doSendMagicEffect(playerPosition[i], CONST_ME_POFF)
			doTeleportThing(player[i].uid, newPosition[i], FALSE)
			doSendMagicEffect(newPosition[i], CONST_ME_ENERGYAREA)
		end
		doTransformItem(item.uid, item.itemid + 1)
	elseif item.itemid == 1946 then
		doPlayerSendCancel(cid, "Sorry, not possible.")
	end
	return TRUE
end

Put your player Beginin positions there!
PHP:
local playerPosition =
{
	{x = 123, y = 123, z = 11, stackpos = 253},
	{x = 122, y = 123, z = 11, stackpos = 253},
	{x = 121, y = 123, z = 11, stackpos = 253},
	{x = 120, y = 123, z = 11, stackpos = 253}

And in the anihi room get the 4 possitions where you will be tp'd to and put here
PHP:
local newPosition =
{
	{x = 123, y = 123, z = 12},
 	{x = 122, y = 123, z = 12},
	{x = 121, y = 123, z = 12},
	{x = 120, y = 123, z = 12}
}
[/PHP[/QUOTE]
ok cool, i get it...

[quote="casa, post: 16867"]Make your tiles have this Uni id at the start 1945.
[PHP]function onUse(cid, item, fromPosition, itemEx, toPosition)
	if item.itemid == 1945 then
		for i = 0, 3 do
like this??
i'm a lot confused =S


And your switch has action id 1740
PHP:
<action itemid="1740" script="quests/quests.lua"/>
	<action fromid="1747" toid="1749" script="quests/quests.lua"/>
	<action uniqueid="30015" script="quests/annihilator.lua"/>
ok, u mean like this:


what do i do with the 30015 uniqueid?
i'm really really confused -.-
nothing happen when i try to pull the switch...
no message on the console also!
 
-- Annihilator script by GriZzm0
-- Room check and monster removal by Tworn

--Variables used:

-- player?pos = The position of the players before teleport.
-- player? = Get the thing from playerpos.
--player?level = Get the players levels.
--questslevel = The level you have to be to do this quest.
--questtatus? = Get the quest status of the players.
--demon?pos = The position of the demons.
--nplayer?pos = The position where the players should be teleported too.
--trash= position to send the demons to when clearing, 1 sqm in middle of nowhere is enough
-- starting = Upper left point of the annihilator room area.
-- ending = Bottom right point of the annihilator room area.

--UniqueIDs used:

--5000 = The switch.
--5001 = Demon Armor chest.
--5002 = Magic Sword chest.
--5003 = Stonecutter Axe chest.
--5004 = Present chest.


function onUse(cid, item, frompos, item2, topos)
if item.uid == 5000 then
if item.itemid == 1946 then

player1pos = {x=1632, y=425, z=13, stackpos=253}
player1 = getThingfromPos(player1pos)

player2pos = {x=1633, y=425, z=13, stackpos=253}
player2 = getThingfromPos(player2pos)

player3pos = {x=1634, y=425, z=13, stackpos=253}
player3 = getThingfromPos(player3pos)

player4pos = {x=1635, y=425, z=13, stackpos=253}
player4 = getThingfromPos(player4pos)


if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then

player1level = getPlayerLevel(player1.uid)
player2level = getPlayerLevel(player2.uid)
player3level = getPlayerLevel(player3.uid)
player4level = getPlayerLevel(player4.uid)

questlevel = 100

if player1level >= questlevel and player2level >= questlevel and player3level >= questlevel and player4level >= questlevel then

queststatus1 = getPlayerStorageValue(player1.uid,100)
queststatus2 = getPlayerStorageValue(player2.uid,100)
queststatus3 = getPlayerStorageValue(player3.uid,100)
queststatus4 = getPlayerStorageValue(player4.uid,100)

if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then
--if 1==1 then
demon1pos = {x=1632, y=423, z=14}
demon2pos = {x=1634, y=423, z=14}
demon3pos = {x=1633, y=427, z=14}
demon4pos = {x=1635, y=427, z=14}
demon5pos = {x=1636, y=425, z=14}
demon6pos = {x=1637, y=425, z=14}

doSummonCreature("Demon", demon1pos)
doSummonCreature("Demon", demon2pos)
doSummonCreature("Demon", demon3pos)
doSummonCreature("Demon", demon4pos)
doSummonCreature("Demon", demon5pos)
doSummonCreature("Demon", demon6pos)

nplayer1pos = {x=1632, y=425, z=14}
nplayer2pos = {x=1633, y=425, z=14}
nplayer3pos = {x=1634, y=425, z=14}
nplayer4pos = {x=1635, y=425, z=14}

doSendMagicEffect(player1pos,2)
doSendMagicEffect(player2pos,2)
doSendMagicEffect(player3pos,2)
doSendMagicEffect(player4pos,2)

doTeleportThing(player1.uid,nplayer1pos)
doTeleportThing(player2.uid,nplayer2pos)
doTeleportThing(player3.uid,nplayer3pos)
doTeleportThing(player4.uid,nplayer4pos)


doSendMagicEffect(nplayer1pos,10)
doSendMagicEffect(nplayer2pos,10)
doSendMagicEffect(nplayer3pos,10)
doSendMagicEffect(nplayer4pos,10)

doTransformItem(item.uid,1945)

else
doPlayerSendCancel(cid,"Someone has already done this quest")
end
else
doPlayerSendCancel(cid,"Your level is too low")
end
else
doPlayerSendCancel(cid,"You need 4 players in your team.")
end
end
if item.itemid == 1945 then
-- Here is the code start:
starting={x=1632, y=423, z=14, stackpos=253}
checking={x=starting.x, y=starting.y, z=starting.z, stackpos=starting.stackpos}
ending={x=1638, y=428, z=14, stackpos=253}
players=0
totalmonsters=0
monster = {}
repeat
creature= getThingfromPos(checking)
if creature.itemid > 0 then
if getPlayerAccess(creature.uid) == 0 then
players=players+1
end
if getPlayerAccess(creature.uid) ~= 0 and getPlayerAccess(creature.uid) ~= 3 then
totalmonsters=totalmonsters+1
monster[totalmonsters]=creature.uid
end
end
checking.x=checking.x+1
if checking.x>ending.x then
checking.x=starting.x
checking.y=checking.y+1
end
until checking.y>ending.y
if players==0 then
trash= {x=1715, y=678, z=5}
current=0
repeat
current=current+1
doTeleportThing(monster[current],trash)
until current>=totalmonsters
doTransformItem(item.uid,1946)
end
-- Here is the end of it

end
end
if item.uid == 5001 then
queststatus = getPlayerStorageValue(cid,100)
if queststatus == -1 then
doPlayerSendTextMessage(cid,22,"You have found a demon armor.")
doPlayerAddItem(cid,2494,1)
setPlayerStorageValue(cid,100,1)
else
doPlayerSendTextMessage(cid,22,"It is empty.")
end
end
if item.uid == 5002 then
queststatus = getPlayerStorageValue(cid,100)
if queststatus ~= 1 then
doPlayerSendTextMessage(cid,22,"You have found a magic sword.")
doPlayerAddItem(cid,2400,1)
setPlayerStorageValue(cid,100,1)
else
doPlayerSendTextMessage(cid,22,"It is empty.")
end
end
if item.uid == 5003 then
queststatus = getPlayerStorageValue(cid,100)
if queststatus ~= 1 then
doPlayerSendTextMessage(cid,22,"You have found a stonecutter axe.")
doPlayerAddItem(cid,2431,1)
setPlayerStorageValue(cid,100,1)
else
doPlayerSendTextMessage(cid,22,"It is empty.")
end
end
if item.uid == 5004 then
queststatus = getPlayerStorageValue(cid,100)
if queststatus ~= 1 then
doPlayerSendTextMessage(cid,22,"You have found a present.")
doPlayerAddItem(cid,2326,1)
setPlayerStorageValue(cid,100,1)
else
doPlayerSendTextMessage(cid,22,"It is empty.")
end
end
return 1
end





this script above works correctly if you use other server expect tfs
if you want to work on tfs

you should change this:

doTeleportThing(player1.uid,nplayer1pos)
doTeleportThing(player2.uid,nplayer2pos)
doTeleportThing(player3.uid,nplayer3pos)
doTeleportThing(player4.uid,nplayer4pos)



to:
doTeleportThing(cid,nplayer1pos,0)
doTeleportThing(cid,nplayer2pos,0)
doTeleportThing(cid,nplayer3pos,0)
doTeleportThing(cid,nplayer4pos,0)



i have tested it on tfs 0.24 and it works correctly!!!
 
If you wanna working annihilator script on Forgotten 0.2.5 just copy script that published thalis~ and replace:
doTeleportThing(player1.uid,nplayer1pos)
doTeleportThing(player2.uid,nplayer2pos)
doTeleportThing(player3.uid,nplayer3pos)
doTeleportThing(player4.uid,nplayer4pos)


with:
doTeleportThing(player1.uid,nplayer1pos,0)
doTeleportThing(player2.uid,nplayer2pos,0)
doTeleportThing(player3.uid,nplayer3pos,0)
doTeleportThing(player4.uid,nplayer4pos,0)
 
Back
Top