Skip to content

PRESRELEASE

Pre-release
Pre-release

Choose a tag to compare

@devsers53 devsers53 released this 12 Sep 02:55
· 12 commits to main since this release

samp-server-lua — плагин-мост SA-MP <-> Lua 5.5 (полная эмуляция AMX-сценария).

Всё, что нужно для запуска гейм-мода на Lua, собрано в этом релизе.

Что внутри

  • salua_lua.dll — сам плагин (Windows, x86, MSVC). Встраивает Lua 5.5.1:
    • натив Lua_Fire(name, ...): колбэки сервера доходят до Lua (OnGameModeInit, OnPlayerConnect, OnPlayerCommandText, ...);
    • из Lua SA-MP-нативы вызываются через samp.call("Имя", args...) (плагин исполняет public API_<Имя> в прокси через amx_Exec);
    • out-параметры: samp.getPlayerPos/Name/Ip/Health/Armour (через amx_Allot);
    • ProcessTick -> Lua OnServerTick() -> таймеры setInterval;
    • конвертация UTF-8 (Lua) в кодировку сервера (Windows-1251) — кириллица в логе корректна.
  • lua_gm.amx — предкомпилированный прокси-геймод (pawncc 3.2.3664).
  • lua/main.lua — пример Lua-гейм-мода (спавн-классы, /help, /skin, /heal, /pos, /money, /name, таймеры).
  • pawno/include/lua_salua.inc — декларации нативов для павн.
  • server.cfg — пример конфигурации.

Установка

  1. salua_lua.dll -> plugins/ сервера, lua_gm.amx -> gamemodes/, lua/main.lua -> lua/.
  2. В server.cfg: plugins salua_lua и gamemode0 lua_gm 1.
  3. Запустить samp-server.exe.

Тестировано

  • SA-MP Dedicated Server v0.3.7-R3, Windows.
  • Плагин загружается (Loaded 1 plugins), экспорты Supports/Load/Unload/AmxLoad/AmxUnload/ProcessTick проверены dumpbin.
  • OnGameModeInit -> Lua: SetWeather / SetWorldTime / AddPlayerClass через samp.call работают.
  • Таймер-стресс: samp.call('SendClientMessageToAll') каждые ~2 с — сервер 40 сек, 22 срабатывания, падений нет.
  • Кириллица (UTF-8 -> Windows-1251) в server_log.txt отображается корректно.

Исходники и сборка

  • Полный исходный код (плагин plugins/src/main.cpp, vendored SDK plugins/sdk/, исходники Lua 5.5.1 plugins/src/lua/, прокси gamemodes/lua_gm.pwn, lua/main.lua, build.bat) — на этой странице в блоке Assets -> Source code (zip / tar.gz), а также в репозитории: https://github.com/devsers53/samp-server-lua
  • Сборка DLL: из папки plugins запустить build.bat (MSVC x86, компиляция как C++, -DHAVE_STDINT_H; lua.c/luac.c исключены).

Контрольные суммы (SHA-256)

  • salua_lua.dll: 4461BE3F7C94840B57D02695C7594D130EE62AE9A09AA5E74CA22B80F6548E07
  • lua_gm.amx: B61D66F6C2A3B792575040880F517CD5316AE068977460153F47B118465DF2C5
  • salua_lua_bin.zip: CAF92B22E98C60A702E9071195E42FC0C2FB9F4252F1CE307639197D9D2E8D0C