多开芯快速入门

⚠️多开芯使用lua脚本语言开发,所以开发人员需要掌握基本的lua语言

掌握lua脚本语言和多开芯开发接口

  • 了解lua脚本语言的基础,掌握lua的基本使用
  • 了解多开芯的脚本结构
  • 了解多开芯的开发接口

脚本目录结构

xxx脚本/
├── res/
│   ├── 关闭按钮.bmp //关闭按钮的模板图
│   └── 开始按钮.bmp //关闭按钮的模板图
│   └── res.txt         //资源项的配置文件
├── main.lua                 //脚本逻辑
└── logo.png                 //脚本的logo
└── config.json         //脚本的配置项

UI元素配置

⚠️脚本使用的所有资源都放置于脚本目录的res目录中,配置描述统一设置在res.txt中

⚠️负责配置目标窗口指定的图片目标/文字目标/颜色目标

⚠️为了满足开发一次逻辑代码后即可运行各种平台设备的需求,图片模板资源统一设置在脚本目录中的res目录下的res.txt文件中。 每一个任务脚本的资源目录中都要有名为res.txt的配置文件


元素名称=查找范围(,偏移x,偏移y)>图片名|颜色值,找字的关键字>偏色|字典下标>相似度|颜色数量>位置|找图|模板|找色|字库|识字|找字

位置项=456,555,477,581>0>0>0>位置
大漠找图项=49,132,497,504>app.bmp>202020>0.8>找图
opencv找图=49,132,497,504>app.bmp>0>0.8>模板
大漠多点找色项=246,863,288,881>2980fe-202020>8|32|d4d4d4-202020,17|35|d4d4d4-202020>0.8>找色
找颜色数量=246,863,288,881>2980fe-202020>500>0.8>找色
大漠找字项=49,132,497,504>3a3b3d-202020,内|容>1>0.8>找字
OCR找字项=49,132,497,504>内|容>0>0.8>找字
大漠字库项=0,0,0,0>0>1>0.8>字库
大漠识字项=49,132,497,504>3a3b3d-202020>1>0.8>识字

脚本可以直接获取的变量

--输出多开芯主程序的路径
logn(gpath)

--输出窗口id
logn(gid)

--输出窗口标题
logn(gtitle)

--输出本脚本名
logn(gscript)

--输出脚本线程的id
logn(tostirng(gtid))

日志输出方法

logn("灰色调试信息")
logd("蓝色调试信息")
loge("红色调试信息")

系统方法

--休眠1000毫秒
sleep(1000)

--截图整个桌面到d:/1.jpg 保存质量为80 范围是0-100
snap("d:/1.jpg", 80)

--截图10,10,100,100这个范围的图片
snap(10,10,100,100, "d:/1.jpg", 80)

--重新执行整个脚本
gostart()

--返回窗口是否卡死 默认3分钟如果窗口数据没有变化 认为卡死
local ret = iswnddead()

--使用一个全局的锁 可用于避免多窗口同时进行的操作 加锁后 必须解锁 最好在脚本开头直接调用unlock()
lock("请求任务")

--解锁 传空 解除所有锁
unlock("请求任务")

文字识别

⚠️文字识别支持大漠的文字识别和paddleocr文字识别

⚠️paddleocr支持6种语言,中文,繁体中文,英文,日语,韩语,俄语

--识别姓名位置的文字 如果该项的资源项配置成了识字,并且设置了大漠字典下标 就使用大漠的识字方法
--第二个参数支持 ch cht en japan korean cyrillic 6种语言
--返回所有识别出的文字 多个文字用|分隔
ocr("姓名位置","ch")

--识别10,10,100,100这个位置的文字 第二个参数同上
ocr(10,10,100,100,"ch")

图色方法

⚠️该方法负责查找目标窗口中资源项中的配置项

local ret, x, y = find("开始按钮")
logn("查找结果: "..ret.." x: "..tostring(x)..",y: "..tostring(y))
--在指定区域内查找"开始按钮"资源项 有的场景下目标的位置不是固定的,使用此函数
ret, x, y = find("开始按钮",10,10,100,100) 
logn("查找结果: "..ret.." x: "..tostring(x)..",y: "..tostring(y))
--如果场景中有多个开始按钮,可以一次全部查找返回,返回发现位置的次数和具体位置。
--返回 3 和 "1,1|100,342|30,23" 3个位置
local size, result = finds("开始按钮") 
logn("查找结果数: "..tostring(size).." 内容: "..result)
local ret, x, y = findword("标题位置", "多开芯", 0.8)
local ret, x, y = findword(10,10,100,100, "标题位置", 0.8)
--需要制作字库,然后指定字库下标和颜色后找字 使用大漠的找字方法
local ret, x, y = findword(10,10,100,100, "标题位置", 0.8, 1, "32aaff-202020")
--返回10,10,100,100区域内 指定颜色"32aaff-202020" 的数量
local colorcount = findcolor(10,10,100,100,"32aaff-202020")

点击方法

--手机的点击和电脑端左键点击
leftdown()
leftup()
leftclick()
leftclick("开始位置")
leftclick(1,1)
--电脑端右键按钮
rightdown()
rightup()
rightclick()
--在某个位置中键滚轮上下 30代表滚轮一次距离
wheeldown(1,1,30)
wheelup(1,1,30)
--移动到某个坐标
moveto(1,1)

--相对移动
mover(1,1) 

--滑动 从左边移动到右边 比较慢
swipe("左边位置", "右边位置")

--滑动 从1,1 移动到100,1
swipe(1,1,100,1)

--滑动 从1,1 移动到100,1 每次移动50像素 每次移动后休眠30秒 会自动浮动
swipe(1,1,100,1,30,50)

键盘方法


--键盘按下某个虚拟按键
keydown(13)

--键盘抬起某个虚拟按键
keyup(13)

--粘贴输入 主板机和模拟器可用 支持中文
PasteText("输入内容")

--大漠模拟输入 使用大漠插件模拟输入 模拟器器和其他窗口可用
keypressstr(输入内容)

--输入英文 不支持中文
sendstring("abc123")

快捷键


--执行adb命令
adb("shell input keyevent KEYCODE_HOME")

--回到桌面
home()

--返回
back()

--菜单
menu()

--音量提高
volumeup()

--音量降低
volumedown()

--删除键
del()

--回车键
enter()

--全选
ctrla()

--剪切
ctrlx()

--复制
ctrlc()

--粘贴
ctrlv()

网络接口

--get请求 返回字符串
local ret = httpget("www.xxxxx.com/login","name=admin&pwd=123456",10000)

--post请求 query方式提交 header需要先转换成json字符串
local headerParam = {
  ["X-Signature"] = "123456"
}
local headerJsonString = json.encode(headers)
ret = httppost("www.xxxxx.com/login","name=admin&pwd=123456",headerJsonString,10000)

--post请求 json方式提交 header需要先转换成json字符串
local param = {
  name = "admin",
  pwd = "123456"
}
local paramJsonString = json.encode(param)

local headerParam = {
  ["X-Signature"] = "123456"
}
local headerJsonString = json.encode(headers)
ret = httppost("www.xxxxx.com/login",dataParam,headerJsonString,10000)

模拟器窗口操作

--启动id1的模拟器,执行脚本"采集分数"
startwnd("1", "采集分数")

--关闭id1的模拟器
stopwnd("1")

--启动id1的模拟器,命名为 原本窗口标题_采集结束
renamewnd("1", gtitle.."_采集结束")

--重启当前模拟器
restartwnd()

--关掉本本模拟器 启动id2的模拟器
switchwnd(gid, "2")

--关掉本模拟器 根据id排序后,启动下一个模拟器 执行当前的脚本
switchnext(gscript)

文件操作

--读取d:/1.txt 返回文件内容
local ret = readfile("d:/1.txt")

--在d:/1.txt的结尾追加2
writefile("d:/1.txt", "2")

--删除d:/1
deletedir("d:/1")

--创建d:/1
createdir("d:/1")

执行参数配置

--获取脚本配置中的当前命令的值
local 命令 = getui("当前命令")

--设置当前命令配置的值为保存本地
setui("当前命令", "保存本地")

开发教程和资源

官网:www.dkxwl.com

B 站:

github(开源脚本):

注意事项

本开发文档中的绝大多数函数示例可以直接复制粘贴使用,但还请仔细阅读注意事项和属性说明。

作者:admin  创建时间:2025-12-05 10:09
最后编辑:admin  更新时间:2025-12-05 11:28