教你让脚本适应所有分辨率,窗口/全屏,任意窗口位置玩游戏.
有很多朋友都在问,怎么让游戏脚本在不同分辨率,窗口/全屏,窗口位置不固定的情况下能正常使用.今天我就来写下自己的实际应用.老鸟门就跳过吧.看这文章的朋友也要有点底子.最起码要会用变量,小学的加减法.我也不是写文章的料子,不会怎么表达,所以写的东西只能叫大家多多动手一起做。可别笑我啊!
就拿我写的(蜀门)脚本来作例子说一下.
第一步,不同分辨率,不同窗口位置找色加血.因为游戏最重要就是这个,不会加血挂了就没意思.
首先我们进入游戏,把游戏分辨率设成800*600全屏,看下血条在什么位置.血条左上角X=84 : Y=40 ,右上角X=221 : Y=40 我的是这样哦! 好,现在我们把游戏分辨率改下,变成1024*768全屏再看看有什么变化怎么血条变小了..左上角X=84 : Y=40 右上角X=221 : Y=40.坐标一点变化没有.如果可以,再把分辨率改大点.1680*1050看看是不是还是一样.知道了血的位置,蓝的位置怎么计算就不用说了吧。
好,现在我们就得出个结论.任何分辨率下血条位置不会变,血条长度不会变(不只是这个游戏是这样,大部分游戏都是一样).长度为(右上角X-左上角X)=137个屏幕坐标.(前两天刚更新的数字.以前好像是156).这样补血的脚本在全屏情况下无论任何分辨率都能正常使用.补血脚本都是检侧某个点上颜色的变化来执行下一步操作的.血条在屏幕位置不变它的效果就不变.不过可以用我的补血模板,能适应更复杂的游戏环境.
http://bbs.vrbrothers.com/viewthread.php?tid=103503&全屏补血是解决了,那怎么在窗口中任意分辨率和任意窗口位置找色加血呢?那就得要有一点底子了.什么底子??按键精灵的插件要会用.按键自带的窗口插件,下面是获取窗口客户区的代码.在做脚本的时候把下面的代码放到开头处,
Plugin jb=Window.GetKeyFocusWnd()
//得到当前可以发按键的窗口句柄
Plugin khq=Window.GetClientRect(jb)
//得到窗口客户区大小
aac=split(khq,"|")
//分割客户区边框
bkx1=int(aac(0)): bky1=int(aac(1)): bkx2=int(aac(2))+bkx1: bky2=int(aac(3))+bky1
//得到游戏窗口客户区左bkx1,上bky1,右bkx2,下bky2,的坐标。
msgbox "客户区左上角X="&bkx1&"左上角Y="&bky1&"右下角X="&bkx2&"右下角Y="&bky2
把上面的代码复制进按键里,打开游戏(全屏)运行脚本看下弹出的数值是什么。把分辨率改一下(全屏)再运行脚本看看有什么不同.是不是左上角X和Y都是0.只是右上角的不同.我们不用管它,只看左上角就好.再把游戏窗口化(任意分辨率)鼠标点在游戏内运行脚本看下.我这是左上角X=4,Y=30(窗口在屏幕左上角处).不同的机子这个数字会不一样.现在把窗口拖一下.拖到屏幕中间的位置再运行脚本,数字变大了吧。再往右拖点再运行脚本,越往右越大吧。这就是客户区坐标,在我们全屏游戏时它是0。现在它又会随着窗口位置变化而变化。还记得全屏时血条的左上角X,Y是多少吗。X=84,Y=40。我们可看作是X=0+80,Y=0+40。而在窗口中可以看作是X=bkx1+84,Y=bky1+40,血条右上角坐标同里获得。这样无论怎么拖动窗口,怎么改分辨率,血条的位置都可固定。接下来补血蓝知道怎么做了吧。
第二步,看血打怪。
上图看到怪的血条了吗?任何分辨率下怪的血都会在这个位置上,自己可以进游戏看下,就是从客户区左边框(bkx1)的地方算起到怪的(有效血条,就是红的地方)最左边是466个屏幕坐标。眼睛都能看出比人物的血条低了一点点,用工具查看是低了7个点,我们用X=bkx1+466 Y=bky1+47判断这个点的颜色或者在这带小范围找色,就能定位到怪的血条,从而判断是否锁到怪物。接下来是打怪脚本.
这次就写到这里,在我的脚本中用的方法比这复杂的多,也都离不开这个原理.如果下次再写的话就写在游戏中怎么判断那些弹出来的对话框的位置.比如验证码的对话框,位置是随机出的.
都十几年没写过文章了,这也算是处女作感觉很啰嗦写不到点子上,别用口水淹我,哈哈!!!!!!!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。