2222login_socket_num , login_ip , login_port = 0 , 0 , 0 # 登录后的socket、IP、Port
2323user_id , serial_num , packet_index = 0 , 0 , 0 # 米米号、发送包序列号、封包序号索引
2424recv_buff = bytearray () # 接收封包的数据缓冲区
25- show_send , show_recv = True , True # 显示send包、recv包
25+ is_show_send , is_show_recv = True , True # 显示send包、recv包
2626lock = Lock () # 发送锁
2727is_show_msg = False # 是否已显示消息
2828# 拉姆
29- is_get_lamu_info = True # 是否获取拉姆信息
29+ can_get_lamu_info = True # 是否获取拉姆信息
3030lamu_id , lamu_name , lamu_value , lamu_level , lamu_times = 0 , "" , 0 , 0 , 0 # 拉姆ID、名字、变身值、变身等级、变身获得物品成功次数
3131lamu_thresholds = [40 , 180 , 660 , 1340 , 2660 , 4280 , 6840 , 9800 , 14000 , 18700 ] # 拉姆变身值阈值
3232lamu_skill_types = ["火" , "水" , "木" ] # 拉姆技能类型
3535lamu_last_type_index , lamu_max_type_index = 0 , 0 # 拿取的物品类型索引
3636lamu_last_item_index , lamu_max_item_index = 0 , 0 # 拿取的物品索引
3737lamu_limit_item_dict , limit_data = {}, {} # 已经拿到上限的物品
38- lamu_max_skill_success , lamu_last_skill_success = True , True # 最大技能拿取物品是否成功、次大技能拿取物品是否成功
38+ is_max_skill_success , is_last_skill_success = True , True # 最大技能拿取物品是否成功、次大技能拿取物品是否成功
3939lamu_pick_result_dict = {} # 拉姆拿取物品结果
4040super_lamu_value , super_lamu_level = 0 , 0 # 超拉成长值、等级
4141# 摩摩怪
5252# 元素骑士
5353ysqs_max_floor , ysqs_attack , ysqs_energy = 0 , 0 , 0 # 无尽深渊最高层数、最低攻击力、体力值
5454ysqs_cards_dict , ysqs_material_cards_dict = {}, {} # 元素可升级卡牌、材料卡牌
55+ is_upgrade_start = False
5556# 餐厅
5657ct_cooked_dishes_dict , ct_cooking_dishes_dict = {}, {} # 餐台菜信息、灶台菜信息
5758# 游戏版本
9293config = Path (getenv ("appdata" )) / "mole" / "config.ini"
9394base_dir = Path (__file__ ).resolve ().parent
9495log = base_dir / "hook.log"
95- window_defined = False
96+ is_window_defined = False
9697
9798
9899class Interval (IntEnum ):
@@ -211,12 +212,12 @@ def init_table_size(self):
211212 self .tableWidget .scrollToTop () # 拖动到顶部
212213
213214 def change_show_send (self , state ):
214- global show_send
215- show_send = state > 0
215+ global is_show_send
216+ is_show_send = state > 0
216217
217218 def change_show_recv (self , state ):
218- global show_recv
219- show_recv = state > 0
219+ global is_show_recv
220+ is_show_recv = state > 0
220221
221222 def change_set_socket (self , state ):
222223 self .socketLineEdit .setEnabled (state > 0 )
@@ -423,9 +424,9 @@ def lamu_feed(self):
423424
424425 def lamu_get_vars (self ):
425426 if lamu_times == 0 :
426- return lamu_last_skill_success , lamu_last_skill_level , lamu_last_item_level , lamu_last_type_index , lamu_last_item_index
427+ return is_last_skill_success , lamu_last_skill_level , lamu_last_item_level , lamu_last_type_index , lamu_last_item_index
427428 else :
428- return lamu_max_skill_success , lamu_max_skill_level , lamu_max_item_level , lamu_max_type_index , lamu_max_item_index
429+ return is_max_skill_success , lamu_max_skill_level , lamu_max_item_level , lamu_max_type_index , lamu_max_item_index
429430
430431 def lamu_set_vars (self , * args ):
431432 global lamu_last_item_level , lamu_last_type_index , lamu_last_item_index , lamu_max_item_level , lamu_max_type_index , lamu_max_item_index
@@ -440,10 +441,10 @@ def lamu_get_skill_info(self, skill_level, item_level, type_index):
440441 lamu_dict .get (item_level ).get (skill_type ).items ())
441442
442443 def lamu_collect_result (self ):
443- skill_success , skill_level , item_level , type_index , item_index = self .lamu_get_vars ()
444+ is_skill_success , skill_level , item_level , type_index , item_index = self .lamu_get_vars ()
444445 skill_type , skill_id , items = self .lamu_get_skill_info (skill_level , item_level , type_index )
445446 item_name = items [item_index ][0 ]
446- if skill_success :
447+ if is_skill_success :
447448 if item_name in lamu_pick_result_dict :
448449 lamu_pick_result_dict [item_name ] += 1
449450 else :
@@ -460,7 +461,7 @@ def lamu_show_result(self):
460461 self .info ("一键获取拉姆变身值结束" , f"拉姆({ lamu_name } )今天可采集物品已达上限" )
461462
462463 def lamu_start (self ):
463- global lamu_times , lamu_max_skill_success , lamu_last_skill_success , lamu_max_skill_level , lamu_last_skill_level , \
464+ global lamu_times , is_max_skill_success , is_last_skill_success , lamu_max_skill_level , lamu_last_skill_level , \
464465 lamu_max_item_level , lamu_last_item_level , lamu_max_type_index , lamu_last_type_index , lamu_max_item_index , \
465466 lamu_last_item_index , limit_data
466467 self .enable_lamu_button (False )
@@ -470,7 +471,7 @@ def lamu_start(self):
470471 self .lamu_learn ()
471472 self .lamu_feed ()
472473 lamu_times = 0
473- lamu_max_skill_success , lamu_last_skill_success = True , True
474+ is_max_skill_success , is_last_skill_success = True , True
474475 lamu_max_item_level , lamu_last_item_level = lamu_max_skill_level , lamu_last_skill_level
475476 lamu_max_type_index , lamu_last_type_index = 0 , 0
476477 lamu_max_item_index , lamu_last_item_index = 0 , 0
@@ -506,10 +507,10 @@ def lamu_get_item(self, skill_level, item_level, type_index, item_index):
506507 return item_id , skill_id , skill_type
507508
508509 def lamu_run (self ):
509- skill_success , skill_level , item_level , type_index , item_index = self .lamu_get_vars ()
510+ is_skill_success , skill_level , item_level , type_index , item_index = self .lamu_get_vars ()
510511 item_id , skill_id , skill_type = self .lamu_get_item (skill_level , item_level , type_index , item_index )
511512 if lamu_times < 11 or item_level == 6 : # 最高级物品全部拿到上限
512- if not skill_success : # 上次技能拿取失败
513+ if not is_skill_success : # 上次技能拿取失败
513514 limit_data .get ("数据" ).get (skill_type )[item_id ] = item_id
514515 limit_data ["时间" ] = datetime .now ()
515516 item_id , skill_id , skill_type = self .lamu_get_item (skill_level , item_level , type_index , item_index )
@@ -725,12 +726,15 @@ def ysqs_run(self):
725726 )
726727
727728 def ysqs_upgrade_start (self ):
729+ global is_upgrade_start
730+ is_upgrade_start = True
728731 send_lines ([
729732 "00000000000000231E000000000000000000000000" # 获取元素骑士信息
730733 ])
731734 run_later (self .ysqs_upgrade_run )
732735
733736 def ysqs_upgrade_run (self ):
737+ global is_upgrade_start
734738 card_data = self .ysqsCardBox .currentData ()
735739 ysqs_material_cards_dict .pop (card_data .get ("ID" ), None )
736740 required_exp = get_card_max_exp (card_data .get ("星级" )) - card_data .get ("经验" )
@@ -756,6 +760,7 @@ def ysqs_upgrade_run(self):
756760 ids = "" .join ([get_hex (card_id ) for card_id in cards ])
757761 lines .append (f"00000000000000231B0000000000000000{ get_hex (card_data .get ("ID" ))} { get_hex (last_size )} { ids } " )
758762 send_lines (lines )
763+ is_upgrade_start = False
759764
760765
761766 def mlcs_start (self ):
@@ -1087,14 +1092,14 @@ def path(file: str):
10871092
10881093
10891094def show_data (packet : Packet , data_type : str , socket_num : int = None ):
1090- global window_defined
1091- if window_defined :
1095+ global is_window_defined
1096+ if is_window_defined :
10921097 if socket_num is None :
10931098 socket_num = login_socket_num
10941099 window .add_data (data_type , socket_num , packet .cmd_id , analyse (packet .cmd_id ), packet .data ().hex ().upper ())
10951100 else :
10961101 if "window" in globals ():
1097- window_defined = True
1102+ is_window_defined = True
10981103
10991104
11001105def run_later (func , delay : int = 350 ):
@@ -1170,7 +1175,7 @@ def send_lines(lines: list, interval: int = Interval.NONE):
11701175 packet .encrypt ()
11711176 send (login_socket_num , packet .data (), packet .length )
11721177 packet .decrypt ()
1173- if show_send :
1178+ if is_show_send :
11741179 show_data (packet , "S ==>" )
11751180 if interval > 0 :
11761181 sleep (interval / 1000 )
@@ -1257,7 +1262,7 @@ def send(socket_num: int, buff: bytes, length: int):
12571262
12581263@ffi .callback ("int(ULONG64, PCHAR, INT)" )
12591264def process_send_packet (socket_num , buff , length ):
1260- global login_socket_num , login_ip , login_port , user_id , is_get_lamu_info
1265+ global login_socket_num , login_ip , login_port , user_id , can_get_lamu_info
12611266 sock_type = get_remote_info (socket_num )
12621267 cipher = ffi .buffer (buff , length )[:]
12631268 # 摩尔主服务器包
@@ -1267,24 +1272,24 @@ def process_send_packet(socket_num, buff, length):
12671272 login_socket_num = socket_num
12681273 login_ip , login_port = get_ip_port (socket_num )
12691274 user_id = packet .user_id
1270- is_get_lamu_info = True
1275+ can_get_lamu_info = True
12711276 window .enable_all_buttons (True )
12721277 if socket_num == login_socket_num :
12731278 packet .decrypt ()
1274- if show_send :
1279+ if is_show_send :
12751280 show_data (packet , "S ==>" ) # 界面添加send数据
12761281 with lock :
12771282 packet .encrypt ()
12781283 return send (socket_num , packet .data (), length )
12791284 # 其他包
1280- if show_send and cipher .startswith ((b'\x00 \x00 ' , b'\x3C \x70 ' , b'\x3C \x3F ' )):
1285+ if is_show_send and cipher .startswith ((b'\x00 \x00 ' , b'\x3C \x70 ' , b'\x3C \x3F ' )):
12811286 show_data (Packet (cipher ), "S ==>" , socket_num ) # 界面添加send数据
12821287 return send (socket_num , cipher , length )
12831288
12841289
12851290@ffi .callback ("void(ULONG64, PCHAR, INT)" )
12861291def process_recv_packet (socket_num , buff , length ):
1287- global recv_buff , is_get_lamu_info , lamu_id , lamu_name , lamu_value , lamu_level , lamu_times , lamu_last_skill_success , lamu_max_skill_success , \
1292+ global recv_buff , can_get_lamu_info , lamu_id , lamu_name , lamu_value , lamu_level , lamu_times , is_last_skill_success , is_max_skill_success , \
12881293 super_lamu_value , super_lamu_level , mmg_game_id , mmg_energy , mmg_vigour , mmg_level , mmg_card , mmg_times , mmg_friends , mmg_friends_num , \
12891294 mmg_friends_dict , mmg_query_page , mmg_super_boss_times , mmg_lamu_boss_times , mmg_limit_boss_times , mmg_boss_index1 , mmg_boss_index2 , \
12901295 mmg_boss_index3 , mlcs_energy , mlcs_arena_times , mlcs_exp_times , ysqs_max_floor , ysqs_attack , ysqs_energy , is_show_msg , ysqs_cards_dict , \
@@ -1302,11 +1307,11 @@ def process_recv_packet(socket_num, buff, length):
13021307 recv_buff = recv_buff [packet_len :]
13031308 packet = Packet (cipher )
13041309 packet .decrypt ()
1305- if show_recv :
1310+ if is_show_recv :
13061311 show_data (packet , "R <==" ) # 界面添加recv数据
13071312 if packet .version == 0 : # 正确包
1308- if packet .cmd_id == 228 and is_get_lamu_info : # 第1次进入游戏时获取拉姆ID
1309- is_get_lamu_info = False
1313+ if packet .cmd_id == 228 and can_get_lamu_info : # 第1次进入游戏时获取拉姆ID
1314+ can_get_lamu_info = False
13101315 lamu_id = get_int (packet .body )
13111316 window .lamu_get_info ()
13121317 if packet .cmd_id == 212 and get_int (packet .body , 4 ) == 1 : # 获取拉姆信息
@@ -1319,9 +1324,9 @@ def process_recv_packet(socket_num, buff, length):
13191324 super_lamu_value = get_int (packet .body , 100 )
13201325 if packet .cmd_id == 1209 : # 拉姆变身获得物品
13211326 if lamu_times == 0 :
1322- lamu_last_skill_success = True
1327+ is_last_skill_success = True
13231328 else :
1324- lamu_max_skill_success = True
1329+ is_max_skill_success = True
13251330 window .lamu_collect_result ()
13261331 lamu_times += 1
13271332 if packet .cmd_id == 8200 and is_not_running ("摩摩怪" ): # 获取摩摩怪能量和活力值
@@ -1438,7 +1443,6 @@ def process_recv_packet(socket_num, buff, length):
14381443 if packet .cmd_id == 8990 : # 元素骑士信息
14391444 ysqs_cards_dict .clear ()
14401445 ysqs_material_cards_dict .clear ()
1441- window .ysqsCardBox .clear ()
14421446 ysqs_energy = get_int (packet .body , 28 )
14431447 ysqs_attack = get_int (packet .body , 44 )
14441448 ysqs_max_floor = get_int (packet .body , 68 )
@@ -1470,12 +1474,13 @@ def process_recv_packet(socket_num, buff, length):
14701474 reverse = True
14711475 )
14721476 )
1473- for card_id , card_data in ysqs_cards_dict .items ():
1474- window .ysqsCardBox .addItem (card_data .get ("名称" ), userData = card_data )
1477+ if not is_upgrade_start :
1478+ window .ysqsCardBox .clear ()
1479+ for card_id , card_data in ysqs_cards_dict .items ():
1480+ window .ysqsCardBox .addItem (card_data .get ("名称" ), userData = card_data )
14751481 if packet .cmd_id == 1014 : # 餐厅信息
14761482 ct_cooked_dishes_dict .clear ()
14771483 ct_cooking_dishes_dict .clear ()
1478- window .ctDishBox .clear ()
14791484 dishes_num = get_int (packet .body , 68 )
14801485 start = 72
14811486 size = 6 * 4
@@ -1501,6 +1506,7 @@ def process_recv_packet(socket_num, buff, length):
15011506 ct_cooking_dishes_dict [dish_pos ] = {
15021507 "ID" : dish_id , "种类" : dish_type , "位置" : dish_pos , "时间" : - 3 , "跳过收菜" : False
15031508 }
1509+ window .ctDishBox .clear ()
15041510 window .ctDishBox .addItems (ct_cooked_dishes_dict .keys ())
15051511 window .enable_ct_button (len (ct_cooked_dishes_dict ) > 0 )
15061512 if packet .cmd_id == 1017 : # 餐厅做菜信息
@@ -1537,9 +1543,9 @@ def process_recv_packet(socket_num, buff, length):
15371543 else : # 错误包
15381544 if packet .cmd_id == 1209 : # 拉姆变身获得物品
15391545 if lamu_times == 0 :
1540- lamu_last_skill_success = False
1546+ is_last_skill_success = False
15411547 else :
1542- lamu_max_skill_success = False
1548+ is_max_skill_success = False
15431549 else :
15441550 break
15451551 else :
@@ -1553,15 +1559,15 @@ def process_recv_packet(socket_num, buff, length):
15531559 if packet_len <= len (recv_buff ):
15541560 # 不是断包
15551561 cipher = recv_buff [:packet_len ]
1556- if show_recv :
1562+ if is_show_recv :
15571563 show_data (Packet (cipher ), "R <==" , socket_num ) # 界面添加recv数据
15581564 recv_buff = recv_buff [packet_len :]
15591565 else :
15601566 break
15611567 else :
15621568 break
15631569 elif cipher .startswith ((b'\x3C \x70 ' , b'\x3C \x3F ' )): # 其他包
1564- if show_recv :
1570+ if is_show_recv :
15651571 show_data (Packet (cipher ), "R <==" , socket_num ) # 界面添加recv数据
15661572 recv_buff = recv_buff [length :]
15671573
0 commit comments