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

Checking if player left a area

Tarielle

New Member
Joined
Nov 4, 2007
Messages
214
Reaction score
0
Location
Sweden
Hi, how can I make a area checking if there if a player dies, logs out or leaves the area. For example: if you have a 3x3 square with a demon inside; then if a player goes in there and dies, how can I then remove the demon? I can remove the creature but I dont know how to check if the player died.

Thanks
 
you can make like in anni quest.. just everytime they pull the lever.. and they will be tped there the demons are tping to trash square (1x1 is enought)
and new are spawning.. if you mean that :p
just look in that script and take part you are interested in
 
How do I write the position of those tiles? Without needing to write every single tile. And can you write a working trash function cause my Annihilator trash function aint working.
 
Code:
local starting= {x = [COLOR="Red"]xxx[/COLOR], y = [COLOR="Red"]yyy[/COLOR], z = [COLOR="Red"]zz[/COLOR]} -- edit this to the top left sqm of ur annhilator room
local ending= {x = [COLOR="Red"]xxx[/COLOR], y = [COLOR="Red"]yyy[/COLOR], z = [COLOR="Red"]zz[/COLOR]} -- edit this to the bottom right sqm of ur annhilator room

local playerPos = { -- oldPositions; positions of players before he get teleported.
    {x = [COLOR="Red"]xxx[/COLOR], y = [COLOR="Red"]yyy[/COLOR], z = [COLOR="Red"]zz[/COLOR]}}

local newPlayerPos = { -- Positions for where players should be teleported, make sure it's in the same order as oldPositions
    {x = xxx, y = yyy, z = zz}}
        
local creaturePos = { -- Name and position of monsters to summon.
    {"Demon", {x = [COLOR="Red"]xxx[/COLOR], y = [COLOR="Red"]yyy[/COLOR], z = [COLOR="Red"]zz[/COLOR]}}}

if(#playerPos ~= #newPlayerPos) then
    error("Script 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 == [COLOR="Red"]uniqueid[/COLOR]) 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([COLOR="Red"]100[/COLOR]) --- if lvl is eq
                    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) .. " 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

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

    return TRUE
end
that should work..
i modified the anni script a bit..
tell me if getting any error
red things can be modified by you



-- 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.
 
Last edited:
I don't think that's what he wants + doRemoveCreature is better than tping the demon ^.-

Just onStepIn or so? But how do you come to that 3x3 place in your server?
 
maybe yea.. but i am not pro scripter ;P i modified one i had :p
if you can help him in better way why not then..
i am just trying to do my best :D

and i think
Code:
  doRemoveCreature(c)

is in that script.. so i remember bad :p
 
Back
Top