Skip to content

Commit a84a248

Browse files
author
qiuapeng
committed
3.6更新
1 parent 681e41c commit a84a248

File tree

5 files changed

+126
-113
lines changed

5 files changed

+126
-113
lines changed

game/address.py

Lines changed: 99 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -7,127 +7,133 @@
77
CoolDownKbAddr = 0 # 冷却判断call
88

99
RwAddr = 0x14BEC8390 # 新人物基址
10-
BbJzAddr = 0x14B5EA940 # 背包基址
11-
FbBhAddr = 0x14B5CFD00 # 副本编号
10+
RwAddr1 = 0x14BEC8388 # 人物基址
11+
RwAddr2 = 0x14B55A918 # 人物基址B
1212
RWCallAddr = 0x144AFCFC0 # 人物CALL
1313
JSDjAddr = 0x14B5CFD70 # 角色等级
14-
JwCallAddr = 0x144901EF0 # 聚物CALL
15-
JxWpAddr = 0x00F710 # 脚下物品
16-
DmWpAddr = 0x0029E8 # 地面物品
17-
JwXyAddr = 0x00FBE4 # 聚物校验
1814
PFAddr = 0x14B5E9400 # 评分基址
19-
CEPfAddr = 0x000088 # 评分偏移
20-
FpAddr = 0x14B5E7360 # 翻牌基址
21-
HChengCallAddr = 0x1457186F0 # 回城CALL
15+
GGCsAddr = 0x14BEC96C0 # 公告参数
16+
GGCallAddr = 0x144BC9170 # 公告CALL
17+
BbJzAddr = 0x14B5EA940 # 背包基址
18+
JSPtrAddr = 0x14B5EA430 # 角色指针
19+
CzDqyAddr = 0x14B5A798C # 城镇大区域
20+
CzXqyAddr = 0x14B5A7990 # 城镇小区域
21+
YXZTAddr = 0x14B146EF0 # 游戏状态
2222
SNBBAddr = 0x14B5EA998 # 司南背包
2323
YrBbAddr = 0x14B5EA990 # 玉荣背包
2424
BxrBbAddr = 0x14B5EA990 # 辟邪玉背包
2525
SnAddCallAddr = 0x141C76410 # 司南添加CALL
2626
SnJtRcxAddr = 0x14B598A88 # 司南进图_Rcx
2727
SnJtCallAddr = 0x141C59700 # 司南进图CALL
2828
SnAddRcxAddr = 0x1452E81D0 # 取司南添加RCX
29-
YrlPyAddr = 0x000600 # 玉荣力偏移
30-
JsYrlAddr = 0x005250 # 角色玉荣力
31-
DtPyAddr = 0x000168 # 地图偏移
32-
DtKs2 = 0x0001B8 # 地图开始2
33-
DtJs2 = 0x0001C0 # 地图结束2
34-
DtMcAddr = 0x000440 # 地图名称
35-
MxPyAddr = 0x000128 # 门型偏移
36-
GouHuoAddr = 0x001E50 # 篝火判断
37-
JzCtAddr = 0x00084C # 建筑穿透
38-
DtCtAddr = 0x000848 # 地图穿透
39-
DzIDAddr = 0x0041C4 # 动作ID
40-
FxIdAddr = 0x0000E8 # 方向ID
41-
ZbStPyAddr = 0x003700 # 坐标顺图
42-
DqFzAddr = 0x14BF1CE58 # 当前负重
43-
ZdFzAddr = 0x002C60 # 最大负重
44-
SJAddr = 0x20A050 # 时间基址
45-
FJBHAddr = 0x14B5EA928 # 房间编号
46-
GGCsAddr = 0x14BEC96C0 # 公告参数
47-
GGCallAddr = 0x144BC9170 # 公告CALL
48-
CreateCallAddr = 0x144C14600 # 创建CALL
49-
PutOnCallAddr = 0x144914BE0 # 穿上CALL
50-
TmCallAddr = 0x145A09C80 # 透明CALL
29+
YrlPyAddr = 0x600 # 玉荣力偏移
30+
JsYrlAddr = 0x5250 # 角色玉荣力
31+
HBCallAddr = 0x13FDC0000 # 汇编CALL
32+
TranslateMessage = 0x14756FCC8 # TranslateMessage
33+
GameTimeGetTime = 0x1475700F0 # GameTimeGetTime
5134
JNCallAddr = 0x14466E750 # 技能CALL
52-
SqNcCallAddr = 0x143CFF178 # 申请内存
53-
PyCall1Addr = 0x1438FB300 # 漂移CALL
54-
PyCall2Addr = 0x145AC91F0 # 漂移CALL2
55-
XrNcCallAddr = 0x144B38B70 # 写入内存
56-
YXZTAddr = 0x14B146EF0 # 游戏状态
35+
JwCallAddr = 0x144901EF0 # 聚物CALL
36+
JwXyAddr = 0xFBE4 # 聚物校验
5737
TaskAddr = 0x14B5EAA28 # 任务基址
5838
JsCallAddr = 0x143F6D5E0 # 接受CALL
59-
TgCallAddr = 0x143D0EB70 # 跳过CALL
6039
WcCallAddr = 0x143F6DBF0 # 完成CALL
6140
TjCallAddr = 0x143F6D6D0 # 提交CALL
62-
JSPtrAddr = 0x14B5EA430 # 角色指针
63-
DHAddr = 0x14B425260 # 对话基址
64-
DHAddrB = 0x14BF1B668 # 对话基址B
65-
EscDHAddr = 0x14B425278 # Esc对话基址
41+
TgCallAddr = 0x143D0EB70 # 跳过CALL
42+
AjAddr = 0x14C3C0940 # 按键基址
43+
DHAddr = 0x14BF1B668 # 对话基址
44+
DHAddrB = 0x14B425218 # 对话基址B
45+
EscDHAddr = 0x14B425238 # Esc对话基址
46+
FpAddr = 0x14B5EA938 # 翻牌基址
47+
FbBhAddr = 0x14B5CFD00 # 副本编号
48+
SJAddr = 0x20A050 # 时间基址
49+
FJBHAddr = 0x14B5EA928 # 房间编号
6650
MaxPlAddr = 0x14BEC82F4 # 最大疲劳
6751
CutPlAddr = 0x14BEC82AC # 当前疲劳
68-
AjAddr = 0x14C3C0940 # 按键基址
6952
QyParamAddr = 0x14BF20B28 # 区域参数
70-
CzDqyAddr = 0x14B5A798C # 城镇大区域
71-
CzXqyAddr = 0x14B5A7990 # 城镇小区域
7253
QyCallAddr = 0x14592F1D0 # 区域CALL
73-
QyPyAddr = 0x0A9FA8 # 区域偏移
54+
QyPyAddr = 0xA9FA8 # 区域偏移
55+
XTuCallAddr = 0x14596EA60 # 选图CALL
56+
JTuCallAddr = 0x1459AEEB0 # 进图CALL
57+
HChengCallAddr = 0x1457186F0 # 回城CALL
58+
GtCallAddr = 0x143AA84C0 # 过图CALL
59+
PyCall1Addr = 0x1438FB300 # 漂移CALL
60+
PyCall2Addr = 0x145AC91F0 # 漂移CALL2
61+
BpCallAddr = 0x143EB1150 # 奔跑CALL
62+
XrNcCallAddr = 0x144B38B60 # 写入内存
63+
BpPyAddr1 = 0x11D8 # 奔跑偏移_1
64+
BpPyAddr2 = 0x11C0 # 奔跑偏移_2
7465
CzSyRdxAddr = 0x14B5BB9F8 # 城镇瞬移_Rdx
7566
CzSyCallAddr = 0x145975880 # 城镇瞬移CALL
76-
HBCallAddr = 0x13FDC0000 # 汇编CALL
77-
TranslateMessage = 0x14756FCC8 # TranslateMessage
78-
GameTimeGetTime = 0x1475700F0 # GameTimeGetTime
7967
XzJsCallAddr = 0x14048FA10 # 选择角色CALL
8068
FhJsCallAddr = 0x144376E10 # 返回角色CALL
81-
BUffMemRcxAddr = 0x14B5EA880 # BUFF内存_RCX
82-
BUffMemCallAddr = 0x1459F7B60 # BUFF内存CALL
83-
GtCallAddr = 0x143AA84C0 # 过图CALL
84-
XTuCallAddr = 0x14596EA60 # 选图CALL
85-
JTuCallAddr = 0x1459AEEB0 # 进图CALL
86-
WpYdCallAddr = 0x14473F220 # 物品移动CALL
87-
BpCallAddr = 0x143EB1150 # 奔跑CALL
69+
LqCallJudgeAddr = 0x144AE9630 # 冷却判断CALL
70+
CdResetCallAddr = 0x1449518F0 # CD重置CALL
71+
FjCallAddr = 0x144752660 # 分解CALL
72+
ZlCallAddr = 0x144748AA0 # 整理CALL
73+
DqFzAddr = 0x14BF1CE58 # 当前负重
74+
ZdFzAddr = 0x2C60 # 最大负重
8875
FbAddr = 0x14BF21730 # 发包基址
8976
HcCallAddr = 0x1459DA800 # 缓冲CALL
9077
FbCallAddr = 0x1459DB4F0 # 发包CALL
9178
JmB1CallAddr = 0x1459DB660 # 加密包CALL
9279
JmB2CallAddr = 0x1459DB9E0 # 加密包CALL2
9380
JmB3CallAddr = 0x1459DB680 # 加密包CALL4
9481
JmB4CallAddr = 0x1459DB6A0 # 加密包CALL8
95-
SyPyAddr = 0x001DB4 # 索引偏移
96-
KgPyAddr = 0x0008B8 # 宽高偏移
97-
SzPyAddr = 0x0008D8 # 数组偏移
98-
StPyAddr = 0x0000C0 # 顺图偏移
99-
CutRoomXAddr = 0x001CC0 # 当前房间X
100-
CutRoomYAddr = 0x001CC4 # 当前房间Y
101-
BOSSRoomXAddr = 0x001DC0 # BOSS房间X
102-
BOSSRoomYAddr = 0x001DC4 # BOSS房间Y
103-
FbSqAddr = 0x000134 # 发包拾取
104-
RwMwAddr = 0x011B14 # 人物名望
105-
WpJyLxAddr = 0x0000A8 # 物品交易类型
106-
LxPyAddr = 0x000134 # 类型偏移
107-
FxPyAddr = 0x000148 # 方向偏移
108-
ZyPyAddr = 0x000E40 # 阵营偏移
109-
DmPyAddr = 0x000838 # 代码偏移
110-
McPyAddr = 0x000840 # 名称偏移
111-
GwXlAddr = 0x004DC8 # 怪物血量
112-
DqZbAddr = 0x000328 # 读取坐标
113-
WplAddr = 0x00FB58 # 物品栏
114-
WplPyAddr = 0x0000A8 # 物品栏偏移
115-
WpMcAddr = 0x000040 # 物品名称
116-
ZbPjAddr = 0x0002B8 # 装备品级
117-
SfKmAddr = 0x00027C # 是否开门
118-
YjRwStartAddr = 0x000010 # 已接任务首地址
119-
YjRwEndAddr = 0x000018 # 已接任务尾地址
120-
QbRwStartAddr = 0x0000A8 # 全部任务首地址
121-
QbRwEndAddr = 0x0000B0 # 全部任务尾地址
122-
RwDxAddr = 0x000028 # 任务大小
123-
RwLxAddr = 0x000218 # 任务类型
124-
RwTjAddr = 0x0004B0 # 任务条件
125-
RwDjAddr = 0x000328 # 任务等级
126-
RwFbAddr = 0x000468 # 任务副本
127-
BpPyAddr1 = 0x0011D8 # 奔跑偏移_1
128-
BpPyAddr2 = 0x0011C0 # 奔跑偏移_2
82+
SqNcCallAddr = 0x1438D0D80 # 申请内存
83+
BUffMemRcxAddr = 0x14B5EA880 # BUFF内存_RCX
84+
BUffMemCallAddr = 0x1459F7B60 # BUFF内存CALL
85+
DyBuffCall = 0x144B35030 # 调用BUFFCALL
86+
TakeEffectCallAddr = 0x1448775D0 # 生效CALL
87+
PutOnCallAddr = 0x144914BE0 # 穿上CALL
88+
TmCallAddr = 0x145A09C80 # 透明CALL
89+
CreateCallAddr = 0x144C14600 # 创建CALL
90+
WpYdCallAddr = 0x14473F220 # 物品移动CALL
12991
JnSwAddr = 0x1448BDDD1 # 技能三无
130-
LqCallJudgeAddr = 0x144AE9630 # 冷却判断CALL
131-
CdResetCallAddr = 0x1449518F0 # CD重置CALL
132-
JnlAddr = 0x00FAD0 # 技能栏
133-
JnlPyAddr = 0x000090 # 技能栏偏移
92+
RwMwAddr = 0x11B14 # 人物名望
93+
WpMcAddr = 0x40 # 物品名称
94+
WpJyLxAddr = 0xA8 # 物品交易类型
95+
DzIDAddr = 0x41C4 # 动作ID
96+
DtKs2 = 0x1B8 # 地图开始2
97+
DtJs2 = 0x1C0 # 地图结束2
98+
DtPyAddr = 0x168 # 地图偏移
99+
LxPyAddr = 0x134 # 类型偏移
100+
FxPyAddr = 0x148 # 方向偏移
101+
CEPfAddr = 0x88 # 评分偏移
102+
FbSqAddr = 0x13C # 发包拾取
103+
GwXlAddr = 0x4DC8 # 怪物血量
104+
ZyPyAddr = 0xE40 # 阵营偏移
105+
DmWpAddr = 0x29E8 # 地面物品
106+
JxWpAddr = 0xF710 # 脚下物品
107+
DmPyAddr = 0x838 # 代码偏移
108+
McPyAddr = 0x840 # 名称偏移
109+
ZbPjAddr = 0x2B8 # 装备品级
110+
DtCtAddr = 0x848 # 地图穿透
111+
JzCtAddr = 0x84C # 建筑穿透
112+
DqZbAddr = 0x328 # 读取坐标
113+
YjRwStartAddr = 0x10 # 已接任务首地址
114+
YjRwEndAddr = 0x18 # 已接任务尾地址
115+
QbRwStartAddr = 0xA8 # 全部任务首地址
116+
QbRwEndAddr = 0xB0 # 全部任务尾地址
117+
RwLxAddr = 0x218 # 任务类型
118+
RwDxAddr = 0x28 # 任务大小
119+
RwTjAddr = 0x4B0 # 任务条件
120+
RwDjAddr = 0x328 # 任务等级
121+
RwFbAddr = 0x468 # 任务副本
122+
SfKmAddr = 0x27C # 是否开门
123+
CutRoomXAddr = 0x1CC0 # 当前房间X
124+
CutRoomYAddr = 0x1CC4 # 当前房间Y
125+
BOSSRoomXAddr = 0x1DC0 # BOSS房间X
126+
BOSSRoomYAddr = 0x1DC4 # BOSS房间Y
127+
GouHuoAddr = 0x1E50 # 篝火判断
128+
SyPyAddr = 0x1DB4 # 索引偏移
129+
MxPyAddr = 0x128 # 门型偏移
130+
KgPyAddr = 0x8B8 # 宽高偏移
131+
SzPyAddr = 0x8D8 # 数组偏移
132+
DtMcAddr = 0x440 # 地图名称
133+
StPyAddr = 0xC0 # 顺图偏移
134+
ZbStPyAddr = 0x3700 # 坐标顺图
135+
FxIdAddr = 0xE8 # 方向ID
136+
WplAddr = 0xFB58 # 物品栏
137+
WplPyAddr = 0xA8 # 物品栏偏移
138+
JnlAddr = 0xFAD0 # 技能栏
139+
JnlPyAddr = 0x90 # 技能栏偏移

game/auto.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -184,11 +184,14 @@ def town_handle(cls):
184184
logger.info("地图编号为空,无法切换区域", 2)
185185
return
186186

187-
time.sleep(0.2)
188187
# 区域发包
189-
call.area_call(init.global_data.map_id)
188+
max_region = call.area_call(init.global_data.map_id)
189+
time.sleep(0.5)
190+
if cls.map_data.get_max_region() != max_region:
191+
logger.info("未切换到区域,检查是否完成该地图区域任务", 2)
192+
return
190193

191-
time.sleep(0.2)
194+
time.sleep(0.5)
192195
cls.select_map()
193196

194197
@classmethod
@@ -217,18 +220,18 @@ def return_role(cls):
217220
def enter_map(cls, map_id: int, map_level: int):
218221
"""进图"""
219222
if map_level == 5:
220-
drive_button(VK_SPACE, 0, False)
221-
# for i in range(4, -1, -1):
222-
# if cls.map_data.get_stat() == 3:
223-
# break
224-
# if cls.map_data.get_stat() == 2:
225-
# cls.pack.go_map(map_id, i, 0, 0)
226-
# time.sleep(1)
227-
# if cls.map_data.get_stat() == 1:
228-
# cls.select_map()
223+
# drive_button(VK_SPACE, 0, False)
224+
for i in range(4, -1, -1):
225+
if cls.map_data.get_stat() == 3:
226+
break
227+
if cls.map_data.get_stat() == 2:
228+
cls.pack.go_map(map_id, i, 0, 0)
229+
time.sleep(1)
230+
if cls.map_data.get_stat() == 1:
231+
cls.select_map()
229232
else:
230-
drive_button(VK_SPACE, 0, False)
231-
# cls.pack.go_map(map_id, map_level, 0, 0)
233+
# drive_button(VK_SPACE, 0, False)
234+
cls.pack.go_map(map_id, map_level, 0, 0)
232235

233236
while cls.thread_switch:
234237
time.sleep(0.2)

game/call.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ def move_call(max_map, mix_map, x, y):
206206
compile_call(shell_code)
207207

208208

209-
def area_call(map_num):
209+
def area_call(map_num) -> int:
210210
"""区域Call"""
211211
region_addr = mem.read_long(address.QyParamAddr)
212212
tmp_region_call = address.QyCallAddr
@@ -224,7 +224,8 @@ def area_call(map_num):
224224
min_region = mem.read_int(region_addr + address.QyPyAddr + 4)
225225
town_x = mem.read_int(region_addr + address.QyPyAddr + 8)
226226
town_y = mem.read_int(region_addr + address.QyPyAddr + 12)
227-
return move_call(max_region, min_region, town_x, town_y)
227+
move_call(max_region, min_region, town_x, town_y)
228+
return max_region
228229

229230

230231
def over_map_call(fx):

game/map_data.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def is_town(self) -> bool:
3434
def is_open_door(self) -> bool:
3535
"""是否开门"""
3636
person_ptr = call.person_ptr()
37-
encode_data = self.mem.read_long(self.mem.read_long(person_ptr + addr.DtPyAddr-8) + 16)
37+
encode_data = self.mem.read_long(self.mem.read_long(person_ptr + addr.DtPyAddr - 8) + 16)
3838
return self.decode(encode_data + addr.SfKmAddr) == 0
3939

4040
def is_boss_room(self):
@@ -146,8 +146,11 @@ def get_map_data(self) -> globle.MapTraversalType:
146146
"""
147147
data = globle.MapTraversalType()
148148
data.rw_addr = call.person_ptr()
149-
data.map_data = self.mem.read_long(self.mem.read_long(data.rw_addr + address.DtPyAddr-8) + 16)
149+
data.map_data = self.mem.read_long(self.mem.read_long(data.rw_addr + address.DtPyAddr - 8) + 16)
150150
data.start = self.mem.read_long(data.map_data + address.DtKs2)
151151
data.end = self.mem.read_long(data.map_data + address.DtJs2)
152152
data.obj_num = int((data.end - data.start) / 24)
153153
return data
154+
155+
def get_max_region(self) -> int:
156+
return self.mem.read_int(address.CzDqyAddr)

game/pack.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,11 +127,11 @@ def move_map(cls, max_map, mix_map, x, y):
127127
cls.jm_call(x, 2)
128128
cls.jm_call(y, 2)
129129
cls.jm_call(5, 1)
130-
cls.jm_call(38, 4)
130+
cls.jm_call(78, 4)
131131
cls.jm_call(1, 2)
132132
cls.jm_call(0, 4)
133133
cls.jm_call(0, 1)
134-
cls.jm_call(5, 1)
134+
cls.jm_call(0, 1)
135135
cls.fb_call()
136136

137137
@classmethod

0 commit comments

Comments
 (0)