mirror of
https://github.com/kuitoi/kuitoi-Server.git
synced 2025-08-17 08:15:42 +00:00
Add call_lua_events()
This commit is contained in:
parent
90113179d7
commit
33f2d2ba72
@ -364,6 +364,9 @@ class Client:
|
||||
allow = True
|
||||
allow_snowman = True
|
||||
over_spawn = False
|
||||
lua_data = ev.call_lua_event("onVehicleSpawn", self.cid, car_id, car_data[car_data.find("{"):])
|
||||
if 1 in lua_data:
|
||||
allow = False
|
||||
ev_data_list = ev.call_event("onCarSpawn", car=car_json, car_id=car_id, player=self)
|
||||
d2 = await ev.call_async_event("onCarSpawn", car=car_json, car_id=car_id, player=self)
|
||||
ev_data_list.extend(d2)
|
||||
@ -407,6 +410,8 @@ class Client:
|
||||
|
||||
if car_id != -1 and self.cars[car_id]:
|
||||
|
||||
ev.call_lua_event("onVehicleDeleted", self.cid, car_id)
|
||||
|
||||
admin_allow = False # Delete from admin, for example...
|
||||
ev_data_list = ev.call_event("onCarDelete", car=self.cars[car_id], car_id=car_id, player=self)
|
||||
d2 = await ev.call_async_event("onCarDelete", car=self.cars[car_id], car_id=car_id, player=self)
|
||||
@ -444,6 +449,9 @@ class Client:
|
||||
|
||||
allow = False
|
||||
admin_allow = False
|
||||
lua_data = ev.call_lua_event("onVehicleEdited", self.cid, car_id, data[data.find("{"):])
|
||||
if 1 in lua_data:
|
||||
allow = False
|
||||
ev_data_list = ev.call_event("onCarEdited", car=new_car_json, car_id=car_id, player=self)
|
||||
d2 = await ev.call_async_event("onCarEdited", car=new_car_json, car_id=car_id, player=self)
|
||||
ev_data_list.extend(d2)
|
||||
@ -472,8 +480,14 @@ class Client:
|
||||
cid, car_id = self._get_cid_vid(raw_data)
|
||||
if car_id != -1 and cid == self.cid and self.cars[car_id]:
|
||||
await self._send(raw_data, to_all=True, to_self=False)
|
||||
ev.call_event("onCarReset", car=self.cars[car_id], car_id=car_id, player=self)
|
||||
await ev.call_async_event("onCarReset", car=self.cars[car_id], car_id=car_id, player=self)
|
||||
ev.call_lua_event("onVehicleReset", self.cid, car_id, raw_data[raw_data.find("{"):])
|
||||
car_json = {}
|
||||
try:
|
||||
car_json = json.loads(raw_data[raw_data.find("{"):])
|
||||
except Exception as e:
|
||||
self.log.debug(f"Invalid new_car_json: Error: {e}; Data: {raw_data}")
|
||||
ev.call_event("onCarReset", car=car_json, car_id=car_id, player=self)
|
||||
await ev.call_async_event("onCarReset", car=car_json, car_id=car_id, player=self)
|
||||
self.log.debug(f"Car reset: car_id={car_id}")
|
||||
else:
|
||||
self.log.debug(f"Invalid car: car_id={car_id}")
|
||||
@ -536,7 +550,11 @@ class Client:
|
||||
self.log.debug("Tried to send an empty event, ignoring")
|
||||
return
|
||||
to_ev = {"message": msg, "player": self}
|
||||
ev.call_lua_event("onChatMessage", self.cid, self.nick, msg)
|
||||
lua_data = ev.call_lua_event("onChatMessage", self.cid, self.nick, msg)
|
||||
if 1 in lua_data:
|
||||
if config.Options['log_chat']:
|
||||
self.log.info(f"{self.nick}: {msg}")
|
||||
return
|
||||
ev_data_list = ev.call_event("onChatReceive", **to_ev)
|
||||
d2 = await ev.call_async_event("onChatReceive", **to_ev)
|
||||
ev_data_list.extend(d2)
|
||||
@ -633,6 +651,10 @@ class Client:
|
||||
if self.ready:
|
||||
await self._send(f"J{self.nick} disconnected!", to_all=True, to_self=False) # I'm disconnected.
|
||||
self.log.debug(f"Removing client")
|
||||
ev.call_lua_event("onPlayerDisconnect", self.cid)
|
||||
ev.call_event("onPlayerDisconnect", player=self)
|
||||
await ev.call_async_event("onPlayerDisconnect", player=self)
|
||||
|
||||
# TODO: i18n
|
||||
self.log.info(f"Disconnected, online time: {round((time.monotonic() - self._connect_time) / 60, 2)}min.")
|
||||
self.__Core.clients[self.cid] = None
|
||||
|
@ -73,8 +73,21 @@ class TCPServer:
|
||||
await client.kick('Stale Client (replaced by new client)')
|
||||
return False, client
|
||||
|
||||
allow = True
|
||||
reason = "You are not allowed on the server!"
|
||||
|
||||
lua_data = ev.call_lua_event("onPlayerAuth", client.nick, client.roles, client.guest, client.identifiers)
|
||||
for data in lua_data:
|
||||
if 1 == data:
|
||||
allow = True
|
||||
elif isinstance(data, str):
|
||||
allow = True
|
||||
reason = data
|
||||
if not allow:
|
||||
await client.kick(reason)
|
||||
return False, client
|
||||
|
||||
ev.call_event("onPlayerAuthenticated", player=client)
|
||||
ev.call_lua_event("onPlayerAuth", client.nick, client.roles, client.guest, client.identifiers)
|
||||
|
||||
if len(self.Core.clients_by_id) > config.Game["players"]:
|
||||
# TODO: i18n
|
||||
|
@ -33,6 +33,7 @@ class EventsSystem:
|
||||
"onCarReset": [],
|
||||
"onSentPing": [], # Only sync
|
||||
"onChangePosition": [], # Only sync
|
||||
"onPlayerDisconnect": [],
|
||||
"onServerStopped": [],
|
||||
}
|
||||
self.__async_events = {
|
||||
@ -43,6 +44,7 @@ class EventsSystem:
|
||||
"onCarDelete": [],
|
||||
"onCarEdited": [],
|
||||
"onCarReset": [],
|
||||
"onPlayerDisconnect": [],
|
||||
"onServerStopped": []
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user