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

Anni Help

skrm

New Member
Joined
Mar 15, 2008
Messages
67
Reaction score
0
im using tfs 0.2.10 and when i use the switch and nothing happens

actions.xml
<action itemid="1740" script="quests/quests.lua"/>
<action fromid="1747" toid="1749" script="quests/quests.lua"/>
<action uniqueid="5000" script="quests/annihilator.lua"/>
<action uniqueid="5001" script="quests/annihilator.lua"/>
<action uniqueid="5002" script="quests/annihilator.lua"/>
<action uniqueid="5003" script="quests/annihilator.lua"/>
<action uniqueid="5004" script="quests/annihilator.lua"/>


annihilator.lua
-- Credits to GrizZm0 for most of the script
-- Credits to Tworn for the cleanArea(), a bit modified by Ispiro
-- Credits to Ispiro for a more easier script to configurate and easier to read.

local starting= {x = 186, y = 649, z = 13} -- edit this to the top left sqm of ur annhilator room
local ending= {x = 192, y = 656, z = 13} -- edit this to the bottom right sqm of ur annhilator room

local playerPos = { -- oldPositions; positions of players before they get teleported.
{x = 247, y = 662, z = 13},
{x = 247, y = 661, z = 13},
{x = 247, y = 660, z = 13},
{x = 247, y = 659, z = 13}
}

local newPlayerPos = { -- Positions for where players should be teleported, make sure it's in the same order as oldPositions
{x = 189, y = 653, z = 13},
{x = 189, y = 652, z = 13},
{x = 189, y = 651, z = 13},
{x = 189, y = 650, z = 13}
}

local creaturePos = { -- Name and position of monsters to summon.
{"Demon", {x = 189, y = 655, z = 13}},
{"Demon", {x = 189, y = 654, z = 13}},
{"Demon", {x = 191, y = 653, z = 13}},
{"Demon", {x = 191, y = 651, z = 13}},
{"Demon", {x = 187, y = 652, z = 13}},
{"Demon", {x = 187, y = 650, z = 13}}
}

if(#playerPos ~= #newPlayerPos) then
error("Annhilator has not been properly configured.")
end

--- Preferably, do not edit anything below this line unless you know exactly what you are doing.
local player = {}

function onUse(cid, item, frompos, item2, topos)
if(item.uid == 5000) then --- change to different item.uid according to ur mapeditor
if(item.itemid == 1945) then
for currentPlayer = 1, table.getn(playerPos) do -- add player id's to table
playerPos[currentPlayer].stackpos = 253
player[currentPlayer] = getThingfromPos(playerPos[currentPlayer]).uid
end
if(checkPlayers()) then
local ret, player = checkLevel(100)
if(ret) then
local ret, player = checkStorage(100)
if(ret) then
summonCreatures(creaturePos)
teleportPlayers(2, 10) -- 2 stands for the effect on old pos, 10 for the effect on new pos.
doTransformItem(item.uid, 1946)
else
doPlayerSendCancel(cid, getPlayerName(player) .. " has already done this quest.")
end
else
doPlayerSendCancel(cid, getPlayerName(player) .. " is too low.")
end
else
doPlayerSendCancel(cid, "You need " .. #playerPos .. " players to do this quest.")
end
elseif(item.itemid == 1946) then -- preferably, to be the id of the lever added by mapeditor.
if(cleanArea()) then
doTransformItem(item.uid, 1945)
else
return FALSE
end
end
--- Chests.
elseif(item.uid == 5001) then -- demon armor
questChestPrize(cid, 2494, 1, 100)
elseif(item.uid == 5002) then -- magic sword
questChestPrize(cid, 2400, 1, 100)
elseif(item.uid == 5003) then -- stonecutter's axe
questChestPrize(cid, 2431, 1, 100)
elseif(item.uid == 5004) then -- thunder hammer
questChestPrize(cid, 2421, 1, 100)
end
return TRUE
end

function checkLevel(minLevel)
for currentPlayer = 1, table.getn(player) do
local playerLevel = getPlayerLevel(player[currentPlayer])
if(playerLevel < minLevel) then
if(getPlayerAccess(player[currentPlayer]) == 0) then
return false, player[currentPlayer]
end
end
end
return true
end

function checkStorage(storageValue)
for currentPlayer = 1, table.getn(player) do
local questStatus = getPlayerStorageValue(player[currentPlayer], storageValue)
if(questStatus == TRUE) then
if(getPlayerAccess(player[currentPlayer]) == 0) then
return false, player[currentPlayer]
end
end
end
return true
end

function cleanArea()
local checking= {x = starting.x, y = starting.y, z = starting.z, stackpos = 253}
local monster = {}
while(checking.y <= ending.y) do
local creature = getThingfromPos(checking)
if(isCreature(creature.uid) == TRUE) then
if(isPlayer(creature.uid) == TRUE) then
return false
else
table.insert(monster, creature.uid)
end
end
if(checking.x == ending.x) then
checking.x = starting.x
checking.y = checking.y + 1
end
checking.x = checking.x + 1
end
for i, c in pairs(monster) do
doRemoveCreature(c)
end
return true
end

function summonCreatures(parameters)
for currentMonster = 1, table.getn(parameters) do
local monster = parameters[currentMonster]
doSummonCreature(monster[1], monster[2])
end
end

function teleportPlayers(effect1, effect2)
for currentPlayer = 1, table.getn(player) do
doTeleportThing(player[currentPlayer], newPlayerPos[currentPlayer])
doSendMagicEffect(playerPos[currentPlayer], effect1) -- send animation after teleport, players teleported won't see it anyways
doSendMagicEffect(newPlayerPos[currentPlayer], effect2)
end
return 1
end

function checkPlayers()
for currentPlayer = 1, table.getn(player) do
local curPlayer = player[currentPlayer]
if(isPlayer(curPlayer) ~= TRUE) then
return false
end
end
return true
end

function questChestPrize(cid, prizeID, count, storagevalue)
-- Made By Ispiro
local doneQuest = getPlayerStorageValue(cid, storagevalue)
if(doneQuest == TRUE) then
doPlayerSendTextMessage(cid, 22, "It is empty.")
return FALSE
end
doPlayerSendTextMessage(cid, 22,"You have found a ".. getItemName(prizeID) ..".")
if(isItemStackable(prizeID) == TRUE) then
while count > 100 do
count = count - 100
doPlayerAddItem(cid, prizeID, 100)
end
else
while count > 1 do
count = count - 1
doPlayerAddItem(cid, prizeID, 1)
end
end
doPlayerAddItem(cid, prizeID, count) -- add left overs, always less than 100.
setPlayerStorageValue(cid, storagevalue, TRUE)
return TRUE
end



ive got the switch unique id set as 5000, and the action id set at 0. why wont it work? :huh:
 
use this one

This
-- 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 ice hammer.")
doPlayerAddItem(cid,7450,1)
setPlayerStorageValue(cid,100,1)
else
doPlayerSendTextMessage(cid,22,"It is empty.")
end
end
return 1
end
 
ive set up both and none work, on the second one it came up with an error,

data/actions/scripts/quests/annihilator.lua:26: '=' expected near 'function'

so idk, the first one came up with no errors, just didnt work so i guess im doing something else wrong, not the scripting, but cant figuer it out. ive tried lots of different scrips. plz help :confused:
 
Back
Top