如何循环检测玩家的某个参数并执行一些命令
比如每50秒检查一次玩家cl_minmodels参数的值,如果大于0,就执行一些命令。用过注册set_task(50.0, "jianchacanshu", 0,"",0,"b")的方式,也用过
public jianchacanshu(){
new players, 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”
很郁闷
回复: 如何循环检测玩家的某个参数并执行一些命令
呵呵,这样不踢才怪.单独对每个玩家分开来执行就OK了.回复: 如何循环检测玩家的某个参数并执行一些命令
Post by ceoguang呵呵,这样不踢才怪.单独对每个玩家分开来执行就OK了.
我没理解“单独”的意思,请说的再具体一些。
回复: 如何循环检测玩家的某个参数并执行一些命令
放弃了循环检测,改为每次死亡事件的时候检查杀人者的参数,仍然出现“Not Present on Client 58”,是否还有其他方法检查玩家的参数,有些怀疑是query_client_cvar函数本身有问题回复: 如何循环检测玩家的某个参数并执行一些命令
query_client_cvar()函数的参数不是这样的,正确应该是这样query_client_cvar(id,"客户端参数名称,如rate", "对查询到的结果进行处理的函数")
这是AMXX说明文档的举例:
#include <amxmodx>
public plugin_init()
register_plugin("test", "1", "PM");
}
public client_connect(id)
if (!is_user_bot(id))
query_client_cvar(id, "rate", "cvar_result_func");
}
public cvar_result_func(id, const cvar[], const value[])
new name[32];
get_user_name(id, name, 31);
log_amx("Client %d(%s)'s rate is ^"%s^"", id, name, value);
}
回复: 如何循环检测玩家的某个参数并执行一些命令
首先谢谢你的回复,至少你是肯费心帮我了我没找到格式上的问题,也曾经直接照搬官方的实例,结果还是“Not Present on Client 58”
在死亡事件的时候query_client_cvar(killer, "cl_minmodels", "zhixing")一次,然后
public zhixing(id, const cvar[], const value[]){
new name;
get_user_name(id,name,31);
log_amx("Client %d(%s)'s cl_minmodels is ^"%s^"", id, name, value);
//client_print(0,print_chat," 玩家 %s 的 cl_minmodels 值是 %s",value);
//if( equali(cvar,"cl_minmodels") && str_to_num(value) > 0 ){
//shanchujingyan(id)
//}
//return PLUGIN_HANDLED
}
就算完全使用官方的实例也是出现同样的问题。
页:
[1]