|
发表于 2014-3-16 19:23:09
|
显示全部楼层
江西省南昌市
借个位子,我只是为了截图方便。。。。
[e]
.版本 2
.支持库 iext
.支持库 EThread
.支持库 spec
.程序集 窗口程序集1
.程序集变量 全局插件, 大漠接口, , , 使用模块的大漠接口类型
.子程序 __启动窗口1_创建完毕, , , 在窗口创建的时候运行下面的代码
.局部变量 游戏句柄, 文本型
.局部变量 游戏句柄数组, 文本型, , "0"
.局部变量 主句柄, 文本型
.局部变量 主句柄数组, 文本型, , "0"
.局部变量 窗口标题, 文本型
.局部变量 i, 整数型
.局部变量 角色标题, 文本型
.局部变量 索引, 整数型
_启动窗口.销毁 ()
i = 0
窗口标题 = “”
游戏句柄 = “”
角色标题 = “”
索引 = 0
重定义数组 (游戏句柄数组, 假, 0) ' 重新定义数组
置大漠插件路径 (取运行目录 () + “\data\dm.dll”) ' 大漠插件路径
全局插件.创建大漠对象 () ' 创建大漠插件
全局插件.SetPath (取运行目录 () + “\data”) ' 定义默认路径
主句柄 = 全局插件.EnumWindow (0, “记事本”, “Notepad”, 1 + 2 + 4 + 16) ' 枚举句柄(鉴于记事本有2重窗口,输入窗口的句柄不一样,所以按照这个方法取输入的句柄)
主句柄数组 = 分割文本 (主句柄, “,”, ) ' 分割文本,将所有句柄写入到数组
.计次循环首 (取数组成员数 (主句柄数组), i)
游戏句柄 = 全局插件.EnumWindow (到数值 (主句柄数组 ), “”, “Edit”, 2 + 4 + 16) ' 枚举句柄
加入成员 (游戏句柄数组, 游戏句柄)
.计次循环尾 ()
' 一般的游戏只有一层窗口,一层窗口只需要取一次句柄就OK
.如果真 (取数组成员数 (游戏句柄数组) > 0) ' 判断有没有找到句柄
重定义数组 (游戏线程, 假, 取数组成员数 (游戏句柄数组)) ' 重新定义全局线程数组的数组数量跟找到的句柄变量数量一样
.计次循环首 (取数组成员数 (游戏句柄数组), i) ' 此个循环是把找到的句柄写入到列表框里面
窗口标题 = 全局插件.GetWindowTitle (到数值 (主句柄数组 )) ' 读取窗口的标题
角色标题 = 取文本左边 (窗口标题, 取文本长度 (窗口标题) - 8) ' 此处是读取窗口的名称,例如“测试文本1 - 记事本”就减去“ - 记事本”,这个只针对游戏窗口可以显示角色名称的游戏!
索引 = 超级列表框1.插入表项 (, , , , , ) ' 插入空白的表项
超级列表框1.置标题 (索引, 0, 角色标题) ' 添加角色标题
超级列表框1.置标题 (索引, 1, 游戏句柄数组 ) ' 添加句柄
超级列表框1.置标题 (索引, 2, “等待启动”) ' 添加状态
.计次循环尾 ()
.如果真结束
.子程序 _按钮启动选中_被单击, , , 启动选中的句柄
.局部变量 当前列表, 整数型
当前列表 = 超级列表框1.现行选中项 ' 保存选中的表项
.如果 (当前列表 ≥ 0) ' 判断有没有选中表项
.如果 (超级列表框1.取标题 (当前列表, 2) = “等待启动”) ' 判断启动状态
超级列表框1.置标题 (当前列表, 2, “已启动”) ' 写表项状态内容为已启动
游戏线程 [当前列表 + 1].表项索引 = 当前列表 + 1 ' 把表项索引添加到全局变量
游戏线程 [当前列表 + 1].句柄 = 到数值 (超级列表框1.取标题 (当前列表, 1)) ' 把句柄添加到全局变量
启动线程 (&脚本线程, 游戏线程 [当前列表 + 1].表项索引, 游戏线程 [当前列表 + 1].线程) ' 启动线程
.否则
信息框 (“角色已经启动!”, #警告图标, “注意!!”) ' 如果状态为已启动将不启动弹出提示框
.如果结束
.否则
信息框 (“请选择角色运行!”, #警告图标, “注意!!”) ' 如果没有选中表项将弹出提示窗口
.如果结束
.子程序 _按钮全部启动_被单击, , , 启动全部句柄
.局部变量 i, 整数型
i = 0
.计次循环首 (超级列表框1.取表项数 (), i)
.如果真 (超级列表框1.取标题 (i - 1, 2) = “等待启动”) ' 判断启动状态
超级列表框1.置标题 (i - 1, 2, “已启动”) ' 写表项状态内容为已启动
游戏线程 .表项索引 = i ' 把表项索引添加到全局变量
游戏线程 .句柄 = 到数值 (超级列表框1.取标题 (i - 1, 1)) ' 把句柄添加到全局变量
启动线程 (&脚本线程, 游戏线程 .表项索引, 游戏线程 .线程) ' 启动线程
.如果真结束
.计次循环尾 ()
.子程序 脚本线程, , , 脚本线程
.参数 当前线程, 整数型
.局部变量 N, 句柄线程型
.局部变量 窗口绑定, 整数型
游戏线程 [当前线程].插件.创建大漠对象 () ' 创建对象
N = 游戏线程 [当前线程] ' 变量赋值
COM库初始化 () ' 此语句每个线程只运行一次
N.插件.SetPath (取运行目录 () + “\data”) ' 定义默认路径,字库,图片等需要调用的文件都放在这个目录下
' N.插件.SetDictPwd (“luo4686”) ' 此处可以增加字库密码,字库密码需要在加载字库之前写入
' 延时 (1000) ' 加延时
' N.插件.SetDict (0, “dm_fpg.txt”) ' 加载字库
' 延时 (2000) ' 加延时
' N.插件.MoveWindow (N.句柄, 0, 0) ' 移动窗口的位置(这里是记事本的输入窗口的句柄,所以不起作用,只针对单窗口句柄游戏,如果游戏有2个窗口可以把主窗口句柄加入到全局变量里面)
' 延时 (200)
窗口绑定 = N.插件.BindWindow (N.句柄, “dx2”, “windows”, “windows”, 0) ' 绑定窗口
延时 (2000)
' N.插件.SetWindowState (N.句柄, 10) ' 设置窗口状态,可以锁定窗口不给操作
' 延时 (500)
调试输出 (窗口绑定, N.句柄)
.判断循环首 (N.句柄 > 0 且 句柄是否有效 (N.句柄)) ' 这里是判断窗口是否关闭了
' 这里面是脚本运行的内容
输入文字 (N, 10) ' 每个子程序必须递交变量N
' 跳出循环 () ' 此为调试模式,正常脚本可以设置一直循序运行
.判断循环尾 ()
COM库取消 () ' 每次线程结束后运行
标签_线程交互.调用反馈事件 (1, 当前线程, 真) ' 把线程递交给主线程处理,防止多线程出错
.子程序 输入文字, , , 线程内的子程序
.参数 N, 句柄线程型, , 线程递交的变量,每个子程序都必须要递交这个变量
.参数 次数, 整数型
N.插件.MoveTo (10, 10) ' 鼠标移动
延时 (200)
N.插件.LeftClick () ' 鼠标左键单击
延时 (200)
.计次循环首 (次数, )
N.插件.KeyPress (#L键) ' 按下按键
延时 (50)
N.插件.KeyPress (#O键) ' 按下按键
延时 (50)
N.插件.KeyPress (#V键) ' 按下按键
延时 (50)
N.插件.KeyPress (#E键) ' 按下按键
延时 (50)
.计次循环尾 ()
.子程序 _标签_线程交互_反馈事件, 整数型
.参数 请求类型, 整数型
.参数 请求代码, 整数型
.如果真 (请求类型 = 1)
' 游戏线程 [请求代码].插件.SetWindowState (游戏线程 [请求代码].句柄, 11) ' 设置窗口状态,在结束线程的时候把游戏窗口设置为可操作
游戏线程 [请求代码].插件.UnBindWindow () ' 解绑窗口
游戏线程 [请求代码].句柄 = 0 ' 复位窗口句柄
强制结束线程 (游戏线程 [请求代码].线程) ' 结束线程
关闭句柄 (游戏线程 [请求代码].线程) ' 关闭线程句柄
游戏线程 [请求代码].线程 = 0 ' 复位线程句柄
游戏线程 [请求代码].插件.销毁大漠对象 () ' 销毁大漠对象
超级列表框1.置标题 (游戏线程 [请求代码].表项索引 - 1, 2, “等待启动”) ' 设置游戏列表状态
.如果真结束
.子程序 _按钮停止选中_被单击
.局部变量 现行选中项, 整数型
现行选中项 = 超级列表框1.现行选中项 + 1
.如果 (现行选中项 > 0) ' 结束指定游戏线程
_标签_线程交互_反馈事件 (1, 超级列表框1.现行选中项 + 1)
.否则
信息框 (“请选择要停止运行的角色!”, #警告图标, “注意!!”) ' 如果没有选中表项将弹出提示窗口
.如果结束
.子程序 _按钮全部停止_被单击
.局部变量 i, 整数型
i = 0
.计次循环首 (超级列表框1.取表项数 (), i) ' 取表项游戏句柄数量,循环结束
.如果真 (超级列表框1.取标题 (i - 1, 2) = “已启动”)
_标签_线程交互_反馈事件 (1, i)
.如果真结束
.计次循环尾 ()
.子程序 _关于_被选择
载入 (窗口1, _启动窗口1, 真)
[/e] |
评分
-
查看全部评分
|