📕
fmid Documentation
  • fmid Documentation
  • 🚘 fmid_garasi (2023)
    • client
    • Integrasi
    • Additional Commands
    • Pembuatan Garasi
    • Hooks
  • ♻️ fmid_loop
    • Contoh Penggunaan 1
  • 🔳fmid_poly
    • Getting Started
    • Usage
  • fmid_garasi 2.0
    • client
    • server
      • exports
      • commands
    • data
  • 🧠fmid_secure
    • Getting Started
    • Client
    • Server
  • fmid_split
    • Setup
  • 💃fmid_danceroom
    • External Script
    • Internal Script
    • Commands
  • 🧛fmid_ko
    • Internal
    • Integrasi
    • ox_lib Additional
  • 🔫pubg-hud
    • Integrasi ox_inventory
    • Integrasi ox_lib
    • Internal Script
Powered by GitBook
On this page
  • Getting Started
  • List Functions
  • Create, Remove, Start, Stop, Toggle Loop
  • Metadata

♻️ fmid_loop

bisa di client/serverside

Getting Started

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
PreviousHooksNextContoh Penggunaan 1

Last updated 1 year ago