mirror of
https://github.com/kuitoi/kuitoi-Server.git
synced 2025-08-17 08:15:42 +00:00
Prepare for lua events;
Add _get_player for info; client.send_message();
This commit is contained in:
parent
c8fea133ba
commit
b345588c02
@ -94,7 +94,7 @@ class Client:
|
||||
self.__alive = False
|
||||
|
||||
async def send_message(self, message, to_all=True):
|
||||
pass
|
||||
await self._send(f"C:{message}", to_all=to_all)
|
||||
|
||||
async def send_event(self, event_name, event_data):
|
||||
pass
|
||||
|
@ -47,12 +47,12 @@ class Core:
|
||||
self.BeamMP_version = "3.1.1" # 20.07.2023
|
||||
|
||||
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)
|
||||
ev.register_event("_get_player", lambda x: self.get_client(**x['kwargs']))
|
||||
|
||||
def get_client(self, cid=None, nick=None, from_ev=None):
|
||||
if from_ev is not None:
|
||||
return self.get_client(*from_ev['args'], **from_ev['kwargs'])
|
||||
def get_client(self, cid=None, nick=None):
|
||||
if cid is not None:
|
||||
if cid == -1:
|
||||
return [i for i in self.clients if i is not None]
|
||||
return self.clients_by_id.get(cid)
|
||||
if nick:
|
||||
return self.clients_by_nick.get(nick)
|
||||
|
@ -10,6 +10,8 @@ import asyncio
|
||||
import builtins
|
||||
import inspect
|
||||
|
||||
import lupa
|
||||
|
||||
from core import get_logger
|
||||
|
||||
|
||||
@ -46,12 +48,41 @@ class EventsSystem:
|
||||
"onServerStopped": []
|
||||
}
|
||||
|
||||
self.__lua_events = {
|
||||
"onInit": [], # onServerStarted
|
||||
"onShutdown": [], # onServerStopped
|
||||
"onPlayerAuth": [], # onPlayerAuthenticated
|
||||
"onPlayerConnecting": [], # TODO lua onPlayerConnecting
|
||||
"onPlayerJoining": [], # TODO lua onPlayerJoining
|
||||
"onPlayerJoin": [], # onPlayerJoin
|
||||
"onPlayerDisconnect": [], # TODO lua onPlayerDisconnect
|
||||
"onChatMessage": [], # onChatReceive
|
||||
"onVehicleSpawn": [], # "onCarSpawn
|
||||
"onVehicleEdited": [], # onCarEdited
|
||||
"onVehicleDeleted": [], # onCarDelete
|
||||
"onVehicleReset": [], # onCarReset
|
||||
"onFileChanged": [], # TODO lua onFileChanged
|
||||
}
|
||||
|
||||
def builtins_hook(self):
|
||||
self.log.debug("used builtins_hook")
|
||||
builtins.ev = self
|
||||
|
||||
def register_event(self, event_name, event_func, async_event=False):
|
||||
self.log.debug(f"register_event({event_name}, {event_func}):")
|
||||
def register_event(self, event_name, event_func, async_event=False, lua=None):
|
||||
self.log.debug(f"register_event(event_name='{event_name}', event_func='{event_func}', "
|
||||
f"async_event={async_event}, lua_event={lua}):")
|
||||
if lua:
|
||||
if type(event_func) != str and type(lua) != lupa.lua53.LuaRuntime:
|
||||
self.log.error(f"Cannot add event '{event_name}'. "
|
||||
f"Use `MP.RegisterEvent(\"{event_name}\", \"function\")` instead. Skipping it...")
|
||||
return
|
||||
if event_name not in self.__lua_events:
|
||||
self.__lua_events.update({str(event_name): [{"func": event_func, "engine": lua}]})
|
||||
else:
|
||||
self.__lua_events[event_name].append(event_func)
|
||||
|
||||
return
|
||||
|
||||
if not callable(event_func):
|
||||
# TODO: i18n
|
||||
self.log.error(f"Cannot add event '{event_name}'. "
|
||||
@ -106,3 +137,6 @@ class EventsSystem:
|
||||
self.log.warning(f"Event {event_name} does not exist, maybe ev.call_async_event()?. Just skipping it...")
|
||||
|
||||
return funcs_data
|
||||
|
||||
def call_lua_event(self, *args):
|
||||
pass
|
||||
|
@ -3,9 +3,11 @@ from typing import Any
|
||||
|
||||
class EventsSystem:
|
||||
@staticmethod
|
||||
def register_event(event_name, event_func): ...
|
||||
def register_event(event_name, event_func, async_event: bool = False, lua: bool | object = None): ...
|
||||
@staticmethod
|
||||
async def call_async_event(event_name, *args, **kwargs) -> list[Any]: ...
|
||||
@staticmethod
|
||||
def call_event(event_name, *data, **kwargs) -> list[Any]: ...
|
||||
@staticmethod
|
||||
def call_lua_event(event_name, *data) -> list[Any]: ...
|
||||
class ev(EventsSystem): ...
|
||||
|
Loading…
x
Reference in New Issue
Block a user