mirror of
https://github.com/kuitoi/kuitoi-Server.git
synced 2025-08-18 08:45:37 +00:00
Add TriggerLocalEvent, TriggerGlobalEvent
This commit is contained in:
parent
4f7e83a00f
commit
f9f4df7438
@ -22,6 +22,11 @@ class MP:
|
|||||||
self.name = name
|
self.name = name
|
||||||
self.tasks = []
|
self.tasks = []
|
||||||
self._lua = lua
|
self._lua = lua
|
||||||
|
self._local_events = {
|
||||||
|
"onInit": [], "onShutdown": [], "onPlayerAuth": [], "onPlayerConnecting": [], "onPlayerJoining": [],
|
||||||
|
"onPlayerJoin": [], "onPlayerDisconnect": [], "onChatMessage": [], "onVehicleSpawn": [],
|
||||||
|
"onVehicleEdited": [], "onVehicleDeleted": [], "onVehicleReset": [], "onFileChanged": []
|
||||||
|
}
|
||||||
|
|
||||||
def _print(self, *args):
|
def _print(self, *args):
|
||||||
s = " ".join(map(str, args))
|
s = " ".join(map(str, args))
|
||||||
@ -40,7 +45,13 @@ class MP:
|
|||||||
|
|
||||||
def RegisterEvent(self, event_name: str, function_name: str) -> None:
|
def RegisterEvent(self, event_name: str, function_name: str) -> None:
|
||||||
self.log.debug("request MP.RegisterEvent()")
|
self.log.debug("request MP.RegisterEvent()")
|
||||||
ev.register_event(event_name, self._lua.globals()[function_name], lua=True)
|
event_func = self._lua.globals()[function_name]
|
||||||
|
ev.register_event(event_name, event_func, lua=True)
|
||||||
|
if event_name not in self._local_events:
|
||||||
|
self._local_events.update({str(event_name): [event_func]})
|
||||||
|
else:
|
||||||
|
self._local_events[event_name].append(event_func)
|
||||||
|
self.log.debug("Register ok (local)")
|
||||||
|
|
||||||
def CreateEventTimer(self, event_name: str, interval_ms: int, strategy: int = None):
|
def CreateEventTimer(self, event_name: str, interval_ms: int, strategy: int = None):
|
||||||
self.log.debug("request CreateEventTimer()")
|
self.log.debug("request CreateEventTimer()")
|
||||||
@ -52,13 +63,27 @@ class MP:
|
|||||||
|
|
||||||
def TriggerLocalEvent(self, event_name, *args):
|
def TriggerLocalEvent(self, event_name, *args):
|
||||||
self.log.debug("request TriggerLocalEvent()")
|
self.log.debug("request TriggerLocalEvent()")
|
||||||
# TODO: TriggerLocalEvent
|
self.log.debug(f"Calling lcoal lua event: '{event_name}'")
|
||||||
return self._lua.table()
|
funcs_data = []
|
||||||
|
if event_name in self._local_events.keys():
|
||||||
|
for func in self._local_events[event_name]:
|
||||||
|
try:
|
||||||
|
funcs_data.append(func(*args))
|
||||||
|
except Exception as e:
|
||||||
|
self.log.error(f'Error while calling "{event_name}"; In function: "{func.__name__}"')
|
||||||
|
self.log.exception(e)
|
||||||
|
else:
|
||||||
|
self.log.warning(f"Event {event_name} does not exist, maybe ev.call_lua_event() or MP.Trigger<>Event()?. "
|
||||||
|
f"Just skipping it...")
|
||||||
|
|
||||||
|
return self._lua.table_from({i: v for i, v in enumerate(funcs_data)})
|
||||||
|
|
||||||
def TriggerGlobalEvent(self, event_name, *args):
|
def TriggerGlobalEvent(self, event_name, *args):
|
||||||
self.log.debug("request TriggerGlobalEvent()")
|
self.log.debug("request TriggerGlobalEvent()")
|
||||||
# TODO: TriggerGlobalEvent
|
return self._lua.table(
|
||||||
return self._lua.table(IsDone=lambda: True, GetResults=lambda: "somedata")
|
IsDone=lambda: True,
|
||||||
|
GetResults=lambda: self._lua.table_from({i: v for i, v in enumerate(ev.call_lua_event(event_name,*args))})
|
||||||
|
)
|
||||||
|
|
||||||
def SendChatMessage(self, player_id, message):
|
def SendChatMessage(self, player_id, message):
|
||||||
self.log.debug("request SendChatMessage()")
|
self.log.debug("request SendChatMessage()")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user