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

Solved Zombile event

Code:
local config = {
    playerCount = 2001, -- Global storage for counting the players left/entered in the event
    zombieCount = 2002, -- Global storage for counting the zombies in the event
    teleportActionId = 2000, -- Action id of the teleport needed for the movement script
    teleportPosition = {x = 1003, y = 996, z = 7, stackpos = 1}, -- Where the teleport will be created
    teleportPosition = {x = 997, y = 996, z = 7, stackpos = 1}, -- Where the teleport will be created
    teleportToPosition = {x = 1050, y = 1919, z = 7}, -- Where the teleport will take you
    teleportId = 1387, -- Id of the teleport
    timeToStartEvent = 3, -- Minutes, after these minutes the teleport will be removed and the event will be declared started
    timeBetweenSpawns = 20, -- Seconds between each spawn of zombie
    zombieName = "Big foot", -- Name of the zombie that should be summoned
    playersNeededToStartEvent = 2, -- Players needed before the zombies can spawn.
  
    -- Should be the same as in the creaturescript!
    -- The zombies will spawn randomly inside this area
     fromPosition = {x = 978, y = 1870, z = 7}, -- top left cornor of the playground
    toPosition = {x = 1077, y = 1954, z = 7}, -- bottom right cornor of the playground
    }

function onThink(interval, lastExecution, thinkInterval)
    local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)
    doItemSetAttribute(tp, "aid", config.teleportActionId)
    local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)
doItemSetAttribute(tp, "aid", config.teleportActionId)
    doBroadcastMessage("Big foot event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)
    for x = 1, config.timeToStartEvent - 1 do
     addEvent(doBroadcastMessage, x * 60 * 1000, "Big foot event starting in " .. (config.timeToStartEvent - x) .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)
end
    setGlobalStorageValue(config.playerCount, 0)
    setGlobalStorageValue(config.zombieCount, 0)
    addEvent(startEvent, config.timeToStartEvent * 1000 * 60)
    print(getGlobalStorageValue(2001))
end

function startEvent()
    local get = getTileItemById(config.teleportPosition, config.teleportId).uid
if get > 0 then
     doRemoveItem(get, 1)
end
local get = getTileItemById(config.teleportPosition, config.teleportId).uid
if get > 0 then
     doRemoveItem(get, 1)
end
  
    local fromp, top = config.fromPosition, config.toPosition

    if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then
        addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
        doBroadcastMessage("Good luck in the Big foot event people! The teleport has closed!", MESSAGE_STATUS_WARNING)
      
        for x = fromp.x, top.x do
            for y = fromp.y, top.y do
                for z = fromp.z, top.z do
                    areapos = {x = x, y = y, z = z, stackpos = 253}
                   getPlayers = getTopplayer(areapos)
                   print(getPlayers.uid)
                    if isPlayer(getPlayers.uid) then
                        doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first Big foot will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!")
                    end
                end
            end
        end
    else
        doBroadcastMessage("The Big foot event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING)
        for x = fromp.x, top.x do
            for y = fromp.y, top.y do
                for z = fromp.z, top.z do
                    areapos = {x = x, y = y, z = z, stackpos = 253}
                    getPlayers = getTopplayer(areapos)
                    print(getPlayers.uid)
                    if isPlayer(getPlayers.uid) then
                        doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false)
                        doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT)
                    end
                end
            end
        end
    end
end

function spawnZombie()
    if getGlobalStorageValue(config.playerCount) >= 2 then
       pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)}
        doSummonCreature(config.zombieName, pos)
        doSendMagicEffect(pos, CONST_ME_MORTAREA)
        setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1)
        doBroadcastMessage("A Big foot has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " Big foot in the Big foot event!", MESSAGE_STATUS_CONSOLE_RED)
        addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
    end
end

i edite it its right ?
and no work just one tp is appear
 
Last edited:
doooooooooooooooooooooonnnnnnnnnnnnnee thx :D and what about channel open for player join event call event channel ? and auto teleport winner

BUGS in Big foot event
*the winner of the event can't teleport auto to temple must monster kill him to teleport to temple.
ُُُEdite for event.
*if we can make channel for events will be better and brodcast who is still live in event and who is get eat and how many Big foots spwans
Help me to done it please :D
 
Last edited by a moderator:
In the creaturescript, it checks for 2 or more, you can change that to more than 2
Code:
if getGlobalStorageValue(config.playerCount) > 2 then
Then change this line under it to 2 instead of 1.
Code:
elseif getGlobalStorageValue(config.playerCount) == 2 then

And add this
Code:
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
for _, pid in ipairs(getPlayersOnline()) do
     if isInRange(getPlayerPosition(pid), config.fromPosition, config.toPosition) then
         cid = pid
     end
end
Under
Code:
elseif getGlobalStorageValue(config.playerCount) == 2 then
if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then
 
error
znLP8E4K.png
 
Code:
local config = {
    playerCount = 2001, -- Global storage for counting the players left/entered in the event
   
    goblet = 5805, -- id of the gold goblet you'll get when finishing the event.
    rewards = {2195, 2152, 2160}, -- You will get this +  a gold goblet with your name on.
    --        {moneyId, count, using? 1 for using moneyReward, 0 for not using.}
    moneyReward = {2160, 10, 1},
   
    -- Should be same as in the globalevent!
    -- The zombies will spawn randomly inside this area
    fromPosition = {x = 978, y = 1870, z = 7}, -- top left cornor of the playground
    toPosition = {x = 1077, y = 1954, z = 7}, -- bottom right cornor of the playground
    }

function onStatsChange(cid, attacker, type, combat, value)
    if isPlayer(cid) and isMonster(attacker) then
        if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then
            elseif getGlobalStorageValue(config.playerCount) == 2 then
                 doBroadcastMessage(getPlayerName(cid) .. " have been eated by Big foot!", MESSAGE_STATUS_CONSOLE_RED)
                doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
                doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
                doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
                setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)-1)
            elseif getGlobalStorageValue(config.playerCount) == 1 then
                if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then
                            doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
for _, pid in ipairs(getPlayersOnline()) do
     if isInRange(getPlayerPosition(pid), config.fromPosition, config.toPosition) then
         cid = pid
     end
end
                    doBroadcastMessage(getPlayerName(cid) .. " won the Big foot event! Congratulations!", MESSAGE_STATUS_WARNING)
                    local goblet = doPlayerAddItem(cid, config.goblet, 1)
                    doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Big foot event.")
                    doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
                     doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
                    doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
                    for _,items in ipairs(config.rewards) do
                        doPlayerAddItem(cid, items, 1)
                    end
                    if config.moneyReward[3] == 1 then
                        doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2])
                    end
                end
                       
                for x = config.fromPosition.x, config.toPosition.x do
                    for y = config.fromPosition.y, config.toPosition.y do
                        for z = config.fromPosition.z, config.toPosition.z do
                            areapos = {x = x, y = y, z = z, stackpos = 253}
                            getMonsters = getThingfromPos(areapos)
                            if isMonster(getMonsters.uid) then
                                doRemoveCreature(getMonsters.uid)
                            end
                        end
                    end
                end
            end
            return false
        end
    end
return true
end
 
Change this
Code:
elseif getGlobalStorageValue(config.playerCount) == 2 then
To this
Code:
if getGlobalStorageValue(config.playerCount) > 2 then

And this
Code:
elseif getGlobalStorageValue(config.playerCount) == 1 then
To this
Code:
elseif getGlobalStorageValue(config.playerCount) == 2 then
 
when event finish its still summone big foot look ti this
3p9ekDgkb.png

14:19 Zero won the Big foot event! Congratulations!
14:19 A Big foot has spawned! There is currently 8 Big foot in the Big foot event!

GLzltSqSk.png
nc61yb4Do.png
 
Last edited by a moderator:
no

globalevent.lua
Code:
local config = {
    playerCount = 2001, -- Global storage for counting the players left/entered in the event
    zombieCount = 2002, -- Global storage for counting the zombies in the event
    teleportActionId = 2000, -- Action id of the teleport needed for the movement script
    teleportPosition = {x = 1003, y = 996, z = 7, stackpos = 1}, -- Where the teleport will be created
    teleportsPosition = {x = 997, y = 996, z = 7, stackpos = 1}, -- Where the teleport will be created
    teleportToPosition = {x = 1050, y = 1919, z = 7}, -- Where the teleport will take you
    teleportId = 1387, -- Id of the teleport
    timeToStartEvent = 3, -- Minutes, after these minutes the teleport will be removed and the event will be declared started
    timeBetweenSpawns = 20, -- Seconds between each spawn of zombie
    zombieName = "Big foot", -- Name of the zombie that should be summoned
    playersNeededToStartEvent = 2, -- Players needed before the zombies can spawn.
   
    -- Should be the same as in the creaturescript!
    -- The zombies will spawn randomly inside this area
     fromPosition = {x = 978, y = 1870, z = 7}, -- top left cornor of the playground
    toPosition = {x = 1077, y = 1954, z = 7}, -- bottom right cornor of the playground
    }

function onThink(interval, lastExecution, thinkInterval)
    local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)
    doItemSetAttribute(tp, "aid", config.teleportActionId)
    local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportsPosition)
doItemSetAttribute(tp, "aid", config.teleportActionId)
    doBroadcastMessage("Big foot event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)
    for x = 1, config.timeToStartEvent - 1 do
     addEvent(doBroadcastMessage, x * 60 * 1000, "Big foot event starting in " .. (config.timeToStartEvent - x) .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)
end
    setGlobalStorageValue(config.playerCount, 0)
    setGlobalStorageValue(config.zombieCount, 0)
    addEvent(startEvent, config.timeToStartEvent * 1000 * 60)
    print(getGlobalStorageValue(2001))
end

function startEvent()
    local get = getTileItemById(config.teleportPosition, config.teleportId).uid
if get > 0 then
     doRemoveItem(get, 1)
end
local get = getTileItemById(config.teleportsPosition, config.teleportId).uid
if get > 0 then
     doRemoveItem(get, 1)
end
   
    local fromp, top = config.fromPosition, config.toPosition

    if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then
        addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
        doBroadcastMessage("Good luck in the Big foot event people! The teleport has closed!", MESSAGE_STATUS_WARNING)
       
        for x = fromp.x, top.x do
            for y = fromp.y, top.y do
                for z = fromp.z, top.z do
                    areapos = {x = x, y = y, z = z, stackpos = 253}
                   getPlayers = getTopplayer(areapos)
                   print(getPlayers.uid)
                    if isPlayer(getPlayers.uid) then
                        doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first Big foot will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!")
                    end
                end
            end
        end
    else
        doBroadcastMessage("The Big foot event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING)
        for x = fromp.x, top.x do
            for y = fromp.y, top.y do
                for z = fromp.z, top.z do
                    areapos = {x = x, y = y, z = z, stackpos = 253}
                    getPlayers = getTopplayer(areapos)
                    print(getPlayers.uid)
                    if isPlayer(getPlayers.uid) then
                        doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false)
                        doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT)
                    end
                end
            end
        end
    end
end

function spawnZombie()
    if getGlobalStorageValue(config.playerCount) >= 2 then
       pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)}
        doSummonCreature(config.zombieName, pos)
        doSendMagicEffect(pos, CONST_ME_MORTAREA)
        setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1)
        doBroadcastMessage("A Big foot has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " Big foot in the Big foot event!", MESSAGE_STATUS_CONSOLE_RED)
        addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
    end
end
creaturescript.lu
Code:
local config = {
    playerCount = 2001, -- Global storage for counting the players left/entered in the event
   
    goblet = 5805, -- id of the gold goblet you'll get when finishing the event.
    rewards = {2195, 2152, 2160}, -- You will get this +  a gold goblet with your name on.
    --        {moneyId, count, using? 1 for using moneyReward, 0 for not using.}
    moneyReward = {2160, 10, 1},
   
    -- Should be same as in the globalevent!
    -- The zombies will spawn randomly inside this area
    fromPosition = {x = 978, y = 1870, z = 7}, -- top left cornor of the playground
    toPosition = {x = 1077, y = 1954, z = 7}, -- bottom right cornor of the playground
    }

function onStatsChange(cid, attacker, type, combat, value)
    if isPlayer(cid) and isMonster(attacker) then
        if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then
            if getGlobalStorageValue(config.playerCount) > 2 then
                 doBroadcastMessage(getPlayerName(cid) .. " have been eated by Big foot!", MESSAGE_STATUS_CONSOLE_RED)
                doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
                doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
                doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
                setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)-1)
            elseif getGlobalStorageValue(config.playerCount) == 2 then
                if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then
                            doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
for _, pid in ipairs(getPlayersOnline()) do
     if isInRange(getPlayerPosition(pid), config.fromPosition, config.toPosition) then
         cid = pid
     end
end
                    doBroadcastMessage(getPlayerName(cid) .. " won the Big foot event! Congratulations!", MESSAGE_STATUS_WARNING)
                    local goblet = doPlayerAddItem(cid, config.goblet, 1)
                    doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Big foot event.")
                    doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
                     doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
                    doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
                    for _,items in ipairs(config.rewards) do
                        doPlayerAddItem(cid, items, 1)
                    end
                    if config.moneyReward[3] == 1 then
                        doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2])
                    end
                end
                       
                for x = config.fromPosition.x, config.toPosition.x do
                    for y = config.fromPosition.y, config.toPosition.y do
                        for z = config.fromPosition.z, config.toPosition.z do
                            areapos = {x = x, y = y, z = z, stackpos = 253}
                            getMonsters = getThingfromPos(areapos)
                            if isMonster(getMonsters.uid) then
                                doRemoveCreature(getMonsters.uid)
                            end
                        end
                    end
                end
            end
            return false
        end
    end
return true
end

that i use right now
 
Last edited by a moderator:
*want to edite it 15:39 Big foot event starting in 2 minutes! The teleport will be closed when the event start!
for 15:39 Big foot event starting in 2 minutes! and x plyer join event!The teleport will be closed when the event start!
*if we can make channel for events will be better and brodcast who is still live in event and who is get eat and how many Big foots spwans
i want brodcast who many big foot spwaned and who is live for player in event only

Limos u are the best i want give Big reeeeeeeeeeeeeeeeeeeep
 
omg bro when event start again big foot still live from old event :S big foot don't remove :S
 
when event finish its still summone big foot look ti this
3p9ekDgkb.png

14:19 Zero won the Big foot event! Congratulations!
14:19 A Big foot has spawned! There is currently 8 Big foot in the Big foot event!

this bug again :S
and about channel i know must be new ip but when plyer open it brodcast will be in channel only?
 
Add this above for _, pid in ipairs(getPlayersOnline()) do
Code:
setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)-1)
 
Back
Top