Compare commits

...

3 Commits

Author SHA1 Message Date
2368fec501 Update TODOs 2023-07-23 04:29:52 +03:00
ecb9886882 Fix focus_car 2023-07-23 02:37:15 +03:00
9a8bcbfae0 Add player.focus_car 2023-07-23 01:57:01 +03:00
3 changed files with 17 additions and 8 deletions

View File

@ -19,7 +19,7 @@ BeamingDrive Multiplayer (BeamMP) server compatible with BeamMP clients.
- [x] Chat
- [x] Players online counter
- [x] Packets handled (Recursive finding second packet)
- [x] Client events
- [ ] Client events
- [x] Car synchronizations:
- [x] State packets
- [x] Spawn cars
@ -51,16 +51,12 @@ BeamingDrive Multiplayer (BeamMP) server compatible with BeamMP clients.
- [x] Return from events
- [x] Async support
- [ ] Add all events
- [x] Plugins support
- [ ] Python part:
- [x] Plugins supports
- [x] Python part:
- [x] Load Python plugins
- [x] Async support
- [x] KuiToi class
- [x] Client (Player) class
- [ ] JavaScript part:
- [ ] Load JavaScript plugins
- [ ] KuiToi class
- [ ] Client (Player) class
- [x] Lua part: (Original BeamMP compatibility)
- [x] Load Lua plugins
- [x] MP Class

View File

@ -35,6 +35,7 @@ class Client:
self._ready = False
self._identifiers = []
self._cars = [None] * 21 # Max 20 cars per player + 1 snowman
self._focus_car = -1
self._snowman = {"id": -1, "packet": ""}
self._connect_time = 0
self._last_position = {}
@ -84,6 +85,10 @@ class Client:
def cars(self):
return {i: v for i, v in enumerate(self._cars) if v is not None}
@property
def focus_car(self):
return self._focus_car
@property
def last_position(self):
return self._last_position
@ -404,6 +409,7 @@ class Client:
self.log.debug(f"Unicycle spawn accepted: car_id={car_id}")
else:
self.log.debug(f"Car spawn accepted: car_id={car_id}")
self._focus_car = car_id
self._cars[car_id] = {
"packet": pkt,
"json": car_json,
@ -540,8 +546,11 @@ class Client:
self.log.debug(f"Something changed/broken: {raw_data}")
await self._send(raw_data, to_all=True, to_self=False)
case "m": # Move focus cat
case "m": # Move focus car
self.log.debug(f"Move focus to: {raw_data}")
cid, car_id = self._get_cid_vid(raw_data[5:])
if car_id != -1 and cid == self.cid and self._cars[car_id]:
self._focus_car = car_id
await self._send(raw_data, to_all=True, to_self=True)
async def _connected_handler(self):

View File

@ -33,6 +33,7 @@ class Client:
self._guest = True
self.__alive = True
self._ready = False
self._focus_car = -1
self._identifiers = []
self._cars: List[Optional[Dict[str, int]]] = []
self._snowman: Dict[str, Union[int, str]] = {"id": -1, "packet": ""}
@ -58,6 +59,9 @@ class Client:
@property
def cars(self) -> dict: ...
@property
def focus_car(self):
return self._focus_car
@property
def last_position(self) -> dict: ...
def is_disconnected(self) -> bool: ...
async def kick(self, reason: str) -> None: ...