• 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

Casa

Welsh Reaper
Senator
Premium User
Joined
Aug 9, 2007
Messages
572
Reaction score
6
Location
United Kingdom
Put this in your actions.xml
Remember if 5000-5004 is already used use a free unique id!


PHP:
--Anihi 
<action uniqueid="5000" script="annihilator.lua" /> 
<action uniqueid="5001" script="annihilator.lua" /> 
<action uniqueid="5002" script="annihilator.lua" /> 
<action uniqueid="5003" script="annihilator.lua" /> 
<action uniqueid="5004" script="annihilator.lua" />
copy a .php from the actions folder and rename it annihilator
Delete all inside and put this:


PHP:
 -- 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
Its self explained really...
Place a switch with the tiles of a dp infront of it!
Right click them in map editor and put the unique id 1946.
put these Unique id's on the chest and switch
5000 = Switch.
5001 = Demon Armor chest.
5002 = Magic Sword chest.
5003 = Stonecutter Axe chest.
5004 = Present chest.

Now place the co-ordinates in the correct positions where they are standing before they enter here!


PHP:
 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)
Where there going to be positioned here:

PHP:
    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}
Then the demons positions here:


PHP:
      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}
Then your done...
Go test it out.. have fun!
If you have any problems msg me

OPS forgot the credits :S
GriZzm0
Tworn
Actualy made this script please give all credits to them!
Although i made this tut!
 
Last edited:
Code:
-- 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
How do you configure that? nice explanation.
 
rip off is great eh?

rip off.. look again... :S i made the tut myself.
the code is actualy credited to somone else.. Open your eyes b4 you piss ppl off

@ Xine. whats that script for dude.
Its not a quest because theres no Uni-id's
If it is a quest tell me the Actions.xml code which is easily found.
Goto the name of that php/right click rename/copy the name/goto actions.xml/Ctrl and 'F'/paste/enter.
 
Last edited:
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}
}
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
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"/>
With this script you will need to place the demons in the room on the map editor.
Also make the Chest boxes, which is easy (action id = the item id)

Any questions or problems just feel free to ask!
 
I'm using TFS 0.2.3 and both scripts doesn't work. I have lua script error: onUse. Please help me.
 
I'm using TFS 0.2.3 and both scripts doesn't work. I have lua script error: onUse. Please help me.

The second script is from Tfs 0.2.3...
I have just converted to TFS so give me a day and i will see if theres and problems with it!
 
ok, i will be waiting for script :).

Well the script works great here!...
Erm are you sure you placed the demons and quest boxes in the quest room?

@ jeeppee...
What part didnt you get? And what Distro are you using!
 
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)
 
Back
Top