|
本帖最后由 zhoujinliang 于 2011-7-24 18:50 编辑
声明(其中一部分源码是学习依人老的!感谢依人老大的共享!!)
本人写了一个小辅助才写了一小部分!剩下不知道怎么写了!!
还有几个小问题!(就是最小化托盘图标时鼠标放到上面没有提示窗口名字)请高手指点!
谁有兴趣愿意一起写,愿意提供基址可以一起写!
QQ:285001507
285001507@qq.com
------------------------------------------------------------------------------
在共享一个传说中脚本录制回放的例子
哪位高能将二合一最好了!!!
版本 2
.支持库 spec
.支持库 shell
.程序集 窗口程序集
.程序集变量 句柄, 整数型
.程序集变量 进程, 整数型
.程序集变量 人物基址, 整数型
.程序集变量 总hp, 整数型
.程序集变量 hp, 整数型
.程序集变量 总mp, 整数型
.程序集变量 mp, 整数型
.程序集变量 ID, 字节集
.程序集变量 正常, 字节集
.程序集变量 死亡, 字节集
.程序集变量 等级, 字节集
.子程序 __启动窗口_创建完毕
加载易皮肤 (10) ' 9 10 27 28 30 31
句柄 = 窗口取句柄 (“sro_client.exe”, , )
进程 = 窗口取进程ID (句柄) ' 读取游戏进程
人物基址 = 内存读整数 (进程, 15851220, ) ' 15851220是16进制00F1DED4转换得来
ID = 内存读字节集 (进程, 人物基址 + 276, 30) ' 276是16进制114转换得来,30为名字长度
_启动窗口.标题 = 转换Unicode转Ansi (ID)
.子程序 __启动窗口_可否被关闭, 逻辑型
.如果 (信息框 (“确认要关闭吗?”, 36, “提示!”) = #是钮)
返回 (真)
.否则
返回 (假)
.如果结束
.子程序 _时钟1_周期事件
hp = 内存读整数 (进程, 人物基址 + 1112)
总hp = 内存读整数 (进程, 人物基址 + 1120)
mp = 内存读整数 (进程, 人物基址 + 1116)
总mp = 内存读整数 (进程, 人物基址 + 1124)
ID = 内存读字节集 (进程, 人物基址 + 276, 30) ' 276是16进制114转换得来,30为名字长度
等级 = 内存读字节集 (进程, 人物基址 + 2164, 50)
标签_HP.标题 = “ H P:” + 到文本 (hp) + “/” + 到文本 (总hp)
标签_MP.标题 = “ M P:” + 到文本 (mp) + “/” + 到文本 (总mp)
标签_名字.标题 = “ I D:” + 到文本 (ID)
标签_名字.标题 = “ I D:” + 转换Unicode转Ansi (ID)
标签1.标题 = “人物等级:” + 到文本 (等级)
.如果 (hp > 0) ' 判读语句判断角色状态
标签_角色状态.标题 = “角色状态:正常”
.否则
.如果 (hp = 0)
标签_角色状态.标题 = “角色状态:死亡”
.否则
.如果结束
.如果 (mp = 0)
标签_角色状态.标题 = “角色状态:MP耗尽”
.否则
.如果结束
.如果结束
.子程序 _时钟4_周期事件
' 模拟按键 (句柄, 44, )
按键消息 (句柄, 44)
延迟 (800)
时钟4.时钟周期 = 0
.子程序 _按钮8_被单击, , , 打开存放截图的文件夹
执行 (#打开文件, “F:\游戏\丝路传说\ScreenShot”, , , )
.子程序 _选择框4_被单击
.如果 (选择框4.选中 = 真 且 hp = 0)
时钟5.时钟周期 = 1000
信息框 (“你的游戏挂了!!”, #警告图标, )
播放音乐 (#声音2, 真)
.否则
.如果结束
.如果 (选择框4.选中 = 假 且 hp ≠ 0)
时钟5.时钟周期 = 0
.否则
.如果结束
.子程序 _按钮9_被单击
停止播放 () ' 停止播放音乐提醒
.子程序 _时钟5_周期事件
.如果真 (组合框1.现行选中项 = 0)
按键消息 (句柄, #F1键)
.如果真结束
.如果真 (组合框1.现行选中项 = 1)
按键消息 (句柄, #F2键)
.如果真结束
.如果真 (组合框1.现行选中项 = 2)
按键消息 (句柄, #F3键)
.如果真结束
.如果真 (组合框1.现行选中项 = 3)
按键消息 (句柄, #F4键)
.如果真结束
.如果真 (组合框2.现行选中项 = 0)
按键消息 (句柄, #键1)
.如果真结束
.如果真 (组合框2.现行选中项 = 1)
按键消息 (句柄, #键2)
.如果真结束
.如果真 (组合框2.现行选中项 = 2)
按键消息 (句柄, #键3)
.如果真结束
.如果真 (组合框2.现行选中项 = 3)
按键消息 (句柄, #键4)
.如果真结束
.如果真 (组合框2.现行选中项 = 4)
按键消息 (句柄, #键5)
.如果真结束
.如果真 (组合框2.现行选中项 = 5)
按键消息 (句柄, #键6)
.如果真结束
.如果真 (组合框2.现行选中项 = 6)
按键消息 (句柄, #键7)
.如果真结束
.如果真 (组合框2.现行选中项 = 7)
按键消息 (句柄, #键8)
.如果真结束
.如果真 (组合框2.现行选中项 = 8)
按键消息 (句柄, #键9)
.如果真结束
.如果真 (组合框2.现行选中项 = 9)
按键消息 (句柄, #键0)
.如果真结束
延迟 (500)
时钟5.时钟周期 = 0
.子程序 _选择框5_被单击
.如果 (选择框5.选中 = 真 且 hp = 0)
信息框 (“你的游戏挂了!系统即将关闭!”, #警告图标, )
.否则
关闭系统 (#关机, )
.如果结束
.子程序 _按钮5_被单击
_启动窗口.可视 = 假
置托盘图标 (#图片1, )
.子程序 __启动窗口_托盘事件
.参数 操作类型, 整数型
.判断开始 (操作类型 = 1)
_启动窗口.可视 = 真
.默认
.判断结束
.子程序 _按钮3_被单击
寻找窗口 (0, “SRO_Client”) ' SRO_Client 这个是窗口名称
.如果真 (隐藏窗口 (寻找窗口 (0, “SRO_Client”), 0) ≠ 0)
.如果真结束
按钮3.可视 = 假
按钮4.可视 = 真
.子程序 _按钮4_被单击
寻找窗口 (0, “SRO_Client”) ' SRO_Client 这个是窗口名称
.如果真 (隐藏窗口 (寻找窗口 (0, “SRO_Client”), 9) ≠ 0)
.如果真结束
按钮3.可视 = 真
按钮4.可视 = 假
.子程序 _按钮6_被单击
.局部变量 窗口是否打开, 整数型, 静态
.' 如果 (窗口是否打开 = 1)
' 载入 (窗口1, , 真)
' 窗口1.左边 = 111
' 窗口1.顶边 = 222
.否则
.如果结束
.子程序 _选择夹1_被单击
.子程序 _时钟2_周期事件
.局部变量 当前时
.局部变量 当前分
.局部变量 当前秒
.局部变量 剩余时
.局部变量 剩余分
.局部变量 剩余秒
标签8.标题 = 到文本 (取现行时间 ())
当前时 = 到数值 (取时间部分 (取现行时间 (), 6))
当前分 = 到数值 (取时间部分 (取现行时间 (), 7))
当前秒 = 到数值 (取时间部分 (取现行时间 (), 8))
剩余时 = 到数值 (编辑框4.内容) - 当前时
剩余分 = 到数值 (编辑框5.内容) - 当前分
剩余秒 = 60 - 当前秒
.如果真 (选择框12.选中 = 真)
标签6.标题 = 到文本 (剩余时) + “时” + 到文本 (剩余分) + “分” + 到文本 (剩余秒) + “秒”
.如果真结束
.如果真 (当前时 = 到数值 (编辑框4.内容) 且 当前分 = 到数值 (编辑框5.内容) 且 当前秒 = 到数值 (编辑框6.内容))
信息框 (“关机时间到!系统即将关机!”, #警告图标, )
关闭系统 (#关机, )
.如果真结束
.子程序 __窗口1_创建完毕, , , 窗口创建后显示系统网络通讯连接信息
.局部变量 窗口是否打开, 整数型, 静态
置当前网络地址及端口 ()
.子程序 置当前网络地址及端口, , , 读取本机所有正在进行网络通讯的程序
.局部变量 数据内容, 字节集, , , 储存系统内所有网络通讯进程信息数据
.局部变量 数据大小, 整数型, , , 储存系统内所有网络通讯进程数据数据总大小
.局部变量 进程数量, 整数型, , , 储存系统内所有网络通讯进程信息数量
.局部变量 数据位置, 整数型, , , 网络通讯数据位置
.局部变量 地址头部, 字节集, , , 网络通讯地址位置
.局部变量 进程编号, 整数型, , , 系统进程标识符
.局部变量 网络地址, 文本型, , , 网络服务器地址
.局部变量 网络端口, 整数型, , , 网络服务器端口
.局部变量 列表位置, 整数型, , , 超级列表位置
取网络通讯数据 (数据内容, 数据大小, 假, 2, 5, 0) ' 获取数据所需空间大小
数据内容 = 取空白字节集 (数据大小) ' 创建数据所需空间大小
取网络通讯数据 (数据内容, 数据大小, 假, 2, 5, 0) ' 获取数据并储存
进程数量 = 取字节集数据 (取字节集左边 (数据内容, 4), 3, ) ' 获取网络通讯进程数量
数据位置 = 4 ' 设置数据位置
.计次循环首 (进程数量, )
网络端口 = 转换端口 (取字节集数据 (取字节集中间 (数据内容, 数据位置 + 17, 4), 3, )) ' 获取远程服务器端口
进程编号 = 取字节集数据 (取字节集中间 (数据内容, 数据位置 + 21, 4), 3, ) ' 获取网络通讯进程编号
地址头部 = 取字节集中间 (数据内容, 数据位置 + 13, 4) ' 获取远程服务器地址头部
网络地址 = 到文本 (取字节集数据 (取字节集中间 (地址头部, 1, 1), 1, )) + “.” ' 获取远程服务器第一地址
网络地址 = 网络地址 + 到文本 (取字节集数据 (取字节集中间 (地址头部, 2, 1), 1, )) + “.” ' 获取远程服务器第二地址
网络地址 = 网络地址 + 到文本 (取字节集数据 (取字节集中间 (地址头部, 3, 1), 1, )) + “.” ' 获取远程服务器第三地址
网络地址 = 网络地址 + 到文本 (取字节集数据 (取字节集中间 (地址头部, 4, 1), 1, )) ' 获取远程服务器第四地址
' 列表位置 = 超级列表框1.插入表项 (, , , , , ) ' 设置超级列表插入位置
' 超级列表框1.置标题 (列表位置, 0, 到文本 (进程编号)) ' 设置表项第一列标题
' 超级列表框1.置标题 (列表位置, 1, 网络地址) ' 设置表项第二列标题
' 超级列表框1.置标题 (列表位置, 2, 到文本 (网络端口)) ' 设置表项第三列标题
数据位置 = 数据位置 + 24 ' 切换到下个网络通讯数据
.计次循环尾 ()
.子程序 _选择框1_被单击, , , 掉线关机功能选择
.如果 (选择框1.选中)
时钟3.时钟周期 = 1000 ' 启动掉线关机功能
.否则
时钟3.时钟周期 = 0 ' 停止掉线关机功能
.如果结束
.子程序 _选择框2_被单击
.如果 (选择框2.选中)
时钟3.时钟周期 = 1000 ' 启动掉线关机功能
.否则
时钟3.时钟周期 = 0 ' 停止掉线关机功能
.如果结束
.子程序 _时钟3_周期事件, , , 掉线关机功能运行时钟
.局部变量 数据内容, 字节集, , , 储存系统内所有网络通讯进程信息数据
.局部变量 数据大小, 整数型, , , 储存系统内所有网络通讯进程数据数据总大小
.局部变量 进程数量, 整数型, , , 储存系统内所有网络通讯进程信息数量
.局部变量 数据位置, 整数型, , , 网络通讯数据位置
.局部变量 地址头部, 字节集, , , 网络通讯地址位置
.局部变量 网络地址, 文本型, , , 网络服务器地址
.局部变量 网络端口, 整数型, , , 网络服务器端口
取网络通讯数据 (数据内容, 数据大小, 假, 2, 5, 0)
数据内容 = 取空白字节集 (数据大小)
取网络通讯数据 (数据内容, 数据大小, 假, 2, 5, 0)
进程数量 = 取字节集数据 (取字节集左边 (数据内容, 4), 3, )
数据位置 = 4
.计次循环首 (进程数量, )
网络端口 = 转换端口 (取字节集数据 (取字节集中间 (数据内容, 数据位置 + 17, 4), 3, ))
.如果真 (网络端口 = 15779) ' 我们知道丝路服务器的端口号是:15779 至需要判断这个端口是否存在就可以知道是不是掉线了
返回 () ' 如果存在15779这个端口就返回重新开始检测,直到游戏掉线我们再去运行下一句代码
.如果真结束
数据位置 = 数据位置 + 24
.计次循环尾 ()
时钟3.时钟周期 = 0 ' 停止时钟循环
.如果 (选择框2.选中)
.如果 (时钟3.时钟周期 = 0)
.否则
.如果结束
播放音乐 (#声音1, 真)
.否则
信息框 (“游戏掉线!”, 0, ) ' 弹出掉线提示
.如果结束
执行动作 () ' 执行我们要的动作
.子程序 执行动作, , , 掉线关机时执行动作
关闭系统 (#关机, ) ' 这句代码屏蔽了,避免调试的时候关机电脑
.子程序 _按钮7_被单击
停止播放 () ' 停止播放音乐提醒
.子程序 _选择框3_被单击
.如果真 (hp = 0)
时钟4.时钟周期 = 1000
.如果真结束
.如果真 (hp ≠ 0)
时钟4.时钟周期 = 0
.如果真结束
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册帐号
×
|