• 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 How to make a globalevent to start talkaction.

Raks One

Member
Joined
May 10, 2008
Messages
92
Reaction score
5
Hello!,
I have a event on my ot, and this event need only a talkaction ( /start-event ). I want to know how to make a globalevent with time in hours ( ex: 12:35 ) to execute this talkaction.
Thanks in advance.

- - - Updated - - -

Bump.
 
Maybe u need a timer to execute the event, bcz talkaction: need to be executed by a player.

Code:
<globalevent name="timer_example" time="21:35" event="script" value="my_script.lua"/>
 
@Loney you're wrong.
First you must remove the talkactions commands and make the event lua script to work with globalevent, then this zombie event:

globalevents/scripts/zombieEvent.lua:
Lua:
local config = {
    playerCount = 1560, -- Global storage for counting the players left/entered in the event
    zombieCount = 1896, -- Global storage for counting the zombies in the event
    teleportActionId = 1863, -- Action id of the teleport needed for the movement script
    teleportPosition = {x = 1056, y = 1047, z = 7, stackpos = 1}, -- Where the teleport will be created
    teleportToPosition = {x = 1804, y = 837, z = 7}, -- Where the teleport will take you
    losserPos = {x = 1054, y = 1049, z = 7}, -- Where the event will take you when loss
    teleportId = 1387, -- Id of the teleport
    timeToStartEvent = 2, -- 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 = "zombie", -- 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 = 1785, y = 825, z = 7}, -- top left cornor of the playground
    toPosition = {x = 1823, y = 849, z = 7}, -- bottom right cornor of the playground
    }

function onTimer()
    local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)
    doItemSetAttribute(tp, "aid", config.teleportActionId)
    doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start! Location: Saffron CP!", MESSAGE_STATUS_WARNING)
    setGlobalStorageValue(config.playerCount, 0)
    setGlobalStorageValue(config.zombieCount, 0)
    addEvent(startEvent, config.timeToStartEvent * 1000 * 60)
    print(getGlobalStorageValue(1560))
end

function startEvent()
    local get = getThingfromPos(config.teleportPosition)
    if get.itemid == config.teleportId then
        doRemoveItem(get.uid, 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 zombie 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 = getThingfromPos(areapos)
                    if isPlayer(getPlayers.uid) then
                   doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "First zombie will be appear in seconds...")
                    end
                end
            end
        end
    else
        doBroadcastMessage("The Zombie 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 = getThingfromPos(areapos)
                    if isPlayer(getPlayers.uid) then
                        doTeleportThing(getPlayers.uid, config.losserPos)
                        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 zombie has appeared! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies.", MESSAGE_STATUS_CONSOLE_RED)
        addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
    end
end

globalevents/globalevents.xml:
Code:
        <!-- Zombie Plague Event and Others -->
<globalevent name="timer" time="12:35" event="script" value="zambieEvent.lua"/>

So.. with that codes, the event will be work.
Example, you must change the script to globalevents and add the tags
Code:
function onTimer()
and other, because with the globalevent tag, the script will be work.

Chavoz.

---EDITED---
If you like, post the script and i can change to work with timer for you
 
Last edited:
If you're using 0.4 dev
change
Lua:
function onTimer()
to
Lua:
function onTime()

he wrote zambieEvent.lua so change with this one
XML:
<globalevent name="timer" time="12:35" event="script" value="zombieEvent.lua"/>

Regards,
H4CK3R
 
Back
Top