This should get us back on track (tested on ARCH Linux)

This commit is contained in:
Cedric
2023-07-27 18:07:02 +02:00
parent 5c158cf8a8
commit e4586a5834
23 changed files with 836 additions and 76 deletions
+102
View File
@@ -0,0 +1,102 @@
User: kA4pgXGnlGlc Password: vn0faZDx5Lcm7 EMail: 9mp7sfnc@1ph2yvtr1b2xnncmr0w.com Status: 200/200/200
User: vCUmADyvLUKa Password: iWigwJQpSBW EMail: p4vq1u2a1ug8e9e2an@8wygnw7jxwb.com Status: 200/200/200
User: sd8d7uFVJo4g Password: JBTKDO02A1 EMail: r4khrr9i03ufa8z@hskahrvd1opk.com Status: 200/200/200
User: jfGJl0q4ph3g Password: MeWkT4cIugef8BwT EMail: sdebmxksu4t8d@phlj4wb04x.com Status: 200/200/200
User: hy0UQkg6GI7d Password: o3GEk6FhweX8VHl3 EMail: 4ow63pj0@f9bjilxdsm2fjdmfm3.com Status: 200/200/200
User: ZqGdJ3P1Zr2B Password: 7o1Tgsf58b EMail: pxz6mzii1v6iqgrx@bnsuuifaiozkqu7.com Status: 200/200/200
User: Lrz5KoRzYZzr Password: OwVx72SVbMp EMail: eiw74mvidnm2@yrqryj7et4.com Status: 200/200/200
User: mnrzZNYSN3hJ Password: ZVbpLUOjoqmJs8 EMail: 36pw5peb@eke9if6at6bxwml.com Status: 200/200/200
User: 9P0BL1u5uux0 Password: XwmY3SHFCqY EMail: abmqvcczshocudkuy8p@k4ulpf.com Status: 200/200/200
User: Lvn8rCIzC1pq Password: LCML47Yr4b EMail: 8dqecj36yk1tzpxg0@5dd4i4.com Status: 200/200/200
User: MoXUVLw5kNH6 Password: S6CwVqsndbbNEKj EMail: qsosw2yiynd4qmwguod@d3bitpyvv1m0.com Status: 200/200/200
User: W8oxrUrNKwKt Password: 4KFFbCAf EMail: 0s3trskkw4oeh@cn07z6lkjzdo.com Status: 200/200/200
User: 0wWDtF4ppBs4 Password: zvtPsSiO EMail: 58zc88brt0wngabz6o15@s79ax6z8.com Status: 200/200/200
User: sNMbc9g8gLuk Password: VB60u9c0 EMail: tcb1azx1008@hffpja15iudf49o7.com Status: 200/200/200
User: Hzwa7I6UvQeb Password: qcelzyqS EMail: 7t4griziw3odfnuh@97mdgd.com Status: 200/200/200
User: WnbMKEZntgGV Password: oxjQe5TiUq EMail: uxqzbe5h0@7agbmkgyae81yk.com Status: 200/200/200
User: nzNSON8E2ykF Password: Rbr72ElWHoLU2MXM EMail: xaujh3bcd@kuafjdoc4z71m9u4.com Status: 200/200/200
User: ZknQFG8bpuAt Password: mr9olhajTYnC5kr EMail: bu4p8bf0frucym32oi2p@r57q8uh4.com Status: 200/200/200
User: sS2YxlM54IAX Password: ySvvd2zf3Jsl EMail: bdilg1qbyscks2nebg7x@f50624ip1rg.com Status: 200/200/200
User: 3mnNXYN9rweL Password: j2xl7irgoid2e EMail: 3mj4npt9ecty2wqsjtj@fdu83jgzv1qk.com Status: 200/200/200
User: 3UtR3Z8DJjp7 Password: LgdiT2Zm89f8 EMail: vhfbj95s7a8413se@q8e92k0.com Status: 200/200/200
User: a1p3HA4LAb9y Password: TDb2D6H14cpn5 EMail: 7ud47hmznszv04fycwb@99l1527cc3.com Status: 200/200/200
User: JWcQ9YlRHOSq Password: vPYGicQY2N EMail: g3516x9fao1gxd6@4vln10jhwoigol.com Status: 200/200/200
User: YDNQDENhYXW8 Password: xwFZ16xIw EMail: gp3gi5m6a1@3h2b6crbjyiphr7mb.com Status: 200/200/200
User: DewiiRMb52UG Password: t2352f3amoDds EMail: 1t55qx8v6zus@cpnhw2y.com Status: 200/200/200
User: BcY9hzOb03WY Password: z7Hh23yol EMail: pvod8xlbfklnr3bbfccm@db3wni7.com Status: 200/200/200
User: yQjBSi6X0r3A Password: OrLn5NIeJ9j EMail: tukud65ev@h1pwqx.com Status: 200/200/200
User: FOR3AwRQ1oyj Password: wwHwbeWwTgG EMail: nmnnvx9d@tgl6h8ejjq.com Status: 200/200/200
User: VZtLZC8w6o13 Password: y0nwMFj5m8vwdfGx EMail: yo5joji5ir4t@dxkch757cqq.com Status: 200/200/200
User: MA0uX9swvx4c Password: pC0IBT2M EMail: qdsgmz22jof@hnkh9nm.com Status: 200/200/200
User: g4wwo0GDMxPs Password: IVJmibfhCkBsqwE EMail: 3vey7yg1ssoikalenwv@quq55jrirp8yqm7.com Status: 200/200/200
User: YyRVMmP28O3M Password: 4fAQ5wgn5OO7k EMail: z8bgjyzgg58l8ho@9fvverrrcppthf9i.com Status: 200/200/200
User: 9sVQ9k5QBsZm Password: WnxMPWhtOxhlu8i EMail: wm1397etkq2isbcz49@1der7frkf6.com Status: 200/200/200
User: tTHNYUe9FtSQ Password: 2Lodw5gH6V2e EMail: pjzfepzy2p9b3gx@raamx09c.com Status: 200/200/200
User: qMG3llntqGSe Password: jTvFPbFAv EMail: 0qjw3dlmceuspkbt5q@jjqioski7qhfxpk.com Status: 200/200/200
User: gIm1SpnY5bDh Password: 3NXcKmnTpQ EMail: nkjfzkau02s@fy8dz2erk2m3g9nb.com Status: 200/200/200
User: x8HgFzchSbbI Password: jhYHISug3J9sglZ0 EMail: o1otlxma86a9vdx@ctuhy610s.com Status: 200/200/200
User: Wq06sturxPqA Password: N6lh2VFpO3p EMail: a39gkr0w@9ff2xpuoa142gla.com Status: 200/200/200
User: aPYUhA99BfWL Password: d9Tzfn1LjK4r2PlH EMail: 3lxeql5jco8@i3n4npbbiudwpugvy.com Status: 200/200/200
User: J3a6GMz58uCD Password: TQs3K4kkZfnFbse0 EMail: r0y9k6ktppidxm9xk@j58duae7ks8sql.com Status: 200/200/200
User: biaecW9XY28m Password: bvuX5LbTv7bo1tf EMail: uom71mt6y98@i3e3zs6.com Status: 200/200/200
User: WmQolC3lWfu8 Password: RK1geHYYR EMail: 2nmxwdju9@k3wb5qxwgo59rr77zy.com Status: 200/200/200
User: nV0unHBoG7Ml Password: QDrlaPXq2bf EMail: qkrux9uecfbctua07@nxs66un5b.com Status: 200/200/200
User: RZpejNe0Qgd7 Password: XNKPeLTPWH9A4JU EMail: l1pscpkq1q59@2i2jarr.com Status: 200/200/200
User: icl7pGnmrv51 Password: 8FdMLmDgF1yyz EMail: srg5fgsva5k5umww4e@l3jgcc0rkk7.com Status: 200/200/200
User: Vffv44oOjiBE Password: yoUOCVFVNuDk EMail: rw96795af1q@b14bua.com Status: 200/200/200
User: 07odLgCnmDEB Password: UElwdRmBb EMail: 257n3v2qolxs@x87d6rs9.com Status: 200/200/200
User: Dk0UztgZCK2u Password: 4UPhATToAdSfKr EMail: 08w2s1m1zpzayfs@7vul6ejmhzj0u4sy2.com Status: 200/200/200
User: ognE6KHaAanZ Password: iGG9Ht511sE EMail: 9x6hc50wc1mbnh@y07175.com Status: 200/200/200
User: wKYJKAJp5Diy Password: L3frymQ15G EMail: ari1z6xnq9c1d@s56463.com Status: 200/200/200
User: ONr7u1y7N9DE Password: RdGCNWWWdsiPYXB EMail: mwx5j4su@9qkv75.com Status: 200/200/200
User: 3m1WZh4dUN94 Password: AJoodDRjl EMail: 7ryuaq4owuvr@me11rn75ox0opfy4tur8.com Status: 200/200/200
User: ImebHnWQtP8x Password: A7reNlMfqCJ108l EMail: k8ksl5m30i9qsrfem9z@vzokus.com Status: 200/200/200
User: FWGcJXtooet1 Password: gFeJat67gySYIaD EMail: udirgc7my2l2@4a7yxwp3297ku.com Status: 200/200/200
User: IdefnRvrkN9j Password: sQy2l6SMrJDEjIL EMail: g3mo4iwlyfpl8u@vy8w3fhxjaie.com Status: 200/200/200
User: Pz10bthiXJjc Password: 5EBSMFFi EMail: vw16djmm41t8qb@6bkbdviwaud.com Status: 200/200/200
User: xf28kg0CbUho Password: unIn09mZiOBk46 EMail: 6ro2t8rrx3l9e@82u17xx16dabnx143cq.com Status: 200/200/200
User: Q2c4yMIRcq93 Password: pMfbjBe8dml4qFe EMail: 362mfi2hg3@h9670jzp3f99c.com Status: 200/200/200
User: Vwwb8dtPYegl Password: w9WbPyRRVnEj EMail: 114of4cz@74hdq0.com Status: 200/200/200
User: BaOZeLPzVvnE Password: LZfDyv4P2Bd6 EMail: 3nnx2b5brddzr45g@krl3f.com Status: 200/200/200
User: PovYyGEBMxrX Password: wtjIugW1X2A EMail: qwblu3lfjv@ebm78j8eknds.com Status: 200/200/200
User: jRwazeSoztYB Password: 4m7pVx5OJcuq EMail: ajocu2b95m1yjtq@up7fly.com Status: 200/200/200
User: 0fIjg38xZ1ok Password: qVAtcIfy2GIDHY EMail: iq5p76mqbp41qwj@8hn229uqy9t2e2lc7.com Status: 200/200/200
User: 8jMQz8vbhK4Y Password: T1uYnjVzHoG4MTsa EMail: fotosdwp@e97mp3zb.com Status: 200/200/200
User: 7JORzmCdROMt Password: 96X1fSjc EMail: 71qcee3bl0lom0l@qjkcg1awxzm0.com Status: 200/200/200
User: bU8zU1PT0SSp Password: uB4VX6CMOvoZE7 EMail: x08mhorx1ng38oq7z2@p2lxbp8lhgeruvc.com Status: 200/200/200
User: pBsSufDePj72 Password: IaYooHKIy EMail: fko423y9nixalm@qzali1.com Status: 200/200/200
User: tQc1NxvIoni9 Password: 0Zka1eZsxZ9d EMail: 0s90ii1qc103zqa@d76pr4k6rcw3ccwcx.com Status: 200/200/200
User: 77YAQl4vCGSX Password: iLcCgEspKBvIIz EMail: 0sgk3bxakc4vhr@7s37upc9rg0.com Status: 200/200/200
User: OVXREjs024iv Password: heR3gMV8Cs EMail: azzkygik@kyi0c65fn3py8ac1l7.com Status: 200/200/200
User: wGPCjTH9rlVM Password: 8n60h4XgXbpS EMail: qgszii17f@axpvw.com Status: 200/200/200
User: HdEl0uVSOrnw Password: 7tma6S1iwH EMail: yrh1haz6czem@0iyo58rtv1g1tui9f4n.com Status: 200/200/200
User: t0b1UIS02nsk Password: RjbM1xBalYBfYf EMail: a5oz4uwnhna66ow6n67@u7yle4frrr0uyfd.com Status: 200/200/200
User: 3l76YdsdaFrG Password: ofuEgEqrEec EMail: i4xpl1r76jopbqpxdwt@05tklhwl7k6.com Status: 200/200/200
User: xpzWpCR2JGR0 Password: moggVXrWIxd EMail: n10isime@4casoc6gbc90kwuq37a.com Status: 200/200/200
User: niTrlQSDb6AZ Password: TY3P7ufbKl EMail: rtuzqv38sqp@wi59t.com Status: 200/200/200
User: 9v4GEn0x0bLv Password: WAMHvFS4mRL EMail: it58ox5hkkfs4@e1pb8i0e634zw.com Status: 200/200/200
User: 59wENmcLi3bs Password: UrnGmwxZpRuDm EMail: k7vmu981k4j9q8@6j7j61.com Status: 200/200/200
User: yNrvA4XahWhV Password: fkE5vxxqxsA8TW6 EMail: 76j1p1bnpn10ke37q2j@v3sr6f22ee6intww.com Status: 200/200/200
User: lZ1hmmNrrbup Password: IhACwyRKWnKHeTb EMail: zjti056na439yd67o92@nur1r4.com Status: 200/200/200
User: y4TkrHUkSBHB Password: b9EgBnnT4G EMail: 9m96ptg0@97ld7r.com Status: 200/200/200
User: SqjFYOUthREH Password: Pm4fhhf3B EMail: 9ky10z5s@cairsmo2nuc7a.com Status: 200/200/200
User: MG9rk3eBgxpb Password: BKPyASG7QtzAkA5 EMail: op3ycqb3b0o710@cwu5ovcx5sbgo8d2p0j.com Status: 200/200/200
User: ins3dec9Yl7H Password: 2BcxiECub9 EMail: cy1uu6e8ec9a@x8p0jbkecmjge.com Status: 200/200/200
User: nprL5horsx0i Password: J6zIAqbEePfZB EMail: 341i04qs@thdnuozrzh52zu2nz.com Status: 200/200/200
User: uiScCjSn53K3 Password: S2xNCY0K6OCqp6 EMail: nab92vmecofi4m6ba2@47r5etpo1js6bla.com Status: 200/200/200
User: JjJJ52Bw30aX Password: 1PZsv7N8 EMail: pa78j33e@xv19cd374rjeakuywf.com Status: 200/200/200
User: 75pgPEfyMzXg Password: am0qaWkbdrWss9r EMail: nmudahit@9mmehg.com Status: 200/200/200
User: E00TomIphAY9 Password: Y8mzI5c4sM EMail: b942uv440rrp2y@td9mqx693fdmtule233a.com Status: 200/200/200
User: 2ELZOa8Z2c7g Password: KbCIil3IbWdK4 EMail: 22fyebt8@hiw9rn.com Status: 200/200/200
User: sFrFAO6OCJnM Password: E0y8MQkFeVJ EMail: hjn5pqxq65z11@7kxwpptdk6nrh3rcpqxx.com Status: 200/200/200
User: yG3vnZkaSGey Password: 5p7pVQ0qQJJtU EMail: i6sjnf0q70tu5q@4bnorlzit.com Status: 200/200/200
User: 8EbYQCfxn3vG Password: uO7RAwQ50nDUbj EMail: 33o0pscv6e@wrf7nq1hwjjs0mbt1n53.com Status: 200/200/200
User: NjsvRC5WxWvH Password: txyFZlkg4mNYP EMail: r6qlf0cs6c7@4qqhrcb9vfjze70po.com Status: 200/200/200
User: 6XIzAFYS4lP9 Password: Uo8VQlB28Jra4Je EMail: enq9k3fslpz@gx1rsq7n.com Status: 200/200/200
User: 2d85TSjxWi3G Password: 5la3U2YlO EMail: vn2ecrhlu547@54g56ukyavxwzd.com Status: 200/200/200
User: 9rLJjxJwbd6a Password: YwZurTVF0Uu EMail: 4zvjysdtngd3j@invvw42q3.com Status: 200/200/200
User: aIYfVQyL0DEA Password: Qfs7Vu0YTWPv EMail: wa0zi366bofjh1@zjdq1xhkpblvv1.com Status: 200/200/200
User: 1c8zDhMu1zWN Password: Aitm744xU1ADhJN EMail: z60ffdtlcbdkdxd35es@zeanes6qaii.com Status: 200/200/200
User: Wnioqs003kce Password: ErFPiexXpIr57NTl EMail: 1bq1mbx9yvub@q7t9dv.com Status: 200/200/200 // copspy
+147
View File
@@ -0,0 +1,147 @@
import asyncio
import datetime
import json
import websockets
from websockets.legacy.client import WebSocketClientProtocol
from core.dict_object import DictObject
# There is some calculation required. Best to kinda mess with it is to use the websocket on a dev pc and see the output, I believe it was JSON
# ws://<You-KNOW-THS>:8887 as basic chat communication. When u connect u have to identify (it sends "#auth") - Repky with the following message or get disconnected: "#auth 13r9Zh9qd10%§SD29#31+". After login u can use followin commands: "#timers" to get all timers(tara, gaunt, ...)
#
# "#all" sends complete towerdatabase, so just do it every 24h...
#
# You automaticly get tower updates: "#tower+ [data]" when planted and "#tower- [towerID]" when destroyed
# Also timers get been broadcasted: "#timer Tarasque killable" etc..."#timer Vizaresh spawn", "#timer Tarasque 30min", "#timer Tarasque 15min"
# like "#tower+ [{asddasdasdaqqd}]
class TimerObj:
name: str = ""
spawn: int = 0
mortal: int = 0
time: int = 0
spam: int = 0
def __init__(self, obj):
self.name = obj.name
self.spawn = obj.spawn
self.mortal = obj.mortal
self.time = obj.time
def nick(self):
return self.name.split()[0] if self.name != 'The Desert Rider' else 'Rider'
def update(self, obj):
self.spawn = obj.spawn
self.time = obj.time
self.mortal = obj.mortal
def __str__(self):
return f"{self.name} " \
f"\n\tspawn: {datetime.datetime.fromtimestamp(self.spawn, tz=datetime.timezone.utc).strftime('%H:%M:%S')}" \
f"\n\tmortal delta: {self.mortal}" \
f"\n\tmortal: {datetime.datetime.fromtimestamp(self.time, tz=datetime.timezone.utc).strftime('%H:%M:%S')}" \
f"\n\tImmortal: {self.alive_immortal()}" \
f"\n\tMortal killable: {self.alive_mortal()}" \
f"\n\t{self.name} - {self.spawn} - {self.mortal} - {self.time} - {self.spam} - {self.getTime()}"
def alive_immortal(self, spam=False) -> bool:
if spam:
return self.spam < self.spawn < self.time and self.time > self.getTime()
return self.time > self.getTime()
def alive_mortal(self, spam=False) -> bool:
if spam:
return self.spam < self.time < (self.getTime()) and (self.time + 60) > self.getTime()
return self.time < self.getTime()
@classmethod
def getTime(cls) -> int:
return int(datetime.datetime.now().timestamp())
def get_respawn_timer(self):
if self.name in ["Tarasque", "Loren Warr", "The Hollow Reaper", "Cerubin The Reborn"]:
return 9 * 60 * 60
elif self.name in ["Vizaresh"]:
return 17 * 60 * 60
elif self.name in ["Atma"]:
return 3 * 60 * 60
elif self.name in ["T.A.M.", "Zaal The Immortal"]:
return 6 * 60 * 60
elif self.name in ["Abmouth Indomitus"]:
return 9 * 60 * 60
# No/unknown respawn timer?
return 0
class WebsocketClient:
timer_data = []
def getWBTimer(self, name=None):
if not name:
blob = ""
for x in sorted(self.timer_data, key=lambda y: y.name):
msg = self.formatMessage(x)
blob += (msg + "\n") if msg else ""
return blob
for x in self.timer_data:
if x.name == name:
return self.formatMessage(x).strip()
def formatMessage(self, x: TimerObj):
if x.name in ['Tarasque', 'Vizaresh']:
return ""
if x.alive_immortal():
return f"`{x.name.split()[0]: <8}` :: mortal <t:{x.time}:R>"
else:
rt = x.get_respawn_timer()
if rt != 0:
if (x.time + rt) < x.getTime() < (x.time + 1.5 * rt):
return f"`{x.nick(): <8}` :: should have spawned <t:{abs((x.time + rt))}:R>... next one <t:{x.time + rt + x.get_respawn_timer()}:R>"
if x.time < x.getTime() < (x.time + 10 * rt):
skips = 0
time = x.time
while time < x.getTime():
time += x.get_respawn_timer()
skips += 1
if (x.time + rt) < x.getTime():
return f"`{x.nick(): <8}` :: spawn <t:{x.time + rt * skips}:R> [Skipped: {skips - 1}]"
return f"`{x.nick(): <8}` :: spawn <t:{x.time + rt}:R>"
else:
return f"`{x.nick(): <8}` :: mortal <t:{x.time + rt}:R>"
return ""
async def internal(self, uri):
async with websockets.connect(uri) as websocket:
websocket: WebSocketClientProtocol
data = await websocket.recv()
if data == "#auth":
await websocket.send("#login dbs nFa*n4+p~#__H)6NVvQ]W.Veg8!`q6h[Pp9q6HKDk")
while True:
data = DictObject(json.loads(await websocket.recv()))
print(data.payload)
for x in data.payload:
found = False
for y in self.timer_data:
if y.name == x.name and not found:
y.update(x)
found = True
if not found:
self.timer_data.append(TimerObj(x))
print(self.getWBTimer())
async def monitor(self, uri, method):
# Auto reconnect
while True:
await method(uri)
await asyncio.sleep(10)
def __init__(self):
loop = asyncio.get_event_loop()
b = loop.create_task(self.monitor("ws://37.187.118.232:25501/internal/timers", self.internal))
loop.run_until_complete(b)
WebsocketClient()
+182
View File
@@ -0,0 +1,182 @@
import re
a = """ UNKNOWN_2(3507), //0xDB3 - listentest.java
KNU_BOT_NPC_DESCRIPTION(658522), //0xa0c5a - KnubotNPCDescriptionIIR_c
ADD_TEMPLATE(86912780), //0x52e2f0c - AddTemplateIIR_t
GRID_DESTINATION_SELECT(104417101), //0x639474d - GridDestinationSelectIIR_t
CENTRAL_CONTROLLER_STATE(139685733), //0x8536F65 - CentralControllerStateIIR_t - 2021-01-07
WEATHER_CONTROL(207248749), //0xC5a5d6d - WeatherControlIIR_t
PET_TO_MASTER(221781762), //0xd381f02 - PetToMasterIIR_c
FLUSH_RDB_CACHES(276329306), //0x1078735a - FlushRDBCachesIIR_c
SHOP_SEARCH_RESULT(321942351), //0x1330734f
SHOP_SEARCH_REQUEST(341462886), //0x145a4f66
CENTRAL_CONTROLLER_FULL_UPDATE(354759431), //0x15253307 - CentralControllerFullUpdateIIR_t - 2021-01-07
ACCEPT_BS_INVITE(376062814), //0x166a435e - AcceptBSInviteIIR_t
ADD_PET(424562550), //0x194e4f76 - AddPetIIR_c
SET_POS(425609582), //0x195e496e - SetPosIIR_c
CLIENT_REQUEST_CLOSE_GUI(456941901), //0x1b3c614d - ClientRequestCloseGUIIIR_c - 2021-01-07
REFLECT_ATTACK(473583479), //0x1c3a4f77 - ReflectAttackIIR_t
SPECIAL_ATTACK_WEAPON(490475292), //0x1d3c0f1c - SpecialAttackWeaponIIR_t
ClientContainerAddItem (525164414), //0x1F4D5F7E - ClientContainerAddItemIIR_t - 2021-01-07
MentorInvite (536950654), //0x2001377e - MentorInviteIIR_c
Action (541676156), //0x2049527c - ActionIIR_t
Script (542066801), //0x204f4871 - ScriptIIR_t
FormatFeedback (543902579), //0x206b4b73 - FormatFeedbackIIR_t
KnuBotAnswer (553854077), //0x2103247d - KnubotAnswerIIR_c
Quest (556550266), //0x212c487a - QuestIIR_t
MineFullUpdate (559634040), //0x215b5678 - MineFullUpdateIIR_t
LookAt (575816799), //0x2252445f - LookAtIIR_t
ShieldAttack (622404726), //0x25192476 - ShieldAttackIIR_t
CastNanoSpell (623988077), //0x25314d6d - CastNanoSpellIIR_t
ResearchUpdate (624755264), //0x253D0240 - ResearchUpdateIIR - tower related?
ResearchUpdate2 (624755276), //0x253d024c
FollowTarget (638531185), //0x260f3671 - FollowTargetIIR_c
RelocateDynels (642470219), //0x264b514b - RelocateDynelsIIR_t
Absorb (642670433), //0x264e5f61 - AbsorbIIR_t
Reload (642866785), //0x26515e61 - ReloadIIR_t
KnuBotCloseChatWindow (654986338), //0x270a4c62 - KnubotCloseChatWindowIIR_c
SimpleCharFullUpdate (656095851), //0x271b3a6b - SimpleCharFullUpdateIIR_t
LockableItemFullUpdate (660555345), //0x275f4651 - LockableItemFullUpdateIIR_t - 2021-01-07
StartLogout (673521409), //0x28251f01 - StartLogoutIIR_t
Attack (675889264), //0x28494070 - AttackIIR_t
TeamMemberInfo (678969928), //0x28784248 - TeamMemberInfoIIR_t
CreateQuest (689911323), //0x291F361B - CreateQuestIIR_t - 2021-01-07
FullCharacter (691028809), //0x29304349 - FullCharacterIIR_t
LaserTargetList (691213647), //0x2933154f - LaserTagListIIR_t
TrapDisarmed (707084127), //0x2a253f5f - TrapDisarmedIIR_t
Fov (707345679), //0x2a293d0f - FovIIR_c
Stat (724778350), //0x2b333d6e - StatIIR_t
QueueUpdate (741279260), //0x2c2f061c - QueueUpdateIIR_t
KnuBotRejectedItems (757146631), //0x2d212407 - KnubotRejectedItemsIIR_c
PlayerShopFullUpdate (772221560), //0x2e072a78
OrgInfoPacket (774523499), //0x2e2a4a6b - OrgInfoPacketIIR_t
N3PlayfieldFullUpdate (806753109), //0x30161355 - n3PlayfieldFullUpdateIIR_t
ResearchRequest (823481165), //0x3115534d
AreaFormula (824779579), //0x3129233b - AreaFormulaIIR_t
InfromPlayer (855716730), //0x3301337a - InfromPlayerIIR_t
WaypointPath (858857538), //0x33312042 - WaypointPathIIR_c - 2021-01-07
Mail (859514983), //0x333b2867 - MailIIR_c
ApplySpells (875306269), //0x342c1d1d - ApplySpellsIIR_t
Bank (876357759), //0x343c287f - BankIIR_t
ShopInventory (893341522), //0x353f4f52
TemplateAction (894457412), //0x35505644 - TemplateActionIIR_t
Trade (908611438), //0x36284f6e - TradeIIR_t
Despawn (911278200), //0x36510078 - n3ToClientQuitIIR_t
DoorFullUpdate (911888497), //0x365a5071 - DoorFullUpdateIIR_t
CityAdvantages (912151899), //0x365e555b - CityAdvantagesIIR_t
HealthDamage (923805036), //0x3710256c - HealthDamageIIR_t
PickUp (924019819), //0x37136C6B - ClientGetItemIIR_t - 2021-01-07
FightModeUpdate (924648770), //0x371d0542 - FightModeUpdate_t
SetShopName (926823699), //0x373e3513
Buff (959724648), //0x39343c68 - BuffIIR_c
KnuBotTrade (974859276), //0x3a1b2c0c - KnubotTradeIIR_c
ItemReplaced (975321936), //0x3A223B50 - ItemReplacedIIR_c - 2021-01-07
DropTemplate (975454017), //0x3a243f41 - DropTemplateIIR_t
GridSelected (976366154), //0x3a322a4a - GridSelectedIIR_t
SimpleItemFullUpdate (990979439), //0x3b11256f - SimpleItemFullUpdateIIR_t
KnuBotOpenChatWindow (991112548), //0x3b132d64 - KnubotOpenChatWindowIIR_c
WeaponItemFullUpdate (991765096), //0x3b1d2268 - WeaponItemFullUpdateIIR_t
SocialActionCmd (992544625), //0x3b290771 - SocialActionCmd_t
Raid (993732728), //0x3b3b2878 - RaidIIR_c
ShadowLevel (1008609283), //0x3c1e2803 - ShadowLevelIIR_t
Clone (1009144185), //0x3c265179 - CloneIIR_t
ServerPathPosDebugInfo2 (1031040112), //0x3d746c70 - ServerPathPosDebugInfoIIR_c - 2021-01-07, might be same as ServerPathPosDebugInfo
ShopCommission (1029391684), //0x3d5b4544
ServerPathPosDebugInfo (1031040124), //0x3d746c7c - Found new hex and added as ServerPathPosDebugInfo2 2021-01-07
Skill (1042306656), //0x3e205660 - SkillIIR_t
ClientRequestDemolish (1058762608), //0x3f1b6f70 - ClientRequestDemolishIIR_c - 2021-01-07
LeaveBattle (1060772116), //0x3f3a1914 - LeaveBattleIIR_t
ShopInfo (1079725863), //0x405b4f27
AppearanceUpdate (1096961805), //0x41624f0d - AppearanceUpdateIIR_c
N3Teleport (1125743906), //0x43197d22 - n3TeleportIIR_t
PerkUpdate (1130328099), //0x435f7023 - PerkUpdateIIR
SendScore (1145584442), //0x44483b3a - SendScoreIIR_t
Resurrect (1147087371), //0x445f2a0b - ResurrectIIR_t
UpdateClientVisual (1158097419), //0x45072a0b - Found new hex and added as UpdateClientVisual2 2021-01-07
UpdateClientVisual2 (1158097453), //0x45072a2d - UpdateClientVisualIIR_t - 2021-01-07, might be same as UpdateClientVisual
HouseDemolishStart (1160199946), //0x45273f0a
PlaySound (1163733304), //0x455d2938 - PlaySoundIIR_c
AttackInfo (1174417174), //0x46002f16 - AttackInfoIIR_t
TeamMember (1177627950), //0x46312d2e - TeamMemberIIR_t
SpawnMech (1179451402), //0x464d000a - SpawnMechIIR_t
QuestFullUpdate (1180319841), //0x465a4061 - QuestFullUpdateIIR_t
ChestItemFullUpdate (1180327283), //0x465a5d73 - ChestFullUpdateIIR_t
MarketSend (1191915028), //0x470B2E14 - MarketSendIIR_c - 2021-01-07
NanoAttack (1193746750), //0x4727213e
DropDynel (1195914803), //0x47483633 - DropDynelIIR_t
ContainerAddItem (1196653092), //0x47537a24 - ContainerAddItemIIR_t
InventoryUpdated2 (1214149122), //0x485E7202 - InventoryUpdatedIIR_t - 2021-01-07
Visibility (1226974738), //0x49222612 - VisibilityIIR_t
KnubotBase (1243422725), //0x4a1d2005 - KnubotBaseIIR_c - 2021-01-07
StopFight (1245782078), //0x4a41203e - StopFightIIR_t
BattleOver (1258694937), //0x4b062919 - BattleOverIIR_t
InventoryUpdated (1264480770), //0x4b5e7202 - 2021-01-07 Found a dump where it is 0x485E7202 for InventoryUpdated (added that as InventoryUpdated2)
n3LocalityUpdate (1280508704), //0x4c530320 - n3LocalityUpdateIIR_t - 2021-01-07
DoorStatusUpdate (1283276859), //0x4c7d403b - DoorStatusUpdateIIR_t
TeamInvite2 (1294610747), //0x4d2a313b - TeamInviteIIR_t - 2021-01-07, might be same as TeamInvite
TeamInvite (1294613048), //0x4d2a3a38 - 2021-01-07 Found a dump where it is 0x4d2a313b for TeamInvite (added that as TeamInvite2)
ShopStatus (1295200295), //0x4d333027
InfoPacket (1295524910), //0x4d38242e - InfoPacketIIR_t
SpellList (1296367892), //0x4d450114 - SpellListIIR_t
RaidCmd (1314020952), //0x4E525E58 - RaidCmdIIR_c - 2021-01-07
InventoryUpdate (1314089334), //0x4e536976 - InventoryUpdateIIR_t
CorpseFullUpdate (1330073093), //0x4f474e05 - CorpseFullUpdateIIR_t
Feedback (1347702041), //0x50544d19 - FeedbackIIR_t
CharSecSpecAttack (1363747104), //0x51492120 - CharSecSpecAttackIIR_t
BankCorpse (1377907744), //0x52213420 - BankCorpseIIR_t
GenericCmd (1381132376), //0x52526858 - GenericCmd_t
PathMoveCmd (1382441770), //0x5266632a
ClientRequestBuild (1392579606), //0x53011416 - ClientRequestBuildIIR_c - 2021-01-07
ArriveAtBs (1410218791), //0x540e3b27 - ArriveAtBsIIR_t
CharDCMove (1410404643), //0x54111123 - CharDCMoveIIR_t
ClientMoveItemToInventory (1416181567), //0x5469373F - ClientMoveItemToInventoryIIR_t - 2021-01-07
PlayfieldAllTowers (1428293414), //0x55220726 - PlayfieldAllTowersIIR_t
KnuBotFinishTrade (1432890148), //0x55682b24 - KnubotFinishTradeIIR_c
KnuBotAnswerList (1433423153), //0x55704d31 - KnubotAnswerListIIR_c
ClientRequestBuy (1434019330), //0x55796602 - ClientRequestBuyIIR_c - 2021-01-07
StopLogout (1446326328), //0x56353038 - StopLogoutIIR_t
CharInPlay (1460412473), //0x570c2039 - CharInPlayIIR_t
ShopUpdate (1479942688), //0x58362220 - ShopUpdateIIR_t
MechInfo (1482113593), //0x58574239 - MechInfoIIR_t
RemovePet (1484007951), //0x58742a0f - RemovePetIIR_c
PlayfieldAllCities (1495335206), //0x59210126 - PlayfieldAllCitiesIIR_t
TrapItemFullUpdate (1496398120), //0x59313928 - TrapItemFullUpdateIIR_t
Inspect (1515741029), //0x5a585f65 - InspectIIR_c
PlayfieldTowerUpdateClient (1528694060), //0x5b1e052 - PlayfieldTowerUpdateClientIIR_t
ServerPosDebugInfo (1545864196), //0x5c240404 - ServerPosDebugInfoIIR_c
QuestAlternative (1547920905), //0x5c436609 - QuestAlternativeIIR_t
FullAuto (1548372282), //0x5c4a493a - FullAutoIIR_t
ChatCmd (1548900987), //0x5c525a7b
MissedAttackInfo (1550142248), //0x5c654b28 - MissedAttackInfoIIR_t
KnuBotAppendText (1567642410), //0x5d70532a - KnubotAppendTextIIR_c
CharacterAction (1581741936), //0x5e477770 - CharacterActionIIR_t
HouseDisappeared (1583046663), //0x5e5b6007
Impulse (1598704748), //0x5f4a4c6c - ImpulseIIR_c
PlayfieldAnarchyF (1598757433), //0x5f4b1a39 - PlayfieldAnarchyFIIR_t
ChatText (1598768170), //0x5f4b442a - ChatTextIIR_t
GameTime (1599226158), //0x5f52412e - GameTimeIIR_t
SetWantedDirection (1612717326), //0x60201d0e - SetWantedDirectionIIR_t
AoTransportSignal (1651777045), //0x62741e15 - AOTransportSignalIIR_c
PetCommand (1664299779), //0x63333303 - 2021-01-07 Found a dump where it is 0x6B333303 for PetCommand (added that as PetCommand2)
OrgServer (1683499527), //0x64582a07 - OrgServerIIR_c
PetCommand2 (1798517507), //0x6B333303 - PetCommandIIR_c - 2021-01-07 Could be a typo and/or same as PetCommand
SetStat (1851741806), //0x6e5f566e - SetStatIIR_t
SetName (1934514811), //0x734e5a7b - SetNameIIR_t
StopMovingCmd (1949180692), //0x742e2314 - StopMovingCmd_t
SpecialAttackInfo (1968115989), //0x754f1115 - SpecialAttackInfoIIR_t
GiveQuestToMember (1998784807), //0x77230927 - GiveQuestToMembersIIR_t
KnuBotStartTrade (2019835933), //0x7864401d - KnubotStartTradeIIR_c
GfxTrigger (2049057282), //0x7a222202 - GfxTriggerIIR_t
ACGQuest (2053533449), //0x7a666f09 - ACGQuestIIR_t - 2021-01-07
ShopItemPrice (2113941807), //0x7e00312f
NewLevel (2134923798), //0x7f405a16 - NewLevelIIR_t
OrgClient (2135634184), //0x7f4b3108 - OrgClientIIR_c
VendingMachineFullUpdate (2136230149); //0x7f544905 - VendingMachineFullUpdateIIR_t
"""
d = [x.strip() for x in a.split("\n")]
print(d)
for y in d:
x = y.split("(")
if m := re.sub( r"([A-Z]+)", r" \1", x[0]).split():
print("_".join([xx.upper() for xx in m])+"("+x[1])