diff --git a/工作/妙语/妙语.md b/工作/妙语/妙语.md index fcd608c..4c27ea6 100644 --- a/工作/妙语/妙语.md +++ b/工作/妙语/妙语.md @@ -2,6 +2,9 @@ ssh root@123.207.203.228 "make public-docker version=1.3.21 target_commitish=dev ssh root@123.207.203.228 " make public-pay-docker version=1.0.4 target_commitish=dev description= -f /disk/Public/miaoyu/makefile" +eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJOaWNrTmFtZSI6IuaWsOeUqOaItyIsIlVzZXJJZCI6IjIiLCJleHAiOjE3MjcyNTcwMTQsImlzcyI6Ikh1YW5NZW5nIiwiYXVkIjoiSHVhbk1lbmdBcHAifQ.1Ai5f5NVpjHcenNkgAgGRuL6Jizli1UyRPV6YkMW5q8 + + ## 需求 1. 标签 @@ -159,6 +162,11 @@ APPID:1308826010 SecretId:AKIDVyMfzKZdZP8zkNyOdsFuSsBJDB7EScs0 SecretKey:89GWr7JPWYTL8ueHlAYowGZnvzKZjqs9 + +## 音乐小程序密钥 +AppID:wx595ec949c6efd72b +AppSecret:1677345a20450146cf4610a41b49794d + ## token 计算 1. 按照对话的字符token 普7400 token +2000 简介 (7400)3600 汉字 @@ -227,3 +235,10 @@ SecretKey:89GWr7JPWYTL8ueHlAYowGZnvzKZjqs9 docker pull 123.207.203.228:93/hm-admin:latest + + + +1. 确定页面的功能 (登录、支付、玩游戏、首页) +2. 鲸云服务 --- 最好是先出个小例子 游戏打通 +3. 后台要重构 +4. diff --git a/工作/星岚魔盒/星岚魔盒.md b/工作/星岚魔盒/星岚魔盒.md index bf9aefa..6ff998e 100644 --- a/工作/星岚魔盒/星岚魔盒.md +++ b/工作/星岚魔盒/星岚魔盒.md @@ -155,4 +155,17 @@ Change: 2024-06-18 14:47:09.226223449 +0800 ### 数据库操作 ```sh ALTER TABLE `goods` ADD COLUMN `goods_describe` VARCHAR(300) COMMENT '描述' -``` \ No newline at end of file +``` + + +## 20240911 +# 新需求 在一番赏内增加两个奖励类型 +1. 增加新的奖励类型(福袋),抽中后需要在福袋中随机抽取一个奖品(有数量限制,概率不同,等级不同)给用户,福袋内的奖品抽完后,这个福袋就抽不到了。 +2. 增加新的奖励类型(宝箱),抽中后需要在宝箱中随机抽取一个奖品(无数量限制,概率不同,等级不同)给用户,宝箱次数抽完后,这个宝箱就抽不到了。 +3. 用户抽中福袋或者宝箱后,直接帮用户开启。 +## +1. 增加奖品类型 +2. 后台增加配置福袋和宝箱的配置页面。同时需要增加配置的奖品。 +3. 抽奖的时候增加抽中逻辑 +4. 发放奖品添加新的发放逻辑 +5. 前端页面展示福袋和宝箱内的奖品列表 \ No newline at end of file diff --git a/文档/.net/基础文档.md b/文档/.net/基础文档.md new file mode 100644 index 0000000..d703a9b --- /dev/null +++ b/文档/.net/基础文档.md @@ -0,0 +1,71 @@ +# C# +## 面试和文档 +[面试宝典](https://www.yuque.com/ysgstudyhard/da6e0c) +[官方博客](https://devblogs.microsoft.com/dotnet-ch/?c=85&WT.mc_id=dotnet-35129-website) +[官方文档](https://learn.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-8.0&WT.mc_id=dotnet-35129-website) +## 学习视频 +[潮汐教育.net 8-9个小时](https://www.bilibili.com/video/BV1QJ4m137eo/?spm_id_from=333.337.search-card.all.click&vd_source=5a048c750e5cf32cb313515aa014c62e) +[webapi-基础 7小时](https://www.bilibili.com/video/BV1uLsSeVEjr/?spm_id_from=333.337.search-card.all.click&vd_source=5a048c750e5cf32cb313515aa014c62e) +[项目实战-18小时](https://www.bilibili.com/video/BV1i9xze8EKk/?spm_id_from=333.337.search-card.all.click&vd_source=5a048c750e5cf32cb313515aa014c62e) +## [基础](https://www.bilibili.com/video/BV1QJ4m137eo/?spm_id_from=333.337.search-card.all.click&vd_source=5a048c750e5cf32cb313515aa014c62e) +1. 异常处理 + 理解如何使用try-catch-finally结构处理异常,确保应用程序在发生错误时的健壮性。掌握如何抛出和捕获自定义异常。 +2. 文件和I/O操作 + 学习如何读写文件,掌握Stream、File类的使用,理解如何处理大文件和高效的文件操作。 +3. 多线程与异步编程 + 学习C#的多线程模型和并发编程,掌握Task、async和await的使用。理解并发操作和如何编写异步任务以提升应用性能。 +4. LINQ(语言集成查询) + 学习如何使用LINQ进行数据查询和操作,理解select、where、orderby等常用操作符,以及如何对集合进行过滤、排序、投影和聚合。 +5. 泛型 + 理解C#中的泛型,学习如何使用泛型类和泛型方法来创建通用的、类型安全的集合和方法。 +6. 设计模式 + 学习常见的设计模式,如单例模式、工厂模式、观察者模式等。理解如何通过设计模式解决常见的开发问题,编写更易维护的代码。 +7. 特性(Attributes) + 学习如何使用C#的特性为代码添加元数据,并理解如何使用内置特性(如[Serializable]、[Obsolete])以及自定义特性。 +8. 反射 + 了解C#中的反射,学习如何在运行时获取类型信息并动态调用方法或访问属性。理解反射的性能影响及其应用场景。 +9. .NET库与NuGet包 + 学习如何通过NuGet包管理器引入外部库,掌握常用的.NET库如System.IO、System.Net.Http,以及如何管理项目的外部依赖。 +10. API请求 + 掌握如何使用HttpClient类进行HTTP请求,理解GET、POST等请求方法,以及如何处理请求结果。学习如何序列化和反序列化JSON数据。 +## 框架 +1. Entity Code First + 学习如何使用Entity Framework(EF)来进行ORM操作通过C#类映射数据库结构,如何自定义数据生成的模板、数据库CRUD操作等。 +2. Redis + 学习Redis缓存机制,理解如何使用StackExchange.Redis库将查询结果缓存,提升应用的性能。 +3. 日志框架 (SeriLog或者Nlog) +4. Memcached + 学习如何使用Memcached进行缓存管理,了解其工作原理和在C#中的集成。 +5. AutoMapper + 掌握AutoMapper的基本使用,学习如何将对象映射为不同类型,减少手动编写映射逻辑的重复工作。 +6. SignalR + 学习如何使用SignalR进行实时通讯,实现WebSocket通信。理解SignalR的使用场景,如实时聊天、在线游戏等。 +7. socket + 学习使用原生的socket进行实时通信。 +# WebAPI & MVC +1. 依赖注入 + 掌握依赖注入的概念,学习如何通过ASP.NET Core内置的依赖注入框架来管理服务的生命周期和依赖。 +2. 中间件 + 了解ASP.NET Core中中间件的作用,学习如何编写自定义中间件,处理请求和响应。 +3. 过滤器 + 学习如何使用Action Filters、Exception Filters等过滤器在WebAPI请求处理前后执行特定逻辑,掌握自定义过滤器的编写。 +4. 配置文件 + 学习如何在ASP.NET Core中通过appsettings.json和环境变量管理应用程序配置。理解如何在不同环境下(开发、生产)加载不同的配置。 +5. 跨域请求(CORS) + 理解跨域资源共享(CORS)机制,学习如何在WebAPI中配置CORS策略,以允许不同来源的客户端访问API。 +6. Razor语法(MVC) + 学习Razor视图引擎,理解如何在ASP.NET MVC中使用Razor语法构建动态页面,处理前端与后端的数据交互。 +7. 身份认证与授权(JWT) + 掌握JWT(JSON Web Token)认证机制,学习如何通过JWT实现WebAPI的身份认证与授权。 +# 扩展 +1. git版本控制 +2. sql Server +3. 单元测试 + + +## 前端简单的基础 +1. [html](https://www.runoob.com/html/html-tutorial.html) +2. [css](https://www.runoob.com/css/css-tutorial.html) +3. [javascript](https://www.runoob.com/js/js-tutorial.html) +4. [Jquery](https://www.runoob.com/jquery/jquery-tutorial.html) +5. [layui.js](https://layui.dev/) \ No newline at end of file diff --git a/文档/前端/webRTC.html b/文档/前端/webRTC.html new file mode 100644 index 0000000..cfc6768 --- /dev/null +++ b/文档/前端/webRTC.html @@ -0,0 +1,61 @@ + + + + + + + +
+ + + +
+ + + diff --git a/脚本/冒泡/assets/images/mp/start/game_icon.png b/脚本/冒泡/assets/images/mp/start/game_icon.png new file mode 100644 index 0000000..ec936f0 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/start/game_icon.png differ diff --git a/脚本/冒泡/assets/images/mp/帮派/MuMu12-20240921-222822.png b/脚本/冒泡/assets/images/mp/帮派/MuMu12-20240921-222822.png new file mode 100644 index 0000000..d244dfa Binary files /dev/null and b/脚本/冒泡/assets/images/mp/帮派/MuMu12-20240921-222822.png differ diff --git a/脚本/冒泡/assets/images/mp/帮派/MuMu12-20240923-021555.png b/脚本/冒泡/assets/images/mp/帮派/MuMu12-20240923-021555.png new file mode 100644 index 0000000..d323d91 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/帮派/MuMu12-20240923-021555.png differ diff --git a/脚本/冒泡/assets/images/mp/帮派/MuMu12-20240923-021631.png b/脚本/冒泡/assets/images/mp/帮派/MuMu12-20240923-021631.png new file mode 100644 index 0000000..dd17aea Binary files /dev/null and b/脚本/冒泡/assets/images/mp/帮派/MuMu12-20240923-021631.png differ diff --git a/脚本/冒泡/assets/images/mp/帮派/MuMu12-20240923-021700.png b/脚本/冒泡/assets/images/mp/帮派/MuMu12-20240923-021700.png new file mode 100644 index 0000000..122518e Binary files /dev/null and b/脚本/冒泡/assets/images/mp/帮派/MuMu12-20240923-021700.png differ diff --git a/脚本/冒泡/assets/images/mp/帮派/bangpaizhongguan.png b/脚本/冒泡/assets/images/mp/帮派/bangpaizhongguan.png new file mode 100644 index 0000000..deddd09 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/帮派/bangpaizhongguan.png differ diff --git a/脚本/冒泡/assets/images/mp/帮派/genghuan.png b/脚本/冒泡/assets/images/mp/帮派/genghuan.png new file mode 100644 index 0000000..103e675 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/帮派/genghuan.png differ diff --git a/脚本/冒泡/assets/images/mp/帮派/genghuanqueding.png b/脚本/冒泡/assets/images/mp/帮派/genghuanqueding.png new file mode 100644 index 0000000..49a7b9d Binary files /dev/null and b/脚本/冒泡/assets/images/mp/帮派/genghuanqueding.png differ diff --git a/脚本/冒泡/assets/images/mp/帮派/大力虎.png b/脚本/冒泡/assets/images/mp/帮派/大力虎.png new file mode 100644 index 0000000..c8a20a0 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/帮派/大力虎.png differ diff --git a/脚本/冒泡/assets/images/mp/帮派/大力虎1.png b/脚本/冒泡/assets/images/mp/帮派/大力虎1.png new file mode 100644 index 0000000..4c5f726 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/帮派/大力虎1.png differ diff --git a/脚本/冒泡/assets/images/mp/帮派/帮派总管.png b/脚本/冒泡/assets/images/mp/帮派/帮派总管.png new file mode 100644 index 0000000..7f39057 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/帮派/帮派总管.png differ diff --git a/脚本/冒泡/assets/images/mp/帮派/白发魔女.png b/脚本/冒泡/assets/images/mp/帮派/白发魔女.png new file mode 100644 index 0000000..bda2ff1 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/帮派/白发魔女.png differ diff --git a/脚本/冒泡/assets/images/mp/战斗/MuMu12-20240914-221110 - 副本.png b/脚本/冒泡/assets/images/mp/战斗/MuMu12-20240914-221110 - 副本.png new file mode 100644 index 0000000..19f9f81 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/战斗/MuMu12-20240914-221110 - 副本.png differ diff --git a/脚本/冒泡/assets/images/mp/战斗/MuMu12-20240914-221205.png b/脚本/冒泡/assets/images/mp/战斗/MuMu12-20240914-221205.png new file mode 100644 index 0000000..f6e36d4 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/战斗/MuMu12-20240914-221205.png differ diff --git a/脚本/冒泡/assets/images/mp/战斗/MuMu12-20240914-221559.png b/脚本/冒泡/assets/images/mp/战斗/MuMu12-20240914-221559.png new file mode 100644 index 0000000..31a8f7e Binary files /dev/null and b/脚本/冒泡/assets/images/mp/战斗/MuMu12-20240914-221559.png differ diff --git a/脚本/冒泡/assets/images/mp/战斗/quxiaozidong.png b/脚本/冒泡/assets/images/mp/战斗/quxiaozidong.png new file mode 100644 index 0000000..473fea9 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/战斗/quxiaozidong.png differ diff --git a/脚本/冒泡/assets/images/mp/战斗/shangcheng.png b/脚本/冒泡/assets/images/mp/战斗/shangcheng.png new file mode 100644 index 0000000..bc63a50 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/战斗/shangcheng.png differ diff --git a/脚本/冒泡/assets/images/mp/战斗/zhandouz.png b/脚本/冒泡/assets/images/mp/战斗/zhandouz.png new file mode 100644 index 0000000..fe619e3 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/战斗/zhandouz.png differ diff --git a/脚本/冒泡/assets/images/mp/战斗/zidong.png b/脚本/冒泡/assets/images/mp/战斗/zidong.png new file mode 100644 index 0000000..c322a24 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/战斗/zidong.png differ diff --git a/脚本/冒泡/assets/images/mp/战斗/战斗中.png b/脚本/冒泡/assets/images/mp/战斗/战斗中.png new file mode 100644 index 0000000..418ddf0 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/战斗/战斗中.png differ diff --git a/脚本/冒泡/assets/images/mp/战斗/战斗中1.png b/脚本/冒泡/assets/images/mp/战斗/战斗中1.png new file mode 100644 index 0000000..bcae735 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/战斗/战斗中1.png differ diff --git a/脚本/冒泡/assets/images/mp/战斗/物攻.png b/脚本/冒泡/assets/images/mp/战斗/物攻.png new file mode 100644 index 0000000..ce5bbee Binary files /dev/null and b/脚本/冒泡/assets/images/mp/战斗/物攻.png differ diff --git a/脚本/冒泡/assets/images/mp/领奖/玩家系统.png b/脚本/冒泡/assets/images/mp/领奖/玩家系统.png new file mode 100644 index 0000000..c633731 Binary files /dev/null and b/脚本/冒泡/assets/images/mp/领奖/玩家系统.png differ diff --git a/脚本/冒泡/detect_tigers.py b/脚本/冒泡/detect_tigers.py new file mode 100644 index 0000000..817293d --- /dev/null +++ b/脚本/冒泡/detect_tigers.py @@ -0,0 +1,47 @@ +import cv2 +import numpy as np + +# 加载游戏截图图像 +image = cv2.imread('detect_tigers/MuMu12-20240922-131314.png') + +# 转换为灰度图 +gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) + +# 加载大力虎的模板图像(你需要准备一个小的模板图像,含有大力虎的外观) +template = cv2.imread('detect_tigers/dalihu1.png', 0) # 模板应该是灰度图 +w, h = template.shape[::-1] + +# 进行模板匹配 +result = cv2.matchTemplate(gray_image, template, cv2.TM_CCOEFF_NORMED) + +# 设置匹配阈值,值越高匹配越严格 +threshold = 0.5 +locations = np.where(result >= threshold) + +# 容差值:合并相近的坐标时使用 +tolerance = 5 + +# 初始的 Y 和 X 坐标数组 +y_coords = locations[0] +x_coords = locations[1] + +# 存储过滤后的 Y 和 X 坐标 +filtered_coords = [] + +# 遍历坐标,去重并合并相近的值 +for i in range(len(y_coords)): + # 如果过滤后的列表为空,或者当前坐标和最后一个存储的坐标相差大于容差值,则将其加入 + if not filtered_coords or (abs(y_coords[i] - filtered_coords[-1][1]) > tolerance or abs(x_coords[i] - filtered_coords[-1][0]) > tolerance): + filtered_coords.append((x_coords[i], y_coords[i])) + +# 打印过滤后的坐标 +for coord in filtered_coords: + print(f"X: {coord[0]}, Y: {coord[1]}") + # 在原图上标出匹配的位置 + cv2.rectangle(image, coord, (coord[0] + w, coord[1] + h), (0, 255, 0), 2) + +# 显示匹配结果 +cv2.imshow('Detected Tigers', image) +cv2.waitKey(0) +cv2.destroyAllWindows() +# python detect_tigers.py \ No newline at end of file diff --git a/脚本/冒泡/detect_tigers/MuMu12-20240921-222822.png b/脚本/冒泡/detect_tigers/MuMu12-20240921-222822.png new file mode 100644 index 0000000..d244dfa Binary files /dev/null and b/脚本/冒泡/detect_tigers/MuMu12-20240921-222822.png differ diff --git a/脚本/冒泡/detect_tigers/MuMu12-20240922-131314.png b/脚本/冒泡/detect_tigers/MuMu12-20240922-131314.png new file mode 100644 index 0000000..b5a99a8 Binary files /dev/null and b/脚本/冒泡/detect_tigers/MuMu12-20240922-131314.png differ diff --git a/脚本/冒泡/detect_tigers/dalihu.png b/脚本/冒泡/detect_tigers/dalihu.png new file mode 100644 index 0000000..4c5f726 Binary files /dev/null and b/脚本/冒泡/detect_tigers/dalihu.png differ diff --git a/脚本/冒泡/detect_tigers/dalihu1.png b/脚本/冒泡/detect_tigers/dalihu1.png new file mode 100644 index 0000000..7fed656 Binary files /dev/null and b/脚本/冒泡/detect_tigers/dalihu1.png differ diff --git a/脚本/冒泡/detect_tigers/shuguai.png b/脚本/冒泡/detect_tigers/shuguai.png new file mode 100644 index 0000000..c72a58a Binary files /dev/null and b/脚本/冒泡/detect_tigers/shuguai.png differ diff --git a/脚本/冒泡/main.js b/脚本/冒泡/main.js new file mode 100644 index 0000000..293d556 --- /dev/null +++ b/脚本/冒泡/main.js @@ -0,0 +1,146 @@ +function generateUUID() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8); + return v.toString(16); + }); +} +images.requestScreenCapture() +var ra = new RootAutomator(); +ra.setScreenMetrics(540, 960); +toast("开始运行"); +let mpApp = require('./modules/mp-app'); +const mp = require('./modules/mp-start'); +let mpInfo = require('./modules/mp-info'); +// http://192.168.1.18:800/autoScript/negotiate +// var res = http.post("http://192.168.1.18:800/autoScript/negotiate"); +console.log('用户所在信息', mpApp.userSaveFile); + +if (!files.exists(mpApp.userSaveFile)) { + files.createWithDirs(mpApp.userSaveFile); + let _userId = generateUUID(); + files.write(mpApp.userSaveFile, _userId); +} +let userId = files.read(mpApp.userSaveFile); +console.log('用户Id', userId); +// let ws = new WebSocket('ws://192.168.1.18:800/ws'); + +// ws +// .on(WebSocket.EVENT_OPEN, (res, ws) => { +// console.log('WebSocket 已连接'); +// }) +// .on(WebSocket.EVENT_MESSAGE, (message, ws) => { +// console.log('接收到消息'); + +// }) +// .on(WebSocket.EVENT_TEXT, (text, ws) => { +// console.info('接收到文本消息:'); +// console.info(`text: ${text}`); +// }) +// .on(WebSocket.EVENT_BYTES, (bytes, ws) => { +// console.info('接收到字节数组消息:'); +// console.info(`utf8: ${bytes.utf8()}`); +// console.info(`base64: ${bytes.base64()}`); +// console.info(`md5: ${bytes.md5()}`); +// console.info(`hex: ${bytes.hex()}`); +// }) +// .on(WebSocket.EVENT_CLOSING, (code, reason, ws) => { +// console.log('WebSocket 关闭中'); +// }) +// .on(WebSocket.EVENT_CLOSED, (code, reason, ws) => { +// console.log('WebSocket 已关闭'); +// console.log(`code: ${code}`); +// if (reason) console.log(`reason: ${reason}`); +// }) +// .on(WebSocket.EVENT_FAILURE, (err, res, ws) => { +// console.error('WebSocket 连接失败'); +// console.error(err); +// }); +var window = floaty.window( + + + + + + + + + + +); +window.setPosition(10, 500); +window.xuanfuqiu.click(() => { + //没有自动打怪 + if (!mpInfo.AutoFightInfo.isAutoFight) { + mpInfo.startAutoFight(); + window.xuanfuqiu.attr('src', "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAmpJREFUWEftVm1SIjEQ7Y4rtYdQdvy1cArhJMpJVk6CnsTxFOCvTaGH2EJIr51JDyFkkgxVFn+cKorKTJJ+/fr1B8KZHzyzffgG0IuBZfWzUsbcEdEEECsA4J+2YSTSBPAEFxf1WP9r3hU8RQBawwAPBXdqBKiNUvMSIFkAy6sfE1TquTVMVCNibYx5Gb9vawYHu91EIf5yzEzcXgby+Hu9madAJwEsry/vEXEhF5IxMzaaupABoTEM2IYnB6ITgO/556YH8STQAXtrKed/o9QT0x6ETBPRfPz28RgD3glgNRwQH/CNvw4Hfz5fpnRw4LG3X5NS05gmogBeh4MFAdyzV6P15oaBrK4vnwFR4pvWIlE9evuY2nDsdgs+50IxCw9GAYj3ZMzUCu1QCwWJsGfOaeIvOxPT0BEAMSaIvQuKDHubWoPCnh9O2XcEQOiXzQVx7wR2dIcLjX/gCMBqOGC6KiKasXI9PfA5qXCcYvm1aGFfS1pNdTLQxl+pG1atAOIDo/XGAhZKc2sRsa8DEfUpAPYZ0bDEgJoMia8tSy1Il9ayTgFoQuAyIEi/XiFohbzPooIQuHz/ChHGakFnGoJfTIyxlPd9hEURsgg7mQWxwnFKIRJjfk8hJ+wkAP4YK8VBOhaVYj9jepViv/r5B0uKUlfzinnPALvbsadcv6d7A8gtATTNiUjbIcW1Y8di2zlFCzHakgNJ4HG0mYSXBgMJxISX1YC/IRjJtPNWG6IXHkDt3u22UkrdBiMZpDzvLEQxmnoOpQdDTC51s0PpARtuAEWAu9hYzjrIDaEhoF4Act6c8v0bwNkZ+A9jMvYwf4eHmwAAAABJRU5ErkJggg=="); + } else { + mpInfo.stopAutoFight(); + window.xuanfuqiu.attr('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAhpJREFUWEftVtFRwzAMVSeBTgKaBDoJ7SSESdROQjeBPOOXUx1HdnrH5ae5y7VJbOnp6UnWTja+dhv7lweAVQyY2bOIvInIq4jgP+5rTiN+v8ZvZ1Xlu2aGuwA4x8emxT9AZxE59QBpAjAzRGvOMYzjvqjqOYPDmqfMDP7jApBBVU8R6BCAmb2Phj+dwQOcRgYzIABmekIQiwCKyI+MpNABoiXlSQOgvUgZ3iMdQw14BOAnb/DOP8Z3kQ5uaDczrsd7rWmiCsDMQDvov6rqHkDMDLQyvy0tohI0MwFb2IdUHMqNSwAYPexAaF4LLef8npjLIL5zqmYamgFwzhJiZ6DXMdeB9uTQsTelk4tqAEg/I2jlPQJW2kip8RtqAEAXSgjoB6cH1jZ+8b3nmVpgL5k0FTHA/O9zSREQZJwAk9LWM0XsdUBR3wPAVwRAARArpPacWHIgU2B8jgAwYlaALz8eMr0poJBZRV0poMP/EOGsF0Rl6JtJoviOiyyyspKwW1UAem8ax52NiFXkT9Mk7BBAVnmtFfNdDxFTvbsmtKoVkwU4mza6w6XZfHIgvonNosea6DSclOsHCzeAvLjDiUdyOo4rzpMWaqhbA4mPYOrtUfjFQIKlM+E1NeAXFIMJQPC+5NGMrZmM+CN7MfLFRlSLbuVQChOzU2+JteZQWrABcSJCjOa1sRzqD4fQEsgqAD31t3bNA8DmDPwCZVBiMD0aBgQAAAAASUVORK5CYII=') + + } +}); +window.xuanfuqiu1.click(() => { + //没有自动打怪 + if (!mpInfo.AutoFightInfo.isFengShou) { + mpInfo.AutoFightInfo.isFengShou = true; + window.xuanfuqiu1.attr('src', "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAmpJREFUWEftVm1SIjEQ7Y4rtYdQdvy1cArhJMpJVk6CnsTxFOCvTaGH2EJIr51JDyFkkgxVFn+cKorKTJJ+/fr1B8KZHzyzffgG0IuBZfWzUsbcEdEEECsA4J+2YSTSBPAEFxf1WP9r3hU8RQBawwAPBXdqBKiNUvMSIFkAy6sfE1TquTVMVCNibYx5Gb9vawYHu91EIf5yzEzcXgby+Hu9madAJwEsry/vEXEhF5IxMzaaupABoTEM2IYnB6ITgO/556YH8STQAXtrKed/o9QT0x6ETBPRfPz28RgD3glgNRwQH/CNvw4Hfz5fpnRw4LG3X5NS05gmogBeh4MFAdyzV6P15oaBrK4vnwFR4pvWIlE9evuY2nDsdgs+50IxCw9GAYj3ZMzUCu1QCwWJsGfOaeIvOxPT0BEAMSaIvQuKDHubWoPCnh9O2XcEQOiXzQVx7wR2dIcLjX/gCMBqOGC6KiKasXI9PfA5qXCcYvm1aGFfS1pNdTLQxl+pG1atAOIDo/XGAhZKc2sRsa8DEfUpAPYZ0bDEgJoMia8tSy1Il9ayTgFoQuAyIEi/XiFohbzPooIQuHz/ChHGakFnGoJfTIyxlPd9hEURsgg7mQWxwnFKIRJjfk8hJ+wkAP4YK8VBOhaVYj9jepViv/r5B0uKUlfzinnPALvbsadcv6d7A8gtATTNiUjbIcW1Y8di2zlFCzHakgNJ4HG0mYSXBgMJxISX1YC/IRjJtPNWG6IXHkDt3u22UkrdBiMZpDzvLEQxmnoOpQdDTC51s0PpARtuAEWAu9hYzjrIDaEhoF4Act6c8v0bwNkZ+A9jMvYwf4eHmwAAAABJRU5ErkJggg=="); + } else { + mpInfo.AutoFightInfo.isFengShou = false; + window.xuanfuqiu1.attr('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAhpJREFUWEftVtFRwzAMVSeBTgKaBDoJ7SSESdROQjeBPOOXUx1HdnrH5ae5y7VJbOnp6UnWTja+dhv7lweAVQyY2bOIvInIq4jgP+5rTiN+v8ZvZ1Xlu2aGuwA4x8emxT9AZxE59QBpAjAzRGvOMYzjvqjqOYPDmqfMDP7jApBBVU8R6BCAmb2Phj+dwQOcRgYzIABmekIQiwCKyI+MpNABoiXlSQOgvUgZ3iMdQw14BOAnb/DOP8Z3kQ5uaDczrsd7rWmiCsDMQDvov6rqHkDMDLQyvy0tohI0MwFb2IdUHMqNSwAYPexAaF4LLef8npjLIL5zqmYamgFwzhJiZ6DXMdeB9uTQsTelk4tqAEg/I2jlPQJW2kip8RtqAEAXSgjoB6cH1jZ+8b3nmVpgL5k0FTHA/O9zSREQZJwAk9LWM0XsdUBR3wPAVwRAARArpPacWHIgU2B8jgAwYlaALz8eMr0poJBZRV0poMP/EOGsF0Rl6JtJoviOiyyyspKwW1UAem8ax52NiFXkT9Mk7BBAVnmtFfNdDxFTvbsmtKoVkwU4mza6w6XZfHIgvonNosea6DSclOsHCzeAvLjDiUdyOo4rzpMWaqhbA4mPYOrtUfjFQIKlM+E1NeAXFIMJQPC+5NGMrZmM+CN7MfLFRlSLbuVQChOzU2+JteZQWrABcSJCjOa1sRzqD4fQEsgqAD31t3bNA8DmDPwCZVBiMD0aBgQAAAAASUVORK5CYII=') + + } +}); +window.yuancheng.click(() => { + if (!mpInfo.User.update) { + mpInfo.startUser(userId); + window.yuancheng.attr('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAg9JREFUSEu1lT9SwlAQxnffGMYb2EgMjYCXMJzCUigcjwEewsIKPUngFGAlRlt7J4Fd3cd78SUkIeJIwQyTsL/d79s/CP/8wabxF8FxAJtNqN9nXvXf17Mm/60FLE6PQkQcA6IEXklgHdT5jYizbpzcVcFKAZItbjZTQAyY+a7/lj4WA9iKJAEEeKyC7AB01kpF3w8mdZlZoIAU0TUDDFmpQX/1ua3SfHYAS7/FTDRoqnEGantDqaYXJ51KwLLtRfs0rTP22W9N5Xk3TkY7FRhppjaDZ781BoCgSacQ81x80t4RRUw0sgpkEgndvihBl37rRQzeB1CIlwwQ2sQWIhXAde8tHeiGswF0QMck+V3UswrmvmursP91AdyLkxzwDwBJTsfSX1KWlOqac2gFWt62F+n5eV/PtgAzsVY368EhFWT+Gbm3AOO+G1B7QpS1W6XZiEGx/2WWchIZKrNSHTuJZW3KzLptETE3rbKn7NQX2/3HVEe3qmzFK3lWtpvciXb9zABFsguZAKgr37sB5nMA9QHIH/04fSgmYqQWabNVk9tFZaMuQSKAo5Mz79YNePGa3hcBZasmB7Bm163fKvnEM2YO3U7MTXKmoemoppDc7XB20M6yczNzd7yAiGheXN/OO5O621F/MrfHREoP5LrpJORsmpOJADMieqq7Hb87+uu1hvzmGDUG7FvbVc+/AC80ZSgTkPkSAAAAAElFTkSuQmCC') + } else { + mpInfo.stopUser(); + window.yuancheng.attr('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAb1JREFUSEu1VcFtwzAMpIoO0ny6hstJ0jyKjhFniD76SjoJ00maBbJCEp9ACrRsqXKKGkgAGxKPvCOPgf75Ca3xReSJiF70/ImZjy13qwAigoBbDXwiIvzw4Lu9H5l5VwKbBdBs90SErHfMfMgDuIqQwKEEMgHQrGUI2NcyM0AFWg8VvRIRM7NVGY/MAVz1YBPHDggAW2Ze+WpHACKCzKuc1oQVEdCKMjZ2LgEoNXvLQETALTRoeb6hk9KFJDfWZR4A6PEgIorIDwRuiN6hq1xioGoNMUYaaMAkEt5zPktg/qxVYXd9Bdeha/z7XwBwN8aKfyKCsjovzr0VaDzogPk5GkCcWOPNNLiHIqdfpNsA0C3iA6omqd0qYuPuqP+HDkx0jzQgopVNYqFNrW1H0wpfsqnP290DJN4q3QKtMEgTb8omOulZHDQP0vf9Q9d1byGE58vlcg4hnJn5s2CAmB/wH60mt4rJqKtoj0T07gMy88cMwMRqcoAods1+K/TFveE7seSmi0Cy3ZE8aGJ2PrPM4yEoPGpk3+5MP9wt7o7fVmbscXVV36K2MgH6VdvPS5d+BGld+LMaNNjzoiM33GcFKNgVoCQAAAAASUVORK5CYII=') + } + +}); +window.yuancheng2.click(() => { + if (mpInfo.User.autoSeekFightThread == null) { + mpInfo.startAutoSeekFight(); + window.yuancheng2.attr('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAg9JREFUSEu1lT9SwlAQxnffGMYb2EgMjYCXMJzCUigcjwEewsIKPUngFGAlRlt7J4Fd3cd78SUkIeJIwQyTsL/d79s/CP/8wabxF8FxAJtNqN9nXvXf17Mm/60FLE6PQkQcA6IEXklgHdT5jYizbpzcVcFKAZItbjZTQAyY+a7/lj4WA9iKJAEEeKyC7AB01kpF3w8mdZlZoIAU0TUDDFmpQX/1ua3SfHYAS7/FTDRoqnEGantDqaYXJ51KwLLtRfs0rTP22W9N5Xk3TkY7FRhppjaDZ781BoCgSacQ81x80t4RRUw0sgpkEgndvihBl37rRQzeB1CIlwwQ2sQWIhXAde8tHeiGswF0QMck+V3UswrmvmursP91AdyLkxzwDwBJTsfSX1KWlOqac2gFWt62F+n5eV/PtgAzsVY368EhFWT+Gbm3AOO+G1B7QpS1W6XZiEGx/2WWchIZKrNSHTuJZW3KzLptETE3rbKn7NQX2/3HVEe3qmzFK3lWtpvciXb9zABFsguZAKgr37sB5nMA9QHIH/04fSgmYqQWabNVk9tFZaMuQSKAo5Mz79YNePGa3hcBZasmB7Bm163fKvnEM2YO3U7MTXKmoemoppDc7XB20M6yczNzd7yAiGheXN/OO5O621F/MrfHREoP5LrpJORsmpOJADMieqq7Hb87+uu1hvzmGDUG7FvbVc+/AC80ZSgTkPkSAAAAAElFTkSuQmCC') + } else { + mpInfo.stopAutoSeekFight(); + window.yuancheng2.attr('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAb1JREFUSEu1VcFtwzAMpIoO0ny6hstJ0jyKjhFniD76SjoJ00maBbJCEp9ACrRsqXKKGkgAGxKPvCOPgf75Ca3xReSJiF70/ImZjy13qwAigoBbDXwiIvzw4Lu9H5l5VwKbBdBs90SErHfMfMgDuIqQwKEEMgHQrGUI2NcyM0AFWg8VvRIRM7NVGY/MAVz1YBPHDggAW2Ze+WpHACKCzKuc1oQVEdCKMjZ2LgEoNXvLQETALTRoeb6hk9KFJDfWZR4A6PEgIorIDwRuiN6hq1xioGoNMUYaaMAkEt5zPktg/qxVYXd9Bdeha/z7XwBwN8aKfyKCsjovzr0VaDzogPk5GkCcWOPNNLiHIqdfpNsA0C3iA6omqd0qYuPuqP+HDkx0jzQgopVNYqFNrW1H0wpfsqnP290DJN4q3QKtMEgTb8omOulZHDQP0vf9Q9d1byGE58vlcg4hnJn5s2CAmB/wH60mt4rJqKtoj0T07gMy88cMwMRqcoAods1+K/TFveE7seSmi0Cy3ZE8aGJ2PrPM4yEoPGpk3+5MP9wt7o7fVmbscXVV36K2MgH6VdvPS5d+BGld+LMaNNjzoiM33GcFKNgVoCQAAAAASUVORK5CYII=') + } + +}); +window.renwu.click(() => { + if (!mpInfo.Task.autoSeekTask) { + mpInfo.startTask(); + window.renwu.attr('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAg9JREFUSEu1lT9SwlAQxnffGMYb2EgMjYCXMJzCUigcjwEewsIKPUngFGAlRlt7J4Fd3cd78SUkIeJIwQyTsL/d79s/CP/8wabxF8FxAJtNqN9nXvXf17Mm/60FLE6PQkQcA6IEXklgHdT5jYizbpzcVcFKAZItbjZTQAyY+a7/lj4WA9iKJAEEeKyC7AB01kpF3w8mdZlZoIAU0TUDDFmpQX/1ua3SfHYAS7/FTDRoqnEGantDqaYXJ51KwLLtRfs0rTP22W9N5Xk3TkY7FRhppjaDZ781BoCgSacQ81x80t4RRUw0sgpkEgndvihBl37rRQzeB1CIlwwQ2sQWIhXAde8tHeiGswF0QMck+V3UswrmvmursP91AdyLkxzwDwBJTsfSX1KWlOqac2gFWt62F+n5eV/PtgAzsVY368EhFWT+Gbm3AOO+G1B7QpS1W6XZiEGx/2WWchIZKrNSHTuJZW3KzLptETE3rbKn7NQX2/3HVEe3qmzFK3lWtpvciXb9zABFsguZAKgr37sB5nMA9QHIH/04fSgmYqQWabNVk9tFZaMuQSKAo5Mz79YNePGa3hcBZasmB7Bm163fKvnEM2YO3U7MTXKmoemoppDc7XB20M6yczNzd7yAiGheXN/OO5O621F/MrfHREoP5LrpJORsmpOJADMieqq7Hb87+uu1hvzmGDUG7FvbVc+/AC80ZSgTkPkSAAAAAElFTkSuQmCC') + } else { + mpInfo.stopTask(); + window.renwu.attr('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAb1JREFUSEu1VcFtwzAMpIoO0ny6hstJ0jyKjhFniD76SjoJ00maBbJCEp9ACrRsqXKKGkgAGxKPvCOPgf75Ca3xReSJiF70/ImZjy13qwAigoBbDXwiIvzw4Lu9H5l5VwKbBdBs90SErHfMfMgDuIqQwKEEMgHQrGUI2NcyM0AFWg8VvRIRM7NVGY/MAVz1YBPHDggAW2Ze+WpHACKCzKuc1oQVEdCKMjZ2LgEoNXvLQETALTRoeb6hk9KFJDfWZR4A6PEgIorIDwRuiN6hq1xioGoNMUYaaMAkEt5zPktg/qxVYXd9Bdeha/z7XwBwN8aKfyKCsjovzr0VaDzogPk5GkCcWOPNNLiHIqdfpNsA0C3iA6omqd0qYuPuqP+HDkx0jzQgopVNYqFNrW1H0wpfsqnP290DJN4q3QKtMEgTb8omOulZHDQP0vf9Q9d1byGE58vlcg4hnJn5s2CAmB/wH60mt4rJqKtoj0T07gMy88cMwMRqcoAods1+K/TFveE7seSmi0Cy3ZE8aGJ2PrPM4yEoPGpk3+5MP9wt7o7fVmbscXVV36K2MgH6VdvPS5d+BGld+LMaNNjzoiM33GcFKNgVoCQAAAAASUVORK5CYII=') + } + +}); + +window.yuancheng3.click(() => { + //没有自动打怪 + if (!mpInfo.AutoFightInfo.isLaDao) { + mpInfo.AutoFightInfo.isLaDao = true; + window.yuancheng3.attr('src', "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAmpJREFUWEftVm1SIjEQ7Y4rtYdQdvy1cArhJMpJVk6CnsTxFOCvTaGH2EJIr51JDyFkkgxVFn+cKorKTJJ+/fr1B8KZHzyzffgG0IuBZfWzUsbcEdEEECsA4J+2YSTSBPAEFxf1WP9r3hU8RQBawwAPBXdqBKiNUvMSIFkAy6sfE1TquTVMVCNibYx5Gb9vawYHu91EIf5yzEzcXgby+Hu9madAJwEsry/vEXEhF5IxMzaaupABoTEM2IYnB6ITgO/556YH8STQAXtrKed/o9QT0x6ETBPRfPz28RgD3glgNRwQH/CNvw4Hfz5fpnRw4LG3X5NS05gmogBeh4MFAdyzV6P15oaBrK4vnwFR4pvWIlE9evuY2nDsdgs+50IxCw9GAYj3ZMzUCu1QCwWJsGfOaeIvOxPT0BEAMSaIvQuKDHubWoPCnh9O2XcEQOiXzQVx7wR2dIcLjX/gCMBqOGC6KiKasXI9PfA5qXCcYvm1aGFfS1pNdTLQxl+pG1atAOIDo/XGAhZKc2sRsa8DEfUpAPYZ0bDEgJoMia8tSy1Il9ayTgFoQuAyIEi/XiFohbzPooIQuHz/ChHGakFnGoJfTIyxlPd9hEURsgg7mQWxwnFKIRJjfk8hJ+wkAP4YK8VBOhaVYj9jepViv/r5B0uKUlfzinnPALvbsadcv6d7A8gtATTNiUjbIcW1Y8di2zlFCzHakgNJ4HG0mYSXBgMJxISX1YC/IRjJtPNWG6IXHkDt3u22UkrdBiMZpDzvLEQxmnoOpQdDTC51s0PpARtuAEWAu9hYzjrIDaEhoF4Act6c8v0bwNkZ+A9jMvYwf4eHmwAAAABJRU5ErkJggg=="); + } else { + mpInfo.AutoFightInfo.isLaDao = false; + window.yuancheng3.attr('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAhpJREFUWEftVtFRwzAMVSeBTgKaBDoJ7SSESdROQjeBPOOXUx1HdnrH5ae5y7VJbOnp6UnWTja+dhv7lweAVQyY2bOIvInIq4jgP+5rTiN+v8ZvZ1Xlu2aGuwA4x8emxT9AZxE59QBpAjAzRGvOMYzjvqjqOYPDmqfMDP7jApBBVU8R6BCAmb2Phj+dwQOcRgYzIABmekIQiwCKyI+MpNABoiXlSQOgvUgZ3iMdQw14BOAnb/DOP8Z3kQ5uaDczrsd7rWmiCsDMQDvov6rqHkDMDLQyvy0tohI0MwFb2IdUHMqNSwAYPexAaF4LLef8npjLIL5zqmYamgFwzhJiZ6DXMdeB9uTQsTelk4tqAEg/I2jlPQJW2kip8RtqAEAXSgjoB6cH1jZ+8b3nmVpgL5k0FTHA/O9zSREQZJwAk9LWM0XsdUBR3wPAVwRAARArpPacWHIgU2B8jgAwYlaALz8eMr0poJBZRV0poMP/EOGsF0Rl6JtJoviOiyyyspKwW1UAem8ax52NiFXkT9Mk7BBAVnmtFfNdDxFTvbsmtKoVkwU4mza6w6XZfHIgvonNosea6DSclOsHCzeAvLjDiUdyOo4rzpMWaqhbA4mPYOrtUfjFQIKlM+E1NeAXFIMJQPC+5NGMrZmM+CN7MfLFRlSLbuVQChOzU2+JteZQWrABcSJCjOa1sRzqD4fQEsgqAD31t3bNA8DmDPwCZVBiMD0aBgQAAAAASUVORK5CYII=') + + } +}); +window.exitOnClose() + +window.xuanfuqiu.longClick(() => { + //长按结束 + ra.exit(); + window.close(); + console.log('断开 WebSocket'); + // ws.close(WebSocket.CODE_CLOSE_NORMAL, 'Closed by user'); + return true; +}); +setInterval(() => { }, 1000); + diff --git a/脚本/冒泡/modules/autojs-utils.js b/脚本/冒泡/modules/autojs-utils.js new file mode 100644 index 0000000..e69de29 diff --git a/脚本/冒泡/modules/mp-app.js b/脚本/冒泡/modules/mp-app.js new file mode 100644 index 0000000..ed699e2 --- /dev/null +++ b/脚本/冒泡/modules/mp-app.js @@ -0,0 +1,44 @@ +const _App = { + version: '1.0.3', +}; +let mp_app = { + version: _App.version, + userSaveFilePath: `/sdcard/脚本/冒泡社区/仙剑问情/`, + userSaveFile: `/sdcard/脚本/冒泡社区/仙剑问情/UserId.txt`, + // saveFilePath: `/sdcard/脚本/冒泡社区/仙剑问情/${_App.version}/`, + saveFilePath: `./assets/images/`, + isUpdate: false, + init() { + if (this.isUpdate) { + if (files.isDir(this.saveFilePath)) { + toastLog('无需更新资源') + return; + } + //活动包名 + files.ensureDir(this.saveFilePath + "/temp/") + + toast('正在更新资源') + files.ensureDir(this.saveFilePath) + const url = `https://cos.shhuanmeng.com/jiaoben/%E5%86%92%E6%B3%A1/${this.version}.tar`; + console.log('下载地址', url); + let res = http.get(url); + if (res.statusCode !== 200) { + toast("请求失败"); + return; + } + let fileData = `${this.saveFilePath}${this.version}.tar`; + console.log(fileData); + files.writeBytes(fileData, res.body.bytes()); + //tar -xvzf /sdcard/yourfile.tar.gz -C /sdcard/yourfolder/ + //shell + + var adbTar = `tar -xvzf ${fileData} -C ${this.saveFilePath}`; + console.log('解压文件夹', adbTar); + var result = shell(adbTar, true); + console.log(result); + toast('资源更新结束') + } + } +}; + +module.exports = mp_app; \ No newline at end of file diff --git a/脚本/冒泡/modules/mp-image.js b/脚本/冒泡/modules/mp-image.js new file mode 100644 index 0000000..2039265 --- /dev/null +++ b/脚本/冒泡/modules/mp-image.js @@ -0,0 +1,58 @@ +const mp_app = require("./mp-app") + + +let _mpImage = { + image: { + gameIcon: `mp/start/game_icon.png`, + ziDong: `mp/战斗/zidong.png`, + quxiaozidong: "mp/战斗/quxiaozidong.png", + zhandou: "mp/战斗/战斗中.png", + yijianfayan: "mp/战斗/zhandouz.png", + 玩家系统: "mp/领奖/玩家系统.png", + 白发魔女: "mp/帮派/白发魔女.png" + }, + _image: { + gameIcon: null, + ziDong: null, + quxiaozidong: null, + zhandou: null, + /** + * 一建发言 + */ + yijianfayan: null, + 玩家系统: null, + 白发魔女: null + } + +} +/** +* 给对象添加图片前缀 +* @param {Object} obj +*/ +function addImagePrefix(obj) { + for (let key in obj) { + if (typeof obj[key] === 'string') { + obj[key] = mp_app.saveFilePath + obj[key]; + } else if (typeof obj[key] === 'object') { + addImagePrefix(obj[key]); // 递归调用处理嵌套对象 + } + } +} +/** +* 给对象添加图片前缀 +* @param {Object} obj +*/ +function addImage(obj, obj1) { + for (let key in obj) { + if (typeof obj[key] === 'string') { + console.log('加载图片', obj[key]); + obj1[key] = images.read(obj[key]); + } else if (typeof obj[key] === 'object') { + addImage(obj[key], obj1[key]); // 递归调用处理嵌套对象 + } + } +} +addImagePrefix(_mpImage.image); +addImage(_mpImage.image, _mpImage._image); + +module.exports = _mpImage; \ No newline at end of file diff --git a/脚本/冒泡/modules/mp-info.js b/脚本/冒泡/modules/mp-info.js new file mode 100644 index 0000000..4942e25 --- /dev/null +++ b/脚本/冒泡/modules/mp-info.js @@ -0,0 +1,495 @@ +let mpImage = require('./mp-image'); +let mpApp = require('./mp-app'); +let mp_info = { + ra: null, + apiBaseUrl: "http://192.168.1.12:800/", + /** + * 检测次数间隔时间(大约每33毫秒检测一次,1秒30次) + */ + detectInterval: 1000 / 3, + detectTimer: null, + AutoFightInfo: { + isAutoFight: false, + thread: null, + zhandouCount: 0, + isZhanDou: false, + currentRounds: 0, + + fightTimer: null, + /** + * 自动战斗间隔时间(500毫秒) + */ + autoFightInterval: 500, + /** + * + */ + isFengShou: false, + isLaDao: false, + }, + User: { + status: -1, // 未知。1未战斗,2战斗中 + update: false, + ws: null, + thread: null, + autoSeekFightThread: null + }, + Task: { + autoSeekTask: false, + thread: null + }, + startTask() { + this.Task.autoSeekTask = true; + this.Task.thread = threads.start(() => this.autoTask()); + }, + getNeiZhiDaNao(url, mImage) { + let img = this.getCaptureScreen(); + var base = images.toBase64(img, format = "jpeg", quality = 50) + img.recycle(); + //判断当前位置区域 + var postData = { image: base, mImage: "" }; + if (mImage != null) { + postData.mImage = mImage; + } + var response = http.postJson(url, postData); + console.log(url, response.body.string(), response.body.json()); + if (response == null) { + return null; + } + var data = response.body.json(); + return data; + }, + autoTask() { + console.log('开启帮派自动任务', this.apiBaseUrl); + var panduanweizhi = this.apiBaseUrl + "api/Task/PanDuanWeiZhi"; + var taskList = this.apiBaseUrl + "api/Task/TaskList"; + var piPei = this.apiBaseUrl + "api/Task/PiPei"; + while (this.Task.autoSeekTask) { + var data = this.getNeiZhiDaNao(panduanweizhi, null); + if (data == null) { + sleep(5000) + break; + } + if (data.action == "click") { + console.log(data.data.x, data.data.y); + click(data.data.x, data.data.y) + //休眠500毫秒 + sleep(1000); + } + var data1 = this.getNeiZhiDaNao(taskList); + if (data1 == null) { + sleep(5000) + break; + } + if (data1.action == "ok") { + console.log('模拟按键OK'); + KeyCode("KEYCODE_DPAD_CENTER"); + sleep(1000); + KeyCode("KEYCODE_DPAD_CENTER"); + sleep(500); + KeyCode("KEYCODE_DPAD_CENTER"); + sleep(500); + + } + //再次点击帮派主管 + click(data.data.x, data.data.y) + this.完成帮派任务(data, piPei, taskList); + sleep(2000); + } + }, + 完成帮派任务(data, piPei, taskList) { + + //休眠500毫秒 + sleep(1000); + //判断是否在任务列表中 + var data1 = this.getNeiZhiDaNao(taskList, null); + if (data1 == null) { + sleep(5000) + return; + } + if (data1.action == "ok") { + //等于帮派列表 + console.log('模拟按键OK'); + KeyCode("KEYCODE_DPAD_CENTER"); + } + // + var 完成任务 = this.getNeiZhiDaNao(piPei, "detect_tigers/帮派/renwuweiwanc.png") + if (完成任务.action != null && 完成任务.action != "") { + KeyCode("KEYCODE_DPAD_CENTER"); + console.log('模拟按键OK'); + KeyCode("KEYCODE_DPAD_CENTER"); + sleep(1000); + KeyCode("KEYCODE_DPAD_CENTER"); + sleep(500); + KeyCode("KEYCODE_DPAD_CENTER"); + sleep(500); + console.log('任务完成'); + + return; + } + //任务未完成 + KeyCode("KEYCODE_DPAD_CENTER"); + sleep(100) + + var data1 = this.getNeiZhiDaNao(taskList, null); + if (data1 == null) { + KeyCode("KEYCODE_DPAD_CENTER"); + sleep(1000) + } + var 更换帮派任务 = this.getNeiZhiDaNao(piPei, "detect_tigers/帮派/genghuan.png") + + if (更换帮派任务.action == "ok") { + //任务未完成 + click(更换帮派任务.data.x, 更换帮派任务.data.y) + sleep(500) + var 确定更换帮派任务 = this.getNeiZhiDaNao(piPei, "detect_tigers/帮派/genghuanqueding.png") + if (确定更换帮派任务.action == "ok") { + KeyCode("KEYCODE_DPAD_CENTER"); + console.log('模拟按键OK'); + KeyCode("KEYCODE_DPAD_CENTER"); + sleep(1000); + KeyCode("KEYCODE_DPAD_CENTER"); + sleep(500); + } + } + }, + stopTask() { + this.Task.autoSeekTask = false; + this.Task.thread.interrupt(); + this.Task.thread = null; + }, + startUser(userId) { + let ws = new WebSocket('ws://192.168.1.12:800/ws?id=' + userId); + + ws + .on(WebSocket.EVENT_OPEN, (res, ws) => { + console.log('WebSocket 已连接'); + }) + .on(WebSocket.EVENT_MESSAGE, (message, ws) => { + console.log('接收到消息'); + + }) + .on(WebSocket.EVENT_TEXT, (text, ws) => { + console.info('接收到文本消息:'); + console.info(`text: ${text}`); + if (text != null && text != '') { + var objx = JSON.parse(text); + if (objx != null) { + if (objx.Action == "click") { + console.log('点击坐标'); + Tap(objx.Data.X, objx.Data.Y) + setTimeout(() => { + console.log('点击坐标284, 369'); + Tap(284, 369) + console.log('点击坐标173, 714'); + Tap(173, 714) + }, 500) + // sleep(50); + + + } + } + } + + }) + .on(WebSocket.EVENT_BYTES, (bytes, ws) => { + console.info('接收到字节数组消息:'); + console.info(`utf8: ${bytes.utf8()}`); + // console.info(`base64: ${bytes.base64()}`); + // console.info(`md5: ${bytes.md5()}`); + // console.info(`hex: ${bytes.hex()}`); + }) + .on(WebSocket.EVENT_CLOSING, (code, reason, ws) => { + console.log('WebSocket 关闭中'); + }) + .on(WebSocket.EVENT_CLOSED, (code, reason, ws) => { + console.log('WebSocket 已关闭'); + console.log(`code: ${code}`); + if (reason) console.log(`reason: ${reason}`); + }) + .on(WebSocket.EVENT_FAILURE, (err, res, ws) => { + console.error('WebSocket 连接失败'); + console.error(err); + }); + this.User.update = true; + this.User.ws = ws; + var that = this; + this.User.thread = threads.start(function () { + while (that.User.update || true) { + // + try { + let img2 = captureScreen(); + let _bytes = images.toBytes(img2, format = "jpeg", quality = 40) + let javaArr = java.lang.reflect.Array + .newInstance(java.lang.Byte.TYPE, _bytes.length + 1); + javaArr[0] = 0x02; + for (let index = 0; index < _bytes.length; index++) { + javaArr[index + 1] = _bytes[index]; + } + ws.send(new okio.ByteString(javaArr)); + } catch (error) { + console.log(error); + + } + + sleep(that.detectInterval); + } + }); + + }, + //自动找怪 + startAutoSeekFight() { + console.log('启动'); + if (this.User.update && this.User.autoSeekFightThread == null) { + var that = this; + var ws = this.User.ws; + this.User.autoSeekFightThread = threads.start(function () { + while (that.User.update) { + console.log('开始自动找怪'); + // + try { + if (that.AutoFightInfo.isZhanDou) { + console.log('自动战斗中,结束'); + sleep(2000); + continue; + } + console.log('开始发送数据'); + let img2 = that.getCaptureScreen(); + let _bytes = images.toBytes(img2, format = "jpeg", quality = 50) + let javaArr = java.lang.reflect.Array + .newInstance(java.lang.Byte.TYPE, _bytes.length + 1); + javaArr[0] = 0x04; + for (let index = 0; index < _bytes.length; index++) { + javaArr[index + 1] = _bytes[index]; + } + ws.send(new okio.ByteString(javaArr)); + } catch (error) { + console.log('出现问题', error); + } + sleep(3000); + } + + + + }); + } + }, + //自动找怪 + stopAutoSeekFight() { + if (this.User.autoSeekFightThread != null) { + this.User.autoSeekFightThread.interrupt(); + this.User.autoSeekFightThread = null; + } + }, + stopUser() { + // thread + if (this.User.thread != null) { + this.User.update = false; + this.User.ws.close(WebSocket.CODE_CLOSE_NORMAL, 'Closed by user'); + this.User.thread.interrupt(); + this.User.thread = null; + } + }, + /** + * 启动自动打怪 + */ + startAutoFight(ra) { + this.ra = ra; + if (this.AutoFightInfo.isAutoFight) { + toastLog(`自动打怪已经运行中`); + return false; + } + toastLog(`开始自动打怪`); + this.AutoFightInfo.isAutoFight = true; + var that = this; + + this.AutoFightInfo.thread = threads.start(function () { + + while (that.AutoFightInfo.isAutoFight) { + + try { + // let file = mpApp.userSaveFilePath + "autoFight.png"; + let img1 = captureScreen(); + var img = images.copy(img1); + if (img != null) { + that.autoFight(img); + img.recycle(); + } + } catch (error) { + console.log(error); + } + sleep(0.5 * 1000); // 保持线程运行,可以根据需求调整 + } + // clearInterval(that.AutoFightInfo.fightTimer); + }); + + toastLog(`自动打怪已经开始`); + return true; + }, + stopAutoFight() { + if (this.AutoFightInfo.isAutoFight) { + // 停止定时器 + this.AutoFightInfo.isAutoFight = false; + // clearInterval(this.AutoFightInfo.fightTimer); + // clearInterval(this.detectTimer); + this.AutoFightInfo.thread.interrupt(); + this.AutoFightInfo.thread = null; + toastLog(`停止自动打怪`); + + } + }, + fight() { + click(293, 292); + sleep(20); + click(77, 816); + sleep(20); + click(270, 435); + sleep(20); + click(77, 816); + }, + fight1() { + click(250, 374); + sleep(50); + click(318, 342); + sleep(50); + click(153, 288); + sleep(20); + click(77, 816); + sleep(20); + click(270, 435); + sleep(20); + click(77, 816); + }, + fight2() { + click(275, 420); + sleep(50); + click(290, 387); + sleep(50); + click(281, 785); + sleep(50); + click(153, 288); + sleep(20); + click(77, 816); + sleep(20); + click(270, 435); + sleep(20); + click(77, 816); + }, + /** + * 自动打怪逻辑 + */ + autoFight(img) { + // console.log('开始自动打怪'); + + var isZhanDou = findImage(img, mpImage._image.yijianfayan, { + threshold: 0.5 + }); + let zhandou = mpImage._image.zhandou; + var p = findImage(img, zhandou, { + threshold: 0.5 + }); + if (p != null) { + isZhanDou = p; + } + // 判断是否在战斗中 + if (isZhanDou == null) { + if (this.AutoFightInfo.isZhanDou) { + // 战斗刚结束 + sleep(2000); + this.AutoFightInfo.isZhanDou = false; + console.log(`本次共战斗${this.AutoFightInfo.currentRounds}回合`); + if (this.AutoFightInfo.currentRounds > 3) { + sleep(50); + KeyCode("KEYCODE_2"); + sleep(10); + KeyCode("KEYCODE_2"); + sleep(10); + KeyCode("KEYCODE_2"); + sleep(10); + KeyCode("KEYCODE_2"); + } + this.AutoFightInfo.currentRounds = 0; + } + return; + } else if (isZhanDou != null && !this.AutoFightInfo.isZhanDou) { + this.AutoFightInfo.isZhanDou = true; + this.AutoFightInfo.zhandouCount++; + } + if (isZhanDou != null) { + // console.log('战斗中'); + } + // console.log(p); + if (p != null) { + console.log(p.x, p.y); + if (this.AutoFightInfo.isFengShou && (this.AutoFightInfo.currentRounds == 0 || this.AutoFightInfo.currentRounds == 2)) { + this.fight1(); + } else if (this.AutoFightInfo.isLaDao && (this.AutoFightInfo.currentRounds == 0 || this.AutoFightInfo.currentRounds == 3 || this.AutoFightInfo.currentRounds == 6)) { + this.fight2(); + } else { + this.fight(); + } + // 回合数+1 + this.AutoFightInfo.currentRounds++; + } + }, + reaw() { + var thread = threads.start(function () { + KeyCode("KEYCODE_9"); + sleep(120); + var img = captureScreen(); + var wanjia1xit1 = findImage(img, mpImage._image.玩家系统, { + threshold: 0.5 + }); + var mallList = ocr.detect([127, 252, 284, 486]); + console.log(mallList); + if (mallList != null) { + for (let index = 0; index < mallList.length; index++) { + let element = mallList[index]; + console.log(element); + if (element.label.indexOf("玩家") > -1) { + console.log('玩家系统坐标', element.bounds); + click(element.bounds); + break; + } + } + } + sleep(200); + KeyCode("KEYCODE_DPAD_DOWN"); + sleep(200); + KeyCode("KEYCODE_DPAD_DOWN"); + sleep(200); + KeyCode("KEYCODE_DPAD_DOWN"); + sleep(200); + KeyCode("KEYCODE_DPAD_CENTER"); + sleep(200); + KeyCode("KEYCODE_DPAD_CENTER"); + sleep(200); + KeyCode("KEYCODE_DPAD_CENTER"); + }); + + thread.waitFor(); + }, + /** + * 获取屏幕图片 + * @returns 屏幕截图 + */ + getCaptureScreen() { + try { + let img1 = captureScreen(); + var img = images.copy(img1); + return img; + } catch (error) { + return this.getCaptureScreen(); + } + }, + 帮派任务() { + var that = this; + threads.start(function () { + + var image = that.getCaptureScreen(); + + }); + }, + +}; + +module.exports = mp_info; diff --git a/脚本/冒泡/modules/mp-start.js b/脚本/冒泡/modules/mp-start.js new file mode 100644 index 0000000..d3451f8 --- /dev/null +++ b/脚本/冒泡/modules/mp-start.js @@ -0,0 +1,56 @@ +let mpImage = require('./mp-image') +let mpApp = require('./mp-app'); + +module.exports = { + greetingPrefix: 'Hello', + test() { + /* e.g. "Hello, AutoJs6 6.4.1" */ + toastLog(`${this.greetingPrefix}, ${context.getString(R.strings.app_name)} ${app.autojs.versionName}`); + }, + start() { + // + var result1 = shell("dumpsys activity activities | grep mResumedActivity", true); + console.log(result1.result); + + if (result1.result.indexOf("com.mrpoid.app.EmulatorActivity") > -1) { + //在游戏中 + toastLog(`已经在在游戏中`); + return; + } + // var result1 = shell("dumpsys activity activities | grep mResumedActivity", true); + if (result1.result.indexOf("com.skymobi.plugin.api.activity.ShardActivity") > -1) { + //在冒泡社区中 + toastLog(`已经在冒泡社区界面`); + return; + } + var a = auto.rootInActiveWindow; + let currrPackageName = a.packageName(); + if (currrPackageName == "com.skymobi.moposns") { + toastLog(`已经在冒泡社区界面`) + } else { + launchApp("冒泡社区"); + while (true) { + let currrPackageName = a.packageName(); + if (currrPackageName == "com.skymobi.moposns") { + toastLog(`已经在冒泡社区界面`) + break; + } + sleep(1000); + } + } + var img = captureScreen(); + + // img.saveTo(mpApp.saveFilePath + "/temp/captureScreen.png") + // console.log(mpImage.image.gameIcon); + + // var templ = images.read(mpImage.image.gameIcon); + // var p = findImage(img, templ); + // if (p) { + // toastLog("找到啦:" + p); + // } else { + // toastLog("没找到"); + // } + + // app.viewFile(mpImage.image.gameIcon); + } +}; \ No newline at end of file diff --git a/脚本/冒泡/package.json b/脚本/冒泡/package.json new file mode 100644 index 0000000..d5477d8 --- /dev/null +++ b/脚本/冒泡/package.json @@ -0,0 +1,16 @@ +{ + "name": "冒泡-仙剑问情", + "version": "1.0.0", + "description": "project-description", + "main": "main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "dts": "npm i @sm003/autojs6-dts" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@sm003/autojs6-dts": "^2.0.0" + } +} diff --git a/脚本/冒泡/project.json b/脚本/冒泡/project.json new file mode 100644 index 0000000..87b26bf --- /dev/null +++ b/脚本/冒泡/project.json @@ -0,0 +1,22 @@ +{ + "assets": [], + "encryptLevel": 0, + "useFeatures": [], + "launchConfig": { + "displaySplash": true, + "hideLogs": false, + "splashText": "Powered by AutoJs6", + "stableMode": false + }, + "main": "main.js", + "name": "%ProjectName%", + "optimization": { + "removeOpenCv": false, + "unusedResources": false + }, + "packageName": "org.example.my_project", + "scripts": {}, + "versionCode": 1, + "versionName": "1.0.0", + "ignore": ["build", "node_modules", "out"] + } \ No newline at end of file diff --git a/脚本/冒泡/re.md b/脚本/冒泡/re.md new file mode 100644 index 0000000..595755a --- /dev/null +++ b/脚本/冒泡/re.md @@ -0,0 +1,58 @@ +```js +//这个是Auto.js图标的地址 +var url = "https://www.autojs.org/assets/uploads/profile/3-profileavatar.png"; +var logo = images.load(url); +//保存到路径/sdcard/auto.js.png +images.save(logo, "/sdcard/auto.js.png"); + + + + +var url = "http://www.autojs.org/assets/uploads/profile/3-profileavatar.png"; +var res = http.get(url); +if(res.statusCode !== 200){ + toast("请求失败"); +} +files.writeBytes("/sdcard/1.png", res.body.bytes()); +toast("下载成功"); +app.viewFile("/sdcard/1.png"); + + + + + +var path = "/sdcard/脚本/test.js"; +if(!files.exists(path)){ + toast("脚本文件不存在: " + path); + exit(); +} +var window = floaty.window( + +