Sebelum memulai menggunakan fmid_loop, kamu harus memasang dari antara dua metode berikut ini ke script kamu: (pilih salah satu)
fxmanifest method
shared_script '@fmid_loop/shared.lua'
pasang shared_script tersebut dibagian atas sebelum kamu menyebutkan client_script / server_script yang membutuhkan fungsi dari fmid_loop.
exports method
local loop, loops = exports.fmid_loop:getLoop(), exports.fmid_loop:getLoops()
pasang exports tersebut dibagian teratas didalam script lua kamu yang membutuhkan fungsi dari fmid_loop
List Functions
Create, Remove, Start, Stop, Toggle Loop
loop.create(namaloop, fungsinya, tick) -- membuat loop dengan tick yang bisa diatur
loop.create(namaloop, fungsinya) -- membuat loop dengan tick 0ms
loop.createIfNotExist(namaloop, fungsinya, tick) -- membuat loop yang gaperlu kamu tau apakah loop ini sudah terdaftar atau belum.
loop.createReplaceExist(namaloop, fungsinya, tick) -- menimpa loop ke fungsi yang baru ke id loop terkait. (jika id loop nya pernah didaftarkan sebelumnya)
untuk membuat loop, kamu bisa menggunakan loop.create function dibagian teratas script dan disarankan didalam thread, seperti contoh berikut ini:
CreateThread(function()
loop.create('laparhaus', function()
LocalPlayer.state.lapar = LocalPlayer.state.lapar - 1
LocalPlayer.state.haus = LocalPlayer.state.haus - 2
end, 30000) -- tick dalam bentuk milidetik, setiap tick akan melakukan fungsinya.
end)
pada posisi diatas, looping dengan id laparhaus berhasil terbuat, tapi loopingnya belum jalan. untuk menjalankannya membutuhkan perintah dari fungsi/event lain untuk menjalankannya dan menghentikannya. seperti berikut ini.
loop.start(namaloop) -- langsung start tanpa metadata
loop.start(namaloop, metadata) -- langsung start dengan metadata
loop.stop(namaloop) -- langsung stop dan tidak remove metadata secara langsung (jika ada meta)
loop.stop(namaloop, true) -- langsung stop dan remove metadata secara langsung (jika ada meta)
loop.startFirst(namaloop) -- wait sesuai tick dulu, baru start isi loopnya.
loop.startFirst(namaloop, metadata) -- wait sesuai tick dulu, baru start isi loopnya, dengan membawa metadata
loop.toggle(namaloop) -- auto switch start/stop loop tanpa kamu validasi loopnya sedang berjalan atau tidak.
loop.toggle(namaloop, fungsi_callback) -- auto switch start/stop loop tanpa kamu validasi loopnya sedang berjalan atau tidak, dengan callback dalam bentuk fungsi
kamu juga bisa melakukan remove id loop, ketika remove loop otomatis ketika loopnya sedang berjalan akan stop, lalu dari sistem akan menghapus id loop dari cache.
loop.remove(namaloop) -- untuk stop loop (jika loop sedang berjalan) dan menghapus loopnya.
dan kamu juga bisa mengganti tick loop ketiak loopnya berjalan maupun dalam keadaan stopped. caranya seperti berikut ini:
loop.edit(namaloop, jenis, isi)
-- contohnya:
loop.edit('laparhaus', 'tick', 15000) -- mengganti ke setiap 15000ms sekali
contohnya:
AddStateBagChangeHandler('isLoggedIn', nil, function(bagName, key, value)
if value then
loop.start('laparhaus')
else
loop.remove('laparhaus') -- remove karna kondisinya player sudah logout, kalau mau jeda dan bisa dilanjutkan lagi bisa menggunakan loop.stop('laparhaus')
end
end)
Metadata
metadata ini berfungsi untuk menyimpan suatu data ketika memulai loop dan diproses ketika loopnya berjalan dan dapat di get / set meta dari dalam loop, sehingga metadata dapat diproses mulai dari loopnya started hingga stopped.
Set Meta
loop.setmeta(namaloop, key, value)
-- contoh ada 2 metode: contohnya menahan lapar selama 20 tick
loop.setmeta('laparhaus', 'tahanlapar', 20) -- metode 1
loops.laparhaus.meta.tahanlapar = 20 -- metode 2
Get Meta
loop.getmeta(namaloop, key)
-- contoh ada 2 metode: contohnya mau get ketahanan lapar
loop.getmeta('laparhaus', 'tahanlapar') -- metode 1
local tahan = loops.laparhaus.meta.tahanlapar -- metode 2
Get All Metadata
loop.getallmeta(namaloop)
-- contoh
loop.getallmeta('laparhaus')
-- akan return value seperti ini
{
tahanlapar = 20
}
Start Loop dan Buat Meta secara langsung
loop.start('laparhaus', {
tahanlapar = 20
}) -- untuk start loop (tick setelah fungsi dijalankan) dan beserta dengan meta
loop.startFirst('laparhaus', {
tahanlapar = 20
}) -- untuk start loop (tick sebelum fungsi dijalankan) dan beserta dengan meta
Proses Loop dengan Metadata
loop.create('laparhaus', function(meta)
if meta.tahanlapar > 0 then
loop.setmeta('laparhaus', 'tahanlapar', meta.tahanlapar - 1)
-- atau
loops.laparhaus.meta.tahanlapar = meta.tahanlapar -1
else
LocalPlayer.state.lapar = LocalPlayer.state.lapar - 1
LocalPlayer.state.haus = LocalPlayer.state.haus - 2
end
end, 30000)
Stop Loop + Remove Metadata
loop.stop('laparhaus', true) -- stop loop + remove metadata secara langsung