albibong 1.1.0__py3-none-any.whl → 1.1.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- albibong/__init__.py +70 -44
- albibong/__main__.py +6 -0
- albibong/classes/character.py +7 -23
- albibong/classes/dungeon.py +18 -4
- albibong/classes/event_handler/__init__.py +11 -5
- albibong/classes/event_handler/handle_event_might_and_favor_received_event.py +18 -0
- albibong/classes/event_handler/handle_event_new_character.py +2 -3
- albibong/classes/event_handler/handle_event_other_grabbed_loot.py +9 -0
- albibong/classes/event_handler/handle_event_update_fame.py +9 -0
- albibong/classes/event_handler/handle_event_update_re_spec_points.py +9 -0
- albibong/classes/event_handler/handle_operation_farmable_harvest.py +1 -1
- albibong/classes/event_handler/handle_operation_join.py +12 -11
- albibong/classes/event_handler/world_data_utils.py +0 -11
- albibong/classes/utils.py +20 -0
- albibong/gui_dist/assets/index-B31tZ4Ku.css +1 -0
- albibong/gui_dist/assets/index-BkyL_QUY.js +168 -0
- albibong/gui_dist/favor.png +0 -0
- albibong/gui_dist/index.html +2 -2
- albibong/gui_dist/might.png +0 -0
- albibong/migrations/001_init.py +97 -0
- albibong/migrations/002_alter_dungeon_table.py +53 -0
- albibong/models/models.py +2 -2
- albibong/requirements.txt +2 -1
- albibong/resources/EventCode.py +2 -0
- albibong/resources/event_code.json +2 -1
- albibong/threads/http_server.py +4 -0
- albibong/threads/sniffer_thread.py +39 -2
- albibong/threads/websocket_server.py +17 -3
- {albibong-1.1.0.dist-info → albibong-1.1.2.dist-info}/METADATA +2 -1
- {albibong-1.1.0.dist-info → albibong-1.1.2.dist-info}/RECORD +33 -28
- albibong/gui_dist/assets/index-C4r00CBk.js +0 -168
- albibong/gui_dist/assets/index-DKbORdbN.css +0 -1
- {albibong-1.1.0.dist-info → albibong-1.1.2.dist-info}/WHEEL +0 -0
- {albibong-1.1.0.dist-info → albibong-1.1.2.dist-info}/entry_points.txt +0 -0
- {albibong-1.1.0.dist-info → albibong-1.1.2.dist-info}/licenses/LICENSE +0 -0
|
Binary file
|
albibong/gui_dist/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<link rel="icon" type="image/png" href="/Albibong.png" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Albibong - Albion Data Tracker</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-BkyL_QUY.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-B31tZ4Ku.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
|
Binary file
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""Peewee migrations -- 001_init.py.
|
|
2
|
+
|
|
3
|
+
Some examples (model - class or model name)::
|
|
4
|
+
|
|
5
|
+
> Model = migrator.orm['table_name'] # Return model in current state by name
|
|
6
|
+
> Model = migrator.ModelClass # Return model in current state by name
|
|
7
|
+
|
|
8
|
+
> migrator.sql(sql) # Run custom SQL
|
|
9
|
+
> migrator.run(func, *args, **kwargs) # Run python function with the given args
|
|
10
|
+
> migrator.create_model(Model) # Create a model (could be used as decorator)
|
|
11
|
+
> migrator.remove_model(model, cascade=True) # Remove a model
|
|
12
|
+
> migrator.add_fields(model, **fields) # Add fields to a model
|
|
13
|
+
> migrator.change_fields(model, **fields) # Change fields
|
|
14
|
+
> migrator.remove_fields(model, *field_names, cascade=True)
|
|
15
|
+
> migrator.rename_field(model, old_field_name, new_field_name)
|
|
16
|
+
> migrator.rename_table(model, new_table_name)
|
|
17
|
+
> migrator.add_index(model, *col_names, unique=False)
|
|
18
|
+
> migrator.add_not_null(model, *field_names)
|
|
19
|
+
> migrator.add_default(model, field_name, default)
|
|
20
|
+
> migrator.add_constraint(model, name, sql)
|
|
21
|
+
> migrator.drop_index(model, *col_names)
|
|
22
|
+
> migrator.drop_not_null(model, *field_names)
|
|
23
|
+
> migrator.drop_constraints(model, *constraints)
|
|
24
|
+
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
from contextlib import suppress
|
|
28
|
+
|
|
29
|
+
import peewee as pw
|
|
30
|
+
from peewee_migrate import Migrator
|
|
31
|
+
|
|
32
|
+
with suppress(ImportError):
|
|
33
|
+
import playhouse.postgres_ext as pw_pext
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def migrate(migrator: Migrator, database: pw.Database, *, fake=False):
|
|
37
|
+
"""Write your migrations here."""
|
|
38
|
+
|
|
39
|
+
print("001_init")
|
|
40
|
+
|
|
41
|
+
@migrator.create_model
|
|
42
|
+
class BaseModel(pw.Model):
|
|
43
|
+
id = pw.AutoField()
|
|
44
|
+
|
|
45
|
+
class Meta:
|
|
46
|
+
table_name = "basemodel"
|
|
47
|
+
|
|
48
|
+
@migrator.create_model
|
|
49
|
+
class Dungeon(pw.Model):
|
|
50
|
+
id = pw.UUIDField(unique=True)
|
|
51
|
+
type = pw.CharField(max_length=255)
|
|
52
|
+
name = pw.CharField(max_length=255)
|
|
53
|
+
tier = pw.IntegerField(default=0)
|
|
54
|
+
fame = pw.FloatField(default=0.0)
|
|
55
|
+
silver = pw.FloatField(default=0.0)
|
|
56
|
+
re_spec = pw.FloatField(default=0.0)
|
|
57
|
+
start_time = pw.DateTimeField()
|
|
58
|
+
end_time = pw.DateTimeField(null=True)
|
|
59
|
+
meter = pw.TextField()
|
|
60
|
+
|
|
61
|
+
class Meta:
|
|
62
|
+
table_name = "dungeon"
|
|
63
|
+
|
|
64
|
+
@migrator.create_model
|
|
65
|
+
class Island(pw.Model):
|
|
66
|
+
uuid = pw.UUIDField(unique=True)
|
|
67
|
+
id = pw.CharField(max_length=255)
|
|
68
|
+
name = pw.CharField(max_length=255)
|
|
69
|
+
type = pw.CharField(max_length=255)
|
|
70
|
+
start_time = pw.DateTimeField()
|
|
71
|
+
crops = pw.TextField()
|
|
72
|
+
animals = pw.TextField()
|
|
73
|
+
|
|
74
|
+
class Meta:
|
|
75
|
+
table_name = "island"
|
|
76
|
+
|
|
77
|
+
@migrator.create_model
|
|
78
|
+
class Location(pw.Model):
|
|
79
|
+
uuid = pw.UUIDField(unique=True)
|
|
80
|
+
id = pw.CharField(max_length=255)
|
|
81
|
+
name = pw.CharField(max_length=255)
|
|
82
|
+
type = pw.CharField(max_length=255)
|
|
83
|
+
|
|
84
|
+
class Meta:
|
|
85
|
+
table_name = "location"
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def rollback(migrator: Migrator, database: pw.Database, *, fake=False):
|
|
89
|
+
"""Write your rollback migrations here."""
|
|
90
|
+
|
|
91
|
+
migrator.remove_model("location")
|
|
92
|
+
|
|
93
|
+
migrator.remove_model("island")
|
|
94
|
+
|
|
95
|
+
migrator.remove_model("dungeon")
|
|
96
|
+
|
|
97
|
+
migrator.remove_model("basemodel")
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""Peewee migrations -- 002_alter_dungeon_table.py.
|
|
2
|
+
|
|
3
|
+
Some examples (model - class or model name)::
|
|
4
|
+
|
|
5
|
+
> Model = migrator.orm['table_name'] # Return model in current state by name
|
|
6
|
+
> Model = migrator.ModelClass # Return model in current state by name
|
|
7
|
+
|
|
8
|
+
> migrator.sql(sql) # Run custom SQL
|
|
9
|
+
> migrator.run(func, *args, **kwargs) # Run python function with the given args
|
|
10
|
+
> migrator.create_model(Model) # Create a model (could be used as decorator)
|
|
11
|
+
> migrator.remove_model(model, cascade=True) # Remove a model
|
|
12
|
+
> migrator.add_fields(model, **fields) # Add fields to a model
|
|
13
|
+
> migrator.change_fields(model, **fields) # Change fields
|
|
14
|
+
> migrator.remove_fields(model, *field_names, cascade=True)
|
|
15
|
+
> migrator.rename_field(model, old_field_name, new_field_name)
|
|
16
|
+
> migrator.rename_table(model, new_table_name)
|
|
17
|
+
> migrator.add_index(model, *col_names, unique=False)
|
|
18
|
+
> migrator.add_not_null(model, *field_names)
|
|
19
|
+
> migrator.add_default(model, field_name, default)
|
|
20
|
+
> migrator.add_constraint(model, name, sql)
|
|
21
|
+
> migrator.drop_index(model, *col_names)
|
|
22
|
+
> migrator.drop_not_null(model, *field_names)
|
|
23
|
+
> migrator.drop_constraints(model, *constraints)
|
|
24
|
+
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
from contextlib import suppress
|
|
28
|
+
|
|
29
|
+
import peewee as pw
|
|
30
|
+
from peewee_migrate import Migrator
|
|
31
|
+
|
|
32
|
+
with suppress(ImportError):
|
|
33
|
+
import playhouse.postgres_ext as pw_pext
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def migrate(migrator: Migrator, database: pw.Database, *, fake=False):
|
|
37
|
+
"""Write your migrations here."""
|
|
38
|
+
|
|
39
|
+
print("002_alter_dungeon_table")
|
|
40
|
+
|
|
41
|
+
migrator.add_fields(
|
|
42
|
+
"dungeon", favor=pw.FloatField(default=0.0), might=pw.FloatField(default=0.0)
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
migrator.change_fields("dungeon", tier=pw.FloatField(default=0.0))
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def rollback(migrator: Migrator, database: pw.Database, *, fake=False):
|
|
49
|
+
"""Write your rollback migrations here."""
|
|
50
|
+
|
|
51
|
+
migrator.remove_fields("dungeon", "favor", "might")
|
|
52
|
+
|
|
53
|
+
migrator.change_fields("dungeon", tier=pw.IntegerField(default=0))
|
albibong/models/models.py
CHANGED
albibong/requirements.txt
CHANGED
albibong/resources/EventCode.py
CHANGED
|
@@ -2,6 +2,7 @@ from enum import Enum
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class EventCode(Enum):
|
|
5
|
+
|
|
5
6
|
LEAVE = 1
|
|
6
7
|
JOIN_FINISHED = 2
|
|
7
8
|
MOVE = 3
|
|
@@ -591,3 +592,4 @@ class EventCode(Enum):
|
|
|
591
592
|
BOT_COMMAND = 587
|
|
592
593
|
JOURNAL_ACHIEVEMENT_PROGRESS_UPDATE = 588
|
|
593
594
|
JOURNAL_CLAIMABLE_REWARD_UPDATE = 589
|
|
595
|
+
KEY_SYNC = 590
|
albibong/threads/http_server.py
CHANGED
|
@@ -45,6 +45,7 @@ class HttpServerThread(threading.Thread):
|
|
|
45
45
|
def run(self):
|
|
46
46
|
# Create an object of the above class
|
|
47
47
|
handler_object = HttpRequestHandler
|
|
48
|
+
handler_object.extensions_map.update({".js": "application/javascript"})
|
|
48
49
|
|
|
49
50
|
self.http_server = socketserver.TCPServer(("", self.port), handler_object)
|
|
50
51
|
self.http_server.allow_reuse_address = True
|
|
@@ -54,6 +55,9 @@ class HttpServerThread(threading.Thread):
|
|
|
54
55
|
server_thread.daemon = True
|
|
55
56
|
server_thread.start()
|
|
56
57
|
logger.info(f"Thread {self.name} started at port {self.port}")
|
|
58
|
+
logger.info(
|
|
59
|
+
f"\n==\n\nYou can access the GUI using a browser using below url\n\nhttp://localhost:{self.port}/\n\n==\n\n"
|
|
60
|
+
)
|
|
57
61
|
|
|
58
62
|
def stop(self):
|
|
59
63
|
self.http_server.shutdown()
|
|
@@ -1,28 +1,65 @@
|
|
|
1
|
+
import os
|
|
1
2
|
import threading
|
|
3
|
+
from time import sleep
|
|
2
4
|
|
|
3
|
-
from scapy.all import AsyncSniffer
|
|
5
|
+
from scapy.all import AsyncSniffer, wrpcapng
|
|
4
6
|
|
|
5
7
|
from albibong.classes.logger import Logger
|
|
8
|
+
from albibong.threads.websocket_server import send_event
|
|
9
|
+
|
|
10
|
+
home_dir = os.path.expanduser("~")
|
|
11
|
+
pcap_file = home_dir + "/Albibong/Debug/debug.pcapng"
|
|
6
12
|
|
|
7
13
|
logger = Logger(__name__, stdout=True, log_to_file=False)
|
|
8
14
|
|
|
9
15
|
|
|
10
16
|
class SnifferThread(threading.Thread):
|
|
11
|
-
def __init__(self, name, out_queue, sentinel):
|
|
17
|
+
def __init__(self, name, out_queue, sentinel, is_debug=False):
|
|
12
18
|
super().__init__()
|
|
13
19
|
self.name = name
|
|
14
20
|
self.out_queue = out_queue
|
|
15
21
|
self.sentinel = sentinel
|
|
22
|
+
self.is_debug = is_debug
|
|
16
23
|
self.sniffer = AsyncSniffer(filter="udp and port 5056", prn=self.push_packet)
|
|
24
|
+
self.packet_counter = 0
|
|
25
|
+
self.timer_exit = threading.Event()
|
|
26
|
+
self.all_packets = []
|
|
17
27
|
|
|
18
28
|
def push_packet(self, packet):
|
|
19
29
|
self.out_queue.put(packet)
|
|
30
|
+
self.all_packets.append(packet)
|
|
31
|
+
self.packet_counter += 1
|
|
20
32
|
|
|
21
33
|
def run(self):
|
|
22
34
|
logger.info(f"Thread {self.name} started")
|
|
23
35
|
self.sniffer.start()
|
|
36
|
+
timer = threading.Thread(target=self.start_timer, args=[5], daemon=True)
|
|
37
|
+
timer.run()
|
|
24
38
|
|
|
25
39
|
def stop(self):
|
|
26
40
|
logger.info(f"Thread {self.name} stopped")
|
|
27
41
|
self.sniffer.stop()
|
|
28
42
|
self.out_queue.put(self.sentinel)
|
|
43
|
+
self.quit_timer()
|
|
44
|
+
if self.is_debug:
|
|
45
|
+
wrpcapng(pcap_file, self.all_packets)
|
|
46
|
+
|
|
47
|
+
def start_timer(self, seconds):
|
|
48
|
+
while not self.timer_exit.is_set():
|
|
49
|
+
self.timer_exit.wait(seconds)
|
|
50
|
+
|
|
51
|
+
if self.packet_counter > 0:
|
|
52
|
+
msg = {
|
|
53
|
+
"type": "health_check",
|
|
54
|
+
"payload": {"status": "passed", "message": "Passed"},
|
|
55
|
+
}
|
|
56
|
+
else:
|
|
57
|
+
msg = {
|
|
58
|
+
"type": "health_check",
|
|
59
|
+
"payload": {"status": "failed", "message": "No Packets Received"},
|
|
60
|
+
}
|
|
61
|
+
send_event(msg)
|
|
62
|
+
self.packet_counter = 0
|
|
63
|
+
|
|
64
|
+
def quit_timer(self):
|
|
65
|
+
self.timer_exit.set()
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import json
|
|
3
|
-
import os
|
|
4
3
|
import queue
|
|
5
4
|
import threading
|
|
6
5
|
from datetime import datetime, timedelta
|
|
@@ -38,17 +37,19 @@ class WebsocketServer(threading.Thread):
|
|
|
38
37
|
"fame": me.fame_gained,
|
|
39
38
|
"re_spec": me.re_spec_gained,
|
|
40
39
|
"silver": me.silver_gained,
|
|
40
|
+
"might": me.might_gained,
|
|
41
|
+
"favor": me.favor_gained,
|
|
41
42
|
},
|
|
42
43
|
"world": {
|
|
43
44
|
"map": (
|
|
44
45
|
world_data.current_map.name
|
|
45
46
|
if world_data.current_map
|
|
46
|
-
else "
|
|
47
|
+
else "zone in to other map to initialize"
|
|
47
48
|
),
|
|
48
49
|
"dungeon": (
|
|
49
50
|
world_data.current_dungeon.name
|
|
50
51
|
if world_data.current_dungeon
|
|
51
|
-
else "
|
|
52
|
+
else "zone in to other map to initialize"
|
|
52
53
|
),
|
|
53
54
|
"isDPSMeterRunning": world_data.is_dps_meter_running,
|
|
54
55
|
},
|
|
@@ -98,6 +99,9 @@ class WebsocketServer(threading.Thread):
|
|
|
98
99
|
world_data.me.fame_gained = 0
|
|
99
100
|
world_data.me.re_spec_gained = 0
|
|
100
101
|
world_data.me.silver_gained = 0
|
|
102
|
+
world_data.me.might_gained = 0
|
|
103
|
+
world_data.me.favor_gained = 0
|
|
104
|
+
|
|
101
105
|
fame = {
|
|
102
106
|
"type": "update_fame",
|
|
103
107
|
"payload": {
|
|
@@ -119,9 +123,19 @@ class WebsocketServer(threading.Thread):
|
|
|
119
123
|
"silver_gained": world_data.me.silver_gained,
|
|
120
124
|
},
|
|
121
125
|
}
|
|
126
|
+
might_and_favor = {
|
|
127
|
+
"type": "update_might_and_favor",
|
|
128
|
+
"payload": {
|
|
129
|
+
"username": world_data.me.username,
|
|
130
|
+
"favor_gained": world_data.me.favor_gained,
|
|
131
|
+
"might_gained": world_data.me.might_gained,
|
|
132
|
+
},
|
|
133
|
+
}
|
|
122
134
|
await websocket.send(json.dumps(fame))
|
|
123
135
|
await websocket.send(json.dumps(re_spec))
|
|
124
136
|
await websocket.send(json.dumps(silver))
|
|
137
|
+
await websocket.send(json.dumps(might_and_favor))
|
|
138
|
+
|
|
125
139
|
elif event["type"] == "refresh_dungeon_list":
|
|
126
140
|
reply = {
|
|
127
141
|
"type": "update_dungeon",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: albibong
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.2
|
|
4
4
|
Summary: A cross-platform Albion Online damage, fame, and dungeon tracker
|
|
5
5
|
Project-URL: Homepage, https://github.com/imjangkar/albibong
|
|
6
6
|
Project-URL: Issues, https://github.com/imjangkar/albibong/issues
|
|
@@ -10,6 +10,7 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
|
12
12
|
Requires-Python: >=3.10
|
|
13
|
+
Requires-Dist: peewee-migrate==1.13.0
|
|
13
14
|
Requires-Dist: peewee==3.17.6
|
|
14
15
|
Requires-Dist: pywebview==5.1
|
|
15
16
|
Requires-Dist: scapy==2.5.0
|
|
@@ -1,42 +1,47 @@
|
|
|
1
|
-
albibong/__init__.py,sha256=
|
|
2
|
-
albibong/__main__.py,sha256=
|
|
3
|
-
albibong/requirements.txt,sha256=
|
|
1
|
+
albibong/__init__.py,sha256=TFp1uv5XC6ZwGJHqbDdgpIk2Et_RiTUX3zZ4fA_h_yM,5139
|
|
2
|
+
albibong/__main__.py,sha256=evemoPcehqpwrr4uZQ_4x4p8kq04OcSSNjNXWEW8a7M,290
|
|
3
|
+
albibong/requirements.txt,sha256=HzAZc3BiHT5i1UIYa6yiUhSo8FoJvyAVMht103J8GHA,82
|
|
4
4
|
albibong/assets/boom_small.mp3,sha256=XEeYaifS3kBu7jxJo4j8cwGjher8Ml0CpMvu3YNk4y0,16722
|
|
5
5
|
albibong/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
albibong/classes/character.py,sha256=
|
|
6
|
+
albibong/classes/character.py,sha256=EsG6TEig5DnF4GzCp63p4KKvH0ABYFQb-W7FKllDaus,2961
|
|
7
7
|
albibong/classes/coords.py,sha256=wjCO7YnKXzH9IsJ9YFObbpMYfVFT5o38RndWjQhjVEg,189
|
|
8
|
-
albibong/classes/dungeon.py,sha256=
|
|
8
|
+
albibong/classes/dungeon.py,sha256=Nyc5hXFRRJqJeFu-4TLZktyNHTV7zpVmmuQdZowCGoI,2543
|
|
9
9
|
albibong/classes/item.py,sha256=tjAqXAexrqjrFaRAMPQfccmsMnI0FGafoEurJq_iAdc,1612
|
|
10
10
|
albibong/classes/location.py,sha256=VrzHuDkWDDJgNrNyuHDOcb_sg3P44j-lQStegP8Rjqo,4321
|
|
11
11
|
albibong/classes/logger.py,sha256=5DQoUqrvA2wf28XdRm2xwC4RBhIpP4d70PqRohRKNwM,4442
|
|
12
12
|
albibong/classes/packet_handler.py,sha256=1DpAZf5sMWO06qnjP62zxn3e9mU50_c5o1y6EUnxW68,1792
|
|
13
|
-
albibong/classes/utils.py,sha256=
|
|
13
|
+
albibong/classes/utils.py,sha256=mZ4xSASSVGAIJcj8LfIWOMlMvSHyjqI7o8Pmd4oYoPE,987
|
|
14
14
|
albibong/classes/world_data.py,sha256=mUhgXNzS0GjNGSxIDzhw55KDB8rKt661zeAotE4WBds,3466
|
|
15
|
-
albibong/classes/event_handler/__init__.py,sha256=
|
|
15
|
+
albibong/classes/event_handler/__init__.py,sha256=ctQQtUDqLbAZE02fzIhkMdd1LwLbXRLQcATbxlDrVUs,5186
|
|
16
16
|
albibong/classes/event_handler/handle_event_character_equipment_changed.py,sha256=QT6SfYfRLUipWWgyd1uOYXPnrA4jR-T9mkLzKbqCdwE,783
|
|
17
17
|
albibong/classes/event_handler/handle_event_health.py,sha256=0RPvv0C-nklmKsp3UflN9qhpAkcLtd5bmmoN3cf-WM4,1078
|
|
18
18
|
albibong/classes/event_handler/handle_event_in_combat_state_update.py,sha256=sWDu5RdupNAT5ESCY1RJ7rMAKq1b4HwYM272UFHI9h8,517
|
|
19
|
-
albibong/classes/event_handler/
|
|
20
|
-
albibong/classes/event_handler/
|
|
19
|
+
albibong/classes/event_handler/handle_event_might_and_favor_received_event.py,sha256=Q3L2Zn5mPXic_8_jAv_9z3y1uOZaADNcBkxKu2NFrJY,628
|
|
20
|
+
albibong/classes/event_handler/handle_event_new_character.py,sha256=-gsZkmeBKuCkvh4b0u9U7JKH3_P2nddOaSK6tc6v4UU,1506
|
|
21
|
+
albibong/classes/event_handler/handle_event_other_grabbed_loot.py,sha256=vm9gylmpg-I34U_PNwAjP4fyYSQ0RV6521oWSWjzM-M,813
|
|
21
22
|
albibong/classes/event_handler/handle_event_party.py,sha256=LNdgsi4hxzESD7gPut88RBTnV1JbEbLIT_amAy9BvXM,1094
|
|
22
|
-
albibong/classes/event_handler/handle_event_update_fame.py,sha256=
|
|
23
|
-
albibong/classes/event_handler/handle_event_update_re_spec_points.py,sha256=
|
|
23
|
+
albibong/classes/event_handler/handle_event_update_fame.py,sha256=8FQT75mdU3S4uOGfvtqDXfxRlFSc-N0KwefnhBbc_-0,517
|
|
24
|
+
albibong/classes/event_handler/handle_event_update_re_spec_points.py,sha256=zIdlkoBvJ_IqKMsmDlVFPXmnmE1IPPpWeEpi-M3t_Ds,593
|
|
24
25
|
albibong/classes/event_handler/handle_operation_change_cluster.py,sha256=Pc9E27JL1oJwc3iKgTsFlGWUz6iRVHtySN59jV8gLo0,1644
|
|
25
|
-
albibong/classes/event_handler/handle_operation_farmable_harvest.py,sha256=
|
|
26
|
-
albibong/classes/event_handler/handle_operation_join.py,sha256=
|
|
26
|
+
albibong/classes/event_handler/handle_operation_farmable_harvest.py,sha256=H-fS6Kb7bxLMNxuanAuwrtueqLQhXiwV57IObxa50o0,674
|
|
27
|
+
albibong/classes/event_handler/handle_operation_join.py,sha256=RxN5X-Dv4jfIFn3e0zqrJOufgDJlMPqYIM0wlJadcGc,2290
|
|
27
28
|
albibong/classes/event_handler/handle_operation_move.py,sha256=vg_wTPQ4nA4-xyw9axtFmKkVCUoCkUq3RV74wFLbc_4,200
|
|
28
|
-
albibong/classes/event_handler/world_data_utils.py,sha256=
|
|
29
|
+
albibong/classes/event_handler/world_data_utils.py,sha256=9BHsgzA2EBnBC26SJf0T2fiDlwj1MpYTb2EFLcmzmlU,5109
|
|
29
30
|
albibong/gui_dist/Albibong.png,sha256=vFWgJSosXfnSCy_U7Uu9hCYDCHiYtcmR1lpPA0XQRhY,38093
|
|
30
31
|
albibong/gui_dist/No Equipment.png,sha256=HdVR3WJ0ktF5v606QyURdHscjOgCqiXJnqI8k8IlSgE,131
|
|
31
32
|
albibong/gui_dist/fame.png,sha256=X2tUCmgR5TkGLUVvFB2lInH_RrXkC1pSLqpw_ply-rE,6015
|
|
32
|
-
albibong/gui_dist/
|
|
33
|
+
albibong/gui_dist/favor.png,sha256=0e2z8GZ8_1gWw14UFFVo3QG9vKUmaGFqVmoKyJRU9mU,1859
|
|
34
|
+
albibong/gui_dist/index.html,sha256=TdC4ngLxJ8HbhTKQ__ujkZfaErdZhcs1GToWpBsEjEs,477
|
|
35
|
+
albibong/gui_dist/might.png,sha256=J7mi_99lkCJ253ctTixISeaTuQWbGSLbIQ9BlBPQaEA,3412
|
|
33
36
|
albibong/gui_dist/re_spec.png,sha256=1KTzGT1u1wjmNk9svS5ZOV7zCDIEmiFy0USh6A_vhPA,6230
|
|
34
37
|
albibong/gui_dist/silver.png,sha256=tqXvZdf9zr0YoOQZoR2vG8NRffl4xvz0LY5XgwIrYD8,11533
|
|
35
38
|
albibong/gui_dist/vite.svg,sha256=SnSK_UQ5GLsWWRyDTEAdrjPoeGGrXbrQgRw6O0qSFPs,1497
|
|
36
|
-
albibong/gui_dist/assets/index-
|
|
37
|
-
albibong/gui_dist/assets/index-
|
|
39
|
+
albibong/gui_dist/assets/index-B31tZ4Ku.css,sha256=L5X0kNcjz8FOEUdcZ3kSGpHOgTcewoXHwqY1FsWMrwI,3265
|
|
40
|
+
albibong/gui_dist/assets/index-BkyL_QUY.js,sha256=oPc3TTDVB7uh24OZLPLx9CsYKPnKEl_ThbXVqZSTHFU,655519
|
|
41
|
+
albibong/migrations/001_init.py,sha256=RYp53geL5KHhT9ClwhkgAEsn_RWJ6mNdcLp3h8W4KkQ,3210
|
|
42
|
+
albibong/migrations/002_alter_dungeon_table.py,sha256=Ke84RajqSOCYoAkBqylHfa18Yj4r5Kl-fK5e8x4bjm0,2057
|
|
38
43
|
albibong/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
|
-
albibong/models/models.py,sha256=
|
|
44
|
+
albibong/models/models.py,sha256=V9uv99x0GHwZcD8cNFQVUt2klTuao7xK5ywoT_JT4vs,210
|
|
40
45
|
albibong/photon_packet_parser/__init__.py,sha256=Y_XwBGLl0ufhLr7d6phhfA6qL1RrG6mJ3qAC5lNKM_c,301
|
|
41
46
|
albibong/photon_packet_parser/command_type.py,sha256=-LSdpsQgViDygDJsjaoCUuLbBkK4-pmQuM8ESHG1BNk,137
|
|
42
47
|
albibong/photon_packet_parser/crc_calculator.py,sha256=rnhmknjiZBaSXBwS2cJacwLlnXaT74u9yEmvLknIh2o,402
|
|
@@ -49,20 +54,20 @@ albibong/photon_packet_parser/photon_packet_parser.py,sha256=ayPObVh3LQLWsvJxSMp
|
|
|
49
54
|
albibong/photon_packet_parser/protocol16_deserializer.py,sha256=apZZUI0_c5yF9BN-E3DihenClCYCxlGifnNSe_uj3p8,11646
|
|
50
55
|
albibong/photon_packet_parser/protocol16_type.py,sha256=r1DLNl_mmaEvb9v7W_OOlp5hikp5UeEgrzpQgl7efBw,451
|
|
51
56
|
albibong/photon_packet_parser/segmented_packet.py,sha256=pftqyVO0D7ZX8m1ZL2w2Xt_g1Nc_mClXvQ99FOBn41E,235
|
|
52
|
-
albibong/resources/EventCode.py,sha256=
|
|
57
|
+
albibong/resources/EventCode.py,sha256=3JowIq2xtY9qIsl_TkSKKEF00iIcoxpWVQ6b6XhPsaY,19369
|
|
53
58
|
albibong/resources/OperationCode.py,sha256=9l5xdNhVCs4i-zaAPYC9BXPDBavX1D7VdpESmFQtKyE,16509
|
|
54
|
-
albibong/resources/event_code.json,sha256=
|
|
59
|
+
albibong/resources/event_code.json,sha256=SqyLYYaUfMz7hIapxRc74LjP_fuQozaJ6IUYEwvPPdo,20504
|
|
55
60
|
albibong/resources/items_by_id.json,sha256=UoU4OSbB09DyxOpia2Ye1Hm4HR_4QlYqvhL_DKn6eQ8,1400109
|
|
56
61
|
albibong/resources/items_by_unique_name.json,sha256=VLixfNoc6RbMjfdBna2IdtG2PAwBbaYzsHSC8b96qp8,1635865
|
|
57
62
|
albibong/resources/maps.json,sha256=jEXIhIlPYO8fXk9xHOVpFKxw4_KUb72TBICvJy4-gBE,129753
|
|
58
63
|
albibong/resources/operation_code.json,sha256=zV9kgHtZ_fs1Pm7ntQxNbjfZbdiHRdUIhEkKAIJPLhU,17457
|
|
59
64
|
albibong/threads/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
-
albibong/threads/http_server.py,sha256=
|
|
65
|
+
albibong/threads/http_server.py,sha256=qg87iVD7AaKg32eJ5qeqL3RUo-B7sVywC4_qTxEhH2U,2172
|
|
61
66
|
albibong/threads/packet_handler_thread.py,sha256=bqgYQUeCaTtnWgx4bGoqw-cWQcXRJohIse2hwCbVLmo,949
|
|
62
|
-
albibong/threads/sniffer_thread.py,sha256=
|
|
63
|
-
albibong/threads/websocket_server.py,sha256=
|
|
64
|
-
albibong-1.1.
|
|
65
|
-
albibong-1.1.
|
|
66
|
-
albibong-1.1.
|
|
67
|
-
albibong-1.1.
|
|
68
|
-
albibong-1.1.
|
|
67
|
+
albibong/threads/sniffer_thread.py,sha256=m7y0dlv8SPxGganodjxMrGKN40Ma2Dg1pFHAiRzgFWo,2024
|
|
68
|
+
albibong/threads/websocket_server.py,sha256=6Mi7ylFIC3FE5zSNXUNrOuPvdwMNhLdPuiMu-BCptFY,9709
|
|
69
|
+
albibong-1.1.2.dist-info/METADATA,sha256=NbRiOHeUDzN2pfwYXXK4bz8A6610dbEIOKsLNepd_bI,649
|
|
70
|
+
albibong-1.1.2.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
|
71
|
+
albibong-1.1.2.dist-info/entry_points.txt,sha256=pLvUeo6eUwvsDQXsxdP9mRdSPufUlrz_9mFxsov0nm0,43
|
|
72
|
+
albibong-1.1.2.dist-info/licenses/LICENSE,sha256=7EI8xVBu6h_7_JlVw-yPhhOZlpY9hP8wal7kHtqKT_E,1074
|
|
73
|
+
albibong-1.1.2.dist-info/RECORD,,
|