搜索
查看: 2753|回复: 5

如何循环检测玩家的某个参数并执行一些命令

[复制链接]
发表于 2008-2-1 23:28:44 | 显示全部楼层 |阅读模式 来自 中国–山东–青岛
比如每50秒检查一次玩家cl_minmodels参数的值,如果大于0,就执行一些命令。

用过注册set_task(50.0, "jianchacanshu", 0,"",0,"b")的方式,也用过
public jianchacanshu(){
  new players[32], num
  get_players(players, num, "c")
  
  for(new i = 0; i < num; i++){
   if ( !is_user_bot( players ) ){
    query_client_cvar(players, "cl_minmodels", "zhixing");
   }
  }
  set_task(50.0, "jianchacanshu", 0)
}
}
这样自己延时执行自己的的方式
检查的方式是用的
query_client_cvar(id, "cl_minmodels", "zhixing")
然后在zhixing里再根据返回的结果做判断来决定对玩家执行什么命令

无论用以上哪种方式,都会把要执行的玩家给踢出来,提示信息都是“Not Present on Client 58”

很郁闷
发表于 2008-2-3 02:50:42 | 显示全部楼层 来自 中国–广东–佛山–禅城区

回复: 如何循环检测玩家的某个参数并执行一些命令

呵呵,这样不踢才怪.单独对每个玩家分开来执行就OK了.
回复

使用道具 举报

 楼主| 发表于 2008-2-3 14:50:16 | 显示全部楼层 来自 中国–山东–青岛

回复: 如何循环检测玩家的某个参数并执行一些命令

Post by ceoguang
呵呵,这样不踢才怪.单独对每个玩家分开来执行就OK了.

我没理解“单独”的意思,请说的再具体一些。
回复

使用道具 举报

 楼主| 发表于 2008-2-3 16:28:06 | 显示全部楼层 来自 中国–山东–青岛

回复: 如何循环检测玩家的某个参数并执行一些命令

放弃了循环检测,改为每次死亡事件的时候检查杀人者的参数,仍然出现“Not Present on Client 58”,是否还有其他方法检查玩家的参数,有些怀疑是query_client_cvar函数本身有问题
回复

使用道具 举报

发表于 2008-2-3 20:08:50 | 显示全部楼层 来自 中国–广东–惠州

回复: 如何循环检测玩家的某个参数并执行一些命令

query_client_cvar()函数的参数不是这样的,正确应该是这样
query_client_cvar(id,"客户端参数名称,如rate", "对查询到的结果进行处理的函数")
这是AMXX说明文档的举例:
  1. [FONT=Courier New][color=#ff8000]#include <amxmodx>
  2. [/color][color=#007700]public [/color][color=#0000bb]plugin_init[/color][/font][FONT=Courier New][color=#007700]()
  3.     [/color][color=#0000bb]register_plugin[/color][color=#007700]([/color][color=#dd0000]"test"[/color][color=#007700], [/color][color=#dd0000]"1"[/color][color=#007700], [/color][color=#dd0000]"PM"[/color][/font][FONT=Courier New][color=#007700]);
  4. }
  5. public [/color][color=#0000bb]client_connect[/color][color=#007700]([/color][color=#0000bb]id[/color][/font][FONT=Courier New][color=#007700])
  6.     if (![/color][color=#0000bb]is_user_bot[/color][color=#007700]([/color][color=#0000bb]id[/color][/font][FONT=Courier New][color=#007700]))
  7.         [/color][color=#0000bb]query_client_cvar[/color][color=#007700]([/color][color=#0000bb]id[/color][color=#007700], [/color][color=#dd0000]"rate"[/color][color=#007700], [/color][color=#dd0000]"cvar_result_func"[/color][/font][FONT=Courier New][color=#007700]);
  8. }
  9. public [/color][color=#0000bb]cvar_result_func[/color][color=#007700]([/color][color=#0000bb]id[/color][color=#007700], const [/color][color=#0000bb]cvar[/color][color=#007700][], const [/color][color=#0000bb]value[/color][/font][FONT=Courier New][color=#007700][])
  10.     new [/color][color=#0000bb]name[/color][color=#007700][[/color][color=#0000bb]32[/color][/font][FONT=Courier New][color=#007700]];
  11.     [/color][color=#0000bb]get_user_name[/color][color=#007700]([/color][color=#0000bb]id[/color][color=#007700], [/color][color=#0000bb]name[/color][color=#007700], [/color][color=#0000bb]31[/color][/font][FONT=Courier New][color=#007700]);
  12.      
  13.     [/color][color=#0000bb]log_amx[/color][color=#007700]([/color][color=#dd0000]"Client %d(%s)'s rate is ^"[/color][color=#007700]%[/color][color=#0000bb]s[/color][color=#007700]^[/color][color=#dd0000]""[/color][color=#007700], [/color][color=#0000bb]id[/color][color=#007700], [/color][color=#0000bb]name[/color][color=#007700], [/color][color=#0000bb]value[/color][/font][color=#007700][FONT=Courier New]);
  14. } [/font]
  15. [/color]
复制代码
回复

使用道具 举报

 楼主| 发表于 2008-2-4 10:14:23 | 显示全部楼层 来自 中国–山东–青岛

回复: 如何循环检测玩家的某个参数并执行一些命令

首先谢谢你的回复,至少你是肯费心帮我了

我没找到格式上的问题,也曾经直接照搬官方的实例,结果还是“Not Present on Client 58”

在死亡事件的时候query_client_cvar(killer, "cl_minmodels", "zhixing")一次,然后
public zhixing(id, const cvar[], const value[]){
new name[32];
get_user_name(id,name,31);
log_amx("Client %d(%s)'s cl_minmodels is ^"%s^"", id, name, value);
//client_print(0,print_chat,"[WarCS.cn] 玩家 %s 的 cl_minmodels 值是 %s",value);
//if( equali(cvar,"cl_minmodels") && str_to_num(value) > 0 ){
//shanchujingyan(id)
//}
//return PLUGIN_HANDLED
}

就算完全使用官方的实例也是出现同样的问题。
回复

使用道具 举报

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

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