diff options
Diffstat (limited to 'lib/PacketManager')
| -rw-r--r-- | lib/PacketManager/PacketManager.py | 2 | ||||
| -rw-r--r-- | lib/PacketManager/packets/FSNETCMD_ADDOBJECT.py | 16 | ||||
| -rw-r--r-- | lib/PacketManager/packets/FSNETCMD_JOINREQUEST.py | 2 | ||||
| -rw-r--r-- | lib/PacketManager/packets/FSNETCMD_LOADFIELD.py | 4 | ||||
| -rw-r--r-- | lib/PacketManager/packets/FSNETCMD_LOGON.py | 16 |
5 files changed, 28 insertions, 12 deletions
diff --git a/lib/PacketManager/PacketManager.py b/lib/PacketManager/PacketManager.py index ea0d91b..847d55c 100644 --- a/lib/PacketManager/PacketManager.py +++ b/lib/PacketManager/PacketManager.py @@ -2,7 +2,7 @@ from struct import unpack, pack from PacketManager.packets import MESSAGE_TYPES, FSWEAPON_DICT, GUIDEDWEAPONS -class PackageManager: +class PacketManager: def __init__(self): pass diff --git a/lib/PacketManager/packets/FSNETCMD_ADDOBJECT.py b/lib/PacketManager/packets/FSNETCMD_ADDOBJECT.py index f2e831e..ef7f785 100644 --- a/lib/PacketManager/packets/FSNETCMD_ADDOBJECT.py +++ b/lib/PacketManager/packets/FSNETCMD_ADDOBJECT.py @@ -26,15 +26,15 @@ class FSNETCMD_ADDOBJECT: #5 self.decode() def decode(self): - self.object_type, self.net_type = unpack("hh", self.buffer[4:8]) + self.object_type, self.net_type = unpack("HH", self.buffer[4:8]) #If object_type = 0, then it's an aircraft, and client will send # FSNETREADBACK_ADDAIRPLANE #If object_types = 1, then it's a ground object, and client will send # FSNETREADBACK_ADDGROUND self.object_id = unpack("I", self.buffer[8:12])[0] self.iff, _ = unpack("hh", self.buffer[12:16]) - self.pos = unpack("fff", self.buffer[16:28]) - self.atti = unpack("fff", self.buffer[28:40]) + self.pos = list(unpack("fff", self.buffer[16:28])) + self.atti = list(unpack("fff", self.buffer[28:40])) self.identifier = unpack("32s", self.buffer[40:72])[0].decode().strip('\x00') self.substrname = unpack("32s", self.buffer[72:104])[0].decode().strip('\x00') self.ysfid = unpack("I", self.buffer[104:108])[0] @@ -52,10 +52,12 @@ class FSNETCMD_ADDOBJECT: #5 flags, flags0, outside_radius, aircraft_class=None, aircraft_category=None, pilot=None, with_size:bool=False): - buffer = pack("IHHIHHfff32s32sIIIf", 5, object_type, net_type, object_id, - iff, 0, pos[0], pos[1], pos[2], atti[0], atti[1], atti[2], - identifier.encode(), substrname.encode(), ysfid, flags, - flags0, outside_radius) + buffer = pack('IHH', 5, object_type, net_type) + buffer += pack('IHHffffff', object_id, iff, 0, pos[0], pos[1], pos[2], atti[0], atti[1], atti[2]) + buffer += pack('32s32sI', identifier.encode(), substrname.encode(), ysfid) + buffer += pack('II', flags, flags0) + buffer += pack('f', outside_radius) + if aircraft_class and aircraft_category: buffer += pack("hhh", aircraft_class, aircraft_category, 0) if pilot: diff --git a/lib/PacketManager/packets/FSNETCMD_JOINREQUEST.py b/lib/PacketManager/packets/FSNETCMD_JOINREQUEST.py index 0df7287..7796599 100644 --- a/lib/PacketManager/packets/FSNETCMD_JOINREQUEST.py +++ b/lib/PacketManager/packets/FSNETCMD_JOINREQUEST.py @@ -23,7 +23,7 @@ class FSNETCMD_JOINREQUEST: #8 @staticmethod def encode(iff, aircraft, start_pos, fuel, smoke, with_size:bool=False): buffer = pack("IHH32s32sHHH", 8, iff, 0, aircraft.encode(), - start_pos.encode(), 0, fuel, smoke) + start_pos.encode(), 1, fuel, smoke) if with_size: return pack("I",len(buffer))+buffer return buffer
\ No newline at end of file diff --git a/lib/PacketManager/packets/FSNETCMD_LOADFIELD.py b/lib/PacketManager/packets/FSNETCMD_LOADFIELD.py index 2994591..2184f7d 100644 --- a/lib/PacketManager/packets/FSNETCMD_LOADFIELD.py +++ b/lib/PacketManager/packets/FSNETCMD_LOADFIELD.py @@ -21,7 +21,9 @@ class FSNETCMD_LOADFIELD: #4 @staticmethod def encode(field, flags, pos, atti, with_size:bool=False): - buffer = pack("I32sIffffff", 4, field.encode(), flags, pos[0], pos[1], + if isinstance(field, str): + field = field.encode() + buffer = pack("I32sIffffff", 4, field, flags, pos[0], pos[1], pos[2], atti[0], atti[1], atti[2]) if with_size: return pack("I",len(buffer))+buffer diff --git a/lib/PacketManager/packets/FSNETCMD_LOGON.py b/lib/PacketManager/packets/FSNETCMD_LOGON.py index 84d6c86..4787e63 100644 --- a/lib/PacketManager/packets/FSNETCMD_LOGON.py +++ b/lib/PacketManager/packets/FSNETCMD_LOGON.py @@ -23,6 +23,11 @@ class FSNETCMD_LOGON: #1 self.alias = self.buffer[24:].decode().strip('\x00') else: self.alias = self.username + if isinstance(self.username,bytes): + self.username = self.username.decode().strip('\x00') + if isinstance(self.alias,bytes): + self.alias = self.alias.decode().strip('\x00') + @staticmethod #Method to create a logon packet, if required. def encode(username, version, with_size:bool=False): @@ -32,9 +37,16 @@ class FSNETCMD_LOGON: #1 else: shortform = username alias = None - buffer = pack("I16sI", 1, shortform.encode(), version) + if isinstance(shortform,str): + shortform = shortform.encode() + buffer = pack("I16sI", 1, shortform, version) if alias: - buffer += alias.encode() + if isinstance(alias,str): + alias = alias.encode() + if len(alias)<200: + alias = alias.ljust(200,b'\x00') + alias += b'\x00\x00\x00\x00' + buffer += alias if with_size: return pack("I",len(buffer))+buffer |
