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

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

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

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

Конект на полный сервер без резервного слота .

Статус пользователя sambo
сообщение 20.2.2014, 17:21
Сообщение #1


Стаж: 14 лет

Сообщений: 847
Благодарностей: 200
Полезность: 477

Кто сможет подправить плагин не бесплатно естественно .
1 Подправить для админов по айпи и стим айди у которых админка прописана с паролем .
"STEAM_0:0:айди" "пароль" "флаги" "ca"
2 Изменить выбор игрока для кика .
- Имунитет для админов .
- Кик с самым большим пингом.
Прикрепленный файл  slot_reserv_2_.sma ( 4,37 килобайт ) Кол-во скачиваний: 14


sma
Код
// ================================================================================
================
//
//    Plugin:  Full Server Slot Reservation
//    Version: 0.2.1
//    Authors: PomanoB & droper
//
//    Copyright © 2011 - 2013
//
// ================================================================================
================

#include < amxmodx >
#include < orpheu >

// ================================================================================
================
//
//    Макроконстанты
//
// ================================================================================
================

#define PLUGIN    "Full Server Slot Reservation"
#define VERSION    "0.2.1"
#define AUTHOR    "PomanoB & droper"

// Проверять пароль _pw или нет
#define PASSWORD_CHECK

// Причина кика
#define KICK_REASON "Slot reservation! You unluck player!"


#if defined PASSWORD_CHECK

    // Строка должна быть такой же как и в кваре amx_password_field ( но \ в начале и конце обязательны )
    new const g_passwordField[] = "\_pw\";
#endif

// ================================================================================
================
//
//    Глобальные переменные
//
// ================================================================================
================

new g_maxplayers = 0;


// ================================================================================
================
//
//    plugin_precache ()
//
// ================================================================================
================

public plugin_precache ( )
{
    register_plugin ( PLUGIN, VERSION, AUTHOR );

    OrpheuRegisterHook ( OrpheuGetFunction ( "SV_ConnectClient" ), "OnSV_ConnectClient" );

    g_maxplayers = get_maxplayers ( );
}

// ================================================================================
================
//
//    OnSV_ConnectClient ()
//
// ================================================================================
================

public OrpheuHookReturn:OnSV_ConnectClient ( )
{
    static szInfo[512], szName[ 32 ], iPos, iCount, iFlags;

    read_args ( szInfo, charsmax( szInfo ) );

    szInfo[ strlen ( szInfo ) - 1 ] = EOS;

    iPos = contain ( szInfo, "\name\" );

    copyc ( szName, charsmax( szName ), szInfo[ iPos + 6 ], '\' );

#if defined PASSWORD_CHECK

        static szPassword[ 64 ];

        iPos = contain ( szInfo, g_passwordField );

        if ( iPos != -1 )
        {
            copyc ( szPassword, charsmax( szPassword), szInfo[ iPos + charsmax( g_passwordField ) ], '\' );
        }
        else
        {
            szPassword[ 0 ] = EOS;
        }
#endif

    iCount = admins_num ( );

    for ( iPos = 0; iPos < iCount; iPos++ )
    {
        iFlags = admins_lookup ( iPos, AdminProp_Flags );

        admins_lookup ( iPos, AdminProp_Auth, szInfo, charsmax( szInfo ) );

        if ( iFlags & ( FLAG_AUTHID | FLAG_IP ) )
        {
            continue;
        }

        if ( iFlags & FLAG_TAG )
        {
            if ( iFlags & FLAG_CASE_SENSITIVE )
            {
                if ( contain ( szName, szInfo ) != -1 )
                {
                    break;
                }
            }
            else if ( contain ( szName, szInfo ) != -1 )
            {
                break;
            }
        }
        else
        {

            if ( iFlags & FLAG_CASE_SENSITIVE )
            {
                if ( equal ( szInfo, szName ) )
                {
                    break;
                }
            }
            else
            {
                if ( equali ( szInfo, szName ) )
                {
                    break;

                }
            }
        }

    }

    if ( iPos == iCount )
    {
        return OrpheuIgnored;
    }

#if defined PASSWORD_CHECK

        if ( !( iFlags & FLAG_NOPASS ) )
        {
            admins_lookup ( iPos, AdminProp_Password, szInfo, charsmax( szInfo ) );

            if ( !equal ( szInfo, szPassword ) )
            {
                return OrpheuIgnored;
            }
        }
#endif

    iPos = findKickedPlayer ( );

    if ( iPos )
    {
        server_cmd ( "kick #%d ^"%s^"", get_user_userid ( iPos ), KICK_REASON );
        server_exec ( );
    }

    return OrpheuIgnored;
}

// ================================================================================
================
//
//    findKickedPlayer ()
//
// ================================================================================
================

public findKickedPlayer()
{
    static i, iUnluckPlayer, iPlayersNum;

    iUnluckPlayer = 0;

    iPlayersNum = 0;

    for ( i = 1; i <= g_maxplayers; i++ )
    {
        if ( is_user_connected ( i ) )
        {
            iPlayersNum++

            if ( !iUnluckPlayer && !is_user_bot ( i ) )
            {
                iUnluckPlayer = i;
            }
        }
    }

    if ( iUnluckPlayer && iPlayersNum == g_maxplayers )
    {
        return iUnluckPlayer;
    }

    return 0;
}


Топик авторов тут <--- Кликабельно
Написал автору но у него нет или времени или желания . К сожалению после связи с ним тема была редактирована и вырезаны несколько полезных коментов .
Так что в коде нужно разбираться самим. Аналогов этому плагину нет к сожалению , новый его вариант был бы полезен всем .

Отредактировал: sambo, - 20.2.2014, 17:27
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Hollisch
сообщение 20.2.2014, 17:42
Сообщение #2
Стаж: 18 лет
Город: Обитель зла

Сообщений: 503
Благодарностей: 832
Полезность: 710

@ sambo

Кто сможет подправить плагин не бесплатно естественно .
Мой вам совет: здесь все просто, разберитесь сами.

1 Подправить для админов по айпи и стим айди у которых админка прописана с паролем .
"STEAM_0:0:айди" "пароль" "флаги" "ca"

Поправить для админов - можно, проверка на любой \ определенный флаг, но никак не "по стимид" и "по ип".

К сожалению после связи с ним тема была редактирована и вырезаны несколько полезных коментов.
И к чему вы это написали?

Аналогов этому плагину нет к сожалению , новый его вариант был бы полезен всем .
Есть, и очень давно.

Отредактировал: Hollisch, - 20.2.2014, 17:42
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sambo
сообщение 20.2.2014, 17:48
Сообщение #3


Стаж: 14 лет

Сообщений: 847
Благодарностей: 200
Полезность: 477

Цитата(Hollisch @ 20.2.2014, 17:42) *
@ sambo

Кто сможет подправить плагин не бесплатно естественно .
Мой вам совет: здесь все просто, разберитесь сами.

1 Подправить для админов по айпи и стим айди у которых админка прописана с паролем .
"STEAM_0:0:айди" "пароль" "флаги" "ca"

Поправить для админов - можно, проверка на любой \ определенный флаг, но никак не "по стимид" и "по ип".

К сожалению после связи с ним тема была редактирована и вырезаны несколько полезных коментов.
И к чему вы это написали?

Аналогов этому плагину нет к сожалению , новый его вариант был бы полезен всем .
Есть, и очень давно.



Мой вам совет: здесь все просто, разберитесь сами. - возможно но мало вероятно. Нужен стабильный сма на первых испытаниях а не после 100 попыток .

Поправить для админов - можно, проверка на любой \ определенный флаг, но никак не "по стимид" и "по ип". - Посмотрите код .

И к чему вы это написали? - Ответ был написан дальше: вырезаны несколько полезных коментов .
Так что в коде нужно разбираться самим .

Есть, и очень давно. - пруф?

Отредактировал: sambo, - 20.2.2014, 18:14
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Vasabla
сообщение 10.3.2014, 13:46
Сообщение #4


Стаж: 14 лет

Сообщений: 97
Благодарностей: 35
Полезность: 276

Цитата(sambo @ 20.2.2014, 17:21) *
Кто сможет подправить плагин не бесплатно естественно .
1 Подправить для админов по айпи и стим айди у которых админка прописана с паролем .
"STEAM_0:0:айди" "пароль" "флаги" "ca"
2 Изменить выбор игрока для кика .
- Имунитет для админов .
- Кик с самым большим пингом.
Прикрепленный файл  slot_reserv_2_.sma ( 4,37 килобайт ) Кол-во скачиваний: 14


sma
Код
// ================================================================================
================
//
//    Plugin:  Full Server Slot Reservation
//    Version: 0.2.1
//    Authors: PomanoB & droper
//
//    Copyright © 2011 - 2013
//
// ================================================================================
================

#include < amxmodx >
#include < orpheu >

// ================================================================================
================
//
//    Макроконстанты
//
// ================================================================================
================

#define PLUGIN    "Full Server Slot Reservation"
#define VERSION    "0.2.1"
#define AUTHOR    "PomanoB & droper"

// Проверять пароль _pw или нет
#define PASSWORD_CHECK

// Причина кика
#define KICK_REASON "Slot reservation! You unluck player!"


#if defined PASSWORD_CHECK

    // Строка должна быть такой же как и в кваре amx_password_field ( но \ в начале и конце обязательны )
    new const g_passwordField[] = "\_pw\";
#endif

// ================================================================================
================
//
//    Глобальные переменные
//
// ================================================================================
================

new g_maxplayers = 0;


// ================================================================================
================
//
//    plugin_precache ()
//
// ================================================================================
================

public plugin_precache ( )
{
    register_plugin ( PLUGIN, VERSION, AUTHOR );

    OrpheuRegisterHook ( OrpheuGetFunction ( "SV_ConnectClient" ), "OnSV_ConnectClient" );

    g_maxplayers = get_maxplayers ( );
}

// ================================================================================
================
//
//    OnSV_ConnectClient ()
//
// ================================================================================
================

public OrpheuHookReturn:OnSV_ConnectClient ( )
{
    static szInfo[512], szName[ 32 ], iPos, iCount, iFlags;

    read_args ( szInfo, charsmax( szInfo ) );

    szInfo[ strlen ( szInfo ) - 1 ] = EOS;

    iPos = contain ( szInfo, "\name\" );

    copyc ( szName, charsmax( szName ), szInfo[ iPos + 6 ], '\' );

#if defined PASSWORD_CHECK

        static szPassword[ 64 ];

        iPos = contain ( szInfo, g_passwordField );

        if ( iPos != -1 )
        {
            copyc ( szPassword, charsmax( szPassword), szInfo[ iPos + charsmax( g_passwordField ) ], '\' );
        }
        else
        {
            szPassword[ 0 ] = EOS;
        }
#endif

    iCount = admins_num ( );

    for ( iPos = 0; iPos < iCount; iPos++ )
    {
        iFlags = admins_lookup ( iPos, AdminProp_Flags );

        admins_lookup ( iPos, AdminProp_Auth, szInfo, charsmax( szInfo ) );

        if ( iFlags & ( FLAG_AUTHID | FLAG_IP ) )
        {
            continue;
        }

        if ( iFlags & FLAG_TAG )
        {
            if ( iFlags & FLAG_CASE_SENSITIVE )
            {
                if ( contain ( szName, szInfo ) != -1 )
                {
                    break;
                }
            }
            else if ( contain ( szName, szInfo ) != -1 )
            {
                break;
            }
        }
        else
        {

            if ( iFlags & FLAG_CASE_SENSITIVE )
            {
                if ( equal ( szInfo, szName ) )
                {
                    break;
                }
            }
            else
            {
                if ( equali ( szInfo, szName ) )
                {
                    break;

                }
            }
        }

    }

    if ( iPos == iCount )
    {
        return OrpheuIgnored;
    }

#if defined PASSWORD_CHECK

        if ( !( iFlags & FLAG_NOPASS ) )
        {
            admins_lookup ( iPos, AdminProp_Password, szInfo, charsmax( szInfo ) );

            if ( !equal ( szInfo, szPassword ) )
            {
                return OrpheuIgnored;
            }
        }
#endif

    iPos = findKickedPlayer ( );

    if ( iPos )
    {
        server_cmd ( "kick #%d ^"%s^"", get_user_userid ( iPos ), KICK_REASON );
        server_exec ( );
    }

    return OrpheuIgnored;
}

// ================================================================================
================
//
//    findKickedPlayer ()
//
// ================================================================================
================

public findKickedPlayer()
{
    static i, iUnluckPlayer, iPlayersNum;

    iUnluckPlayer = 0;

    iPlayersNum = 0;

    for ( i = 1; i <= g_maxplayers; i++ )
    {
        if ( is_user_connected ( i ) )
        {
            iPlayersNum++

            if ( !iUnluckPlayer && !is_user_bot ( i ) )
            {
                iUnluckPlayer = i;
            }
        }
    }

    if ( iUnluckPlayer && iPlayersNum == g_maxplayers )
    {
        return iUnluckPlayer;
    }

    return 0;
}


Топик авторов тут <--- Кликабельно
Написал автору но у него нет или времени или желания . К сожалению после связи с ним тема была редактирована и вырезаны несколько полезных коментов .
Так что в коде нужно разбираться самим. Аналогов этому плагину нет к сожалению , новый его вариант был бы полезен всем .

1. Это невозможно. (В 2х словах: SteamID входящего игрока доступен уже после проверки на заполненность сервера).
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sambo
сообщение 10.3.2014, 14:34
Сообщение #5


Стаж: 14 лет

Сообщений: 847
Благодарностей: 200
Полезность: 477

Vasabla,
мы стим и не чекаем . Чекаем пароль , флаг "a" (disconnect player on invalid password)

По идее нужно просто вырезать проверку на айпи и стим ийди(типа такого
Код
        if ( iFlags & ( FLAG_AUTHID | FLAG_IP ) )
        {
            continue;

Вот например у меня авторизация по 3 параметрам (ник, стим, пароль) . Если оставим только чек Account flags "a" то по идее сработает.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: