搜索
查看: 2435|回复: 4

踢高PING插件怎么一修改源代码就编译不成功呢?

[复制链接]
发表于 2006-7-2 00:32:42 | 显示全部楼层 |阅读模式 来自 中国–广东–深圳
  1. /* AMX Mod script.
  2. *
  3. * (c) 2002-2003, OLO
  4. * modified by shadow
  5. * This file is provided as is (no warranties).
  6. *
  7. * Players with immunity won't be checked
  8. */
  9. #include <amxmodx>
  10. #include <amxmisc>
  11. new g_Ping[33]
  12. new g_Samples[33]
  13. public plugin_init()
  14. {
  15.   register_plugin("High Ping Kicker (Steam)","0.16.2","OLO/shadow")
  16.   register_concmd("amx_hpk","cmdHpk",ADMIN_KICK,"- configures high_ping_kicker plugin")
  17.   register_cvar("amx_hpk_ping","[color=red]150[/color]")
  18.   register_cvar("amx_hpk_check","12")
  19.   register_cvar("amx_hpk_tests","5")
  20.   register_cvar("amx_hpk_delay","60")
  21.   
  22.   if ( get_cvar_num( "amx_hpk_check" ) < 5 ) set_cvar_num( "amx_hpk_check" , 5 )
  23.   if ( get_cvar_num( "amx_hpk_tests" ) < 3 ) set_cvar_num( "amx_hpk_tests" , 3 )
  24. }
  25. public client_disconnect(id)
  26.   remove_task( id )
  27. public client_putinserver(id)
  28. {   
  29.   g_Ping[id] = 0
  30.   g_Samples[id] = 0
  31.   if ( !is_user_bot(id) )
  32.   {
  33.     new param[1]
  34.     param[0] = id
  35.     set_task( 10.0 , "showWarn" , id , param , 1 )
  36.    
  37.     if (get_cvar_num("amx_hpk_tests") != 0) {
  38.      set_task( float(get_cvar_num("amx_hpk_delay")), "taskSetting", id, param , 1)
  39.     }
  40.     else {     
  41.      set_task( float(get_cvar_num( "amx_hpk_tests" )) , "checkPing" , id , param , 1 , "b" )
  42. }
  43.   }
  44. }
  45. public showWarn(param[])
  46.   client_print( param[0] ,print_chat,"* 当玩家与服务器的连接延时超过 %d 将会被踢出服务器!", get_cvar_num( "amx_hpk_ping" ) )
  47. public taskSetting(param[]) {
  48. new name[32]
  49. get_user_name(param[0],name,31)
  50. set_task( float(get_cvar_num( "amx_hpk_tests" )) , "checkPing" , param[0] , param , 1 , "b" )
  51. }
  52. kickPlayer( id )
  53. {
  54.   new name[32],authid[32]
  55.   get_user_name(id,name,31)
  56.   get_user_authid(id,authid,31)
  57.   client_print(0,print_chat,"* 玩家 %s 因为与服务器的连接延时太大被踢出",name)
  58.   server_cmd("kick #%d ^"抱歉, 你的ping太大了, 请稍候尝试连接本服务器^"",get_user_userid(id))
  59.   log_amx("Highpingkick: ^"%s<%d><%s>^" was kicked due highping (Average Ping ^"%d^")", name,get_user_userid(id),authid,(g_Ping[id] / g_Samples[id]))
  60. }
  61. public checkPing(param[])
  62. {
  63.   new id = param[ 0 ]
  64.   if ( get_user_flags(id) & ADMIN_IMMUNITY ) return
  65.   new p, l
  66.   get_user_ping( id , p , l )
  67.   g_Ping[ id ] += p
  68.   ++g_Samples[ id ]
  69.   if ( (g_Samples[ id ] > get_cvar_num( "amx_hpk_tests" )) && (g_Ping[id] / g_Samples[id] > get_cvar_num( "amx_hpk_ping" ))  )   
  70.     kickPlayer(id)
  71. }
  72.   
  73. public cmdHpk(id,level,cid){
  74.   if (!cmd_access(id,level,cid,1))
  75.     return PLUGIN_HANDLED
  76.    
  77.   new ping[5]
  78.   new check_arr[5]
  79.   new tests_arr[5]
  80.   new delay_arr[5]
  81.   read_argv(1,ping,4)
  82.   read_argv(2,check_arr,4)
  83.   read_argv(3,tests_arr,4)
  84.   read_argv(4,delay_arr,4)
  85.   
  86.   new check = str_to_num(check_arr)
  87.   new tests = str_to_num(tests_arr)
  88.   new delay = str_to_num(delay_arr)
  89.   
  90.   
  91.   if ( check < 5 ) check = 5
  92.   if ( tests < 3 ) tests = 3
  93.   
  94.   if (read_argc() > 1){
  95.     set_cvar_string("amx_hpk_ping",ping)
  96.   }
  97.   if (read_argc() > 2) {
  98. set_cvar_num("amx_hpk_check",check)
  99.   }
  100.   if (read_argc() > 3) {
  101. set_cvar_num("amx_hpk_tests",tests)
  102.   }
  103.   if (read_argc() > 4) {
  104.    set_cvar_num("amx_hpk_delay",delay)
  105. }
  106.   console_print(id,"Syntax: amx_hpk <ping to get kicked> <checks before kicks> <time between checks> <delay before first check in sec.>")
  107.   console_print(id,"Current High_Ping_Kicker Settings:")
  108.   console_print(id,"Maxping: %d  Time between checks: %d Checkcount: %d Delay: %d",get_cvar_num("amx_hpk_ping"),get_cvar_num("amx_hpk_check"),get_cvar_num("amx_hpk_tests"),get_cvar_num("amx_hpk_delay"))
  109.   return PLUGIN_HANDLED   
  110. }
复制代码

这个插件默认是踢PING200的我想改成150就踢啦,可是这个插件一修改就不编译不了:cry:,
 楼主| 发表于 2006-7-2 00:39:27 | 显示全部楼层 来自 中国–广东–深圳

回复: 踢高PING插件怎么一修改源代码就编译不成功呢?

high_ping_kicker.sma原文件不修改在AMXX10下能编译成功,本人反复测试开始以为是格式错误,但用记事本打开什么后就算都不修改保存一下以后也编译不了,望高手帮帮忙!

本帖子中包含更多资源

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

×
回复

使用道具 举报

发表于 2006-7-2 01:04:35 | 显示全部楼层 来自 中国–香港

回复: 踢高PING插件怎么一修改源代码就编译不成功呢?

看來不少人都被high_ping_kick騙了,其實是修改AMXX.CFG,而不是.SMA。看看以下的源代碼 :D
[php]// AMX MOD X 配置檔.
echo Executing AMX Mod X Configuration File
// 用戶的默認許可權,可以用此定義為普通的玩家也加上各種許可權, 相關許可權請參考uers.ini文件的許可權說明
amx_default_access "z"
// AMXX的遠端登陸總密碼(所有op都一樣), 首次配置時必須修改。建議以下劃線"_"開頭,避免在公共頻道公開。
// setinfo資訊會將密碼保存在config.cfg文件裏。(為了避免洩露密碼, 請在結束遊戲後刪除自己的config.cfg)
// (管理員登陸時請控制臺裏輸入 setinfo _pw123 "管理員密碼", 或者直接寫入自己的config.cfg文件中)
// (Example: setinfo _pw123 "password")
amx_password_field "_pw123"
// 伺服器的記錄模式選項
// 0 - 禁止許可權登陸, 所有的玩家都沒有任何的許可權
// 1 - 正常模式
// 2 - kick所有users.ini文件上無帳號的玩家
amx_mode 1
// 在op執行某個命令時是否顯示op的行動
// 0 - 關閉
// 1 - 不顯示OP的行動
// 2 - 顯示OP的行動
amx_show_activity 2
// 伺服器定時在下方滾動顯示伺服器資訊, 以秒為單位
//amx_scrollmsg "Welcome to %hostname% -- This server is using AMX Mod X" 600
amx_scrollmsg "歡迎光臨 %hostname% 伺服器 --本伺服器使用AMX Mod X ,請不要作弊或陰人;絕不容忍作弊行為,一旦發現,立刻懲罰!QQ:258148190" 150
// 中間類型彩色資訊 (最後一個參數是一種顏色,其格式為 RRRGGGBBB )
//amx_imessage "Welcome to %hostname%" "000255100"
//amx_imessage "This server is using AMX Mod X\nVisit http://www.amxmodx.org" "000100255"
amx_imessage "歡迎光臨 %hostname% 伺服器 --本伺服器使用AMX Mod X ,請不要作弊或陰人!" "000255100"
amx_imessage "命令“amx_help”查看amxx命令\n按Y鍵輸入 war3menu 打開魔獸3功能表" "000100255"
amx_imessage "本伺服器禁止蹲坑 \n 在一個區域內停留時間過長將被懲罰,^_^" "000100255"
amx_imessage "魔獸3 命令“ultimate”使用大絕,“changerace”換種族\n“say /shopmenu”或者“say /shopmenu2”打開商店菜單" "000100255"
// 彩色資訊顯示的間隔時間, 以秒為單位
amx_freq_imessage 45
// 這個選項是玩家聊天間隔時間的設置, 防止server因聊天資訊過多導致lag, 以秒為單位
amx_flood_time 3.20
//預留的管理員通道數,沒有許可權的玩家進入此通道時會被kick(具體細節看插件原碼)
amx_reservation 0
// 將此項修改為1時將隱藏該伺服器上的管理員通道
amx_hideslots 0
// Displaying of time remaining
// a - display white text on bottom
// b - use voice
// c - don't add "remaining" (only in voice)
// d - don't add "hours/minutes/seconds" (only in voice)
// e - show/speak if current time is less than this set in parameter
// 顯示剩餘時間
// a - 在底部以白色文本方式顯示
// b - 用語音提示
// c - 不添加"remaining" (只在語音中)
// d - 不添加 "hours/minutes/seconds" (只在語音中)
// e - 如果時間小於現在的設置, 用語音和文本進行提示
amx_time_display "ab 1200" "ab 600" "ab 300" "ab 180" "ab 60" "bcde 11"
// 使用語音通報 "say thetime" 和 "say timeleft"
amx_time_voice 1
// 兩個vote事件之間的最小時間間隔, 以秒為單位。(為了防止惡意投票, 請將間隔設置長些)
amx_vote_delay 10
// 一個VOTE事件持續的最長時間
amx_vote_time 10
// 顯示哪個玩家投票什麼選項
amx_vote_answers 1
// 投票成功所需要的比率
amx_votekick_ratio 0.40
amx_voteban_ratio 0.40
amx_votemap_ratio 0.40
amx_vote_ratio 0.02
// 最長可以延長正在遊戲的地圖的時間(以分鐘為單位)
amx_extendmap_max 90
// 每次默認延長15分鐘
amx_extendmap_step 15

// 排行模式
// 0 - 通過昵稱
// 1 - 通過 authid
// 2 - 通過 ip
csstats_rank 0
// 排行文件最大尺寸
csstats_maxsize 3500
// 重新設置 /top15 與 所有的 CSStats 資訊,在伺服器控制臺輸入這個:
//csstats_reset 1
// 顯示HUD統計的持續時間
amx_statsx_duration 12.0
// HUD統計資訊在凍結時間裏的顯示時長
// 如設為負數表示在凍結時間結束前多少秒清除HUD統計資訊
amx_statsx_freeze -2.0
//設定為0時, 將不允許用戶端選擇語言
amx_client_languages 1
// 插件調試模式
// 0 - 不調試 (garbage line numbers)
// 1 - 選擇模式,在 plugins.ini 中需要調試的插件後加 debug
// 2 - 全部插件都在調試模式下
// 注意 - 調試模式下會影響 JIT (Just In Time)運行
amx_debug 1
// 插件多語言調試控制
// 要開啟對某語言的調試請在引號內輸入語言的名稱(為2個英文字母, 如en, de等等)
// "" 則關閉調試
amx_mldebug ""
//Warcraft3 XP 參數設置
amx_sql_db "amx"
amx_sql_table "admins"
sv_warcraft3 1
mp_allowchangerace 1
mp_changeracepastfreezetime 0
mp_shopzone 0
mp_savexp 0
mp_savebyname 0
sv_allowwar3vote 1
sv_wc3icons 1
amx_votewar3_ratio 0.70
[red]// 踢高ping設置[/red]
amx_hpk_ping 250
amx_hpk_check 12
amx_hpk_tests 5
amx_hpk_delay 60
// 伺服器報時設置  0為啟用報時功能. 預設值0.
amx_time_offset 0
// 報時間隔時間  0 = 每小時, 1 = 每半小時, 2 = 每15分鐘.  預設值1.
amx_time_interval 1
// 用戶使用報時命令-time間隔(180.0秒)
amx_time_flood 150.0
// 蹲坑檢測 0=關閉, 1=開啟
anticamping 1
// 露營監視,向用戶端顯示檢測的資訊,  0=關閉露營監視, 1=打開露營監視
anticamping_meter 1
//  對蹲坑玩家的懲罰方式, a=扇耳光, b=減少生命值, c=舉牌子, d=呼吸聲, e=亮人 (默認bc)
anticamping_punish_mode "ac"
// 設置懲罰露營者的啟動時間 | 默認: 20秒
anticamping_camptime 30
// 設置健康減少的數值,懲罰項需要是1(耳光)或2(掉血) | 默認: 10
anticamping_healthpunish 10
// 每個玩家的蹲坑限次 (默認3)
anticamping_camp_limit 5
// 是否自動踢出超過蹲坑限次的玩家, 1=開啟, 0=關閉(但是立即殺死玩家並減上限數1)
anticamping_kick 1
//de_地圖上是否允許防守方蹲坑
anticamping_de_map_allow 1
//設置處罰的參數 (默認 1 | 44 | 44 |4 )
amx_punish_enable 1
amx_punish_health 4
amx_punish_money 4
amx_punish_armor 4
// 設置玩家更改名字時間間隔,以秒為單位
amx_nameflood_time 8.50
// Sprite 心靈運輸
S_tport_enable 1            // set to 0 for disable,default 1
S_tport_cost 2888     // set one Sprite Teleportation cost money
//This will cause STeleportation Blueness (default 1)
S_blink_diziness 1          // Flashbang effect is 0, for blue diziness set to 1,
S_blink_protection 1        // slays people who abuse blink on some maps (skywalking, map exploiting, default is 1)
//free STeleportation code (default "123")
S_code "123"
// 血腥插件
;a - 爆頭血
;b - 額外的血跡效果
;c - 低HP是流血
;d - Gib explosion (HE and damage over 200)
;e - 額外血淋淋模式
amx_gore "abcde"
//子彈軌跡插件,(0 不啟用 | 1 統一紫紅色(默認)| 3 武器類型顏色 | 4 團隊顏色)
amx_tracers 2
// 手雷拖尾 0=不拖尾  1=統一綠色  2=隨機顏色  3=團隊特色
sv_grentrail 3
// 顯示每一槍打的HP
amx_bullet_damage 0
// 顯示進、出伺服器資訊
amx_enter_message "%name% 登陸了伺服器!\n(他的排名是 %rankpos%)"
amx_leave_message "%name% 離開了伺服器!"
// 允許中間顯名字( 默認 0 , 1 )
// centerhud 為遊戲原來的
// show_player 為新的、彩色
amx_allow_centerhud 0
amx_show_player 1
//禁用武器 ( shield 戰術盾牌 )
amx_restrict on shield

//允許CT撿起C4
amx_allowctpickupbomb 1
//允許CT埋C4炸彈
amx_allowctplantbomb 1

//自動添加、踢出機器人 (似乎不行了)
amx_addbots_to 18     //最多補充到多少人數,不能全滿
csdm_active 1
//Leon_AntiCheat.amxx反作弊插件
//要求的CD版本號
force_cd_ver "4.32.0"
//是否要求只有3213以上版本的CS用戶端可以進服,“1“ 要求, ”0“不要求
force_cs_ver "1"
//force_cs_ver 為“1”時的提示資訊,可以設為空"",即不顯示提示
force_cd_msg "本伺服器要求使用C-D %force_cd_ver% 並要求CS為3213以上版本"
//force_cs_ver為“0”時的提示資訊,可以設為空"",即不顯示提示
force_cd_msg0 "本伺服器要求使用C-D %force_cd_ver%"
//提示HUD資訊的顏色,紅綠藍三色值(0-255),格式”RRRGGGBBB"
force_cd_rgb "000250250"
//提示HUD資訊的顯示效果
force_cd_eft "2"
//玩家進服後延時多少秒顯示資訊
force_cd_tim "12"[/php]
回复

使用道具 举报

发表于 2006-7-2 01:05:54 | 显示全部楼层 来自 中国–江苏–南京

回复: 踢高PING插件怎么一修改源代码就编译不成功呢?

这是因为你里面有中文,用utf-8的格式要修改前2个字符再编译,用amxx studio打开就可以修改,论坛上有相关的帖子,不懂就自己搜索一下

另外,修改amxx.cfg,amx_hpk_ping 150就能达到你的效果,何必去修改源码呢?拿到插件最好先了解清楚怎么用
回复

使用道具 举报

 楼主| 发表于 2006-7-2 01:30:41 | 显示全部楼层 来自 中国–广东–深圳

回复: 踢高PING插件怎么一修改源代码就编译不成功呢?

Post by 52yz
这是因为你里面有中文,用utf-8的格式要修改前2个字符再编译,用amxx studio打开就可以修改,论坛上有相关的帖子,不懂就自己搜索一下

另外,修改amxx.cfg,amx_hpk_ping 150就能达到你的效果,何必去修改源码呢?拿到插件最好先了解清楚怎么用

先谢谢你的帮助!
修改前2个字符再编译 请问是那2个字符呢?
回复

使用道具 举报

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

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