Skip to content

Julakk/openmp-lua-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LuaScriptComponent — Plugin open.mp untuk menjalankan Lua di server

Plugin ini menanamkan (embed) Lua interpreter ke dalam server open.mp, supaya kamu bisa menulis logika server dalam Lua (scripts/main.lua) tanpa player perlu memasang mod apapun — semua kode Lua dijalankan di server, bukan di klien.

Status build

✅ Build sukses via GitHub Actions CI. Lihat tab Actions repo ini untuk hasil build terbaru, atau tab Releases untuk file .so siap pakai. Riwayat perbaikan ada di CHANGELOG.md.

⚠️ Hal penting yang perlu kamu tahu

  1. Server open.mp (dan SA-MP) berjalan sebagai binary x86_64 di Linux — bukan ARM/Android. Kalau kamu build langsung di Termux (arm64), hasilnya tidak bisa dipakai di server x86_64. Cara paling praktis dan yang dipakai proyek ini adalah build otomatis lewat GitHub Actions (ubuntu-latest, sudah x86_64) — lihat .github/workflows/build.yml. Termux di sini hanya dipakai untuk edit source code & push, bukan untuk kompilasi final.
  2. open.mp SDK (open.mp-sdk) adalah SDK komponen C++ modern (interface IComponent) — jauh lebih berat dibanding SDK plugin SA-MP lama (samp-plugin-sdk berbasis AMX). SDK ini butuh C++17 dan beberapa submodule Git: lib/glm, lib/span-lite, lib/robin-hood-hashing, lib/string-view-lite.
  3. Penting: pada versi SDK yang dipakai proyek ini, ICore, IPlayer, dkk berada di global namespace — bukan omp::. Kalau kamu clone ulang SDK dan dapat versi berbeda, cek ulang header di external/open.mp-sdk/include/ sebelum build, karena nama/namespace/ signature method bisa berubah antar versi.

Struktur proyek

Cara mendapatkan file .so

Opsi 1 — paling gampang, langsung download: Buka tab Actions repo ini → pilih run terbaru yang ✅ sukses → download artifact LuaScriptComponent. Atau cek tab Releases kalau sudah ada rilis resmi.

Opsi 2 — build sendiri via CI: Push perubahan ke branch main, workflow otomatis jalan dan hasil .so muncul sebagai artifact di run tersebut.

Opsi 3 — build manual di Linux x86_64 sendiri:

git clone --recursive https://github.com/openmultiplayer/open.mp-sdk external/open.mp-sdk

mkdir -p external/lua
cd external/lua
wget https://www.lua.org/ftp/lua-5.4.7.tar.gz
tar -xzf lua-5.4.7.tar.gz
mv lua-5.4.7/src src
cd ../..

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)

Hasil LuaScriptComponent.so ada di folder build/.

Pasang ke server open.mp

cp LuaScriptComponent.so /path/ke/server/open.mp/components/
mkdir -p /path/ke/server/open.mp/scripts
cp scripts/main.lua /path/ke/server/open.mp/scripts/

Jalankan server open.mp seperti biasa (./omp-server). Cek log server — harus muncul baris [LuaScriptComponent] Lua engine siap..

Menambah fungsi jembatan baru (Lua ⇄ SA-MP)

Pola untuk menambah fungsi baru di src/LuaBindings.cpp:

  1. Tulis fungsi int Lua_NamaFungsi(lua_State* L) { ... } yang mengambil argumen dari stack Lua (luaL_checkinteger, luaL_checkstring, dst).
  2. Panggil API core->... yang sesuai (ingat: ICore*, bukan omp::ICore*).
  3. lua_push... hasilnya, return jumlah nilai yang dikembalikan ke Lua.
  4. Daftarkan di array kSampFunctions[].

Contoh pemakaian di main.lua setelah menambah fungsi baru:

SetPlayerHealth(playerid, 100.0)

Riwayat perubahan

Lihat CHANGELOG.md untuk daftar lengkap perbaikan build dan kompatibilitas API SDK.

About

Plugin open.mp untuk menjalankan skrip Lua di server SA-MP

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages