插件工作过程求教 !
刚学c语言3个月,现在大致上可以看懂一部分代码。想以后慢慢学习插件编写方法。
附件为HPK插件的代码,有些部分不明白,已用作???标记。无???标记部分为自己添加的注释,
求教???部分的注释该如何写? 如果自己写的部分不正确,也请指正一下。
另,该插件工作过程我是这样认为的,不知道对不对。
/**************
*对于进入游戏的当前玩家,在pamx_hpk_delay秒之后开始检测其ping值。检测方法为,以*amx_hpk_check秒为间隔检测amx_hpk_tests次。如果平均ping值大于pamx_hpk_ping值*则踢出该玩家。对于ping平均值小于pamx_hpk_ping的玩家,以后将一直不检测其ping值。
*****************/
谢谢 !
回复: 插件工作过程求教 !
register_dictionary("high_ping_kicker.txt") // ???注册多语言的定义文件
public client_disconnect(id) //???
仅在玩家离开时执行一次
public client_putinserver(id) //???(对于游戏中的玩家总是执行该函数?)
玩家进入服务器时执行一次
new param //???(不知道param是干什么用的)
数组
set_task( 10.0 , "showWarn" , id , param , 1 )//???(不知道该函数各项变量的付值方法)
定数任务的函数,param= 数组, 1 = 数组大小
if (get_pcvar_num(pamx_hpk_delay) != 0) { //???(get_pcvar_num是什么函数?)
获取cvar的指针
public taskSetting(param[]) { //???(计划任务,在get_pcvar_num( pamx_hpk_check ))秒之后,执行checkping函数,这是对所有用户执行该操作吗?)
对于本插件,是每个玩家进入后都回被执行,时间必须是 float 值,具体请看说明
remove_task(id) //??? 为什么要remove ?
因为插件定义了两种定时任务,有一个是无限循环任务,所以如果kick了,必须要。
public checkPing(param[]) //??? 还是不懂param是什么变量?
传送参数用看上面
new p, l // ??? p是ping值变量,l是什么?
l = 获取用户的 loss
g_Ping[ id ] += p //??? 在那里可以看出,累加pamx_hpk_tests次ping值 ?
g_Ping[ id ] =g_Ping[ id ] + p
回复: 插件工作过程求教 !
http://www.dt-club.net/forum/thread/72/24631.htm我想这个东西是你需要的
回复: 插件工作过程求教 !
ddddddddddddddddddddddddddddddddddd回复: 插件工作过程求教 !
谢谢楼上的几位,祝大家新年快了。终于弄懂了该插件的工作过程了。
在问几个,这个插件在判断平均ping值时,是取最近检测5次的平均ping值,还是取所有检测次数的平均ping值 ?
如果amx_hpk_check为5,是不是每5秒取得该用户的ping值 ?
谢谢
回复: 插件工作过程求教 !
if ( (g_Samples[ id ] >= get_pcvar_num( pamx_hpk_tests )) && (g_Ping / g_Samples > get_pcvar_num( pamx_hpk_ping )) )
kickPlayer(id)
5次以上,的所有ping的平均值
如果amx_hpk_check为5,是不是每5秒取得该用户的ping值 ?
正确
回复: 插件工作过程求教 !
谢谢 jop !新年快乐 !那是不是,如果检测了10次,就累加10次呢? 如果这样会不会给服务器负担非常重呢(无限雷加)?
回复: 插件工作过程求教 !
Post by cityhonghu谢谢 jop !新年快乐 !
那是不是,如果检测了10次,就累加10次呢? 如果这样会不会给服务器负担非常重呢(无限雷加)?
是的,在累加值,太快当然耗资源,建议降低重复检查的频率
(60秒一次,也够了吧?!)
页:
[1]