■■■■■■■■■"宏"的解释■■■■■■■■■

社区服务
高级搜索
猴岛论坛CSGO反恐精英CS脚本发布区■■■■■■■■■"宏"的解释■■■■■■■■■
发帖 回复
正序阅读 最近浏览的帖子最近浏览的版块
8个回复

■■■■■■■■■"宏"的解释■■■■■■■■■

楼层直达
jd大毛哥哥

ZxID:1280293

等级: 大校
举报 只看楼主 使用道具 楼主   发表于: 2007-10-25 0
— 本帖被 夨魂。 执行锁定操作(2009-04-30) —
用写字板打开你的config.cfg(cstrike目录下). 把console "0.000000" 
这行改为console "1". 
然后在cstrike快捷方式里的程序地址后面添加 
-console -zone 4096 -dev 
如:C:\Sierra\Half-Life\hl.exe -console -zone 4096 -dev 

什么是alias(宏)? 
可以说脚本就是在一个个宏的基础上组建起来的,这也是我们必须了解的第一个问题 
宏的大致格式是这样的: 
alias [alias-name] "[command 1]; [command 2]; [command #]...." 
我们可以看出,宏实际上就是一系列指令的集合,所以,任何一个宏也可以应用到其他的宏中。 


脚本中最常用的一些指令 
menuselect # - #为1至9的一个数字.这个指令表示选择菜单中的第#个选项. 如: 
例:alias joinct "chooseteam; menuselect 2" 
引号中的内容即表示选择team菜单的第2项,即CT这边 
bind KEY COMMAND - 
把某个特定的指令定义到某个键上.注意:'COMMAND'也可为一个宏. 
如: bind "k" "kill" 
把kill这个指令定义到k上,这样你按k时就自杀了 
又如: bind "k" "joinct" 
则你按k就会加入CT这边. 
exec name.cfg - 
导入某个cfg文件.HL每次进入游戏时会自动导入config.cfg和autoexec.cfg文件. 
wait - 
停滞一小会.脚本中的wait是为了让前指令执行完.使用多少wait要根据不同的电脑和网络情况而定,太多的wait就会引起lag,太少则可能使下一个指令来不及执行. 

简单的宏 
让我们先看一些最简单的宏来熟悉一下 
打开autoexec.cfg,写入以下行: 
alias hello "say Welcome to CsChina.net!; wait; wait; kill; wait; 
wait;say_team Welcome to CsChina.net!" 
让我们看看这个宏的结构: 
引号中为一个指令集,其中say这个指令的作用是对游戏中所有人说话,say_team则是对所有队友说话 
注意:单个指令之间用分号;隔开 
这个指令集被定义为一个名为hello的宏 
别急,你还必须把刚刚制作的宏定义到某个键位上才能使用,进入游戏,在控制面版中敲入 
bind "k" "hello" 
好了,现在让我们按K看看效果吧,hoho~~ 


宏的类型及简单脚本制作 
脚本制作的基本概念我们已经比较清楚了,现在一起看一看宏的几种类型并将其应该到简单的脚本制作中 
+/- aliases 
其意义为当按住某个键时执行一个指令集,而松开此键时则执行另外一个指令集(注:这两个指令集可以相同也可以好不相干) 
例: 
alias +sayreload "+reload;say_team Cover me while I reload!" 
alias -sayreload "-reload" 
+/- 
aliases,可以使你原本简单的动作更加多样化,如扩展开就是更复杂但更有效的Meta 
binds( 


Meta binds 
Meta Binds实际上就是一种+/- alias,但不同的是,Meta 
binds在松开定义键之后对该键重新做了定义(←Archangel注:此行用红色字体.)一定要注意这个区别,这将非常有助于理解这两种宏的类型。 
让我们来看一个常见的制作快速买抢脚本的例子: 
Example: 
alias preset1 "buy; menuselect 4; menuselect 6; buy; menuselect 6; buyequip; 
menuselect 2" 
//购买AWM、子弹以及防弹衣 

alias preset2 "buy; menuselect 3; menuselect 1; buy; menuselect 6; buyequip; 
menuselect 1;" 
//购买MP5、子弹以及防弹衣 

alias preset3 "buy; menuselect 2; menuselect 1; buy; menuselect 1; 
menuselect 5; buy; menuselect 6; buy; menuselect 7; buyequip; menuselect 2" 
//购买M3,beretta, 子弹,带头盔的防弹衣 

alias preset4 "buy; menuselect 1; menuselect 3; buy; menuselect 7" 
//购买手雷和子弹 

alias preset5 "developer 1; echo Preset not set!; developer 0" 
//在屏幕左上角显示该组合键未定义----Preset not set! 
注:echo这个指令的意义为在屏幕左上角显示你所定义的信息 

alias preset6 "developer 1; echo Preset not set!; developer 0" 
alias preset7 "developer 1; echo Preset not set!; developer 0" 
alias preset8 "developer 1; echo Preset not set!; developer 0" 
alias preset9 "developer 1; echo Preset not set!; developer 0" 
alias preset10 "developer 1; echo Preset not set!; developer 0" 
//同上 

alias +toggle "bind 1 preset1; bind 2 preset2; bind 3 preset3; bind 4 
preset4; bind 5 preset5; bind 6 preset6; bind 7 preset7; bind 8 preset8; 
bind 9 preset9; bind 0 preset10" 

alias -toggle "bind 1 slot1; bind 2 slot2; bind 3 slot3; bind 4 slot4; bind 
5 slot5; bind 6 slot6; bind 7 slot7; bind 8 slot8; bind 9 slot9; bind 0 
slot0" 

bind alt "+toggle" 
这个脚本子后三行是关键所在,其意义为,当按住alt和某数字键时,执行脚本前半部定义的购木仓指令集,而当松开alt键时,数字键则恢复为原功能,即切换木仓支,这就是Meta 
binds的意义所在! 
其作用也是显而易见的:可以节省不少键位,并可以在常用键位上定义更多的指令集 

Toggles 
Toggles(开关)最典型的例子就是开关探照灯和夜视仪。让我们制作一个开关netgraph(状态显示,如FPS)的Toggle来熟悉和研究一下 
Example: 
alias ngon "developer 1; echo Net Graph on; developer 0; net_graph 3; bind n 
ngoff" 
alias ngoff "developer 1; echo Net Graph off; developer 0; net_graph 0; bind 
n ngon" 
bind n "ngon" 
这个脚本的作用即为用n键来开关netgraph,注意Toggle的特点,在第一个宏的末尾将n键定义到下一个宏,这实际上就形成了一种循环(cycling),但这个脚本显然并不能令人满意,因为它不能添加到键盘设置菜单中以便更快捷的调整,因为:请注意!该键被定义(bind)了两次。如何解决这个问题呢,稍稍改动即可。 

Toggles(complex) 
即为改进后的Toggles,其好处在于只需设定一个键位,仍然以netgraph开关为例 
Example: 
alias ngon "developer 1; echo Net Graph on; developer 0; net_graph 3; alias 
ng ngoff" 
alias ngoff "developer 1; echo Net Graph off; developer 0; net_graph 0; 
alias ng ngon" 
alias ng "ngon" 
bind n "ng" 
大家可以看到:两个宏的尾部都由原来的bind改为alias,在第三行把键单独定义,非常巧妙,不是吗?hoho~~ 
现在我们可以在键盘设置栏直接定义该键了,更重要的是:理解了这个技巧,我们就可以进入下一课-----循环 

Cycle aliases 
前面的toggle仅仅是两种情况的选择,即开和关,当我们面临更多种选择时怎么办呢?这就需要Cycle 
aliases,还是看netgraph的例子,但这一次,我们要用n键选择不同的netgraph显示形式. 
Example: 
alias ng1 "developer 1; echo Net Graph on, setting 1; developer 0; net_graph 
1; alias ng ng2" 
alias ng2 "developer 1; echo Net Graph on, setting 2; developer 0; net_graph 
2; alias ng ng3" 
alias ng3 "developer 1; echo Net Graph on, setting 3; developer 0; net_graph 
3; alias ng ng4" 
alias ng4 "developer 1; echo Net Graph off; developer 0; net_graph 0; alias 
ng ng1" 
alias ng "ng1" 
bind n "ng" 
我们可以看到,在每一行的末尾都将键定义到下一个宏上,这就形成了循环. 


制作自己的键位设置菜单 
在前一章中我们提到键位设置菜单中添加自己的选项 
这就是最后一节中我们将详细讲解的内容 
 
打开你的half-life\cstrike目录下的gfx文件夹,用写字板打开其中的kb_act.lst文件,你可以看到这样一些内容: 
"buyammo1" "Buy Primary Ammo (Optional)" 
"buyammo2" "Buy Secondary Ammo (Optional)" 
"buyequip" "Buy Equipment Menu (Optional)" 
………… ………… 

左边就是宏的名称, 而右边则是你希望玩家在菜单中所看到的对这个宏的解释 
好,现在我们有这么一个脚本 
alias float_t "float_on" 
alias float_on "alias float_t float_off; +moveup" 
alias float_off "alias float_t float_on; -moveup" 
已经比较熟悉脚本制作的大家应该看的出来,这是一个一键游泳的toggle 
怎样在菜单中也加上这个toggle的一栏呢?想必你也看出来了,对,只要在kb_act.lst的下面加上这么一行 
"float_t" "Floating Toggler" 
就一切搞定,就是这么简单,呵呵 
一样,你还可以在菜单为你的脚本加个商标,加入下面行: 
"blank" "You are running Version XXX of XXXX0" 
进入游戏后你就可以看见你的大名也烙在了CS,帅 :> 
另外kb_act.lst这个文件是有大小限制的,不过估计谁也写不了那么多,~



jd大毛哥哥

ZxID:1280293

等级: 大校
举报 只看该作者 8楼  发表于: 2007-10-28 0
3q
3q



霜漫迷夜空

ZxID:1192500

等级: 中将
秂們`沒囿權利選擇出吥出苼,但是秂們囿權利選擇怎么苼存`與怎

举报 只看该作者 7楼  发表于: 2007-10-28 0
不错 顶了
聽兲甴掵 : ┍ .│豬能否赽樂啲潒亼,莪們钚之檤,狚人鎔鯣滿哫啲潒豬,4莪們韔看見啲.
jd大毛哥哥

ZxID:1280293

等级: 大校
举报 只看该作者 6楼  发表于: 2007-10-25 0
恩,认真研究下



zhenhua989

ZxID:1205706

等级: 上尉
战无不胜,神乎其神=1.51.6ID:战神
举报 只看该作者 5楼  发表于: 2007-10-25 0
呵呵,不错,我顶先!!
5822674

ZxID:1022415

等级: 大尉
举报 只看该作者 4楼  发表于: 2007-10-25 0
     
ww512

ZxID:1018035

等级: 上士
痛并快乐着!
举报 只看该作者 地板   发表于: 2007-10-25 0
hahaha
jd大毛哥哥

ZxID:1280293

等级: 大校
举报 只看该作者 板凳   发表于: 2007-10-25 0
引用
引用第1楼浪子ヅ风于2007-10-25 09:03发表的  :
这是做脚本的吗?

for sure~



浪子ヅ风

ZxID:1280175

等级: 少校
举报 只看该作者 沙发   发表于: 2007-10-25 0
这是做脚本的吗?
« 返回列表
发帖 回复