搜索
查看: 4687|回复: 10

high_ping_kicker.sma 高ping踢出后的提示,如何修改?

[复制链接]
发表于 2009-2-26 05:10:02 | 显示全部楼层 |阅读模式 来自 中国–广东–深圳
本帖最后由 eason39 于 2009-2-26 05:12 编辑

一般人都不知道按控制台出来看信息,如果做到踢出后 有对话框显示,比如"你以被服务器踢出,原因ping值太高!这样。
  1. #include <amxmodx>

  2. new g_Ping[33]
  3. new g_Samples[33]
  4. new pamx_hpk_ping
  5. new pamx_hpk_check
  6. new pamx_hpk_tests
  7. new pamx_hpk_delay

  8. public plugin_init()
  9. {
  10.         register_plugin("High Ping Kicker","1.0","datang")
  11.         register_dictionary("high_ping_kicker.txt")
  12.         pamx_hpk_ping = register_cvar("amx_hpk_ping","200")
  13.         pamx_hpk_check = register_cvar("amx_hpk_check","5")
  14.         pamx_hpk_tests = register_cvar("amx_hpk_tests","5")
  15.         pamx_hpk_delay = register_cvar("amx_hpk_delay","60")
  16.   
  17.         if ( get_pcvar_num( pamx_hpk_check ) < 5 ) set_pcvar_num( pamx_hpk_check , 5 )
  18.         if ( get_pcvar_num( pamx_hpk_tests ) < 3 ) set_pcvar_num( pamx_hpk_tests , 3 )
  19. }

  20. public client_disconnect(id)
  21.         remove_task( id )

  22. public client_putinserver(id)
  23. {   
  24.         g_Ping[id] = 0
  25.         g_Samples[id] = 0

  26.         if ( !is_user_bot(id) )
  27.         {
  28.                 new param[1]
  29.                 param[0] = id
  30.                 set_task( 10.0 , "showWarn" , id , param , 1 )
  31.    
  32.                 if (get_pcvar_num(pamx_hpk_delay) != 0) {
  33.                         set_task( float(get_pcvar_num(pamx_hpk_delay)), "taskSetting", id, param , 1)
  34.                 }
  35.                 else {            
  36.                         set_task( float(get_pcvar_num( pamx_hpk_check )) , "checkPing" , id , param , 1 , "b" )
  37.                 }       
  38.         }
  39. }

  40. public showWarn(param[]) {
  41.         client_print( param[0] ,print_chat,"* %L",LANG_SERVER,"PING", get_pcvar_num( pamx_hpk_ping ) )
  42.         console_print( param[0],"* %L",LANG_SERVER,"PING", get_pcvar_num( pamx_hpk_ping ) )
  43. }

  44. public taskSetting(param[]) {
  45.         set_task( float(get_pcvar_num( pamx_hpk_check )) , "checkPing" , param[0] , param , 1 , "b" )
  46. }

  47. kickPlayer( id )
  48. {
  49.         new name[32],authid[32]
  50.         new userid = get_user_userid(id)
  51.         get_user_name(id,name,31)
  52.         get_user_authid(id,authid,31)
  53.         client_print(0,print_chat,"* %L", id, "KICKED", name)
  54.         log_amx("^"%s<%d><%s><>^" has been kicked due to high ping.", name, userid, authid)
  55.         client_cmd(id, "echo ^"* %L^"", id, "HPK")
  56.         client_cmd(id, "disconnect")  //Has no effects in CS1.5
  57.         server_cmd("kick #%d", userid)  //So kicked
  58.         remove_task(id)
  59. }

  60. public checkPing(param[])
  61. {
  62.         new id = param[ 0 ]
  63.         if ( get_user_flags(id) & ADMIN_IMMUNITY || get_user_flags(id) & ADMIN_RESERVATION ) return
  64.         new p, l
  65.         get_user_ping( id , p , l )
  66.         g_Ping[ id ] += p
  67.         ++g_Samples[ id ]  
  68.         if ( (g_Samples[ id ] >= get_pcvar_num( pamx_hpk_tests )) && (g_Ping[id] / g_Samples[id] > get_pcvar_num( pamx_hpk_ping )) )   
  69.                 kickPlayer(id)
  70. }
复制代码
发表于 2009-2-26 09:34:33 | 显示全部楼层 来自 中国–四川–遂宁
amxmodx\data\lang\High_Ping_Kicker.txt
回复

使用道具 举报

发表于 2009-2-26 09:40:50 | 显示全部楼层 来自 中国–广东
amxmodx\data\lang\High_Ping_Kicker.txt
回复

使用道具 举报

 楼主| 发表于 2009-2-26 19:41:33 | 显示全部楼层 来自 中国–广东–深圳
amxmodx\data\lang\High_Ping_Kicker.txt
sakulekingz 发表于 2009-2-26 09:34

我都知道在这里配置,这些都知道,关键是 被踢出的玩家要在console里才能看到这些信息,如果不按出来 是看不到的  我的意思是说 就像OP把玩家踢出  有个对话框提示,别像这个插件一样要按控制台出来才看到踢出信息
回复

使用道具 举报

发表于 2009-2-26 23:53:33 | 显示全部楼层 来自 中国–广西–来宾
client_print(0,print_chat,"*【公告】%s 因为Ping超过 80 而被踢",Name)
回复

使用道具 举报

 楼主| 发表于 2009-2-27 00:54:45 | 显示全部楼层 来自 中国–广东–深圳
client_print(0,print_chat,"*【公告】%s 因为Ping超过 80 而被踢",Name)
心静如水 发表于 2009-2-26 23:53

老大们 不知道是不是我表达能力有问题,是指的是被踢出的玩家提示,让被踢出的人知道自己的被踢的原因  而不是服务器里的玩家。
回复

使用道具 举报

发表于 2009-2-27 08:40:33 | 显示全部楼层 来自 中国–广西–百色田阳县
server_cmd("kick #%d ^"你的Ping太高被踢出^"",get_user_userid(id))
回复

使用道具 举报

 楼主| 发表于 2009-2-27 09:12:05 | 显示全部楼层 来自 中国–广东–深圳
server_cmd("kick #%d ^"你的Ping太高被踢出^"",get_user_userid(id))
心静如水 发表于 2009-2-27 08:40


谢谢 水哥  我去试下
回复

使用道具 举报

 楼主| 发表于 2009-2-27 09:42:32 | 显示全部楼层 来自 中国–广东–深圳
水哥  还是不行啊  被踢玩家只能按控制台出来才看得到被踢出原因。。。
回复

使用道具 举报

发表于 2009-2-27 21:08:28 | 显示全部楼层 来自 中国–福建–漳州
把这一行:
server_cmd("kick #%d", userid)  //So kicked
修改成:
server_cmd("kick #%d ^"%L^"", userid, id, "HPK")  //So kicked

注意,踢出时附带附加信息不适用于CS1.5。
回复

使用道具 举报

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

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