.版本 2
.支持库 iext
.支持库 eAPI
.程序集 程序集1
.程序集变量 游戏路径, 文本型
.程序集变量 神器路径, 文本型
.程序集变量 账号列表, 文本型, , "0"
.程序集变量 密码列表, 文本型, , "0"
.程序集变量 当前账号索引, 整数型
.程序集变量 进程句柄, 整数型
.程序集变量 神器句柄, 整数型
.程序集变量 账号框坐标, 坐标
.程序集变量 密码框坐标, 坐标
.程序集变量 登录按钮坐标, 坐标
.程序集变量 加载按钮坐标, 坐标
.程序集变量 启动按钮坐标, 坐标
.程序集变量 配置文件路径, 文本型
.程序集变量 自动启动神器, 逻辑型
.程序集变量 窗口句柄, 整数型
.数据类型 坐标
.成员 X, 整数型
.成员 Y, 整数型
.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行
加载窗口 ()
返回 0 ' 可以根据您的需要返回任意数值
.子程序 加载窗口
载入 (窗口_主界面, , 真)
.子程序 __启动窗口_创建完毕
' 加载配置
加载配置 ()
' 初始化界面
初始化界面 ()
.子程序 初始化界面
' 设置主窗口
_启动窗口.标题 = "热血江湖自动登录器 v2.0"
_启动窗口.宽度 = 600
_启动窗口.高度 = 500
' 背景图
图片框1.置图片 (#背景图片)
' 添加控件
' 游戏路径
标签_游戏路径.创建 (_启动窗口, "游戏路径:", 20, 20, 60, 20)
编辑框_游戏路径.创建 (_启动窗口, 90, 20, 320, 20)
按钮_浏览游戏.创建 (_启动窗口, "浏览...", 420, 20, 70, 24)
' 神器路径
标签_神器路径.创建 (_启动窗口, "神器路径:", 20, 60, 60, 20)
编辑框_神器路径.创建 (_启动窗口, 90, 60, 320, 20)
按钮_浏览神器.创建 (_启动窗口, "浏览...", 420, 60, 70, 24)
' 账号选择
标签_账号.创建 (_启动窗口, "选择账号:", 20, 100, 60, 20)
组合框_账号.创建 (_启动窗口, 90, 100, 200, 22, #组合框样式_下拉列表框)
' 配置设置
标签_配置.创建 (_启动窗口, "神器配置:", 20, 140, 60, 20)
编辑框_配置.创建 (_启动窗口, 90, 140, 320, 20)
按钮_浏览配置.创建 (_启动窗口, "浏览...", 420, 140, 70, 24)
' 坐标设置
按钮_坐标设置.创建 (_启动窗口, "校准坐标", 20, 180, 80, 28)
' 启动按钮
按钮_启动游戏.创建 (_启动窗口, "启动游戏并登录", 120, 180, 120, 28)
按钮_启动神器.创建 (_启动窗口, "启动热血神器", 260, 180, 100, 28)
' 账号管理
按钮_添加账号.创建 (_启动窗口, "添加账号", 20, 230, 80, 28)
按钮_删除账号.创建 (_启动窗口, "删除账号", 120, 230, 80, 28)
' 自动启动选项
选择框_自动启动.创建 (_启动窗口, "登录后自动启动神器", 90, 170, 200, 20)
' 状态栏
状态条1.创建 (_启动窗口, 0, 480, 600, 20)
状态条1.置面板文本 (0, "状态: 就绪")
' 加载账号列表
加载账号列表 ()
' 绑定事件
按钮_浏览游戏.事件_被单击 = &按钮_浏览游戏_被单击
按钮_浏览神器.事件_被单击 = &按钮_浏览神器_被单击
按钮_浏览配置.事件_被单击 = &按钮_浏览配置_被单击
按钮_坐标设置.事件_被单击 = &按钮_坐标设置_被单击
按钮_启动游戏.事件_被单击 = &按钮_启动游戏_被单击
按钮_启动神器.事件_被单击 = &按钮_启动神器_被单击
按钮_添加账号.事件_被单击 = &按钮_添加账号_被单击
按钮_删除账号.事件_被单击 = &按钮_删除账号_被单击
组合框_账号.事件_列表项被选择 = &组合框_账号_列表项被选择
' 设置初始值
编辑框_游戏路径.内容 = 游戏路径
编辑框_神器路径.内容 = 神器路径
编辑框_配置.内容 = 配置文件路径
选择框_自动启动.选中 = 自动启动神器
' 进度条
进度条1.创建 (_启动窗口, 20, 270, 540, 20)
.子程序 加载配置
.局部变量 配置路径, 文本型
配置路径 = 取运行目录 () + "\config.ini"
.如果真 (文件是否存在 (配置路径))
游戏路径 = 读配置项 (配置路径, "Path", "Game", "")
神器路径 = 读配置项 (配置路径, "Path", "RXSS", "")
配置文件路径 = 读配置项 (配置路径, "Path", "Config", "")
自动启动神器 = 读配置项 (配置路径, "Settings", "AutoStart", "1") = "1"
账号框坐标.X = 到整数 (读配置项 (配置路径, "Position", "UserX", "900"))
账号框坐标.Y = 到整数 (读配置项 (配置路径, "Position", "UserY", "500"))
密码框坐标.X = 到整数 (读配置项 (配置路径, "Position", "PassX", "900"))
密码框坐标.Y = 到整数 (读配置项 (配置路径, "Position", "PassY", "550"))
登录按钮坐标.X = 到整数 (读配置项 (配置路径, "Position", "LoginX", "1000"))
登录按钮坐标.Y = 到整数 (读配置项 (配置路径, "Position", "LoginY", "800"))
加载按钮坐标.X = 到整数 (读配置项 (配置路径, "Position", "LoadX", "800"))
加载按钮坐标.Y = 到整数 (读配置项 (配置路径, "Position", "LoadY", "600"))
启动按钮坐标.X = 到整数 (读配置项 (配置路径, "Position", "StartX", "900"))
启动按钮坐标.Y = 到整数 (读配置项 (配置路径, "Position", "StartY", "700"))
.如果真结束
.子程序 保存配置
.局部变量 配置路径, 文本型
配置路径 = 取运行目录 () + "\config.ini"
写配置项 (配置路径, "Path", "Game", 游戏路径)
写配置项 (配置路径, "Path", "RXSS", 神器路径)
写配置项 (配置路径, "Path", "Config", 配置文件路径)
写配置项 (配置路径, "Settings", "AutoStart", 选择 (自动启动神器, "1", "0"))
写配置项 (配置路径, "Position", "UserX", 到文本 (账号框坐标.X))
写配置项 (配置路径, "Position", "UserY", 到文本 (账号框坐标.Y))
写配置项 (配置路径, "Position", "PassX", 到文本 (密码框坐标.X))
写配置项 (配置路径, "Position", "PassY", 到文本 (密码框坐标.Y))
写配置项 (配置路径, "Position", "LoginX", 到文本 (登录按钮坐标.X))
写配置项 (配置路径, "Position", "LoginY", 到文本 (登录按钮坐标.Y))
写配置项 (配置路径, "Position", "LoadX", 到文本 (加载按钮坐标.X))
写配置项 (配置路径, "Position", "LoadY", 到文本 (加载按钮坐标.Y))
写配置项 (配置路径, "Position", "StartX", 到文本 (启动按钮坐标.X))
写配置项 (配置路径, "Position", "StartY", 到文本 (启动按钮坐标.Y))
.子程序 加载账号列表
.局部变量 i, 整数型
.局部变量 账号, 文本型
.局部变量 密码, 文本型
.局部变量 账号文件路径, 文本型
账号文件路径 = 取运行目录 () + "\accounts.dat"
.如果真 (文件是否存在 (账号文件路径))
.计次循环首 (100, i)
账号 = 读配置项 (账号文件路径, "Accounts", "User" + 到文本 (i), "")
.如果真 (账号 ≠ "")
密码 = 读配置项 (账号文件路径, "Accounts", "Pass" + 到文本 (i), "")
.如果真 (密码 ≠ "")
加入成员 (账号列表, 账号)
加入成员 (密码列表, 密码)
组合框_账号.加入项目 (账号, )
.如果真结束
.如果真结束
.计次循环尾
.如果真结束
.子程序 保存账号
.局部变量 i, 整数型
.局部变量 账号文件路径, 文本型
账号文件路径 = 取运行目录 () + "\accounts.dat"
' 删除旧文件
.如果真 (文件是否存在 (账号文件路径))
删除文件 (账号文件路径)
.如果真结束
' 写入新账号
.计次循环首 (取数组成员数 (账号列表), i)
写配置项 (账号文件路径, "Accounts", "User" + 到文本 (i), 账号列表 [i])
写配置项 (账号文件路径, "Accounts", "Pass" + 到文本 (i), 密码列表 [i])
.计次循环尾
.子程序 按钮_浏览游戏_被单击
.局部变量 路径, 文本型
路径 = 浏览文件夹 ("请选择热血江湖游戏主程序", )
.如果真 (路径 ≠ "")
游戏路径 = 路径
编辑框_游戏路径.内容 = 路径
保存配置 ()
.如果真结束
.子程序 按钮_浏览神器_被单击
.局部变量 路径, 文本型
路径 = 浏览文件夹 ("请选择热血神器主程序", )
.如果真 (路径 ≠ "")
神器路径 = 路径
编辑框_神器路径.内容 = 路径
保存配置 ()
.如果真结束
.子程序 按钮_浏览配置_被单击
.局部变量 路径, 文本型
路径 = 浏览文件夹 ("请选择神器配置文件", )
.如果真 (路径 ≠ "")
配置文件路径 = 路径
编辑框_配置.内容 = 路径
保存配置 ()
.如果真结束
.子程序 按钮_坐标设置_被单击
.局部变量 提示信息, 文本型
提示信息 = "请将鼠标移动到游戏窗口中的相应位置后按提示按键:" + #换行符
提示信息 = 提示信息 + "1. 账号输入框 - F1" + #换行符
提示信息 = 提示信息 + "2. 密码输入框 - F2" + #换行符
提示信息 = 提示信息 + "3. 登录按钮 - F3" + #换行符
提示信息 = 提示信息 + "4. 神器加载按钮 - F4" + #换行符
提示信息 = 提示信息 + "5. 神器启动按钮 - F5" + #换行符
提示信息 = 提示信息 + "按ESC退出校准"
信息框 (提示信息, 0, "坐标校准")
状态条1.置面板文本 (0, "坐标校准中,请按提示操作...")
.判断循环首 (真)
.如果 (按下某键 (#F1键))
获取鼠标坐标 (账号框坐标)
状态条1.置面板文本 (0, "账号框坐标已记录: " + 到文本(账号框坐标.X) + ", " + 到文本(账号框坐标.Y))
.否则, 如果 (按下某键 (#F2键))
获取鼠标坐标 (密码框坐标)
状态条1.置面板文本 (0, "密码框坐标已记录: " + 到文本(密码框坐标.X) + ", " + 到文本(密码框坐标.Y))
.否则, 如果 (按下某键 (#F3键))
获取鼠标坐标 (登录按钮坐标)
状态条1.置面板文本 (0, "登录按钮坐标已记录: " + 到文本(登录按钮坐标.X) + ", " + 到文本(登录按钮坐标.Y))
.否则, 如果 (按下某键 (#F4键))
获取鼠标坐标 (加载按钮坐标)
状态条1.置面板文本 (0, "神器加载坐标已记录: " + 到文本(加载按钮坐标.X) + ", " + 到文本(加载按钮坐标.Y))
.否则, 如果 (按下某键 (#F5键))
获取鼠标坐标 (启动按钮坐标)
状态条1.置面板文本 (0, "神器启动坐标已记录: " + 到文本(启动按钮坐标.X) + ", " + 到文本(启动按钮坐标.Y))
.否则, 如果 (按下某键 (#ESC键))
跳出循环 ()
.否则
延时 (50)
.如果结束
.判断循环尾
保存配置 ()
状态条1.置面板文本 (0, "坐标校准完成!")
.子程序 获取鼠标坐标
.参数 坐标变量, 坐标
坐标变量.X = 取鼠标水平位置 ()
坐标变量.Y = 取鼠标垂直位置 ()
.子程序 按钮_启动游戏_被单击
.如果真 (游戏路径 = "")
信息框 ("请先设置游戏路径!", 0, "错误")
返回 ()
.如果真结束
.如果真 (当前账号索引 < 1 或 当前账号索引 > 取数组成员数 (账号列表))
信息框 ("请选择登录账号!", 0, "错误")
返回 ()
.如果真结束
状态条1.置面板文本 (0, "正在启动游戏...")
进度条1.位置 = 0
按钮_启动游戏.禁止 = 真
' 启动游戏进程
进程句柄 = 运行 (游戏路径, 假, )
.如果真 (进程句柄 = 0)
状态条1.置面板文本 (0, "游戏启动失败!")
按钮_启动游戏.禁止 = 假
返回 ()
.如果真结束
' 等待游戏窗口
进度条1.位置 = 20
延时 (5000) ' 等待5秒
' 查找游戏窗口
窗口句柄 = 窗口_取句柄 (, , "热血江湖", )
.如果真 (窗口句柄 = 0)
状态条1.置面板文本 (0, "未找到游戏窗口!")
按钮_启动游戏.禁止 = 假
进度条1.位置 = 0
返回 ()
.如果真结束
' 激活窗口
进度条1.位置 = 40
置窗口激活 (窗口句柄)
延时 (500)
' 登录游戏
模拟登录 ()
' 自动启动神器
.如果真 (选择框_自动启动.选中)
启动神器 ()
.如果真结束
按钮_启动游戏.禁止 = 假
进度条1.位置 = 100
状态条1.置面板文本 (0, "登录完成!")
.子程序 模拟登录
' 输入账号
模拟鼠标点击 (账号框坐标.X, 账号框坐标.Y)
延时 (200)
键盘_发送文本 (账号列表[当前账号索引], 真)
延时 (500)
' 输入密码
进度条1.位置 = 60
模拟鼠标点击 (密码框坐标.X, 密码框坐标.Y)
延时 (200)
键盘_发送文本 (密码列表[当前账号索引], 真)
延时 (500)
' 点击登录
进度条1.位置 = 80
模拟鼠标点击 (登录按钮坐标.X, 登录按钮坐标.Y)
状态条1.置面板文本 (0, "登录中...")
延时 (5000) ' 等待5秒登录过程
.子程序 按钮_启动神器_被单击
.如果真 (神器路径 = "")
信息框 ("请先设置神器路径!", 0, "错误")
返回 ()
.如果真结束
启动神器 ()
.子程序 启动神器
状态条1.置面板文本 (0, "正在启动热血神器...")
进度条1.位置 = 0
' 启动神器进程
神器句柄 = 运行 (神器路径, 假, )
.如果真 (神器句柄 = 0)
状态条1.置面板文本 (0, "神器启动失败!")
返回 ()
.如果真结束
' 等待神器启动
进度条1.位置 = 30
延时 (3000)
' 如果有配置则加载
.如果真 (配置文件路径 ≠ "" 且 文件是否存在 (配置文件路径))
状态条1.置面板文本 (0, "正在加载神器配置文件...")
进度条1.位置 = 50
模拟鼠标点击 (加载按钮坐标.X, 加载按钮坐标.Y)
延时 (1000)
键盘_发送文本 (配置文件路径, 假)
延时 (500)
键盘_按键 (#回车键)
延时 (1000)
.如果真结束
' 启动神器功能
状态条1.置面板文本 (0, "正在启动神器功能...")
进度条1.位置 = 80
模拟鼠标点击 (启动按钮坐标.X, 启动按钮坐标.Y)
延时 (1000)
进度条1.位置 = 100
状态条1.置面板文本 (0, "神器已启动!")
.子程序 按钮_添加账号_被单击
.局部变量 账号, 文本型
.局部变量 密码, 文本型
账号 = 输入框 ("请输入账号:", "添加账号", , , )
.如果真 (账号 = "")
返回 ()
.如果真结束
密码 = 输入框 ("请输入密码:", "添加账号", , , #输入框_密码输入)
.如果真 (密码 = "")
返回 ()
.如果真结束
' 添加到列表
加入成员 (账号列表, 账号)
加入成员 (密码列表, 密码)
组合框_账号.加入项目 (账号, )
' 保存账号
保存账号 ()
状态条1.置面板文本 (0, "账号添加成功!")
.子程序 按钮_删除账号_被单击
.如果真 (当前账号索引 < 1 或 当前账号索引 > 取数组成员数 (账号列表))
信息框 ("请选择要删除的账号!", 0, "错误")
返回 ()
.如果真结束
.如果真 (信息框 ("确定要删除账号 " + 账号列表[当前账号索引] + " 吗?", #是否钮 + #询问图标, "确认删除") = #是钮)
' 从列表删除
删除成员 (账号列表, 当前账号索引, 1)
删除成员 (密码列表, 当前账号索引, 1)
' 更新组合框
组合框_账号.清空 ()
.计次循环首 (取数组成员数 (账号列表), i)
组合框_账号.加入项目 (账号列表 [i], )
.计次循环尾
' 保存账号
保存账号 ()
状态条1.置面板文本 (0, "账号已删除!")
.如果真结束
.子程序 组合框_账号_列表项被选择
当前账号索引 = 组合框_账号.现行选中项 + 1
.子程序 __启动窗口_将被销毁
保存配置 ()
' ================= 辅助功能函数 =================
.子程序 模拟鼠标点击
.参数 X坐标, 整数型
.参数 Y坐标, 整数型
' 鼠标移动
置鼠标位置 (X坐标, Y坐标)
延时 (50)
' 左键单击
鼠标_按键 (1, 3) ' 按下
延时 (50)
鼠标_按键 (1, 4) ' 弹起
延时 (50)
.子程序 键盘_发送文本
.参数 文本内容, 文本型
.参数 是否清空, 逻辑型, 可空, 默认假
.如果真 (是否清空)
' 全选
键盘_按下 (#Ctrl键)
键盘_按键 (#A键)
键盘_弹起 (#Ctrl键)
延时 (50)
' 删除
键盘_按键 (#退格键)
延时 (100)
.如果真结束
' 输入文本
.计次循环首 (取文本长度 (文本内容), i)
键盘_按键 (取代码 (取文本中间 (文本内容, i, 1)))
延时 (取随机数 (20, 100)) ' 随机延时模拟人工输入
.计次循环尾
.子程序 键盘_按键
.参数 键代码, 整数型
模拟按键 (键代码, , )
延时 (50)
.子程序 键盘_按下
.参数 键代码, 整数型
模拟按键 (键代码, 1, )
延时 (50)
.子程序 键盘_弹起
.参数 键代码, 整数型
模拟按键 (键代码, 2, )
延时 (50)
.子程序 窗口_取句柄, 整数型
.参数 类名, 文本型, 可空
.参数 标题, 文本型, 可空
.局部变量 句柄, 整数型
句柄 = FindWindowA (类名, 标题)
返回 (句柄)
' ================= API声明 =================
.DLL命令 FindWindowA, 整数型, "user32", "FindWindowA"
.参数 lpClassName, 文本型
.参数 lpWindowName, 文本型
.子程序 按下某键, 逻辑型
.参数 键代码, 整数型
.局部变量 状态, 整数型
状态 = GetAsyncKeyState (键代码)
返回 (状态 ≠ 0)
.DLL命令 GetAsyncKeyState, 整数型, "user32", "GetAsyncKeyState"
.参数 vKey, 整数型
.常量 背景图片, "<图片资源>"
' ================= 图片资源 =================
.图片 背景图片
89504E470D0A1A0A0000000D4948445200000258000000FA0806000000B9E7793D000000017352474200AECE1CE90000000467414D410000B18F0BFC6105000000097048597300000EC400000EC401952B0E1B0000FFFF49444154785EECFD079C24C77126082BABBAABABABBAABABAB7B7A7A0C8687F7DE130440781020084F9004097A8A224551A2442D29CA88947675BABB95B4A4EEA45DEDE976A5D5DD9DD6D1EA244A1409922041820481F1DEE3FDCCF478575F99F1BD88C8ACECE9190C4080B8FBFB7E9D95999991919915F145444664C8BF7FE8AFDFBBAE5B5D55B5ACD5AB56D7AD5DBDA6B67CF98A9AE5CB96D5AC5EB5AA76D5CA95B52B57ACAC5DB56A75DDAA55ABEA57AF5E53BF7AD59AFA356BD636AC5DBDB661EDEA750DEBD6AC6B5CB7767DE3BA75EB9BD6AFDBD0B461FD86E68DEB37366FDCB0B165E3C64D2D9B366D6ADDBC6953EBE6CD9BDBB66CDED2BE75CBD6F66D5BB7756CDFBEBD73C78E1D5D3B76ECE8DEB97367CFAE5DBB7A77EDDADDBB7BF7EEBEBD7BF7F6EFDBB76F60FFFEFD83070E1C183A78F0E0F0A14387460E1F3E3C7AE4C891B123478E8E1F3D7A6CE2E8D1E313C78E1D9F3C7EFCC4D4891327A74F9C38357DF2E4A99993274FCD9E3A756AEEF4E9D3F367CE9C59387BF6ECE2B973E796CE9F3FBF7CE1C285958B172FAE5EBA7469EDF2E5CB6B57AE5C59BF7AF5EAC6B56BD7AE5FBF7EFDC68D1B376FDEBC79FBF6ED3B77EEDCB97BF7EEBD7BF7EEDFBF7FFF0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0D9E0F7BFFBEDEF7EE7DBDFFEF6B7BEE52C8EFDEE77BEF39DEF7CE73BDFF9CE77BEF39DEF7CE73BDFF9CE77BEF39DEF7CE73BDFF9CE77BEF39DEF7CE73BDFF9CE77BEF39DEF7CE73BDFF9CE77BEF39DEF7CFB3BDFFEF6B7BFFDED6F7FFBDBDFFEF6B7BFFDED6F7FFBDBDFFEF6B7BFFDED6F7FFBDBDFFEF6B7FFF1DBFFCFBFFBDBBF7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D9679F7DF6D
最新发布