Add Lua API: GetOSName, GetServerVersion

This commit is contained in:
Maxim Khomutov 2023-07-20 15:15:26 +03:00
parent b80d519c8d
commit c8fea133ba
3 changed files with 27 additions and 5 deletions

View File

@ -46,7 +46,8 @@ class Core:
self.client_major_version = "2.0"
self.BeamMP_version = "3.1.1" # 20.07.2023
ev.register_event("get_player", self.get_client)
ev.register_event("_get_BeamMP_version", lambda x: tuple([int(i) for i in self.BeamMP_version.split(".")]))
ev.register_event("_get_player", self.get_client)
def get_client(self, cid=None, nick=None, from_ev=None):
if from_ev is not None:

View File

@ -0,0 +1,4 @@
function MP:GetServerVersion()
ver = MP:_GetServerVersion()
return ver[0], ver[1], ver[2]
end

View File

@ -1,5 +1,7 @@
import asyncio
import os
import platform
from typing import Tuple, List, Any
# noinspection PyUnresolvedReferences
import lupa.lua53
@ -8,18 +10,28 @@ from lupa.lua53 import LuaRuntime
from core import get_logger
# noinspection PyPep8Naming
class MP:
def __init__(self, name):
self.name = name
self.log = get_logger(f"LuaPlugin | {name}")
def log_info(self, *args):
def _print_log(self, *args):
s = ""
for i in args:
s += i
s += f" {i}"
self.log.info(s)
def CreateTimer(self): ...
def GetOSName(self) -> str:
return platform.system()
def _GetServerVersion(self) -> tuple[int, int, int]:
major, minor, patch = ev.call_event("_get_BeamMP_version")[0]
return major, minor, patch
class LuaPluginsLoader:
@ -48,14 +60,19 @@ class LuaPluginsLoader:
self.log.debug(f"py_folders {py_folders}, lua_dirs {self.lua_dirs}")
for path, obj in self.lua_dirs:
# noinspection PyArgumentList
lua = LuaRuntime(encoding=config.enc, source_encoding=config.enc)
mp = MP(obj)
lua.globals().MP = mp
lua.globals().print = mp.log_info
lua.globals().printRaw = lua.globals().print
lua.globals().print = mp._print_log
lua.globals().exit = lambda x: self.log.info(f"{obj}: You can't disable server..")
code = f'package.path = package.path.."' \
f';{self.plugins_dir}/{obj}/?.lua' \
f';{self.plugins_dir}/{obj}/lua/?.lua' \
f';modules/PluginsLoader/lua_libs/?.lua"'
f';modules/PluginsLoader/lua_libs/?.lua"\n'
with open("modules/PluginsLoader/add_in.lua", "r") as f:
code += f.read()
with open(os.path.join(path, "main.lua"), 'r', encoding=config.enc) as f:
code += f.read()
lua.execute(code)