Goto end EndIf Goto 寻找敌人 //程序结束 Rem end //计算挂机时间和播报战果 howlong=datediff("n",timestart,now) VBSCall MessageBox("鹤羽工具:游戏结束。你共挂机约 " & howlong & " 分钟时间。") EndScript // // //战斗子程序 Sub 战斗 //点击怪物 Plugin Bkgnd.MoveTo(hw,xanimy,yanimy) Delay 50 Plugin Bkgnd.LeftClick(hw,xanimy,yanimy) Delay 50 Plugin Bkgnd.MoveTo(hw,xwinsize/2,ywinsize/2) // time1=now //怪物血条出现表示攻击真正开始 Rem 等待怪物血条出现 Plugin color1=BkgndColor.GetPixelColor(hw,xbar,ybar) If color1<>clng("&H" & colorbar) If datediff("s",time1,now)<3 //有时候怪物血条可能出现滞后,因此这里也增加检查血量的工作保证安全 Gosub 检查血量 Delay 20 Goto 等待怪物血条出现 Else //如果点击怪物以后超过5秒还不出现怪物血条,说明有可能点空了,则退出战斗重新找怪 Goto 战斗结束 EndIf EndIf //打怪数量加1 killanimy=killanimy+1 Rem 等待战斗结束 //战斗中随时检查血量,小于设定值立刻补血 Gosub 检查血量 //怪物血条消失才表示战斗结束,否则继续等待 Plugin color1=BkgndColor.GetPixelColor(hw,xbar,ybar) If color1=clng("&H" & colorbar) Delay 20 Goto 等待战斗结束 EndIf killanimy=killanimy+1 Delay 500 Rem 战斗结束 //战斗结束了还需要检查一下血量,因为有可能怪物死前最后一击导致已经很少血,下次攻击开使的时候可能来不及加 Gosub 检查血量 Return // Sub 检查血量 Plugin color1=BkgndColor.GetPixelColor(hw,xred,yred) If color1<>clng("&H" & colorred) KeyPress 49,1 //如果喝血,血瓶数量减1 redbt=redbt-1 Delay 500 EndIf Return // Sub 人物移动 //人物移动可采用随机方式,当然也有各种方法可以实现智能一点的移动方式,节省时间,但智能化较复杂,此处省略 //为了获得最大的移动距离,此处可取游戏屏幕的四个角点为随机移动点,随机坐标可用如下公式获得 randomize //获得0-3的随机数 randpoint=cint(rnd*3) //巧妙的利用游戏窗口的尺寸参数和两个函数来得到移动距离最长的随机点 xmove=xwinsize*(randpoint\2) ymove=ywinsize*(randpoint mod 2) //上面的公式的效果是,随机数0的时候左上角点,随机数1的时候左下角点,随机数2的时候右上角点,随机数3的时候右下角点 Plugin Bkgnd.MoveTo(hw,xmove,ymove) Delay 100 Plugin Bkgnd.LeftClick(hw,xmove,ymove) Delay 1000 Plugin Bkgnd.MoveTo(hw,xwinsize/2,ywinsize/2) Delay 2000 Return