Просмотр полной версии : [Вопрос] OnPlayerSpawn (2 раза вызывается)
Прологировал collback OnPlayerSpawn, оказывается у меня он вызывается 2 раза. Как исправить? Идет SpawnPlayer(playerid); один раз всего и это после авторизации.
vovandolg
14.12.2016, 08:59
Видимо ты сделал так чтобы при авторизации не было видно кнопок << >> Spawn...
OnPlayerConnect => OnPlayerRequestClass => OnPlayerRequestSpawn => OnPlayerSpawn
Эта цепочка вызовется без всяких вспомогательных функций, то бишь ты ещё вызывал функцию и добавил ещё один вызов тем самым, чтобы не вызывался по 2 раза надо чекать проверку внутри OnPlayerSpawn на то что уже заспавнился недавно.
Я бы это так примерно сделал:
new OneSpawn[MAX_PLAYERS char];
public OnPlayerSpawn(playerid)
{
if(OneSpawn{playerid} == true) return 1;
OneSpawn{playerid} = true;
//весь код
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
OneSpawn{playerid} = false; // с помощью этой же переменной можно и флуд смертями присечь тут же =)
//весь код
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
OneSpawn{playerid} = false;
//весь код
return 1;
}
Но опять же возможно в игре сменить класс кто то задействует и будет такая чихарда(проверять нужно)
Вполне возможно, что TogglePlayerSpectating ещё имеется, который так же вызывает OnPlayerSpawn.
Имеется. Я скрыл << >>.
Тогда не вызывай SpawnPlayer. Вызов TogglePlayerSpectating(playerid, false) тоже заспавнит.
vovandolg
16.12.2016, 22:44
Просто когда мы с DeimoS тестили код по скрытию этих кнопок там без двойного спавна не обойтись,
поэтому я выложил варик который подошёл бы лучше.
Tiago Santoro
17.12.2016, 13:50
Вполне возможно, что TogglePlayerSpectating ещё имеется, который так же вызывает OnPlayerSpawn.
А если сервер закрывает соединение ?
P.S Та же проблема
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot