Global Events
Global Events
Global Events are server-wide events that trigger at specific times, intervals, or during server lifecycle events.
Event Types
| Type | Callback | Description |
|---|---|---|
startup | onStartup | Server starts |
shutdown | onShutdown | Server shuts down |
record | onRecord | New player record |
save | onSave | Server saves |
timer | onTime | Specific time of day |
think | onThink | Periodic interval |
Creating a Global Event
local myEvent = GlobalEvent("eventName")
function myEvent.onStartup() print("Server started!") return trueend
myEvent:type("startup")myEvent:register()Methods
type(eventType)
Sets the event type.
time(timeString)
Sets the time for timer events (format: "HH:MM:SS" or "HH:MM").
myEvent:time("12:00") -- Triggers at nooninterval(ms)
Sets the interval for think events in milliseconds.
myEvent:interval(60000) -- Every minuteregister()
Registers the event.
Callback Signatures
onStartup()
function myEvent.onStartup() return trueendonShutdown()
function myEvent.onShutdown() return trueendonRecord(current, old)
function myEvent.onRecord(current, old) -- current = new record, old = previous record return trueendonSave()
function myEvent.onSave() return trueendonTime(interval)
function myEvent.onTime(interval) return trueendonThink(interval)
function myEvent.onThink(interval) return trueendExamples
Startup Event
local startup = GlobalEvent("StartupMessage")
function startup.onStartup() print("=================================") print("BlackTek Server Started!") print("=================================") return trueend
startup:type("startup")startup:register()Daily Reset at Midnight
local dailyReset = GlobalEvent("DailyReset")
function dailyReset.onTime(interval) -- Reset daily storages db.query("UPDATE player_storage SET value = 0 WHERE key = 50000")
-- Broadcast message for _, player in ipairs(Game.getPlayers()) do player:sendTextMessage(MESSAGE_STATUS_WARNING, "Daily reset complete!") end
return trueend
dailyReset:type("timer")dailyReset:time("00:00")dailyReset:register()Periodic Save Reminder
local saveReminder = GlobalEvent("SaveReminder")
function saveReminder.onThink(interval) for _, player in ipairs(Game.getPlayers()) do player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Remember to bank your gold!") end return trueend
saveReminder:type("think")saveReminder:interval(3600000) -- Every hoursaveReminder:register()Player Record Announcement
local recordEvent = GlobalEvent("PlayerRecord")
function recordEvent.onRecord(current, old) local message = string.format( "New player record: %d players! (Previous: %d)", current, old )
for _, player in ipairs(Game.getPlayers()) do player:sendTextMessage(MESSAGE_STATUS_WARNING, message) end
return trueend
recordEvent:type("record")recordEvent:register()File Location
data/scripts/globalevents/