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

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

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

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

> Важная информация

Перед тем как создать тему или задать вопрос, ознакомьтесь с данной темой, там собраны наиболее распространенные уязвимости и способы устранения.
Так же не поленитесь воспользоваться поиском, вполне возможно, что ваш вопрос уже поднимался на форуме.
При создании новой темы уделите внимание ее названию, оно должно кратко описывать суть вашего вопроса/проблемы. Все вновь созданные темы с названиями "Помогите", "Объясните", "Подскажите" и т.д. будут удалены, а их авторы наказаны.

Какой мод блокирует реконект?

, как установить на сервер защиту от реконектов?
Статус пользователя Prodigy555
сообщение 12.7.2009, 21:04
Сообщение #1
Стаж: 14 лет

Сообщений: 78
Благодарностей: 3
Полезность: 34

Сделал сервер, все что нужно есть, не хватает только этой одной мелкой, но важной детали.
как установить на сервер защиту от реконектов?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Makzz
сообщение 12.7.2009, 21:41
Сообщение #2


Стаж: 16 лет

Сообщений: 2198
Благодарностей: 1365
Полезность: 1080

Reconnect Features
No More Reconnects
no_reconnect
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Zefir
сообщение 12.7.2009, 21:54
Сообщение #3
Стаж: 15 лет

Сообщений: 87
Благодарностей: 50
Полезность: 443

Защититься от этого нельзя, но можно свести на нет, усилия любителей реконнектов.

Вернее есть тупейшая защита, это когда тебя кикает если ты делаешь реконнект.

Но лучше применить плагин которые не дает преимуществ реконектчикам. Лучший на мой взгляд это reconnect_features от ConnorMcLeod.

Но вот моя переделка, ведет учет по именам адресам или стиму. Выставляеться параметром
amx_noreconnect_identity,
0 - steam_id
1 - IP
2 - name

Пользуйтесь :)

В Цербере у меня это много круче сделано, но то уже на любителя.

Блин файлик не прикрепляеться...
Прям сюда залью, надеюсь меня не забанят :):
Код
#include <amxmodx>
#include <fakemeta>
// Переделал Zefir, для запоминания по нику, IP или steam_id

#define MAX_ID     64

#if AMXX_VERSION_NUM < 180
    #define charsmax(%1)    sizeof(%1) - 1
#endif

#define MAX_PLAYERS 32

#define OFFSET_CSMONEY    115
#define OFFSET_CSDEATHS    444

enum storage {
    steamid[32],
    Float:frags,
    deaths,
    money,
    round
}

new bool:g_RestartAttempt[MAX_PLAYERS+1]
new bool:g_will_restart
new bool:g_authorized[MAX_PLAYERS+1]
new bool:g_putinserved[MAX_PLAYERS+1]
new g_disconnected_roundnum[MAX_PLAYERS+1]
new g_player_info[MAX_ID][storage]
new g_roundnum
new maxstored = 1
new clear_after, nr_score, nr_money, nr_spawn, nr_startmoney, mp_startmoney, nr_identity

public plugin_init() {
    register_plugin("Reconnect Features", "0.1b beta", "ConnorMcLeod")

    clear_after = register_cvar("amx_noreconnect_time", "30")
    nr_score = register_cvar("amx_noreconnect_score", "1")
    nr_money = register_cvar("amx_noreconnect_money", "1")
    nr_spawn = register_cvar("amx_noreconnect_spawn", "1")
    nr_startmoney = register_cvar("amx_noreconnect_startmoney", "0")
    nr_identity = register_cvar("amx_noreconnect_identity", "0")

    mp_startmoney = get_cvar_pointer("mp_startmoney")
    register_event("HLTV", "eNewRound", "a", "1=0", "2=0")
    register_event("TextMsg", "eRestartAttempt", "a", "2=#Game_will_restart_in")
    register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w")
    register_event("ResetHUD", "eResetHUD", "be")
    register_clcmd("clcmd_fullupdate", "fullupdateCmd")
}

public fullupdateCmd() {
    return PLUGIN_HANDLED_MAIN
}

public eRestartAttempt() {
    new players[MAX_PLAYERS], num
    get_players(players, num, "a")
    for (new i; i < num; ++i)
        g_RestartAttempt[players[i]] = true
}

public eRestart() {
    g_will_restart = true
    maxstored = 1
}

public eResetHUD(id) {
    if (g_RestartAttempt[id]) {
        g_RestartAttempt[id] = false
        return
    }
    event_player_spawn(id)
}

public event_player_spawn(id) {
    if(!g_disconnected_roundnum[id])
        return

    if(g_disconnected_roundnum[id] == g_roundnum) {
        g_disconnected_roundnum[id] = 0
        set_task(0.1, "delay_kill", id)
    }
}

public delay_kill(id) {
    user_kill(id)
}

public eNewRound() {
    g_roundnum++
    if(g_will_restart)
    {
        for(new i; i < maxstored; i++)
        {
            g_player_info[i][steamid][0] = '^0'
        }
        g_will_restart = false
    }
}

public client_disconnect(id) {
    new Float:task_time = get_pcvar_float(clear_after)
    if(!task_time)
        return

    if(is_user_bot(id) || is_user_hltv(id))
        return

    g_authorized[id] = false
    g_putinserved[id] = false

    new free = -1
    for(new i; i < maxstored; i++)
    {
        if(!g_player_info[i][steamid][0])
        {
            free = i
            break
        }
    }

    if(free == -1)
        return

    if(free == maxstored && free < MAX_ID)
        maxstored++

    switch(get_pcvar_num(nr_identity))
    {
        case 0:
            get_user_authid(id, g_player_info[free][steamid], 31)
        case 1:
            get_user_ip(id, g_player_info[free][steamid], 31)
        case 2:
            get_user_name(id, g_player_info[free][steamid], 31)
    }
    pev(id, pev_frags, g_player_info[free][frags])
    g_player_info[free][deaths] = get_pdata_int(id, OFFSET_CSDEATHS)
    g_player_info[free][money] = get_pdata_int(id, OFFSET_CSMONEY)
    g_player_info[free][round] = g_roundnum

    g_disconnected_roundnum[id] = 0

    set_task(task_time, "clear", free)
}

public clear(taskid) {
    g_player_info[taskid][steamid][0] = '^0'
    // g_player_info[taskid][round] = 0
}

public client_authorized(id) {
    g_authorized[id] = true
    if(g_putinserved[id])
        check_player(id)
}

public client_putinserver(id) {
    if(!get_pcvar_num(clear_after))
        return

    if(is_user_bot(id) || is_user_hltv(id))
        return

    if(g_authorized[id])
        check_player(id)
    else
        g_putinserved[id] = true
}

check_player(id) {
    new authid[32], len
    len = 31
    switch(get_pcvar_num(nr_identity))
    {
        case 0:
            get_user_authid(id, authid, len)
        case 1:
            get_user_ip(id, authid, len)
        case 2:
            get_user_name(id, authid, len)
    }
    


    for(new i; i < maxstored; i++)
    {
        if(!g_player_info[i][steamid][0])
            continue

        if(equal(g_player_info[i][steamid], authid, len))
        {
            if(get_pcvar_num(nr_score)) {
                set_pev(id, pev_frags, g_player_info[i][frags])
                set_pdata_int(id, OFFSET_CSDEATHS, g_player_info[i][deaths])
            }
            if(get_pcvar_num(nr_money)) {
                new _money = g_player_info[i][money]
                new startmoney = get_pcvar_num(mp_startmoney)
                if(get_pcvar_num(nr_startmoney) && _money > startmoney)
                    set_pdata_int(id, OFFSET_CSMONEY, startmoney)
                else
                    set_pdata_int(id, OFFSET_CSMONEY, _money)
            }
            if(get_pcvar_num(nr_spawn)) {
                g_disconnected_roundnum[id] = g_player_info[i][round]
            }

            remove_task(i)
            clear(i)

            return
        }
    }
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя Prodigy555
сообщение 12.7.2009, 22:06
Сообщение #4
Стаж: 14 лет

Сообщений: 78
Благодарностей: 3
Полезность: 34

спс большое!
У меня стоит Amx Mod X 1.8.1. Что мне изменить (куда залезть и что сделать по подробнее) чтобы установить время повторного реконекта?

Zefir, можешь мне простому юзеру написать небольшую подробную инструкцию как мне использовать твой код, куда его и как залить на мой сервер,, +небольшая инструкция по настройке (как регулировать время запрета повторного реконекта) чтоб оно работало. У меня повторюсь стоит CS 1.6 патч 2.1, Amx Mod X 1.8.1, Reallite_HLG_2.8. Собрал 2 сервера: 1 для КВ (где такая защита не нужна), другой для "мяса", где это очень нужно. Все работает прекрасно. ВОт тока не хватает защиты от реконекта. Надеюсь на твою помошь...

Отредактировал: Prodigy555, - 12.7.2009, 22:09
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ost
сообщение 13.7.2009, 8:47
Сообщение #5


Стаж: 15 лет

Сообщений: 58
Благодарностей: 11
Полезность: 148

какая то тяжелая штука, если нужен обычны то вот лови...

Antireconnect
1. исключает возможность после смерти вновь ожить используя retry или reconnect
2. не позволяет так запросто обнулять счёт, что будет показывать более общую картину игры игрока

Параметры:
amx_reconnect_can=1 // реконнект разрешён (не кикает)
amx_reconnect_time=7 // при запрете реконнекта не будет разрешать заходить 7 секунд
amx_reconnect_ss=1 // сохранять счёт при реконнекте (если он разрешён amx_reconnect_can 1)
amx_reconnect_stime=7 // сохраняет счёт для игрока в течении 7 секунд после его ухода по ip
amx_reconnect_static=1 // отсчёт времени с момента ухода игрока с сервера (если будет amx_reconnect_static 0 - с момента входа игрока на сервер)
Прикрепленные файлы:
Прикрепленный файл  antireconnect.zip ( 5,15 килобайт ) Кол-во скачиваний: 37
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Saimon
сообщение 13.7.2009, 9:45
Сообщение #6


Стаж: 16 лет

Сообщений: 136
Благодарностей: 46
Полезность: 267

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" ) *
Прикрепленные файлы:
Прикрепленный файл  no_retry.rar ( 6,7 килобайт ) Кол-во скачиваний: 20
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Zefir
сообщение 13.7.2009, 10:58
Сообщение #7
Стаж: 15 лет

Сообщений: 87
Благодарностей: 50
Полезность: 443

Prodigy555, блин ну вы даете. Зачем заниматься созданием своих серверов если элементарные действия за вас должен ктото делать? Может вас еще из ложечки покормить?

1. Скопируй весь текст в файл amxmodx/scripting/reconnect_features.sma.
2. скомпилируй его
3. Cкопируй полученный файл reconnect_features.amxx в каталог amxmodx/plugins
4. Пропиши в plugins.ini строку reconnect_features.amxx

amx_noreconnect_time 30
время после реконнекта в течении которого плагин сработает

amx_noreconnect_score 1
указывает сохранять ли счет,
то есть минуса остануться минусами :)

amx_noreconnect_money 1
указывает сохранять ли деньги игроку,
дополнительных денег никто не получит.

amx_noreconnect_spawn 1
запрещает играть два раза в одном раунде
убъет игрока если он респавниться в том же раунде

amx_noreconnect_startmoney 0
сколько денег давать после реконнекта

amx_noreconnect_identity 0
запоминать игрока по:
0 - steam
1 - Ip
2 - name

Отредактировал: Zefir, - 13.7.2009, 11:04
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Prodigy555
сообщение 13.7.2009, 13:39
Сообщение #8
Стаж: 14 лет

Сообщений: 78
Благодарностей: 3
Полезность: 34

Zefir,создать сервер возникла необходимость, т.к. самый популярный сервер города "ушел в отпуск", и остались те, на которых играть не интересно, да и из за глюков с sXeInjected не все могут. Я задался задачей сделать сервер, где будут "мои правила". До этого этим еще не занимался, потому не знаю еще до конца структуру взаимосвязей модулей, плагинов и файлов внутри сервера. Я думаю это лишь вопрос времени. Спс тебе за подробное описание! Правда не до конца понятен пункт "скомпилируй его" (вопрос как и чем?).
Makzz,
No More Reconnects - не работает!
no_reconnect - не работает!
Reconnect Features (видимо исходник того что выложил Zefir) - работает, но в 4aT пишет какую-то непонятную и никому не нужную байду.
Щас еще попробую то, что выложили позже.

Отредактировал: Prodigy555, - 13.7.2009, 13:56
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mozart-1
сообщение 25.7.2009, 12:15
Сообщение #9
Стаж: 16 лет

Сообщений: 614
Благодарностей: 98
Полезность: 172

не нужно говорить что плагин не работает так как он может быть работает но не срабатывает на тебя лично - возможно из за иммунити ...)
amx_plugins и смотри напротив - если running тогда ок.
кодировку перепроверь
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя VAN_VAN
сообщение 30.8.2009, 22:13
Сообщение #10


Стаж: 15 лет

Сообщений: 37
Благодарностей: 2
Полезность: 43

Цитата(Prodigy555 @ 12.7.2009, 20:04) *
Сделал сервер, все что нужно есть, не хватает только этой одной мелкой, но важной детали.
как установить на сервер защиту от реконектов?

Прикрепленный файл  no_reconn.rar ( 5,82 килобайт ) Кол-во скачиваний: 29
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: