Threading
Thread background yang di-drive dari Lua. Beda dari runtime Lucifer original, thread di Seraph share globals skrip — bisa baca / mutate value dari mana saja.
local value = 0
local threadId = runThread(function()
value = 5
end)
removeThread(threadId) -- stop thread spesifik
sleep(ms) nge-yield coroutine sekarang. Pasangin sama polling pathfinding() atau wait connected() kalau perlu nge-give scheduler slot waktu.
Globals
runThread(fn)
| Field | Type |
|---|---|
| Signature | (fn: () → ()) → number |
| Returns | number — task id, di-pass ke removeThread(id) buat abort nanti |
| Async | no — id langsung balik, fungsinya jalan di tokio task detached |
Spawn fn sebagai tokio task fire-and-forget. Fungsinya jalan detached — return value dibuang; error di-swallow diam-diam. Pake getLogs() / print() buat surface progress.
local id = runThread(function()
sleep(60000)
print("bangun")
end)
removeThread(threadId)
| Field | Type |
|---|---|
| Signature | (threadId: number) → boolean |
| Returns | boolean — true kalau id-nya match task yang masih hidup; false kalau task udah selesai atau gak pernah ke-register |
| Async | no |
Cancel + abort secara cooperative task dengan id ini (value yang sebelumnya di-return runThread). Idempotent — manggil dua kali di id yang sama bakal balik false di kali kedua.
local id = runThread(function() sleep(60000) end)
removeThread(id) -- true
removeThread(id) -- false (udah hilang)
sleep(ms)
| Field | Type |
|---|---|
| Signature | (ms: number) → () |
| Returns | nothing |
| Async | yes — yield skrip selama ms milidetik |
Cooperative — bot lain dan packet handler tetep jalan. Jangan dipanggil di dalam event handler synchronous.
sleep(1500) -- 1.5 detik
Jalanin di setiap bot terhubung
for i, b in ipairs(getClients()) do
runThread(function()
-- kerjaan per-bot, semua jalan barengan
b:warp("MYWORLD")
end)
end