CS打久了,经常会听说脚本这个词,听起来似乎十分神秘,其实说起来十分简单,脚本实际就是命令的集合,放在*.cfg(或者valve.rc)文件里,在需要的时候使用,下面就按照我的经验给大家分析分析,能力有限,错误难免:)
实际上,脚本中使用的都脱不出bind和alias这2样东西,下面介绍一下
alias就是给一组命令定义一个名称,当你定义过后,CS就认为此alias为一个普通的命
令,定义以后,你可以在脚本的任何地方使用它。
说的通俗点,alias就相当于一个等于号
举个例子,如果脚本中有了这么一句话:
alias88saybyebye!
//say命令你不会不知道吧-_-'
那么在游戏中就相当于有了88这个命令,而这个命令实际上就是saybyebye!这个命令
bind就是分配一个命令到指定的键(鼠标/键盘),命令也可以包含alias定义的命令(不能包含还玩个屁呀^^)
举个例子,如过脚本里有这样一句话
bindpsaybyebye!,就是绑定p键为实现命令:saybyebye!效果就是在游戏中如果你按了键盘的p键,那么你会在游戏中给所有
人打字:byebye!
结合上面的alias,我们搞复杂一些:先用alias定义一个命令,再用bind绑定
alias88saybyebye!
bindp88//(注意由于上句的alias88saybyebye!,使得88==saybyebye!)
这样,在游戏中你按住p键,会和前一个例子一样,给所有人打字:byebye!
也就是说由于alias88saybyebye!这句的存在,使bindp88==bindpsaybyebye!
怎么样,是不是相当简单?好现在我们再增加些难度
alias是可以定义多个命令的,不同的命令用引号(;)隔开,这些命令会按先后的顺序执行,象这样
aliasllsayhello;sayiammarco;saydon'tkillme
就表示当你执行新定义的ll命令时,你就会在游戏中现和所有人说:hello,然后说iammarco,然后是don'tkillme(谁在扔西红柿?)
当然,你也可以把他绑定到一个键上:bindvll,以后想挨吃西红柿的时候,按v键就可以了:)
同样,bind里面也可以按照这样的格式使用
================================================================
OK,准备工作作完了,下面开始正式内容,晕,这才是准备工作啊)
------------
啊,差点忘了,还有一个命令,wait命令。wait命令在脚本中也是十分常用的,它的作用是在执行脚本时做一个极小的暂停,当你的延迟情况
不是很严重时可以只使用几个wait命令,当你的延迟情况比较糟糕时可以多用几个wait命令来使你的脚本得以完整/正确的执行
当然,如果编写的时候,需要使用多个wait,你也可以使用alias命令事先定义,简化你的输入
aliaswwait,那么编脚本的时候输入w就代表wait了,当然也可以定义需要2个wait的情况alias2wwait;wait
如果需要4个wait呢?alias4wwait;wait;wait;wait?呵呵,灵活一点,前面已经有alias2wwait;wait了,所以我们只
需要alias2w;2w就可以了。(仔细想想,呵呵)
3个wait就可以用aliasw;2w
================================================
好,再次进入正题,,讲讲脚本的分类,先介绍最简单的,按顺序执行的,这种脚本最普遍的就是用在1.5的买木仓了,举个例子,在1.5中,假
设我要先买AK,然后买一个usp,下面就看看如何写这个脚本:
要买AK,我们平时的动作是b41,就是先按b也就是执行了buy命令,然后选数字4,也就是执行menuselect4命令,然后选数字1,也就是执
行menuselect1命令,这样,AK就买好了,然后买usp,还是先按b,也就是buy命令,然后选数字1,也就是执行menuselect1命令,然后选
数字1,也就是执行menuselect1命令,最后清除买木仓菜单,这样我们的目的就达到了。命令的顺序就是这样:
buy--->menuselect4-->menuselect1-->buy-->menuselect1-->menuselect1-->clmenu(清除菜单命令)
写成脚本形式就是
aliasakuspbuy;menuselect4;menuselect1;buy;menuselect1;menuselect1;clmenu这里面akusp这个命令名字是随便取的
当然,你可以把这个命令绑定在键盘上
bindakuspp,那么按p就是买ak和usp了。顺序脚本介绍完毕
---------------------------------------
下面介绍开关式脚本,这个就复杂一点,恩,具体的来说就是要实现这样一个功能,按一下某个键,实现功能A,再按一下这个键,实现功能
B,再按又是A,这样A-->B-->A-->B-->A的循环。
还是用例子来说明,比如我们要实现一个雷达的开关,按TAB键来打开/关闭雷达,需要的2个命令:
hideradar(关闭雷达)drawradar(打开雷达),
难点在于,只有一个键,要么bindTABhideradar,要么bindTABdrawradar,可是TAB键只有一个。怎么实现按一次用hideradar命令,再按一
次又换成drawradar命令?,解决的方法就是增加一个变量,让这个变量在需要开雷达的时候等于drawradar,需要关雷达的时候等于hideradar。
为了说明的清楚,这次我们用中文来说明整个流程:同时后面用数学等式的方法更直观的说明
alias雷达开关关(定义雷达开关==关)
alias关hideradar;alias雷达开关开(定义执行雷达关命令,然后定义雷达开关==开)还记得分号的作用吧?
alias开drawradar;alias雷达开关关(定义执行雷达开命令,然后定义雷达开关==关)
这样,“雷达开关”这个变量就不停的在(雷达开关==开/雷达开关==关)之间切换,最后,我们把它定义到键上就可以
bindTAB雷达开关
整个脚本按正常情况写就是这样:
aliasradar_keyradar_off
aliasradar_offhideradar;aliasradar_keyradar_on
aliasradar_ondrawradar;aliasradar_keyradar_off
bindTABradar_key
这里面radar_key,radar_off,radar_on三个变量的名字可以随便取
下面就是开关式脚本的一个模板:
alias开关变量关闭变量
alias关闭变量alias开关变量打开变量;关闭的命令
alias打开变量alias开关变量关闭变量;打开的命令
bind键位开关变量
熟练了以后你会发现语句的顺序,还有其中的alias语句中的命令的顺序都是任意的,不过初学还是不要变了吧,免得搞混
下面介绍循环式脚本
实际上循环脚本和开关脚本非常类似,开关脚本实际上就是A-->B-->A-->B的只有两项的循环式脚本,循环脚本只是变成
A-->B-->C-->D........-->N-->A所以理解起
来很容易,我们直接看一个模板:
alias循环开关变量循环第1步变量
alias循环第1步变量循环第1步需执行的命令;alias循环开关变量循环第2步变量;
alias循环第2步变量循环第2步需执行的命令;alias循环开关变量循环第3步变量;
...
...
...
...
...
alias循环第N步变量循环第N步需执行的命令;alias循环开关变量循环第1步变量;
然后bind键位循环开关变量即可
需要注意的就是最后一个alias一定要定义回第一个变量,这样才能形成一个回环,否则循环一轮以后就进行不下去了。
最后用一个实际的例子说明
aliasgraphgraph1
aliasgraph1net_graph1;aliasgraphgraph2
aliasgraph2net_graph2;aliasgraphgraph3
aliasgraph3net_graph3;aliasgraphgraph4
aliasgraph4net_graph0;aliasgraphgraph1
bindvgraph
这个以后按v键即可实现网络状况图形的切换显示没按一下,就按照1,2,3,4,1,2,。。。的方式循环
/////////////////////////////////////////////////////////////////////
循环脚本按理说算结束了,实际上,我们还可以把它强化一下,增加一个按键,也就是再增加一个中间变量来进行双向循环控制
比如在我的CS版本中的MP3播放控制还有游戏中的音量控制就是采用的这种方法,大家有兴趣可以研究一下,音量控制和MP3控制
都是双向循环脚本,但是如果你可以看出它们之间的区别,说明你已经完全理解这一部分了,篇幅所限,这次讲到这里,大家也看累了吧?我也休息一下先
注:本人学习CFG,是拜读了
www.modchina.com脚本区斑竹o1m的教程(不知是不是传说中的小凡前辈),在本文中也摘取了其中的经典范例进行讲解,再次表示深深的感谢
附录:DcOocs1.6中关于MP3播放和声音控制的循环脚本
//调节游戏音量
aliasvolume0"volume0.0;aliasvolume_upvolume1;aliasvolume_downvolume0"
aliasvolume1"volume0.1;aliasvolume_upvolume2;aliasvolume_downvolume0"
aliasvolume2"volume0.2;aliasvolume_upvolume3;aliasvolume_downvolume1"
aliasvolume3"volume0.3;aliasvolume_upvolume4;aliasvolume_downvolume2"
aliasvolume4"volume0.4;aliasvolume_upvolume5;aliasvolume_downvolume3"
aliasvolume5"volume0.5;aliasvolume_upvolume6;aliasvolume_downvolume4"
aliasvolume6"volume0.6;aliasvolume_upvolume7;aliasvolume_downvolume5"
aliasvolume7"volume0.7;aliasvolume_upvolume8;aliasvolume_downvolume6"
aliasvolume8"volume0.8;aliasvolume_upvolume9;aliasvolume_downvolume7"
aliasvolume9"volume0.9;aliasvolume_upvolume10;aliasvolume_downvolume8"
aliasvolume10"volume1.0;aliasvolume_upvolume10;aliasvolume_downvolume9"
aliasvolume_up"volume8"
aliasvolume_down"volume6"
////////////////////////////////////////////////////////////
MP3选择,注:CS1.6中可以使用mp3playcstrike目录中的文件夹名/MP3文件名.mp3来播放MP3
aliasmp3_play1"mp3playmp3/1.mp3;aliasmp3_play_nextmp3_play2;aliasmp3_play_lastmp3_play20"
aliasmp3_play2"mp3playmp3/2.mp3;aliasmp3_play_nextmp3_play3;aliasmp3_play_lastmp3_play1"
aliasmp3_play3"mp3playmp3/3.mp3;aliasmp3_play_nextmp3_play4;aliasmp3_play_lastmp3_play2"
aliasmp3_play4"mp3playmp3/4.mp3;aliasmp3_play_nextmp3_play5;aliasmp3_play_lastmp3_play3"
aliasmp3_play5"mp3playmp3/5.mp3;aliasmp3_play_nextmp3_play6;aliasmp3_play_lastmp3_play4"
aliasmp3_play6"mp3playmp3/6.mp3;aliasmp3_play_nextmp3_play7;aliasmp3_play_lastmp3_play5"
aliasmp3_play7"mp3playmp3/7.mp3;aliasmp3_play_nextmp3_play8;aliasmp3_play_lastmp3_play6"
aliasmp3_play8"mp3playmp3/8.mp3;aliasmp3_play_nextmp3_play9;aliasmp3_play_lastmp3_play7"
aliasmp3_play9"mp3playmp3/9.mp3;aliasmp3_play_nextmp3_play10;aliasmp3_play_lastmp3_play8"
aliasmp3_play10"mp3playmp3/10.mp3;aliasmp3_play_nextmp3_play11;aliasmp3_play_lastmp3_play9"
aliasmp3_play11"mp3playmp3/11.mp3;aliasmp3_play_nextmp3_play12;aliasmp3_play_lastmp3_play10"
aliasmp3_play12"mp3playmp3/12.mp3;aliasmp3_play_nextmp3_play13;aliasmp3_play_lastmp3_play11"
aliasmp3_play13"mp3playmp3/13.mp3;aliasmp3_play_nextmp3_play14;aliasmp3_play_lastmp3_play12"
aliasmp3_play14"mp3playmp3/14.mp3;aliasmp3_play_nextmp3_play15;aliasmp3_play_lastmp3_play13"
aliasmp3_play15"mp3playmp3/15.mp3;aliasmp3_play_nextmp3_play16;aliasmp3_play_lastmp3_play14"
aliasmp3_play16"mp3playmp3/16.mp3;aliasmp3_play_nextmp3_play17;aliasmp3_play_lastmp3_play15"
aliasmp3_play17"mp3playmp3/17.mp3;aliasmp3_play_nextmp3_play18;aliasmp3_play_lastmp3_play16"
aliasmp3_play18"mp3playmp3/18.mp3;aliasmp3_play_nextmp3_play19;aliasmp3_play_lastmp3_play17"
aliasmp3_play19"mp3playmp3/19.mp3;aliasmp3_play_nextmp3_play20;aliasmp3_play_lastmp3_play18"
aliasmp3_play20"mp3playmp3/20.mp3;aliasmp3_play_nextmp3_play1;aliasmp3_play_lastmp3_play19"
aliasmp3_play_next"mp3_play1"//播放MP3下一曲
aliasmp3_play_last"mp3_play20"//播放MP3上一曲