Ferjkee
Компетентный
Здравствуйте.
Игроки некоторых серверов сталкиваются с такой проблемой, что при случайном нажатии клавиши F4, после следующей смерти, игрок возвращается к выбору класса, а то и вообще зависает, после чего, приходится перезагружать игру. Многие скриптёры не знают решение данной проблемы, либо вообще не имеют понятия, что происходит. Если подумать головой, зная суть, исправить не сложно. Я на днях столкнулся с такой проблемой и нашёл решение.
При возвращении игрока к выбору класса, снова запускается колбэк:
Который даёт возможность изменить модель (скин) игрока. Почему снова? А потому, что он запускается при присоединении игрока к серверу. Чтобы не дать доступ к смене класса, нужно установить данные о спавне и отправить игрока на спавн, всё просто.
Перейдём к примерам.
Оператор (switch) я поставил для того, чтобы при нулевом значении (когда игрок проходит проверку впервые, при коннекте) переменной "RequestClass" установить значение 1, а при значении 1, игроку установить данные о спавне и отправить его спавниться, то есть, если игрок уже раз прошёл через колбэк (при коннекте) и загружается снова, например, при нажатии на клавишу F4.
SpawnPlayer - стандартная функция, которая запускает колбэк:
Ещё, для красоты, чтобы убрать стрелки и кнопку "Spawn" после присоединения к серверу (в OnPlayerRequestClass), игрока необходимо отправить в спек, а при спавне, вернуть нормальное состояние.
Пример:
На счёт второго где-то видал, но когда видал, сам и не разобрался. Пусть будет, к теме.
Я автор мануала.
Игроки некоторых серверов сталкиваются с такой проблемой, что при случайном нажатии клавиши 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;
}
SpawnPlayer - стандартная функция, которая запускает колбэк:
PHP:
OnPlayerSpawn(playerid)
Ещё, для красоты, чтобы убрать стрелки и кнопку "Spawn" после присоединения к серверу (в OnPlayerRequestClass), игрока необходимо отправить в спек, а при спавне, вернуть нормальное состояние.
Пример:
PHP:
public OnPlayerRequestClass(playerid, classid)
{
TogglePlayerSpectating(playerid, 1); // в спек
return 1;
}
public OnPlayerSpawn(playerid)
{
TogglePlayerSpectating(playerid, 0); // выводим из спека
return 1;
}
Я автор мануала.
