CS > 经验交流 > [经验] 脚本制作教程

[经验] 脚本制作教程

07-12-08 我要评论 来源:新浪游民部落
准备工作:

  用写字板打开你的config.cfg(cstrike目录下).把console""""0.000000""""

  这行改为console""""1"""".

  然后在cstrike快捷方式里的程序地址后面添加

  -console-zone4096-dev

  如:C:SierraHalf-Lifehl.exe-console-zone4096-dev

  什么是alias(宏)?

  可以说脚本就是在一个个宏的基础上组建起来的,这也是我们必须了解的第一个问题

  宏的大致格式是这样的:

  alias[alias-name]""""[command1];[command2];[command#]....""""

  我们可以看出,宏实际上就是一系列指令的集合,所以,任何一个宏也可以应用到其他的宏中。

  脚本中最常用的一些指令

  menuselect#-#为1至9的一个数字.这个指令表示选择菜单中的第#个选项.如:

  例:aliasjoinct""""chooseteam;menuselect2""""

  引号中的内容即表示选择team菜单的第2项,即CT这边

  bindKEYCOMMAND-

  把某个特定的指令定义到某个键上.注意:'COMMAND'也可为一个宏.

  如:bind""""k""""""""kill""""

  把kill这个指令定义到k上,这样你按k时就自杀了

  又如:bind""""k""""""""joinct""""

  则你按k就会加入CT这边.

  execname.cfg-

  导入某个cfg文件.HL每次进入游戏时会自动导入config.cfg和autoexec.cfg文件.

  wait-

  停滞一小会.脚本中的wait是为了让前指令执行完.使用多少wait要根据不同的电脑和网络情况而定,太多的wait就会引起lag,太少则可能使下一个指令来不及执行.

  简单的宏

  让我们先看一些最简单的宏来熟悉一下

  打开autoexec.cfg,写入以下行:

  aliashello""""sayWelcometoCsChina.net!;wait;wait;kill;wait;

  wait;say_teamWelcometoCsChina.net!""""

  让我们看看这个宏的结构:

  引号中为一个指令集,其中say这个指令的作用是对游戏中所有人说话,say_team则是对所有队友说话

  注意:单个指令之间用分号;隔开

  这个指令集被定义为一个名为hello的宏

  别急,你还必须把刚刚制作的宏定义到某个键位上才能使用,进入游戏,在控制面版中敲入

  bind""""k""""""""hello""""

  好了,现在让我们按K看看效果吧,hoho~~

  宏的类型及简单脚本制作

  脚本制作的基本概念我们已经比较清楚了,现在一起看一看宏的几种类型并将其应该到简单的脚本制作中

  +/-aliases

  其意义为当按住某个键时执行一个指令集,而松开此键时则执行另外一个指令集(注:这两个指令集可以相同也可以好不相干)

  例:

  alias+sayreload""""+reload;say_teamCovermewhileIreload!""""

  alias-sayreload""""-reload""""

  +/-

  aliases,可以使你原本简单的动作更加多样化,如扩展开就是更复杂但更有效的meta

  binds(

  metabinds

  metaBinds实际上就是一种+/-alias,但不同的是,meta

  binds在松开定义键之后对该键重新做了定义(←Archangel注:此行用红色字体.)一定要注意这个区别,这将非常有助于理解这两种宏的类型。

  让我们来看一个常见的制作快速买抢脚本的例子:

  Example:

  aliaspreset1""""buy;menuselect4;menuselect6;buy;menuselect6;buyequip;

  menuselect2""""

  //购买AWM、子弹以及防弹衣

  aliaspreset2""""buy;menuselect3;menuselect1;buy;menuselect6;buyequip;

  menuselect1;""""

  //购买MP5、子弹以及防弹衣

  aliaspreset3""""buy;menuselect2;menuselect1;buy;menuselect1;

  menuselect5;buy;menuselect6;buy;menuselect7;buyequip;menuselect2""""

  //购买M3,beretta,子弹,带头盔的防弹衣

  aliaspreset4""""buy;menuselect1;menuselect3;buy;menuselect7""""

  //购买手雷和子弹

  aliaspreset5""""developer1;echoPresetnotset!;developer0""""

  //在屏幕左上角显示该组合键未定义----Presetnotset!

  注:echo这个指令的意义为在屏幕左上角显示你所定义的信息

  aliaspreset6""""developer1;echoPresetnotset!;developer0""""

  aliaspreset7""""developer1;echoPresetnotset!;developer0""""

  aliaspreset8""""developer1;echoPresetnotset!;developer0""""

  aliaspreset9""""developer1;echoPresetnotset!;developer0""""

  aliaspreset10""""developer1;echoPresetnotset!;developer0""""

  //同上

  alias+toggle""""bind1preset1;bind2preset2;bind3preset3;bind4

  preset4;bind5preset5;bind6preset6;bind7preset7;bind8preset8;

  bind9preset9;bind0preset10""""

  alias-toggle""""bind1slot1;bind2slot2;bind3slot3;bind4slot4;bind

  5slot5;bind6slot6;bind7slot7;bind8slot8;bind9slot9;bind0

  slot0""""

  bindalt""""+toggle""""

  这个脚本子后三行是关键所在,其意义为,当按住alt和某数字键时,执行脚本前半部定义的购枪指令集,而当松开alt键时,数字键则恢复为原功能,即切换枪支,这就是meta

  binds的意义所在!

  其作用也是显而易见的:可以节省不少键位,并可以在常用键位上定义更多的指令集

  Toggles

  Toggles(开关)最典型的例子就是开关探照灯和夜视仪。让我们制作一个开关netgraph(状态显示,如FPS)的Toggle来熟悉和研究一下

  Example:

  aliasngon""""developer1;echoNetGraphon;developer0;net_graph3;bindn

  ngoff""""

  aliasngoff""""developer1;echoNetGraphoff;developer0;net_graph0;bind

  nngon""""

  bindn""""ngon""""

  这个脚本的作用即为用n键来开关netgraph,注意Toggle的特点,在第一个宏的末尾将n键定义到下一个宏,这实际上就形成了一种循环(cycling),但这个脚本显然并不能令人满意,因为它不能添加到键盘设置菜单中以便更快捷的调整,因为:请注意!该键被定义(bind)了两次。如何解决这个问题呢,稍稍改动即可。

  Toggles(complex)

  即为改进后的Toggles,其好处在于只需设定一个键位,仍然以netgraph开关为例

  Example:

  aliasngon""""developer1;echoNetGraphon;developer0;net_graph3;alias

  ngngoff""""

  aliasngoff""""developer1;echoNetGraphoff;developer0;net_graph0;

  aliasngngon""""

  aliasng""""ngon""""

  bindn""""ng""""

  大家可以看到:两个宏的尾部都由原来的bind改为alias,在第三行把键单独定义,非常巧妙,不是吗?hoho~~

  现在我们可以在键盘设置栏直接定义该键了,更重要的是:理解了这个技巧,我们就可以进入下一课-----循环

  Cyclealiases

  前面的toggle仅仅是两种情况的选择,即开和关,当我们面临更多种选择时怎么办呢?这就需要Cycle

  aliases,还是看netgraph的例子,但这一次,我们要用n键选择不同的netgraph显示形式.

  Example:

  aliasng1""""developer1;echoNetGraphon,setting1;developer0;net_graph

  1;aliasngng2""""

  aliasng2""""developer1;echoNetGraphon,setting2;developer0;net_graph

  2;aliasngng3""""

  aliasng3""""developer1;echoNetGraphon,setting3;developer0;net_graph

  3;aliasngng4""""

  aliasng4""""developer1;echoNetGraphoff;developer0;net_graph0;alias

  ngng1""""

  aliasng""""ng1""""

  bindn""""ng""""

  我们可以看到,在每一行的末尾都将键定义到下一个宏上,这就形成了循环.

  制作自己的键位设置菜单

  在前一章中我们提到键位设置菜单中添加自己的选项

  这就是最后一节中我们将详细讲解的内容

  csnation.counter-strike.net/content/csinfo/images/scripting/controls2-small.jpg

  打开你的half-lifecstrike目录下的gfx文件夹,用写字板打开其中的kb_act.lst文件,你可以看到这样一些内容:

  """"buyammo1""""""""BuyPrimaryAmmo(Optional)""""

  """"buyammo2""""""""BuySecondaryAmmo(Optional)""""

  """"buyequip""""""""BuyEquipmentMenu(Optional)""""

  ……………………

  左边就是宏的名称,而右边则是你希望玩家在菜单中所看到的对这个宏的解释

  好,现在我们有这么一个脚本

  aliasfloat_t""""float_on""""

  aliasfloat_on""""aliasfloat_tfloat_off;+moveup""""

  aliasfloat_off""""aliasfloat_tfloat_on;-moveup""""

  已经比较熟悉脚本制作的大家应该看的出来,这是一个一键游泳的toggle

  怎样在菜单中也加上这个toggle的一栏呢?想必你也看出来了,对,只要在kb_act.lst的下面加上这么一行""""float_t""""""""FloatingToggler""""

  就一切搞定,就是这么简单,呵呵

  一样,你还可以在菜单为你的脚本加个商标,加入下面行:

  """"blank""""""""YouarerunningVersionXXXofXXXX0""""

  进入游戏后你就可以看见你的大名也烙在了CS,帅:>

  另外kb_act.lst这个文件是有大小限制的,不过估计谁也写不了那么多,hohoho~~

  脚本制作的教程就到此结束了,大家还需要在实践中熟练并创新