mirror of
https://github.com/kuitoi/kuitoi-Server.git
synced 2025-08-17 16:25:36 +00:00
Fix reg and add call_lua_event();
Add call_lua_event("onChatMessage"); New MP.RegisterEvent(); Add GetPositionRaw();
This commit is contained in:
parent
3b5324d115
commit
9ae200d48a
@ -536,6 +536,7 @@ class Client:
|
|||||||
self.log.debug("Tried to send an empty event, ignoring")
|
self.log.debug("Tried to send an empty event, ignoring")
|
||||||
return
|
return
|
||||||
to_ev = {"message": msg, "player": self}
|
to_ev = {"message": msg, "player": self}
|
||||||
|
ev.call_lua_event("onChatMessage", self.cid, self.nick, msg)
|
||||||
ev_data_list = ev.call_event("onChatReceive", **to_ev)
|
ev_data_list = ev.call_event("onChatReceive", **to_ev)
|
||||||
d2 = await ev.call_async_event("onChatReceive", **to_ev)
|
d2 = await ev.call_async_event("onChatReceive", **to_ev)
|
||||||
ev_data_list.extend(d2)
|
ev_data_list.extend(d2)
|
||||||
|
@ -10,8 +10,6 @@ import asyncio
|
|||||||
import builtins
|
import builtins
|
||||||
import inspect
|
import inspect
|
||||||
|
|
||||||
import lupa
|
|
||||||
|
|
||||||
from core import get_logger
|
from core import get_logger
|
||||||
|
|
||||||
|
|
||||||
@ -72,15 +70,11 @@ class EventsSystem:
|
|||||||
self.log.debug(f"register_event(event_name='{event_name}', event_func='{event_func}', "
|
self.log.debug(f"register_event(event_name='{event_name}', event_func='{event_func}', "
|
||||||
f"async_event={async_event}, lua_event={lua}):")
|
f"async_event={async_event}, lua_event={lua}):")
|
||||||
if 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:
|
if event_name not in self.__lua_events:
|
||||||
self.__lua_events.update({str(event_name): [{"func": event_func, "engine": lua}]})
|
self.__lua_events.update({str(event_name): [event_func]})
|
||||||
else:
|
else:
|
||||||
self.__lua_events[event_name].append(event_func)
|
self.__lua_events[event_name].append(event_func)
|
||||||
|
self.log.debug("Register ok")
|
||||||
return
|
return
|
||||||
|
|
||||||
if not callable(event_func):
|
if not callable(event_func):
|
||||||
@ -93,11 +87,13 @@ class EventsSystem:
|
|||||||
self.__async_events.update({str(event_name): [event_func]})
|
self.__async_events.update({str(event_name): [event_func]})
|
||||||
else:
|
else:
|
||||||
self.__async_events[event_name].append(event_func)
|
self.__async_events[event_name].append(event_func)
|
||||||
|
self.log.debug("Register ok")
|
||||||
else:
|
else:
|
||||||
if event_name not in self.__events:
|
if event_name not in self.__events:
|
||||||
self.__events.update({str(event_name): [event_func]})
|
self.__events.update({str(event_name): [event_func]})
|
||||||
else:
|
else:
|
||||||
self.__events[event_name].append(event_func)
|
self.__events[event_name].append(event_func)
|
||||||
|
self.log.debug("Register ok")
|
||||||
|
|
||||||
async def call_async_event(self, event_name, *args, **kwargs):
|
async def call_async_event(self, event_name, *args, **kwargs):
|
||||||
self.log.debug(f"Calling async event: '{event_name}'")
|
self.log.debug(f"Calling async event: '{event_name}'")
|
||||||
@ -138,5 +134,23 @@ class EventsSystem:
|
|||||||
|
|
||||||
return funcs_data
|
return funcs_data
|
||||||
|
|
||||||
def call_lua_event(self, *args):
|
def call_lua_event(self, event_name, *args):
|
||||||
pass
|
self.log.debug(f"Calling lua event: '{event_name}'")
|
||||||
|
funcs_data = []
|
||||||
|
if event_name in self.__lua_events.keys():
|
||||||
|
for func in self.__lua_events[event_name]:
|
||||||
|
try:
|
||||||
|
funcs_data.append(func(*args))
|
||||||
|
except Exception as e:
|
||||||
|
# TODO: i18n
|
||||||
|
self.log.error(f'Error while calling "{event_name}"; In function: "{func.__name__}"')
|
||||||
|
self.log.exception(e)
|
||||||
|
else:
|
||||||
|
# TODO: i18n
|
||||||
|
self.log.warning(f"Event {event_name} does not exist, maybe ev.call_lua_event() or MP.Trigger<>Event()?. "
|
||||||
|
f"Just skipping it...")
|
||||||
|
|
||||||
|
return funcs_data
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@ import asyncio
|
|||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
|
|
||||||
import lupa
|
|
||||||
from lupa.lua53 import LuaRuntime
|
from lupa.lua53 import LuaRuntime
|
||||||
|
|
||||||
from core import get_logger
|
from core import get_logger
|
||||||
@ -39,7 +38,7 @@ 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, function_name, lua=self._lua)
|
ev.register_event(event_name, self._lua.globals()[function_name], lua=True)
|
||||||
|
|
||||||
def TriggerLocalEvent(self, event_name, *args):
|
def TriggerLocalEvent(self, event_name, *args):
|
||||||
self.log.debug("request TriggerLocalEvent()")
|
self.log.debug("request TriggerLocalEvent()")
|
||||||
@ -74,9 +73,15 @@ class MP:
|
|||||||
self.log.debug("request GetPlayerCount()")
|
self.log.debug("request GetPlayerCount()")
|
||||||
return len(ev.call_event("_get_player", cid=-1)[0])
|
return len(ev.call_event("_get_player", cid=-1)[0])
|
||||||
|
|
||||||
def GetPositionRaw(self, pid, vid):
|
def GetPositionRaw(self, player_id, car_id):
|
||||||
# TODO: GetPositionRaw
|
|
||||||
self.log.debug("request GetPositionRaw()")
|
self.log.debug("request GetPositionRaw()")
|
||||||
|
client = ev.call_event("_get_player", cid=player_id)[0]
|
||||||
|
if client:
|
||||||
|
car = client.cars[car_id]
|
||||||
|
if car:
|
||||||
|
return self._lua.table_from(car['pos'])
|
||||||
|
return self._lua.table(), "Vehicle not found"
|
||||||
|
return self._lua.table(), "Client expired"
|
||||||
|
|
||||||
def IsPlayerConnected(self, player_id):
|
def IsPlayerConnected(self, player_id):
|
||||||
self.log.debug("request IsPlayerConnected()")
|
self.log.debug("request IsPlayerConnected()")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user