summaryrefslogtreecommitdiff
path: root/character_server_information.gd
diff options
context:
space:
mode:
authorDaniel Weipert <git@mail.dweipert.de>2024-11-28 00:45:30 +0100
committerDaniel Weipert <git@mail.dweipert.de>2024-11-28 00:45:30 +0100
commitc89f25f59aa493d95bcac8e75ca5cdd57a0403e7 (patch)
treee1eb14f3b27ab8bcce68551424fe49a4f7d376af /character_server_information.gd
initial commit
Diffstat (limited to 'character_server_information.gd')
-rw-r--r--character_server_information.gd52
1 files changed, 52 insertions, 0 deletions
diff --git a/character_server_information.gd b/character_server_information.gd
new file mode 100644
index 0000000..9ede3b6
--- /dev/null
+++ b/character_server_information.gd
@@ -0,0 +1,52 @@
+class_name CharacterServerInformation
+
+
+## Byte Length: 4
+var server_ip: PackedByteArray
+
+## Byte Length: 2
+var server_port: int
+
+## Byte Length: 20
+var server_name: String
+
+## Byte Length: 2
+var user_count: int
+
+## Byte Length: 2
+var server_type: int
+
+## Byte Length: 2
+var display_new: int
+
+## Byte Length: 128
+var unknown: PackedByteArray
+
+
+func get_server_ip():
+ return "%s.%s.%s.%s" % [server_ip.decode_u8(0), server_ip.decode_u8(1), server_ip.decode_u8(2), server_ip.decode_u8(3)]
+
+
+static func from_bytes(bytes: PackedByteArray):
+ var info = CharacterServerInformation.new()
+
+ info.server_ip = bytes.slice(0, 4)
+ info.server_port = bytes.decode_u16(4)
+ info.server_name = bytes.slice(6, 6 + 20 - 1).get_string_from_utf8()
+ info.user_count = bytes.decode_u16(26)
+ info.server_type = bytes.decode_u16(28)
+ info.display_new = bytes.decode_u16(30)
+ info.unknown = bytes.slice(32)
+
+ return info
+
+
+static func array_from_bytes(bytes: PackedByteArray) -> Array:
+ var array = []
+
+ var offset = 0
+ while offset < bytes.size():
+ array.append(from_bytes(bytes.slice(offset)))
+ offset += 160
+
+ return array