mirror of
https://github.com/kuitoi/kuitoi-Server.git
synced 2025-08-17 16:25:36 +00:00
Add call_lua_events()
This commit is contained in:
parent
90113179d7
commit
33f2d2ba72
@ -364,6 +364,9 @@ class Client:
|
|||||||
allow = True
|
allow = True
|
||||||
allow_snowman = True
|
allow_snowman = True
|
||||||
over_spawn = False
|
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)
|
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)
|
d2 = await ev.call_async_event("onCarSpawn", car=car_json, car_id=car_id, player=self)
|
||||||
ev_data_list.extend(d2)
|
ev_data_list.extend(d2)
|
||||||
@ -407,6 +410,8 @@ class Client:
|
|||||||
|
|
||||||
if car_id != -1 and self.cars[car_id]:
|
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...
|
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)
|
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)
|
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
|
allow = False
|
||||||
admin_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)
|
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)
|
d2 = await ev.call_async_event("onCarEdited", car=new_car_json, car_id=car_id, player=self)
|
||||||
ev_data_list.extend(d2)
|
ev_data_list.extend(d2)
|
||||||
@ -472,8 +480,14 @@ class Client:
|
|||||||
cid, car_id = self._get_cid_vid(raw_data)
|
cid, car_id = self._get_cid_vid(raw_data)
|
||||||
if car_id != -1 and cid == self.cid and self.cars[car_id]:
|
if car_id != -1 and cid == self.cid and self.cars[car_id]:
|
||||||
await self._send(raw_data, to_all=True, to_self=False)
|
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)
|
ev.call_lua_event("onVehicleReset", self.cid, car_id, raw_data[raw_data.find("{"):])
|
||||||
await ev.call_async_event("onCarReset", car=self.cars[car_id], car_id=car_id, player=self)
|
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}")
|
self.log.debug(f"Car reset: car_id={car_id}")
|
||||||
else:
|
else:
|
||||||
self.log.debug(f"Invalid car: car_id={car_id}")
|
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")
|
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)
|
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)
|
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)
|
||||||
@ -633,6 +651,10 @@ class Client:
|
|||||||
if self.ready:
|
if self.ready:
|
||||||
await self._send(f"J{self.nick} disconnected!", to_all=True, to_self=False) # I'm disconnected.
|
await self._send(f"J{self.nick} disconnected!", to_all=True, to_self=False) # I'm disconnected.
|
||||||
self.log.debug(f"Removing client")
|
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
|
# TODO: i18n
|
||||||
self.log.info(f"Disconnected, online time: {round((time.monotonic() - self._connect_time) / 60, 2)}min.")
|
self.log.info(f"Disconnected, online time: {round((time.monotonic() - self._connect_time) / 60, 2)}min.")
|
||||||
self.__Core.clients[self.cid] = None
|
self.__Core.clients[self.cid] = None
|
||||||
|
@ -73,8 +73,21 @@ class TCPServer:
|
|||||||
await client.kick('Stale Client (replaced by new client)')
|
await client.kick('Stale Client (replaced by new client)')
|
||||||
return False, 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_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"]:
|
if len(self.Core.clients_by_id) > config.Game["players"]:
|
||||||
# TODO: i18n
|
# TODO: i18n
|
||||||
|
@ -33,6 +33,7 @@ class EventsSystem:
|
|||||||
"onCarReset": [],
|
"onCarReset": [],
|
||||||
"onSentPing": [], # Only sync
|
"onSentPing": [], # Only sync
|
||||||
"onChangePosition": [], # Only sync
|
"onChangePosition": [], # Only sync
|
||||||
|
"onPlayerDisconnect": [],
|
||||||
"onServerStopped": [],
|
"onServerStopped": [],
|
||||||
}
|
}
|
||||||
self.__async_events = {
|
self.__async_events = {
|
||||||
@ -43,6 +44,7 @@ class EventsSystem:
|
|||||||
"onCarDelete": [],
|
"onCarDelete": [],
|
||||||
"onCarEdited": [],
|
"onCarEdited": [],
|
||||||
"onCarReset": [],
|
"onCarReset": [],
|
||||||
|
"onPlayerDisconnect": [],
|
||||||
"onServerStopped": []
|
"onServerStopped": []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user