飘风进来帮个忙...
我现在又遇到几个问题,想请你指教一二:1、在cs1.6里有2种"buy menu type":"old styple menus"、"vgul menus"我想问的就是:在amx命令里有无调用这些菜单的命令,如:只允许玩家用"old styple menus",如自行改动,系统也自行换回"old styple menus"
2、我在惩罚未完成任务的插件(team_objectives.sma)里命令:get_players(players,playersnum,"ea",(param=='t')?"CT":"TERRORIST"),这句是什么意思?尤其是param后面的意思。
3、在cs1.6里发现t在埋下c4并成功爆炸,该t就会得3个frags,ct如拆除成功也得3个frags,请问这个能关掉么?用什么命令?(我用纯cs1.6[未装任何外挂],也是一样)
thx 1.用client_infochanged()函数就可以办的到,具体的应用你可以看看one_name.sma.
PS: setinfo _vgui_menus 1是vguimenu,setinfo _vgui_menus 0是old menu
2.是为了取得未完成任务的活着的人,get_players(players,playersnum,"ea",(param=='t')?"CT":"TERRORIST"),a的意思是不连接死掉的人,e的意思和team符合起来。
public delayslay(){
new param
new len = read_data(2,param,31)
set_task(1.0,"slaylosers",0,param, len + 1)
}
register_event("SendAudio","delayslay","a","2=%!MRAD_terwin","2=%!MRAD_ctwin")
read_data(2,param,31)读取的就是"SendAudio"中的第二个参数赋予param,register_event("SendAudio","delayslay","a","2=%!MRAD_terwin","2=%!MRAD_ctwin") 意思就是当系统广播T win或CT win时调用delayslay函数
当匪胜利时("2=%!MRAD_terwin"),param=t(%!MRAD_terwin中的第八个字母),利用get_players取得的就是活着的CT,然后强制杀死他们。反之,就取得活着的TERRORIST...
3.我至今还没有玩过cs1.6,没听说有这回事。不过用amx 插件可以去掉,就是在c4成功爆炸或ct拆除c4时(当事件发生时用register_event()函数调用你要执行的函数)
用set_user_frags重新设置玩家的frags就行了。 非常感谢!收益非浅……不过:
1、在我的amx0.9.5(pub)里未找到one_name.sma,能否给个下载?
2、这回是基本上看懂了,这条"set_task(1.0,"slaylosers",0,param, len + 1) "里为什么给len加上个1?是不是一定要和new param对应?
"get_players(players,playersnum,"ea",(param=='t')?"CT":"TERRORIST")"我理解是当系统说t win或ct win时,param取词与"t"比较如果等于t就取"ct"里的数值,否就取t里的数值。问:如果编其他程序,想要直接取t或ct里的数值,直接用"CT","TERRORIST"就行吗?这么取得的值是什么?id,sever里的#userid还是其他什么值?
thx 1.请看附件,在amx0.9.7PUB汉化版中我也加上了这个sma文件
2.new len = read_data(2,param,31),len是读取的实际字符数,并不一定是31。31意思是要从事件参数中读31个字符到param数组,但真正读取的实际字符数是len(不包括'\0'字符串结束标志).
例如当2=%!MRAD_terwin时,len等于13,当2=%!MRAD_ctwin时,len等于12。
set_task(1.0,"slaylosers",0,param, len + 1) 这里应该采用的是地址传递的方式把实参数组param的起始地址传递给slaylosers中的param[](形参)中,并由param中的第len+1位('\0')作为做为字符串的结束标志。
可能不+1也可以,系统自动加'\0'做为字符串的结束标志或者用'\0'覆盖最后一位字母(如果是这样的话会出现取值不完全,字符串受到破坏),你可以用client_print()函数输出param看一看字符串有没有受到破坏~
get_players()函数用法
/* Sets indexes of players.
* Flags:
* "a" - don't collect dead players.
* "b" - don't collect alive players.
* "c" - skip bots.
* "d" - skip real players.
* "e" - match with team.
* "f" - match with part of name.
* "g" - ignore case sensitivity.
* Example: Get all alive CTs: get_players(players,num,"ae","CT") */
native get_players(players, &num ,const flags[]="", const team[]="");
那并不是取CT或TERRORIST中的什么值,而是team的标记,是CT就只取做警的玩家的id(依次赋到players数组中),然后强制杀死;是TERRORIST就只取做匪的玩家的id... 此贴转移到代码与模块区~
页:
[1]