|
发表于 2009-1-15 10:13:12
|
显示全部楼层
来自 中国–湖北–黄冈
- /* AMX Mod script.
- *
- * ========================Ban retry player Version 1.1============================
- *
- * (c) Copyright 2006, C@mp3R based on SYZo's AMX plugin
- * This file is provided as is (no warranties).
- *
- *
- *
- * NEWS
- * 11 Jan 2006
- * - Add 2 new cvars
- * amx_retrytimetoban
- * amx_retrycounttoban : (if you retry "amx_retrycounttoban" times in "amx_retrytimetoban" minute(s), you will be banned)
- * - Fixed ADMIN_IMMUNITY problem, now admin with access level a will not be banned
- *
- * 10 Jan 2006
- * - Rename the plugin from no_reconnect to banretryplayer
- * - Fixed the wrong spelling Embarassed
- *
- *
- *
- * amx_retryban = 1
- * amx_retrybanduration = 3
- * amx_retrychat = 1
- *
- * amx_retrytimetoban = 10
- * amx_retrycounttoban = 2 (if you retry 3 times in amx_retrytimetoban minute(s), you will be banned)
- *
- * amx_retrybankmsg = "Ban %s %m min(s) because retry %d times in %m2 min(s)"
- * amx_retrychatmsg = "You were using command RETRY %d time(s) in %d minute(s) so you has been banned from this server in %d minutes. Come back later please!"
- *
- */
- #include <amxmodx>
- #include <amxmisc>
- #define MAX_PLAYERS 32
- new pip[MAX_PLAYERS+1][22]
- new markedIp[MAX_PLAYERS+1]
- public client_connect(id) {
- if ((!is_user_bot(id)) && ( !(get_user_flags(id) & ADMIN_IMMUNITY) ) && (get_cvar_num("amx_retryban")==1)) {
- new userip[21+1]
- new uname[33+1]
- get_user_ip(id, userip, 21, 0)
- get_user_name(id, uname, 33)
- for(new i = 1; i <= MAX_PLAYERS; i++) {
- if (equal(userip, pip[i], 21)) {
- new userid[1]
- userid[0] = get_user_userid(id)
- if ( !(get_user_flags(id) & ADMIN_IMMUNITY) ) {
- //--------------------------------------------
- if (markedIp[i] < get_cvar_num("amx_retrycounttoban"))
- {
- return PLUGIN_CONTINUE
- }
- //--------------------------------------------
-
- new txt[128]
- get_cvar_string("amx_retrybanmsg", txt, 127)
- new min[6]
- new min2[6]
- new retryCount[3]
- num_to_str(get_cvar_num("amx_retrybanduration"),min, 5)
- num_to_str(get_cvar_num("amx_retrytimetoban"),min2, 5)
- num_to_str(get_cvar_num("amx_retrycounttoban"),retryCount, 2)
- replace(txt, 127, "%s", uname)
- replace(txt, 127, "%m", min)
- replace(txt, 127, "%m2", min2)
- replace(txt, 127, "%d", retryCount)
-
- server_cmd("say %s",txt)
- set_hudmessage(255, 0, 0, 0.05, 0.70, 0, 5.0, 6.0, 6.0, 0.15, 3)
- show_hudmessage(0,"%s",txt)
-
- if (get_cvar_num("amx_retrychat")==1)
- {
- new sTemp[128]
- new text[128]
- get_cvar_string("amx_retrychatmsg", sTemp, 127)
- format(text, 128, sTemp, get_cvar_num("amx_retrycounttoban"), get_cvar_num("amx_retrytimetoban"), get_cvar_num("amx_retrybanduration"))
- client_cmd(id,"echo %s",text)
- }
- server_cmd("addip %d ^"%s^";wait;writeip",get_cvar_num("amx_retrybanduration"),userip)
- markedIp[i] = 0
- pip[i][0] = 0
- }
- return PLUGIN_CONTINUE
- }
- }
-
- }
- return PLUGIN_CONTINUE
- }
- public client_disconnect(id) {
- if ((!is_user_bot(id)) && ( !(get_user_flags(id) & ADMIN_IMMUNITY) ) && (get_cvar_num("amx_retryban")==1)) {
- for(new i = 1; i <= MAX_PLAYERS; i++) {
- if(pip[i][0] == 0) {
- markedIp[i]++;
- server_print("say ----Markip[%d] = %d----", i, markedIp[i])
- //--------------------------------------------
- if (markedIp[i] == 1) // First time retry
- {
- new para[3]
- format(para, 2, "%d", i)
- set_task(60.0 * get_cvar_num("amx_retrytimetoban"), "clean_markedip", 0, para, 1)
- }
- //----------------------------------
- else if (markedIp[i] == get_cvar_num("amx_retrycounttoban")) // Reached the retry time count
- {
- new userip[21+1]
- get_user_ip(id, userip, 21, 0)
- copy(pip[i], 21, userip)
- }
- return PLUGIN_CONTINUE
- }
- }
- }
- return PLUGIN_CONTINUE
- }
- public clean_markedip(index[]) {
- markedIp[str_to_num(index)]=0;
- }
- public plugin_init() {
- register_plugin("Ban retry player","1.1","C@mp3r.vn")
- register_cvar("amx_retryban","1")
- register_cvar("amx_retrybanduration","3")
- register_cvar("amx_retrychat","1")
- register_cvar("amx_retrytimetoban","10")
- register_cvar("amx_retrycounttoban","2")
-
- // %s is the player name, %m is amx_retrybanduration in minutes
-
- register_cvar("amx_retrybanmsg","Ban %s %m min(s) because retry %d time(s) in %m2 min(s)")
- register_cvar("amx_retrychatmsg","You were using command RETRY %d time(s) in %d minute(s) so you has been banned from this server in %d minutes. Come back later please!")
- for(new i=0; i< MAX_PLAYERS; i++)
- {
- markedIp[i]=0;
- }
- return PLUGIN_CONTINUE
- }
复制代码 没有钱下载的 可以看看这个源码 |
|