Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок Исправление бага с F4

Статус
В этой теме нельзя размещать новые ответы.

Ferjkee

Компетентный
Здравствуйте.

Игроки некоторых серверов сталкиваются с такой проблемой, что при случайном нажатии клавиши F4, после следующей смерти, игрок возвращается к выбору класса, а то и вообще зависает, после чего, приходится перезагружать игру. Многие скриптёры не знают решение данной проблемы, либо вообще не имеют понятия, что происходит. Если подумать головой, зная суть, исправить не сложно. Я на днях столкнулся с такой проблемой и нашёл решение.

При возвращении игрока к выбору класса, снова запускается колбэк:
PHP:
OnPlayerRequestClass(playerid, classid)
Который даёт возможность изменить модель (скин) игрока. Почему снова? А потому, что он запускается при присоединении игрока к серверу. Чтобы не дать доступ к смене класса, нужно установить данные о спавне и отправить игрока на спавн, всё просто.

Перейдём к примерам.
PHP:
public OnPlayerRequestClass(playerid, classid)
{
    switch(GetPVarInt(playerid, "RequestClass"))
    {
        case 0: SetPVarInt(playerid, "RequestClass", 1);
        case 1: return SetSpawnInfo(playerid, team, skin, Float: x, Float: y, Float: z, Float: angle, weapon1, weapon1_ammo, weapon2 weapon2_ammo, weapon3, weapon3_ammo), SpawnPlayer(playerid);
    }
    return 1;
}
Оператор (switch) я поставил для того, чтобы при нулевом значении (когда игрок проходит проверку впервые, при коннекте) переменной "RequestClass" установить значение 1, а при значении 1, игроку установить данные о спавне и отправить его спавниться, то есть, если игрок уже раз прошёл через колбэк (при коннекте) и загружается снова, например, при нажатии на клавишу F4.

SpawnPlayer - стандартная функция, которая запускает колбэк:
PHP:
OnPlayerSpawn(playerid)

Ещё, для красоты, чтобы убрать стрелки и кнопку "Spawn" после присоединения к серверу (в OnPlayerRequestClass), игрока необходимо отправить в спек, а при спавне, вернуть нормальное состояние.

Пример:
PHP:
public OnPlayerRequestClass(playerid, classid)
{
    TogglePlayerSpectating(playerid, 1); // в спек
    return 1;
}

public OnPlayerSpawn(playerid)
{
    TogglePlayerSpectating(playerid, 0); // выводим из спека
    return 1;
}
На счёт второго где-то видал, но когда видал, сам и не разобрался. Пусть будет, к теме.

Я автор мануала.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу