搜索
查看: 2750|回复: 7

插件工作过程求教 !

[复制链接]
发表于 2006-12-31 19:30:31 | 显示全部楼层 |阅读模式 来自 日本–东京都–千代田区
刚学c语言3个月,现在大致上可以看懂一部分代码。
想以后慢慢学习插件编写方法。
附件为HPK插件的代码,有些部分不明白,已用作???标记。无???标记部分为自己添加的注释,
求教???部分的注释该如何写? 如果自己写的部分不正确,也请指正一下。

另,该插件工作过程我是这样认为的,不知道对不对。

/**************
*对于进入游戏的当前玩家,在pamx_hpk_delay秒之后开始检测其ping值。检测方法为,以*amx_hpk_check秒为间隔检测amx_hpk_tests次。如果平均ping值大于pamx_hpk_ping值*则踢出该玩家。对于ping平均值小于pamx_hpk_ping的玩家,以后将一直不检测其ping值。
*****************/

谢谢 !

本帖子中包含更多资源

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

×
发表于 2006-12-31 20:21:08 | 显示全部楼层 来自 中国–广东–深圳

回复: 插件工作过程求教 !

register_dictionary("high_ping_kicker.txt")   // ???
注册多语言的定义文件

public client_disconnect(id)   //???
仅在玩家离开时执行一次

public client_putinserver(id)   //???(对于游戏中的玩家总是执行该函数?)
玩家进入服务器时执行一次

  new param[1]    //???(不知道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
回复

使用道具 举报

发表于 2007-1-1 01:23:15 | 显示全部楼层 来自 中国–上海–上海–浦东新区

回复: 插件工作过程求教 !

http://www.dt-club.net/forum/thread/72/24631.htm
我想这个东西是你需要的
回复

使用道具 举报

发表于 2007-1-1 12:17:30 | 显示全部楼层 来自 中国–广东–中山

回复: 插件工作过程求教 !

ddddddddddddddddddddddddddddddddddd
回复

使用道具 举报

 楼主| 发表于 2007-1-2 08:02:03 | 显示全部楼层 来自 日本–东京都–千代田区

回复: 插件工作过程求教 !

谢谢楼上的几位,祝大家新年快了。
终于弄懂了该插件的工作过程了。

在问几个,这个插件在判断平均ping值时,是取最近检测5次的平均ping值,还是取所有检测次数的平均ping值 ?
如果amx_hpk_check为5,是不是每5秒取得该用户的ping值 ?

谢谢
回复

使用道具 举报

发表于 2007-1-2 12:24:45 | 显示全部楼层 来自 中国–广东–深圳–罗湖区

回复: 插件工作过程求教 !

[php]
if ( (g_Samples[ id ] >= get_pcvar_num( pamx_hpk_tests )) && (g_Ping[id] / g_Samples[id] > get_pcvar_num( pamx_hpk_ping )) )   
  kickPlayer(id)
[/php]
5次以上,的所有ping的平均值
如果amx_hpk_check为5,是不是每5秒取得该用户的ping值 ?
正确
回复

使用道具 举报

 楼主| 发表于 2007-1-2 19:25:36 | 显示全部楼层 来自 日本–东京都–千代田区

回复: 插件工作过程求教 !

谢谢 jop !新年快乐 !
那是不是,如果检测了10次,就累加10次呢? 如果这样会不会给服务器负担非常重呢(无限雷加)?
回复

使用道具 举报

发表于 2007-1-2 20:03:50 | 显示全部楼层 来自 中国–广东–深圳–罗湖区

回复: 插件工作过程求教 !

Post by cityhonghu
谢谢 jop !新年快乐 !
那是不是,如果检测了10次,就累加10次呢? 如果这样会不会给服务器负担非常重呢(无限雷加)?
是的,在累加值,太快当然耗资源,建议降低重复检查的频率
(60秒一次,也够了吧?!)
回复

使用道具 举报

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

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