aboutsummaryrefslogtreecommitdiff
path: root/lib/PacketManager
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PacketManager')
-rw-r--r--lib/PacketManager/PacketManager.py2
-rw-r--r--lib/PacketManager/packets/FSNETCMD_ADDOBJECT.py16
-rw-r--r--lib/PacketManager/packets/FSNETCMD_JOINREQUEST.py2
-rw-r--r--lib/PacketManager/packets/FSNETCMD_LOADFIELD.py4
-rw-r--r--lib/PacketManager/packets/FSNETCMD_LOGON.py16
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