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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер
2 страниц V   1 2

Резервация слота

, Почему?
Статус пользователя BaHeK
сообщение 21.12.2015, 12:20
Сообщение #21


Стаж: 17 лет

Сообщений: 571
Благодарностей: 505
Полезность: 651

Цитата(Safety1st @ 21.12.2015, 12:49) *
Что ты сделал, что у тебя в итоге заработало?

В SV_RejectConnection отловил сообщение о полном сервере, а не в SV_DropClient
Cкрытый текст
Код
int SV_FindEmptySlot(netadr_t *adr, int *pslot, client_t ** ppClient)
{
    if (g_psvs.maxclients > 0)
    {
        int slot;
        client_t *client = g_psvs.clients;

        for (slot = 0; slot < g_psvs.maxclients; slot++, client++)
        {
            if (!client->active && !client->spawned && !client->connected)
                break;
        }

        if (slot < g_psvs.maxclients)
        {
            *pslot = slot;
            *ppClient = client;
            return 1;
        }
    }

    SV_RejectConnection(adr, "Server is full.\n");
    return 0;
}

Цитата(Safety1st @ 21.12.2015, 12:49) *
SteamID – это проблема smile.gif Кажется, нерешаемая.

Можно попробовать разрешить вход любого игрока на сервер, после выдачи админки если у него нет флага B - кикнуть, если есть, кикнуть другого игрока, но это уже извращение.

Отредактировал: BaHeK, - 21.12.2015, 12:25


Чуть-чуть нарушаю
http://img-host.su/aoN1.png
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 21.12.2015, 12:47
Сообщение #22
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(BaHeK @ 21.12.2015, 11:43) *
[и она ничего не хукает, на сервере без игроков, когда я сам вышел
...
На полном сервере с sv_visiblemaxplayers = maxplayers+1 ничего не пишет

Видимо, она вызывается только для подключённых ранее клиентов smile.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя BaHeK
сообщение 21.12.2015, 13:15
Сообщение #23


Стаж: 17 лет

Сообщений: 571
Благодарностей: 505
Полезность: 651

Safety1st, уже есть получение лога при входе, на 10 слотах проверял
Без dproto
Цитата
L 12/21/2015 - 15:11:09: [test.amxx] CHECK SLOTS
L 12/21/2015 - 15:11:09: "BaHeK<11><STEAM_х:х:х><>" connected, address "х.х.х.х:27005"

С dproto
Цитата
L 12/21/2015 - 15:14:02: [test.amxx] CHECK SLOTS
L 12/21/2015 - 15:14:02: [DPROTO]: Client 9 - Set AuthIdType 1 [Native]; pClient = 0xf38b659c
L 12/21/2015 - 15:14:02: "BaHeK<11><BOT><>" connected, address "х.х.х.х:27005"

Cкрытый текст
Код:
#include <amxmodx>
#include <orpheu>

public plugin_init()
{
register_plugin( "TEST" , "1,0" , "TEST" );

OrpheuRegisterHook( OrpheuGetFunction( "SV_FindEmptySlot" ) , "SV_FindEmptySlot_Pre" , OrpheuHookPre );
}

public OrpheuHookReturn:SV_FindEmptySlot_Pre( )
{
log_amx( "CHECK SLOTS" );
OrpheuSetReturn(1);
return OrpheuSupercede;
}

Но после этого лога сервер сразу крашится

Отредактировал: BaHeK, - 21.12.2015, 13:15


Чуть-чуть нарушаю
http://img-host.su/aoN1.png
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 21.12.2015, 13:26
Сообщение #24
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

И чистый сервер тоже падает?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя BaHeK
сообщение 21.12.2015, 14:08
Сообщение #25


Стаж: 17 лет

Сообщений: 571
Благодарностей: 505
Полезность: 651

Safety1st, без игроков тоже падает, там же не присваются переменные
Код
            *pslot = slot;
            *ppClient = client;

В общем бесполезно все, игрок не войдет, я смог до кика прочитать только setinfo игрока, ip не получилось(не смог вызвать NET_AdrToString), steamid можно получить только после удачной проверки на наличие свободных мест на сервере.
Код
L 12/21/2015 - 16:02:29: [test.amxx] SETINFO: \_cl_autowepswitch\1\bottomcolor\6\cl_dlmax\80\cl_lc\1\cl_lw\1\cl_updaterate\101\model\gordon\topcolor\30\_vgui_menus\1\translit\1\erm\ON\rate\25000\name\BaHeK

Cкрытый текст
Код:
#include <amxmodx>
#include <orpheu>

public plugin_init()
{
register_plugin( "TEST" , "1,0" , "TEST" );

OrpheuRegisterHook( OrpheuGetFunction( "SV_CheckUserInfo" ) , "SV_CheckUserInfo_Post" , OrpheuHookPost );
}

public SV_CheckUserInfo_Post(a, b[], bool:c, d, e[])
{
log_amx( "SETINFO: %s", b );
}

При попытке подменить SV_FindEmptySlot, сервер упадет.
Так что мой вывод так и остался прежним, скрывать 1 слот.

Отредактировал: BaHeK, - 21.12.2015, 14:10


Чуть-чуть нарушаю
http://img-host.su/aoN1.png
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: