您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 疾风之刃脚本:按键精灵自动创建角色
疾风之刃脚本:按键精灵自动创建角色来源:按键学院【按键精灵】上一期院刊中,我们分享了DNF自动登录的思路,以及代码。今天我们体验下《疾风之刃》的创建角色。并且附带上,《疾风之刃》自动登录代码。疾风之刃自动登录《疾风之刃》的自动登录和上一期的DNF的思路流程是一样的,套用进去即可。创建角色——流程图脚本界面1、Form1.InputBox1帐号信息。(帐号多,可使用txt方式记录读取)2、Form1.InputBox2密码信息。3、Form1.ListBox1角色职业信息。(疾风之刃目前暂时只有四类角色。)4、Form1.OptionBox1、Form1.OptionBox1在该区服是否有创建过角色(如果在该区服是第一次建立角色,选择区服登录游戏之后,播放完游戏动画后会直接跳转到创建角色的界面)(如果在该区服已经建立过角色,选择区服登录游戏之后,会跳转到选频道的界面)在该区服已创建过角色目前疾风之刃有四个大区。自动登录里,小编做的选区例子选择的是电信一区的幽眠峡谷。如果之前在这个区服中创建过角色,点击进入游戏,游戏动画播放完之后会进入选频道的界面。那么,问题来了,播放动画很耗时,跳过动画播放的方法是点击游戏窗口按ESC键。但是,我们在上期的时候提到过,游戏窗口句柄生成并不代表窗口界面已经完全加载好显示出来了。所以估摸不好,要在什么时候按下ESC键。性能不好点的电脑,加载游戏的时候,虽然窗口边缘出来了,但是窗口内里还是空的透明的。所以通过找窗口标题条的图片也不得行。例子中,小编没有跳过动画,而是等动画播放完毕。如果童鞋们有好的解决方法,欢迎跟帖分享~~所以,选好区服点击进入游戏按钮之后,咱们就开始循环找图,找选频道界面的这个选择频道按钮。如果找到了,说明动画已经播放完毕。接着就是绑定窗口了,游戏窗口的类名为JFZR我们就用类名来查找窗口。与登录窗口不同,游戏窗口是支持后台图色模式的,测试发现,dx模式可以截取到后台图色。图色模式:dx模式鼠标模式:windows模式键盘模式:windows模式文本输入:SendString2本例子中,游戏窗口的分辨率为1280*720,窗口模式。选择频道默认选中的是上次登录过的频道。不需去改变它。绑定窗口之后我们点击进入频道进入选角色的界面。循环找图判断“创建角色”按钮是否出现,出现则说明到了选择角色界面。注意:找到创建角色按钮图片的时候,界面并没有完全加载,所以如果找到就马上点击的话,会出现没有响应的情况。在找到创建角色按钮图片的代码之后,我们可以加点延时。延时过后再点击创建角色按钮进入创建角色界面。在该区服未创建过角色未创建过角色,在选好区服点击进入游戏之后,游戏动画播放完毕直接进入到创建角色界面。我们通过循环找“生成”按钮,来判断是不是已经到了创建角色界面。疾风之刃选择角色职业的方式,是靠点击来选择的,点击生成按钮上方的小圈圈选择中意的职业。每个圈圈之间间隔87个像素点(没有很精确,小编估算了下是87。误差一点没有关系,只要保证四个角色,点击的位置都在有效范围即可。)第一个职业圈圈的中心点为500,590.也就是说,如果我们想要点击第二个的话,要在第一个的基础上,x坐标加上87个像素点,y坐标不变。第三个的x坐标加上2个87第四个的x坐标加上3个87我们用列表框来作为职业选择框,列表框的索引起始是0剑斗士放在第一位,它的索引为0刃武者第二位,索引为1控魔师第三位,索引为2千月姬第四位,索引为3列表框的ListIndex属性,返回的是当前列表框选中项的索引值。x坐标=500+87*Form1.ComboBox1.ListIndex这样,一行代码就可以计算出当前要创建的职业的图标x坐标的值。x坐标的值知道了,y坐标值不变,我们就可以开始点击要创建的职业图标,点击之后会切换职业画面,我们设置个延时,等画面切完之后,点击“生成”按钮拓展:有的游戏是通过点击左右键来滚动切换角色,进行角色职业的选择。角色排列顺序是固定的情况下,我们可以以默认职业作为基点,计算到自己要创建的角色,需要再此基础上点击多少次右键或者左键才能选到。通过这样的方式,即可选择要创建的职业。取名界面通过循环找“名称”字样,来判断是不是已经到了取名界面。用dm插件的SendString2命令向输入框输入名称,可以是指定的名称,也可以是随机的。例子中,我们使用随机取名。怎么个随机法呢?我的命令库——》算法算法下就有随机取姓名函数直接调用十分方便。如果不想随机取中规中矩的姓名,我们也可以自己设置要随机的名字。输入名称之后,点击创建角色按钮。判断名字是否重复如果取的名字重复了会出现上图中的提示如果名字可以使用,则角色创建成功,会返回到选择角色的界面。所以,我们点击创建角色之后,循环判断上图中的“是”按钮有没有出现(出现则返回到随机取名的步骤,重新取名重新输入。)同时判断“创建角色”按钮是否出现,出现则说明创建成功,脚本结束。整体代码//////////////////////////////////////////////////////////////////////////////////自动登录//////////////////////////////////////////////////////////////////////////////////////////////帐号=Form1.InputBox1.Text密码=Form1.InputBox2.Text////////////////////////////////////释放附件、注册大漠等/////////////////////////////////////////PutAttachmentD:\test,*.*'释放附件Callregister()'调用注册大漠子程序dm_ret=dm.SetDict(0,test.txt)'加载字库RunAppE:\疾风之刃\TCLS\Client.exe'启动游戏////////////////////////////////////////查找登录窗口句柄///////////////////////////////////////////Dohwnd=Plugin.Window.find(0,疾风之刃登录程序)'查找登录窗口句柄Delay200LoopWhilehwnd=0////////////////////////////////////////绑定窗口句柄///////////////////////////////////////////dm_ret=dm.BindWindow(hwnd,normal,windows,windows,0)'绑定窗口dm_ret=dm.GetClientRect(hwnd,x1,y1,x2,y2)'获取窗口客户区大小////////////////////////////////////////判断是否在帐号输入界面//////////////////////////////////////////Call判断(x1,y1,x2,y2,判断是否在帐号输入界面.bmp)Rem输入帐号密码Delay1000MoveTox1+966,y1+565'点击帐号输入框LeftClick1////////////////////////////////////////删除之前的帐号//////////////////////////////////////////For20KeyPress8,1NextFor20KeyPress46,1Next////////////////////////////////////////输入帐号//////////////////////////////////////////SayString帐号////////////////////////////////////////输入密码、点击进入游戏按钮////////////////////////////////////movetox1+974,y1+608'点击密码输入框LeftClick1Delay1000CallLib.键盘.KeyList(密码,2,20)'输入帐号dm.moveto1023,725'点击进入游戏按钮dm.LeftdoubleClick//////////////////////////////////////判断是否在选区界面、选区/////////////////////////////////////////Dodm_ret=dm.FindStr(x1,y1,x2,y2,电信一区,ffffff-000000,1.0,intX,intY)IfintX=0andintY=0Thendm.movetointx,intydm.leftclick'点击电信一区EndIfDelay200LoopWhiledm_ret=-1Dodm_ret=dm.FindStr(x1,y1,x2,y2,幽眠峡谷,ffffff-000000,1.0,intX,intY)IfintX=0andintY=0Thendm.movetointx,intydm.leftclick'点击幽眠峡谷EndIfDelay200LoopWhiledm_ret=-1////////////////////////////////////////点击进入游戏按钮/////////////////////////////////////////dm.moveto1035,714dm.leftclick////////////////////////////////////////判断登录是否成功//////////////////////////////////////////Do'查找密码错误界面dm_ret=dm.FindPic(x1,y1,x2,y2,确定.bmp,000000,0.9,0,intX,intY)IfintX=0andintY=0ThenDelay1000dm.movetointX,intYdm.leftclickGoto输入帐号密码'出现错误提示,点击确定按钮之后,重新开始输入帐号密码ExitDoEndIf'查找创建角色窗口句柄hwnd=Plugin.Window.find(JFZR,0)Delay200LoopWhilehwnd=0dm_ret=dm.UnBindWindow()'解绑登录窗口//////////////////////////////////////////////////////////////////////////////////////////创建角色///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////该区服已创建过角色,则执行选频道操作。未创建过则不选频道/////////////////////////////////////////////////////////////////////IfForm1.OptionBox1.Value=1Then/////////////////////////////////////////判断是否在选择频道界面////////////////////////////////////////////Call判断(0,0,2000,2000,选择频道界面.bmp)////////////////////////////////////////////绑定窗口句柄////////////////////////////////////////dm_ret=dm.BindWindow(hwnd,dx,windows,windows
本文标题:疾风之刃脚本:按键精灵自动创建角色
链接地址:https://www.777doc.com/doc-3514373 .html