搜索
查看: 4204|回复: 4

飘风进来帮个忙...

[复制链接]
发表于 2003-12-15 08:50:37 | 显示全部楼层 |阅读模式 来自 中国–湖南–永州
我现在又遇到几个问题,想请你指教一二:
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[7]=='t')?"CT":"TERRORIST"),这句是什么意思?尤其是param后面的意思。
3、在cs1.6里发现t在埋下c4并成功爆炸,该t就会得3个frags,ct如拆除成功也得3个frags,请问这个能关掉么?用什么命令?(我用纯cs1.6[未装任何外挂],也是一样)
thx
发表于 2003-12-15 14:39:22 | 显示全部楼层 来自 中国–福建–厦门
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[7]=='t')?"CT":"TERRORIST"),a的意思是不连接死掉的人,e的意思和team符合起来。

public delayslay(){
    new param[32]
    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[7]=t(%!MRAD_terwin中的第八个字母),利用get_players取得的就是活着的CT,然后强制杀死他们。反之,就取得活着的TERRORIST...

3.我至今还没有玩过cs1.6,没听说有这回事。不过用amx 插件可以去掉,就是在c4成功爆炸或ct拆除c4时(当事件发生时用register_event()函数调用你要执行的函数)
用set_user_frags重新设置玩家的frags就行了。
回复

使用道具 举报

 楼主| 发表于 2003-12-15 15:50:03 | 显示全部楼层 来自 中国–湖南–永州
非常感谢!收益非浅……不过:
1、在我的amx0.9.5(pub)里未找到one_name.sma,能否给个下载?
2、这回是基本上看懂了,这条"set_task(1.0,"slaylosers",0,param, len + 1) "里为什么给len加上个1?是不是一定要和new param[32]对应?
"get_players(players,playersnum,"ea",(param[7]=='t')?"CT":"TERRORIST")"我理解是当系统说t win或ct win时,param[7]取词与"t"比较如果等于t就取"ct"里的数值,否就取t里的数值。问:如果编其他程序,想要直接取t或ct里的数值,直接用"CT","TERRORIST"就行吗?这么取得的值是什么?id,sever里的#userid还是其他什么值?
thx
回复

使用道具 举报

发表于 2003-12-15 19:08:42 | 显示全部楼层 来自 中国–福建–厦门
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[32], &num ,const flags[]="", const team[]="");

那并不是取CT或TERRORIST中的什么值,而是team的标记,是CT就只取做警的玩家的id(依次赋到players数组中),然后强制杀死;是TERRORIST就只取做匪的玩家的id...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
回复

使用道具 举报

发表于 2003-12-15 19:17:26 | 显示全部楼层 来自 中国–福建–厦门
此贴转移到代码与模块区~
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表