首先介绍脚本的基本知识:
什么是bind?
Bind就是分配一个命令到指定的键,它同样能够分配一个alias到指定的键。
比如:
bind "MOUSE1" "+attack"
表示分配+attack(攻击)这个命令到指定的键MOUSE1(鼠标左键)
什么是alias?
Alias就是给一组命令定义一个名称,当你定义过后,CS就认为此alias为一个普通的命令,你可以用bind命令分配一个键给这个alias,也可以在其他的alias中使用它。
比如:
alias hw "say Hello World!"
则当你在控制台(console)中输入hw这条命令回车执行后你就对服务器里所有的玩家说了Hello World!这句话,你还可以用bind命令:
bind v "hw"当你按过v键后你同样对服务器里所有的玩家说了Hello World!这句话。
又比如:
alias buym "buy;menuselect 3;menuselect 1"
alias buyv "buy;menuselect 8;menuselect 1"
alias buysay "buym;buyv;hw"
bind j "buysay"
则表示当你执行buysay命令(如按下由bind分配好的j键)后购买MP5和普通防弹衣然后对服务器里所有的玩家说Hello World!这句话。此alias实现的方法为:第一步执行buym命令,buym命令已经定义好为"打开购买菜单;选择菜单第3项;再选择菜单第1项"即实现了购买MP5的功能,第二步执行buyv命令,buyv命令已经定义好为"打开购买菜单;选择菜单第8项;再选择菜单第1项"即实现了购买普通防弹衣的功能,第三步执行之前已经定义好的hw命令:对服务器里所有的玩家说Hello World!这句话。把这三步命令定义为一个新的命令buysay然后用bind命令分配一个键(此处为j键)给这个alias(此处为buysay)则当你按下j键后就实现了这三步命令的功能。
注意:alias语句不能超过259个字符即下面这行字符的长度在Half-Life:Counter-Strike里:
"------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
什么是脚本(Script)?
脚本(Script)就是含有bind和alias等命令的集合,你可以把这个集合存为一个独立的文件然后在需要的时候执行,这样就可以方便你在CS中的使用。脚本可以存为后缀名为.cfg的文件放在cstrike文件夹下,执行时在控制台输入:
exec 脚本文件名.cfg即可。比如将以上的脚本存为buys.cfg文件,则在控制台中输入:
exec buys.cfg则可以实现我们所需要的功能。
比如:我们执行了一系列命令,执行这一系列命令有一个过程。
用一个命令把这一过程定义(alias)好,最后分配(bind)一个键位给这个命令,以后只要按分配好的键位,就可以实现这一过程。所有的脚本都是通过这一方法实现的。
--------------------------------------------------------------------------------
基本式脚本 购买式脚本 开关式脚本 循环式脚本
按下&松开式脚本 按下&松开的开关式脚本 变位分配式脚本
综合运用的例子
--------------------------------------------------------------------------------
基本式脚本:
在脚本文件中//作用为注释,CS系统不会执行//后的文字。如在脚本中加入:
// 单身的至尊宝制作
系统并不会管理这行文字而是忽略掉//及之后的文字。
在脚本文件中" "作用为alias的开始和结束标志。
在脚本文件中;的作用是分开两条命令语句。
首先你必须了解developer这一命令这是关于调试信息的命令:在控制台输入developer 1后所有载控制台中显示的信息都会在游戏的屏幕上显示出来。相反输入developer 0则关闭显示信息。注意:这些信息只是你本身的客户端能看到,并不会发送的其他的玩家那里。
比如我想要在屏幕的上方显示This Script Edited by Nick这条信息,可以在控制台中用命令echo This Script Edited by Nick实现,但在游戏时是不可能看得到的(被控制台挡住了)怎样实现呢?我们可以用一个alias脚本实现:
alias nick "developer 1; echo This Script Edited by Nick;developer 0"
然后bind v "nick" 关闭/隐藏控制台后在你按下v键后屏幕的上方就会显示This Script Edited by Nick这条信息。
其次你可以使用alias语句使一些系统默认的命令简化,如:
alias dvon "developer 1"
alias dvoff "developer 0"
则上一条脚本可以简化成:
alias nick "dvon; echo This Script Edited by Nick;dvoff" 这对我们编辑较长的脚本时十分有用。
wait命令在脚本中也是十分常用的,它的作用是在执行脚本时做一个极小的暂停,当你的延迟情况不是很严重时可以只使用几个wait命令,当你的延迟情况比较糟糕时可以多用几个wait命令来使你的脚本得以完整/正确的执行。如:
alias clmenu "wait;wait;wait;slot10"
这条命令是用来清除屏幕上的菜单信息的,在开头的买木仓脚本中买完木仓后并没有清除购买菜单我们需要按0键来清除菜单,而如果使用了这里的clmenu命令则可以清除购买菜单,slot10的功能就是选择菜单上的0项。而前面的几个wait命令就是为了防止由网络延迟引起的系统忽略了slot10这条命令,还可以更保险一些把clmenu命令写成:
alias clmenu "wait;wait;wait;slot10;wait;wait;slot10"选两次0项来清除购买菜单。
如果你需要较多的延迟也可以写出下面的命令:
alias w1 "wait;wait;wait;wait;wait;wait;wait;wait;wait;wait"然后在需要时用w1命令代替wait命令。
购买式脚本:
首先了解购买式脚本的基本命令:
buy 打开武器购买菜单
buyequip 打开装备购买菜单
menuselect x 从菜单中选择项目x
buyammo1 购买一个弹夹的主武器子弹。默认为,键。
buyammo2 购买一个弹夹的手木仓子弹。默认为.键。
其次做一些准备工作:
//------------------------------------------
//| 设置买子弹、清除菜单等功能 |
//------------------------------------------
alias nick "dvon; echo This Script Edited by Nick; dvoff"
alias dvon "developer 1"
alias dvoff "developer 0"
//在控制台中输入clmping即可切换ping值高和低时清除菜单的速度
alias "clmping" "clmenu400"
//选择菜单上的项目0,清除菜单(ping值>400时使用)
alias "clmenu400" "alias clmping clmenu;wait;wait;wait;wait;slot10;wait;slot10;wait;slot10;wait;slot10"
//选择菜单上的项目0,清除菜单(ping值<50时使用)
alias "clmenu" "alias clmping clmenu400;wait;wait;wait;slot10;wait;wait;slot10"
alias "fammo" "buy; menuselect 6; buy; menuselect 7;"//买满主武器和手木仓的弹夹,满的所有弹夹
alias "wammo" "buy; menuselect 6;"//买满主武器的弹夹
alias "sammo" "buy; menuselect 7;"//买满手木仓的弹夹
alias "b1" "buyammo1;"//1个主弹夹
alias "b2" "buyammo1; buyammo1;"//2个主弹夹
alias "b3" "buyammo1; buyammo1; buyammo1; "//3个主弹夹
alias "b4" "buyammo1; buyammo1; buyammo1; buyammo1;"//4个主弹夹
alias "b5" "buyammo1; buyammo1; buyammo1; buyammo1; buyammo1;"//5个主弹夹
alias "b6" "buyammo1; buyammo1; buyammo1; buyammo1; buyammo1; buyammo1;"//6个主弹夹
alias "b7" "buyammo1; buyammo1; buyammo1; buyammo1; buyammo1; buyammo1; buyammo1;"//7个主弹夹
alias "b8" "buyammo1; buyammo1; buyammo1; buyammo1; buyammo1; buyammo1; buyammo1; buyammo1"//8个主弹夹
alias "b9" "buyammo1; buyammo1; buyammo1; buyammo1; buyammo1; buyammo1; buyammo1; buyammo1; buyammo1;"//9个主弹夹
alias "bs1" "buyammo2;"//1个手木仓弹夹
alias "bs2" "buyammo2; buyammo2;"//2个手木仓弹夹
alias "bs3;" "buyammo2; buyammo2; buyammo2;"//3个手木仓弹夹
alias "bs4" "buyammo2; buyammo2; buyammo2; buyammo2;"//4个手木仓弹夹
alias "bs5" "buyammo2; buyammo2; buyammo2; buyammo2; buyammo2;"//5个手木仓弹夹
这些alias使脚本编写时变得更方便也更简洁。
然后开始编写购买脚本:
//-----------------------------
//| 一键买木仓 |
//-----------------------------
alias "ak/m4" "buy;menuselect 4;menuselect 1;buy;menuselect 4;menuselect 3;fammo;clmenu;say_team I am Take [Kalashnikov AK-47/Colt M4A1 Carbine]" //买AK47/M4A1和所有子弹
alias "sg552/aug" "buy;menuselect 4;menuselect 2;buy;menuselect 4;menuselect 4;fammo;clmenu;say_team I am Take [SG552 Commando/Steyr Aug]" //买SG552/Aug和所有子弹
alias "awp" "buy;menuselect 4;menuselect 6;fammo;clmenu;say_team I am Take [AWM/P]" //买AWM/P和所有子弹
alias "g3/sg550" "buy;menuselect 4;menuselect 7;buy;menuselect 4;menuselect 8;fammo;clmenu;say_team I am Take [G3SG-1/SG-550 Sniper Rifle]" //买G3SG-1/SG550和所有子弹
alias "mp5" "buy;menuselect 3;menuselect 1;fammo;clmenu;say_team I am Take [H&K MP5 Navy]" //买MP5和所有子弹
alias "TMP/Mac" "buy;menuselect 3;menuselect 2;buy;menuselect 3;menuselect 4;fammo;clmenu;say_team I am Take [Steyr TMP/Ingram MAC-10]" //买TMP/Mac-10和所有子弹
alias "p90" "buy;menuselect 3;menuselect 3;fammo;clmenu;say_team I am Take [FN P90]" //买P90和所有子弹
alias "ump45" "buy;menuselect 3;menuselect 5;fammo;clmenu;say_team I am Take [UMP45]" //买UMP45和所有子弹
alias "m3" "buy;menuselect 2;menuselect 1;fammo;clmenu;say_team I am Take [M3 Super 90 Entry]" //买M3和所有子弹
alias "xm1014" "buy;menuselect 2;menuselect 2;fammo;clmenu;say_team I am Take [XM 1014]" //买xm1014和所有子弹
alias "m249" "buy;menuselect 5;menuselect 1;fammo;clmenu;say_team I am Take [FN M249 Para]" //买M249和所有子弹
alias "scout" "buy;menuselect 4;menuselect 5;fammo;clmenu;say_team I am Take [Scout]" //买scout和所有子弹
alias "usp" "buy;menuselect 1;menuselect 1;fammo;clmenu;say_team I am Take [USP.45ACP Tactical]" //买usp和所有子弹
alias "glock" "buy;menuselect 1;menuselect 2;fammo;clmenu;say_team I am Take [Glock 18C]" //买glock和所有子弹
alias "deagle" "buy;menuselect 1;menuselect 3;fammo;clmenu;say_team I am Take [Desert Eagle .50AE]" //买Desert Eagle .50AE沙漠之鹰和所有子弹
alias "p228" "buy;menuselect 1;menuselect 4;fammo;clmenu;say_team I am Take [Sig P228]" //买P228和所有子弹
alias "elite/57" "buy;menuselect 1;menuselect 5;buy;menuselect 1;menuselect 6;fammo;clmenu;say_team I am Take [FN Five-Seven/Dual 96G Elite Beretta's]" //买elite/57和所有子弹
//-----------------------------
//| 一键买装备|
//-----------------------------
alias "armour" "buyequip;menuselect 1;clmenu;say_team I am Buy [Kevlar Vest]" //买防弹衣
alias "bh-armour" "buyequip;menuselect 2;clmenu;say_team I am Buy [Kevlar Vest & Helmet]" //买防弹衣和头盔
alias "n-g" "buyequip;menuselect 7;clmenu;say_team I am Buy [NightVision Goggles]" //买夜视仪
alias "flashbang" "buyequip;menuselect 3;buyequip;menuselect 3;clmenu;say_team I am Buy [Flashbang]" //买闪光弹
alias "HE-ge" "buyequip;menuselect 4;clmenu;say_team I am Buy [HE Grenade]" //买高爆手雷
alias "sm-ge" "buyequip;menuselect 5;clmenu;say_team I am Buy [Smoke Grenade]" //买烟雾弹
alias "defuser" "buyequip;menuselect 6;clmenu;say_team I am Take [Defuse Kit]" //买拆弹器
//-----------------------------
//| 打包购买|
//-----------------------------
//买防弹衣MP5、满的主弹夹、和手雷
alias "SMG1" "buyequip;menuselect 1;buy;menuselect 3;menuselect 1;wammo;buyequip;menuselect 4; clmenu;say_team I am Buy [MP5 Value Pack]"
//买防弹衣和头盔、MP5、Desert Eagle .50AE沙漠之鹰、满的所有弹夹和三种手雷、拆弹器
alias "SMG1F" "buyequip;menuselect 2;buy;menuselect 3;menuselect 1;wammo;buyequip;menuselect 4;buy;menuselect 1;menuselect 3; sammo;buyequip;menuselect 3;buyequip;menuselect 6;buyequip;menuselect 3;buyequip;menuselect 5; clmenu;say_team I am Buy [MP5 Navy Full Pack]"
//买防弹衣和头盔、M4A1或AK47、满的主弹夹、手雷和2个闪光弹、拆弹器
alias "AR1" "buyequip;menuselect 2;buy;menuselect 4;menuselect 3;buy;menuselect 4;menuselect 1;wammo;buyequip;menuselect 4;buyequip;menuselect 3;buyequip;menuselect 6;buyequip;menuselect 3;clmenu;say_team I am Buy [M4A1/AK47 Normal Pack]"
//买防弹衣和头盔、M4A1或AK47、沙漠之鹰、满的所有弹夹、手雷和2个闪光弹、拆弹器
alias "AR1F" "buyequip;menuselect 2;buy;menuselect 4;menuselect 3;buy;menuselect 4;menuselect 1;wammo;buyequip;menuselect 4;buyequip;menuselect 3;buyequip;menuselect 6;buy;menuselect 1;menuselect 3;buyequip;menuselect 3;sammo;clmenu;say_team I am Buy [M4A1/AK47 Full Pack]"
//买防弹衣、SG552或Aug、满的主弹夹、手雷和1个闪光弹、拆弹器
alias "ARA1" "buyequip;menuselect 1;buy;menuselect 4;menuselect 4;buy;menuselect 4;menuselect 2;wammo;buyequip;menuselect 4;buyequip;menuselect 3;buyequip;menuselect 6; clmenu;say_team I am Buy [SG552/Aug Normal Pack]"
//买防弹衣和头盔、SG552或Aug、满的主弹夹、沙漠之鹰、2个手木仓弹夹、手雷和2个闪光弹、拆弹器
alias "ARA1F" "buyequip;menuselect 2;buy;menuselect 4;menuselect 4;buy;menuselect 4;menuselect 2;wammo;buyequip;menuselect 4;buy;menuselect 1;menuselect 3;bs2;buyequip;menuselect 3;buyequip;menuselect 6;buyequip;menuselect 3;clmenu;say_team I am Buy [SG552/Aug Full Pack]"
//买防弹衣、AWM/P、满的主弹夹、手雷
alias "SNFS" "buyequip;menuselect 1;buy;menuselect 4;menuselect 6;wammo;buyequip;menuselect 4; clmenu;say_team I am Buy [AWM/P Value Pack]"
//买防弹衣和头盔、AWM/P、沙漠之鹰、满的所有弹夹、和三种手雷、拆弹器
alias "SNFF" "buyequip;menuselect 2;buy;menuselect 4;menuselect 6;wammo;buy;menuselect 1;menuselect 3;sammo;buyequip;menuselect 4;buyequip;menuselect 3;buyequip;menuselect 6;buyequip;menuselect 3;buyequip;menuselect 5; clmenu;say_team I am Buy [AWM/P Full Pack]"
//变位购买增强包
alias +metabuy "bind DEL SMG1F;bind END AR1F;bind PGDN SNFF;bind HOME ARA1F"
//还原变位购买普通包
alias -metabuy "bind DEL SMG1;bind END AR1;bind PGDN SNFS;bind HOME ARA1"
以后把此脚本存为一个.cfg文件,然后在autoexec.cfg文件里调用(exec 文件名.cfg)在cstrike\gfx\shell\kb_act.lst做好预留键位,即可。此后就可以在CS的键盘设置中设好相应的键位,在游戏中就可以实现一键买木仓的功能了。此脚本除了买木仓之外还会通知你的队友你买木仓或的类型、或你在战斗途中拣到木仓后也可以用此功能来通知你的队友你的木仓的类型(由say_team命令实现),这在团队比赛时十分有用。
买木仓脚本的实现实际上就是打开菜单->选择要购买木仓支/装备的类型->再选择要购买的项目->关闭菜单这一过程。
开关式脚本:
开关式脚本的格式为:
alias "开关" "关闭"
alias "关闭" "alias 开关 打开;关闭的命令"
alias "打开" "alias 开关 关闭;打开的命令"
然后bind "键位" "开关"即可。
比如:
alias radar_t radar_off
alias radar_off "alias radar_t radar_on; hideradar"
alias radar_on "alias radar_t radar_off; drawradar"
然后bind "\" "radar_t"即可。以后按\键即可实现雷达的开关。
我们把每一行加上注解:
alias radar_t radar_off (定义radar_t为开关命令,执行radar_t命令即执行radar_off命令)
alias radar_off "alias radar_t radar_on; hideradar"(把radar_t重定义为命令radar_on,执行hideradar命令)
alias radar_on "alias radar_t radar_off; drawradar"(把radar_t重定义为命令radar_off,执行drawradar命令)
当你bind了一个键后实际上已经执行了第一句alias radar_t radar_off即定义radar_t到radar_off
当你按下\键后因为第一句已经定义了执行radar_t命令即执行radar_off命令,即执行了第二句alias radar_off "alias radar_t radar_on; hideradar"即定义radar_t到radar_on然后执行hideradar命令隐藏雷达。
当你再次按下\键后因为第二句已经定义了执行radar_t命令即执行radar_on命令,即执行了第三句alias radar_on "alias radar_t radar_off; drawradar"即定义radar_t到radar_off然后执行drawradar命令显示雷达。
如果你再按下\键即又执行了第二句alias radar_off "alias radar_t radar_on; hideradar"即定义radar_t到radar_on然后执行hideradar命令隐藏雷达。如此雷达的开关功能就实现了。
[此贴子已经被作者于2004-10-8 16:51:52编辑过]