-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdaily.js
370 lines (336 loc) · 13.6 KB
/
daily.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
//-------------------------------模块引入----------------------
var daily = {};
var tools = require('./tools.js');
let key=new $crypto.Key("mohuazu890123456");
// tools.ReadSettings();
//----------------------全局变量--------------------------
//// 虚拟分辨率
// let max_x=2376;
// let max_y=1152;
// setScreenMetrics(max_y, max_x);
// 真实分辨率
let device_max_x=device.height;//横屏时xy对应关系会反过来
let device_max_y=device.width;
// // 计算缩放比例
// var scaleX = max_x/device_max_x;
// var scaleY = max_y/device_max_y;
// 读取本地文件
let positions = JSON.parse(files.read("assets/positions.json"));
// let alert_music="assets/alert.AAC";//"/sdcard/脚本/alert.AAC";
// let wheat_goods="assets/wheat_goods.jpg";
// let selected_goods="assets/selected_goods.jpg";
// let wheat_seeds="assets/wheat_seeds.jpg";
// let hook="assets/hook.jpg";
// let sell_path="assets/sell.jpg";
// let check_path="assets/check.jpg";
// let long_step_time=100*6;
// let short_step_time=10*25;
let growing_time=(tools.growing_time-5)*1000;//我家103s要等98s, 其它操作5s
// let night_soil="#403c5b";
// let day_soil="#886452";
// let night_wheat="#848683";
// let day_wheat="#e0b876";
// let hook_color="#b6c9d5";
// let wheat_pos=null;
// let soil_pos=null;
// 从本地读取的变量
let soil_pos = positions.soil_pos;
// let wheat_pos_default = positions.wheat_pos_default;
// let hook_pos = positions.hook_pos;
let shop_pos = positions.shop_pos;
// let goods_pos = positions.goods_pos;
// let sell_pos_add = positions.sell_pos_add;
// let check_pos = positions.check_pos;
// let soil_region = positions.soil_region;
// let soil_bottom = positions.soil_bottom;
// let soil_left = positions.soil_left;
// let soil_top = positions.soil_top;
let soil_right = positions.soil_right;
////需要动态计算的变量
// let soil_step={x: (soil_top.x-soil_left.x)/5, y: (soil_top.y-soil_left.y)/5};
// let goods_icon_region={x: 0, y: 0, w: device_max_x, h: 200+(device_max_y)/2};
// // let goods_icon_region={x: 0, y: 0};
// let seeds_icon_region = {x: 0, y: (device_max_y/2)-1, w: device_max_x/2, h: (device_max_y)/2};
// let hook_icon_region = {x: device_max_x/3, y: (device_max_y/2)-1, w: device_max_x/3, h: (device_max_y)/2};
let close_pos = {x: 200, y: device_max_y/2};
// let plant_positions = [
// [wheat_pos_default.x, wheat_pos_default.y],
// [soil_pos.x, soil_pos.y],
// [random(soil_region.min_x,soil_region.max_x),random(soil_region.min_y,soil_region.max_y)],//ramdom_position
// [soil_bottom.x, soil_bottom.y],//下
// [soil_left.x, soil_left.y],//左
// // [700, 250],
// // [1380, 560],//下-右插值
// [soil_left.x+soil_step.x, soil_left.y+soil_step.y],//左-上插值
// [soil_bottom.x+soil_step.x, soil_bottom.y+soil_step.y],//下-右插值
// // [1490, 520],//下-右插值
// // [800, 215],//左-上插值
// [soil_bottom.x+(2*soil_step.x), soil_bottom.y+(2*soil_step.y)],//下-右插值
// [soil_left.x+(2*soil_step.x), soil_left.y+(2*soil_step.y)],//左-上插值
// // [920, 170],//左-上插值
// // [1580, 465],//下-右插值
// [soil_left.x+(3*soil_step.x), soil_left.y+(3*soil_step.y)],//左-上插值
// [soil_bottom.x+(3*soil_step.x), soil_bottom.y+(3*soil_step.y)],//下-右插值
// // [1690, 420],//下-右插值
// // [1020, 130],//左-上插值
// [soil_bottom.x+(4*soil_step.x), soil_bottom.y+(4*soil_step.y)],//下-右插值
// [soil_left.x+(4*soil_step.x), soil_left.y+(4*soil_step.y)],//左-上插值
// [soil_top.x, soil_top.y],//上
// [soil_right.x, soil_right.y]//右
// // 添加更多坐标
// ];
// let harvest_positions = plant_positions;
// const harvest_positions = JSON.parse(JSON.stringify(plant_positions));//深拷贝
// harvest_positions[0]=[hook_pos.x, hook_pos.y];
// var hook_icon = images.read(hook);
// var goods_icon = images.read(wheat_goods);
// var selected_goods_icon = images.read(selected_goods);
// var seeds_pic = images.read(wheat_seeds);
// var sell_icon = images.read(sell_path);
// var check_icon = images.read(check_path);
// // 缩放模板图像,保持与截图一致的缩放比例
// var hook_icon = images.scale(images.read(hook), scaleX, scaleY);
// var goods_icon = images.scale(images.read(wheat_goods), scaleX, scaleY);
// var seeds_pic = images.scale(images.read(wheat_seeds), scaleX, scaleY);
//----------------------actions--------------------------
daily.Plant = function () {
// function Plant() {
console.log(`plant begin...`);
// press(soil_pos.x, soil_pos.y,300);
click(soil_pos.x, soil_pos.y);
sleep(300*4);
let wheat_pos_temp=tools.FindSeed();//如果找不到, 代表上一步点按不成功, 所以这一步一定要执行
if(wheat_pos_temp){
tools.PlantGesture(wheat_pos_temp);
return true;
}
if(tools.FindHook()){
if(!daily.Harvest()){
return false;
}
return daily.Plant();
}
console.log(`try to wait for seed/ripe wheat... `);//直接返回true, 跳过本次循环
sleep(growing_time);
// press(soil_pos.x, soil_pos.y,300);
click(soil_pos.x, soil_pos.y);
sleep(300*3);
if(tools.FindSeed()){
return daily.Plant();
}
if(tools.FindHook()){
if(!daily.Harvest()){
return false;
}
return daily.Plant();
// return true;
}else{
return false;
}
};
daily.CloseShop = function () {
// function CloseShop() {
// 检查是否可以关闭仓库界面
if(tools.FindCheckIcon()) {
press(check_pos.x, check_pos.y,150);
sleep(300*3);
}
press(close_pos.x, close_pos.y,150);
// sleep(300);
sleep(300*3);
// 检查是否已经关闭仓库界面
if(tools.FindSelectedGoods()) {
while(tools.FindSelectedGoods()) {
press(close_pos.x, close_pos.y,150);
sleep(300*3);
}
return daily.Sell();//有选中状态说明还没卖掉, 要卖掉防止爆仓
}else{
while(tools.FindGoodsIcon()) {
press(close_pos.x, close_pos.y,150);
sleep(300*3);
}
return true;
}
// return true;
};
daily.Sell = function () {
// function Sell() {
//卖
sleep(300*3);//此处屏幕反应略慢,需要等待, 且不能处于播种/收获中状态
click(shop_pos.x, shop_pos.y);
sleep(300*4);//此处屏幕反应略慢,需要等待
var goods_pos=tools.FindGoodsIcon();
if(!goods_pos) {
toast("没有找到小麦的踪迹, 无法售卖.");
console.log(`no goods here, will close`);
sleep(300*3);
daily.CloseShop();
// press(close_pos.x, close_pos.y,150);//小麦不够的情况下要关闭仓库继续种植
// sleep(300);
return false;
}
press(goods_pos.x, goods_pos.y,150);
sleep(300*4);
let sell_pos=tools.FindSellIcon();
if(!sell_pos) {
press(goods_pos.x, goods_pos.y,150);
sleep(300*3);
sell_pos=tools.FindSellIcon();
if(!sell_pos) {
toast("没有找到售卖按钮, 无法售卖.");
console.log(`no sell button here`);
sleep(300*3);
daily.CloseShop();
// press(close_pos.x, close_pos.y,150);//小麦不够的情况下要关闭仓库继续种植
// sleep(300);
return false;
}
}
// press(goods_pos.x, goods_pos.y+sell_pos_add,150);
press(sell_pos.x, sell_pos.y,150);
sleep(300*4);//此处屏幕反应略慢,需要等待
// sleep(300);
let check_pos=tools.FindCheckIcon();
if(!check_pos) {
press(sell_pos.x, sell_pos.y,150);
sleep(300*3);
check_pos=tools.FindCheckIcon();
if(!check_pos) {
toast("没有找到确认按钮, 无法售卖.");
console.log(`no check button here`);
sleep(300*3);
daily.CloseShop();
// press(close_pos.x, close_pos.y,150);//小麦不够的情况下要关闭仓库继续种植
return false;
}
}
press(check_pos.x, check_pos.y,150);
sleep(300*4);//此处屏幕反应略慢,需要等待
// sleep(300);
if(!daily.CloseShop()){
return daily.Sell();
}
};
daily.Harvest = function () {
// Aim();
//收
// press(soil_pos.x, soil_pos.y,150);
click(soil_pos.x, soil_pos.y);
sleep(300*3);
hook_pos_temp=tools.FindHook();
if(hook_pos_temp){
console.log(`Harvest begin...`);
tools.HarvestGesture(hook_pos_temp);
// harvest_positions[2]=[random(soil_region.min_x,soil_region.max_x),random(soil_region.min_y,soil_region.max_y)];//ramdom_position
// press(hook_pos.x, hook_pos.y,300);
// gesture.apply(null, [long_step_time*7+short_step_time*7].concat(harvest_positions));
return true;
}else{
// wheat_pos=FindSeed();
sleep(1000*3);
click(soil_pos.x, soil_pos.y);
sleep(300*3);
if(tools.FindSeed()){
click(soil_right.x, soil_right.y);//跳回种植时需要回退soil状态
sleep(300);
console.log(`Plant state dismatches. skip. `);//直接返回true, 跳过本次循环
// Plant();
// sleep(growing_time);
// Harvest();
return true;
}else if(tools.FindHook()){
return daily.Harvest();
}else{
return false;
}
// return false;
}
return true;
};
daily.Begin = function () {
if(tools.VerifyCard(tools.ReadCard())!=0){
exit();
}
while(tools.IsAimed()){
if(!daily.Plant()){
break;
}
daily.Sell();
// console.log("关灯设置:"+tools.light);
if(tools.light && (device.getBrightness()>0)){
device.setBrightness(0);//关闭屏幕亮度
}
sleep(growing_time);
for(i=0;(!tools.IsRipe() && i<10);i++){
sleep(1000*10);
}
if(!daily.Harvest()){
break;
}
}
home();
if(tools.light && (device.getBrightness()<10)){
device.setBrightness(100);//恢复屏幕亮度
}
tools.Alert();
//
};
daily.GetCoordinates = function () {
// function GetCoordinates(){//场景无icon识图无法运行, 监听点击位置也需要root权限, 尝试通过悬浮窗位置获取
var cam_high = confirm("确认已在设置中调整[相机高度]为[远景]吗?");
if(!cam_high){
return false;
}
var cfm_click = confirm("确认已捏合手指缩小场景,点击最下一格土地对齐地形吗?");
if(!cfm_click){
return false;
}
sleep(3*1000);
// console.log(`listen begin...`);
alert("将读取土地位置,请将方块左上角拖动至对应格子");
// shop_pos
var window_bottom=tools.GetTouchPosition(" 下 ",{x:device_max_x/2,y:100+device_max_y/2});
var window_left=tools.GetTouchPosition(" 左 ",{x:-100+device_max_x/2,y:device_max_y/2});
var window_top=tools.GetTouchPosition(" 上 ",{x:device_max_x/2,y:-100+device_max_y/2});
var window_right=tools.GetTouchPosition(" 右 ",{x:100+device_max_x/2,y:device_max_y/2});
var window_shop=tools.GetTouchPosition(" 仓 ",{x:-300+device_max_x/2,y:device_max_y/2});
// window_confirm=GetTouchPosition("确认",{x:device_max_x-400,y:device_max_y/2});
var window_confirm = floaty.window(
<frame gravity="center">
<text id="anchor" text="确认" textSize="16sp" bg="#77ffffff"/>
</frame>
);
window_confirm.setPosition(device_max_x-300, device_max_y/2);
window_confirm.anchor.click(()=>{
positions.soil_bottom={x:window_bottom.getX(),y:window_bottom.getY()};
positions.soil_left={x:window_left.getX(),y:window_left.getY()};
positions.soil_top={x:window_top.getX(),y:window_top.getY()};
positions.soil_right={x:window_right.getX(),y:window_right.getY()};
positions.shop_pos={x:window_shop.getX(),y:window_shop.getY()};
positions.soil_pos=positions.soil_bottom;
window_bottom.setPosition(positions.soil_bottom.x, positions.soil_bottom.y);
window_left.setPosition(positions.soil_left.x, positions.soil_left.y);
window_top.setPosition(positions.soil_top.x, positions.soil_top.y);
window_right.setPosition(positions.soil_right.x, positions.soil_right.y);
// console.log("soil_bottom: x=" + soil_bottom.x + ", y=" + soil_bottom.y); // 输出悬浮窗的位置
// positions.soil_bottom=soil_bottom;
// positions.soil_left=soil_left;
// positions.soil_top=soil_top;
// positions.soil_right=soil_right;
// positions.shop_pos=shop_pos;
// positions.soil_pos=soil_pos;
//保存json对象position到json文件"positions.json"
files.write("positions.json", JSON.stringify(positions));// 将对象转换为JSON字符串并写入文件
// window_confirm.close();// 关闭悬浮窗
// window_bottom.close();// 关闭悬浮窗
// window_left.close();// 关闭悬浮窗
// window_top.close();// 关闭悬浮窗
// window_right.close();// 关闭悬浮窗
// window_shop.close();// 关闭悬浮窗
alert("位置保存成功,重启后更新.");
return true;
});
};
//-----------------------------------模块导出----------------------------------
module.exports = daily;