Initial Release of IGNCore version 2.5
This commit is contained in:
@@ -0,0 +1,266 @@
|
||||
from core.aochat.packets import *
|
||||
|
||||
|
||||
class ClientPacket(Packet):
|
||||
def __init__(self, packet_id, types, args):
|
||||
self.id = packet_id
|
||||
self.types = types
|
||||
self.args = args
|
||||
|
||||
def to_bytes(self):
|
||||
return encode_args(self.types, self.args)
|
||||
|
||||
def __str__(self):
|
||||
return "ClientPacket(%d): %s" % (self.id, self.args)
|
||||
|
||||
@classmethod
|
||||
def get_instance(cls, packet_id, data):
|
||||
if packet_id == LoginRequest.id:
|
||||
LoginRequest.from_bytes(data)
|
||||
elif packet_id == LoginSelect.id:
|
||||
LoginSelect.from_bytes(data)
|
||||
elif packet_id == CharacterLookup.id:
|
||||
CharacterLookup.from_bytes(data)
|
||||
elif packet_id == PrivateMessage.id:
|
||||
PrivateMessage.from_bytes(data)
|
||||
elif packet_id == BuddyAdd.id:
|
||||
BuddyAdd.from_bytes(data)
|
||||
elif packet_id == BuddyRemove.id:
|
||||
BuddyRemove.from_bytes(data)
|
||||
elif packet_id == PrivateChannelInvite.id:
|
||||
PrivateChannelInvite.from_bytes(data)
|
||||
elif packet_id == PrivateChannelKick.id:
|
||||
PrivateChannelKick.from_bytes(data)
|
||||
elif packet_id == PrivateChannelJoin.id:
|
||||
PrivateChannelJoin.from_bytes(data)
|
||||
elif packet_id == PrivateChannelLeave.id:
|
||||
PrivateChannelLeave.from_bytes(data)
|
||||
elif packet_id == PrivateChannelKickAll.id:
|
||||
PrivateChannelKickAll.from_bytes(data)
|
||||
elif packet_id == PrivateChannelMessage.id:
|
||||
PrivateChannelMessage.from_bytes(data)
|
||||
elif packet_id == PublicChannelMessage.id:
|
||||
PublicChannelMessage.from_bytes(data)
|
||||
elif packet_id == Ping.id:
|
||||
Ping.from_bytes(data)
|
||||
elif packet_id == ChatCommand.id:
|
||||
ChatCommand.from_bytes(data)
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
class LoginRequest(ClientPacket):
|
||||
id = 2
|
||||
types = "ISS"
|
||||
|
||||
def __init__(self, unknown, username, key):
|
||||
self.unknown = unknown
|
||||
self.username = username
|
||||
self.key = key
|
||||
super().__init__(self.id, self.types, [self.unknown, self.username, self.key])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
args = decode_args(cls.types, data)
|
||||
return cls(*args)
|
||||
|
||||
|
||||
class LoginSelect(ClientPacket):
|
||||
id = 3
|
||||
types = "I"
|
||||
|
||||
def __init__(self, char_id):
|
||||
self.char_id = char_id
|
||||
super().__init__(self.id, self.types, [self.char_id])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
args = decode_args(cls.types, data)
|
||||
return cls(*args)
|
||||
|
||||
|
||||
class CharacterLookup(ClientPacket):
|
||||
id = 21
|
||||
types = "S"
|
||||
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
super().__init__(self.id, self.types, [self.name])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
args = decode_args(cls.types, data)
|
||||
return cls(*args)
|
||||
|
||||
|
||||
class PrivateMessage(ClientPacket):
|
||||
id = 30
|
||||
types = "ISS"
|
||||
|
||||
def __init__(self, char_id, message, blob):
|
||||
self.char_id = char_id
|
||||
self.message = message
|
||||
self.blob = blob
|
||||
super().__init__(self.id, self.types, [self.char_id, self.message, self.blob])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
args = decode_args(cls.types, data)
|
||||
return cls(*args)
|
||||
|
||||
|
||||
class BuddyAdd(ClientPacket):
|
||||
id = 40
|
||||
types = "IS"
|
||||
|
||||
def __init__(self, char_id, status):
|
||||
self.char_id = char_id
|
||||
self.status = status
|
||||
super().__init__(self.id, self.types, [self.char_id, self.status])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
args = decode_args(cls.types, data)
|
||||
return cls(*args)
|
||||
|
||||
|
||||
class BuddyRemove(ClientPacket):
|
||||
id = 41
|
||||
types = "I"
|
||||
|
||||
def __init__(self, char_id):
|
||||
self.char_id = char_id
|
||||
super().__init__(self.id, self.types, [self.char_id])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
args = decode_args(cls.types, data)
|
||||
return cls(*args)
|
||||
|
||||
|
||||
class PrivateChannelInvite(ClientPacket):
|
||||
id = 50
|
||||
types = "I"
|
||||
|
||||
def __init__(self, char_id):
|
||||
self.char_id = char_id
|
||||
super().__init__(self.id, self.types, [self.char_id])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
args = decode_args(cls.types, data)
|
||||
return cls(*args)
|
||||
|
||||
|
||||
class PrivateChannelKick(ClientPacket):
|
||||
id = 51
|
||||
types = "I"
|
||||
|
||||
def __init__(self, char_id):
|
||||
self.char_id = char_id
|
||||
super().__init__(self.id, self.types, [self.char_id])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
args = decode_args(cls.types, data)
|
||||
return cls(*args)
|
||||
|
||||
|
||||
class PrivateChannelJoin(ClientPacket):
|
||||
id = 52
|
||||
types = "I"
|
||||
|
||||
def __init__(self, private_channel_id):
|
||||
self.private_channel_id = private_channel_id
|
||||
super().__init__(self.id, self.types, [self.private_channel_id])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
args = decode_args(cls.types, data)
|
||||
return cls(*args)
|
||||
|
||||
|
||||
class PrivateChannelLeave(ClientPacket):
|
||||
id = 53
|
||||
types = "I"
|
||||
|
||||
def __init__(self, private_channel_id):
|
||||
self.private_channel_id = private_channel_id
|
||||
super().__init__(self.id, self.types, [self.private_channel_id])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
args = decode_args(cls.types, data)
|
||||
return cls(*args)
|
||||
|
||||
|
||||
class PrivateChannelKickAll(ClientPacket):
|
||||
id = 54
|
||||
types = ""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__(self.id, self.types, [])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
return cls()
|
||||
|
||||
|
||||
class PrivateChannelMessage(ClientPacket):
|
||||
id = 57
|
||||
types = "ISS"
|
||||
|
||||
def __init__(self, private_channel_id, message, blob):
|
||||
self.private_channel_id = private_channel_id
|
||||
self.message = message
|
||||
self.blob = blob
|
||||
super().__init__(self.id, self.types, [self.private_channel_id, self.message, self.blob])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
args = decode_args(cls.types, data)
|
||||
return cls(*args)
|
||||
|
||||
|
||||
class PublicChannelMessage(ClientPacket):
|
||||
id = 65
|
||||
types = "GSS"
|
||||
|
||||
def __init__(self, channel_id, message, blob):
|
||||
self.channel_id = channel_id
|
||||
self.message = message
|
||||
self.blob = blob
|
||||
super().__init__(self.id, self.types, [self.channel_id, self.message, self.blob])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
args = decode_args(cls.types, data)
|
||||
return cls(*args)
|
||||
|
||||
|
||||
class Ping(ClientPacket):
|
||||
id = 100
|
||||
types = "S"
|
||||
|
||||
def __init__(self, blob):
|
||||
self.blob = blob
|
||||
super().__init__(self.id, self.types, [self.blob])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
args = decode_args(cls.types, data)
|
||||
return cls(*args)
|
||||
|
||||
|
||||
class ChatCommand(ClientPacket):
|
||||
id = 120
|
||||
types = "s"
|
||||
|
||||
def __init__(self, commands):
|
||||
self.commands = commands
|
||||
super().__init__(self.id, self.types, [self.commands])
|
||||
|
||||
@classmethod
|
||||
def from_bytes(cls, data):
|
||||
args = decode_args(cls.types, data)
|
||||
return cls(*args)
|
||||
Reference in New Issue
Block a user