Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Переделать no retry

Статус пользователя adva
сообщение 3.1.2014, 19:34
Сообщение #1


Иконка группы

Стаж: 12 лет

Сообщений: 2543
Благодарностей: 1676
Полезность: 819

Меценат Меценат

Нашел на оленях плагин антиреконнекта, но в нём много лишнего.
Прошу за вознаграждение переделать.

Оставить только:
amx_retrymsg - message which is displayed after reconnect to user ( default: "No retry allowed here, %s" ) *
amx_retrytime - time in seconds to determine if retry was used ( default: 30 )
amx_retrykickmsg - reason when kicked ( default: "DO NOT USE RETRY COMMAND" )
добавить квары на иммунитет, чтобы не кикало и не ждали):
иммунитет только для admin_immunity
иммунитет только для admin_immunity + admin_ban
исходник
Код
/*
NO RETRY 1.10

Plugin by Priski

Usage :
kicks and/or notifies users if they use retry

CVARS :
amx_retrytime     - time in seconds to determine if retry was used ( default: 15 )
amx_retrykick     - set to 1 if you want to kick retry users ( default: 0 )
amx_retryshow     - set to 0 if you want to disable public announces about use of retry ( default: 0 )
amx_retrychat     - show usage in playerchat ( default: 1 )
amx_retrymsg     - message which is displayed after reconnect to user ( default: "No retry allowed here, %s" ) *
amx_retrykickmsg - reason when kicked ( default: "DO NOT USE RETRY COMMAND" )
amx_retrychatmsg - message in playerchat ( default: "%s was kicked: reconnect in %t seconds" ) *

* NOTE:
%s = players name
%t = same as in amx_retrytime

Changelog :

1.16 / 2005-10-17
- added new feature cvars:
  amx_retrychat & amx_retrychatmsg
- better functionality
- hudmessages only to user who triggered

1.10 / 2005-08-17
- whole code rewritten
- bugs fixed

1.00 / 2005-08-15
- first release


*/
#include <amxmodx>
#include <amxmisc>

#define MAX_PLAYERS 32

new pID[MAX_PLAYERS][22]

public plugin_init() {
    register_plugin("No retry","1.16","Priski")
    register_cvar("amx_retrytime","60")
    register_cvar("amx_retrykick","0")
    register_cvar("amx_retryshow","0")
    register_cvar("amx_retrychat","1")
    
    // %s is the player name, %t is amx_retrytime
    register_cvar("amx_retrymsg","No retry allowed here, %s")
    register_cvar("amx_retrykickmsg","Too fast reconnect is not allowed")
    register_cvar("amx_retrychatmsg","%s was kicked: reconnect in %t seconds")
        
    return PLUGIN_HANDLED
}

public client_putinserver(id) {
    // no bots or admin immunity users
    if ((is_user_bot(id)) || (get_user_flags(id)&ADMIN_IMMUNITY)) {
        return PLUGIN_HANDLED
    }
    
    // gather info
    new ip[22]
    get_user_ip(id,ip,21)
    
    for(new i = 1; i < MAX_PLAYERS; i++) {
        if (equal(ip, pID[i], 21)) {
            
            new name[34]
            get_user_name(id, name, 33)
            
            if (get_cvar_num("amx_retryshow")) {
                new uID[1]
                uID[0] = id
                set_task(2.0,"showMsg", id, uID, 1)
            }
            
            if (get_cvar_num("amx_retrychat")) {
                new txt[128]
                get_cvar_string("amx_retrychatmsg", txt, 127)
                new sec[6]
                num_to_str(get_cvar_num("amx_retrytime"),sec, 5)
                
                replace(txt, 127, "%s", name)
                replace(txt, 127, "%t", sec)
                
                client_print( 0, print_chat, "[AMXX] %s", txt)
            }
                        
            if (get_cvar_num("amx_retrykick")) {
                new uID[1]
                uID[0] = get_user_userid(id)
                                
                // delayed kick
                set_task(7.0,"kick",77,uID,1)
                
            }
            
            break
        }
    }
    
    return PLUGIN_HANDLED;
}

public client_disconnect(id) {
    // no bots or admin immunity users are in list
    if ((is_user_bot(id)) || (get_user_flags(id)&ADMIN_IMMUNITY)) {
    return PLUGIN_HANDLED; }

    // gather info
    new ip[22]
    get_user_ip(id,ip,21)
    new found = 0;
    
    for(new i = 1; i < MAX_PLAYERS; i++) {
        if (equal(ip, pID[i], 21)) {
            // this user has been already kicked
            found = 1
            break
        }
    }
    
    if (found == 0) {
        for(new i = 1; i < MAX_PLAYERS; i++) {
            if (pID[i][0] == 0) {    // found empty slot
                get_user_ip(id, pID[i], 21)
                new aID[1]
                aID[0] = i
                set_task( get_cvar_float("amx_retrytime"), "cleanID", (id + MAX_PLAYERS),aID,1)
                        
                break
            }
        }
    }
    return PLUGIN_HANDLED;
}


public cleanID(i[]) {
    pID[i[0]][0] = 0
}

public showMsg(pID[]) {
    new txt[128]
    get_cvar_string("amx_retrymsg", txt, 127)
    
    new playername[34]
    get_user_name(pID[0], playername, 33)
    
    new sec[6]
    num_to_str(get_cvar_num("amx_retrytime"),sec, 5)
    
    replace(txt, 127, "%s", playername)
    replace(txt, 127, "%t", sec)
    
    set_hudmessage(255, 255, 255, 0.05, 0.72, 0, 5.0, 10.0, 2.0, 0.15, 3)
    show_hudmessage(pID[0],txt)
}

public kick(id[]) {
    new txt[128]
    get_cvar_string("amx_retrykickmsg", txt, 127)
    server_cmd("kick #%d ^"%s^"", id[0], txt)
}


Отредактировал: adva, - 21.1.2014, 23:11
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Serj
сообщение 3.1.2014, 19:34
Сообщение #2


Стаж: 15 лет

Сообщений: 855
Благодарностей: 266
Полезность: 198

А плагин где?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adva
сообщение 3.1.2014, 19:36
Сообщение #3


Иконка группы

Стаж: 12 лет

Сообщений: 2543
Благодарностей: 1676
Полезность: 819

Меценат Меценат

Сорри добавил, но всё же ты быстрый )))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Serj
сообщение 3.1.2014, 20:12
Сообщение #4


Стаж: 15 лет

Сообщений: 855
Благодарностей: 266
Полезность: 198

Если до завтра никто не сделает и я не забуду - сделаю.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adva
сообщение 3.1.2014, 20:33
Сообщение #5


Иконка группы

Стаж: 12 лет

Сообщений: 2543
Благодарностей: 1676
Полезность: 819

Меценат Меценат

Хорошо, пока никто не взялся.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 3.1.2014, 20:34
Сообщение #6
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Цитата(adva @ 3.1.2014, 21:33) *
Хорошо, пока никто не взялся.

Не охото никому :3
Ладно, сейчас постараюсь сделать @_@ :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adva
сообщение 5.1.2014, 0:45
Сообщение #7


Иконка группы

Стаж: 12 лет

Сообщений: 2543
Благодарностей: 1676
Полезность: 819

Меценат Меценат

Цитата(Serj @ 3.1.2014, 21:12) *
Если до завтра никто не сделает и я не забуду - сделаю.


забыл(((
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: