本文へ移動
Fizor LogoFizor/

FIZOR DOCUMENTATION

Lua SDK

Lua SDKは、Key確認、公開releaseの取得、HeartbeatをLuaから利用するための入口です。

どの入口を選ぶか

Key確認と実行だけならFizor library、公開releaseを固定URLで配信するならStable Loaderを使います。独自の画面やsession処理を実装する場合はcheck_keyload_scriptを手動制御します。管理者がMANUAL_LURAPHのreleaseを準備、検証、公開する手順は手動Luraph保護リリースを参照してください。

Fizor library

lua
local api = loadstring(game:HttpGet("https://fizor.example.com/api/library.lua"))()
api.script_id = "SCRIPT_ID"

local status = api.check_key(script_key)
if status.code == "KEY_VALID" then
    return api.load_script()
end
warn(status.code .. ": " .. status.message)

check_key成功時だけ短寿命sessionがcacheされ、load_scriptで一度だけ消費されます。shared secretはLuaへ配布されません。本体実行前にLRM_UserNoteLRM_ExpireDateLRM_TotalExecutionsgetgenv().FizorLicenseが設定されます。

Stable Loaderは、Script releaseを更新しても同じURLを使い続けるためのLua SDKです。

lua
script_key = "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX"
loadstring(game:HttpGet("https://example.com/loader/<script-id>.lua"))()

<script-id>にはScript IDを指定します。Script slugはProject間で重複し得るため、Stable Loader URLには使いません。

既存のキーGUIを使う場合は、GUI側でgetgenv().script_key_G.script_keyshared.script_key、またはglobal script_keyにキーを入れてからStable Loader URLを実行します。script_keyがある場合だけ、Loaderは自動でkey認証してpublished releaseを実行します。

SDKを手動制御したい場合、script_keyを設定せずに読み込むか、読み込み前に自動実行を無効化できます。

lua
_G.FIZOR_NO_AUTO_LOAD = true
local Fizor = loadstring(game:HttpGet("https://example.com/loader/<script-id>.lua"))()

移行用としてLuarmor = Fizor aliasも公開されます。そのため、既存GUIからは次の形も使えます。

lua
getgenv().script_key = "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX"
local Luarmor = loadstring(game:HttpGet("https://example.com/loader/<script-id>.lua"))()
Luarmor.check_key(getgenv().script_key)
Luarmor.load_script()

check_key

lua
local result = Fizor.check_key("XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX", "client-hwid-1", {
  executor = "manual-test"
})

check_keyはkey、Project、Script、identifierを検証し、成功時に短命sessionとruntime contextを返します。sourceは返しません。

成功時:

json
{
  "ok": true,
  "code": "KEY_VALID",
  "session": "fizor_session_v1...",
  "runtime": {
    "projectId": "...",
    "projectSlug": "main",
    "scriptId": "...",
    "scriptSlug": "hub",
    "licenseId": "...",
    "issuedAt": "2026-06-21T00:00:00.000Z",
    "expiresAt": "2026-06-21T00:01:00.000Z"
  }
}

load_script

lua
local loaded = Fizor.load_script("XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX", "client-hwid-1", {
  execution_id = "run-0001"
})

load_scriptは必要に応じてcheck_keyを実行し、成功したsessionで最新版のpublished releaseを取得して実行します。sessionは一回限りかつ短命で、改変、期限切れ、nonce再利用はsource配信前に拒否されます。sessionはload開始時にcacheから破棄されるため、次回のload_scriptは自動的に新しいcheckを実行します。

purge_cache

lua
Fizor.purge_cache()

purge_cacheはLua側のcheck結果、session、source、checksumのcacheを破棄します。次回のcheck_keyまたはload_scriptはサーバーへ再問い合わせします。

Status

Lua SDKはAPIのerror codeを標準statusへ正規化します。

  • KEY_VALID
  • KEY_INCORRECT
  • KEY_EXPIRED
  • KEY_BANNED
  • KEY_HWID_LOCKED
  • PROJECT_STOPPED
  • SCRIPT_INACTIVE
  • RATE_LIMITED
  • SESSION_INVALID
  • SESSION_EXPIRED
  • SESSION_NOT_ACTIVE
  • SESSION_REPLAYED
  • UNKNOWN_ERROR

Heartbeatと停止通知

Script側でHeartbeatを有効にした場合だけ、load_scriptがバックグラウンドheartbeatを開始します。一時的な429、503、network errorは指数backoffで再試行され、graceを超えるとfail-closedになります。失効時は、Scriptの戻り値が関数ならcleanupとして実行し、次にoptions.on_revokedを呼びます。どちらもない場合は既定動作としてLocalPlayer:Kickします。長時間処理はcleanup関数またはcallbackでMaid等の接続・taskを確実に停止してください。

lua
Fizor.load_script(key, hwid, {
  on_revoked = function(response)
    maid:DoCleaning()
  end,
})

次に読む