08.03.2013, 11:23
Ребят хотел поинтересоваться на счёт слежки.
В спеке бывают такие случаи, что игрок может выйти из зоны видимости следящего.
Например: Я в спеке, а другой игрок находясь в авто (при том он в движении) уходит в паузу (escape) - и здесь слежка может сбиться. Тоже самое может произойти, если уйдет в паузу следящий.
Поэтому необходимо обновлять слежку. Собственно решил воспользоваться колбеком OnPlayerStreamOut.
Казалось бы всё нормально, но есть один момент. Если я переключаюсь уже на другого игрока, то естественно срабатывает
OnPlayerStreamOut, сообщая о том, что тот за кем я следил ранее - вышел из зоны видимости.
Как это можно было бы исправить? Сам пытался, но не получилось.
В спеке бывают такие случаи, что игрок может выйти из зоны видимости следящего.
Например: Я в спеке, а другой игрок находясь в авто (при том он в движении) уходит в паузу (escape) - и здесь слежка может сбиться. Тоже самое может произойти, если уйдет в паузу следящий.
Поэтому необходимо обновлять слежку. Собственно решил воспользоваться колбеком OnPlayerStreamOut.
pawn Код:
public OnPlayerStreamOut(playerid, forplayerid)
{
new string[128];
// Если игрок forplayerid в спеке, и playerid находится в транспорте, то
if(GetPlayerState(forplayerid) == PLAYER_STATE_SPECTATING && spectate_id[forplayerid] == playerid && IsPlayerInAnyVehicle(playerid))
{
// обновляем слежку для следящего
PlayerSpectateVehicle(forplayerid, GetPlayerVehicleID(playerid));
// сообщаем
format(string, sizeof(string), "%s (%d) вышел из зоны видимости следящего. Обновляем слежку.", player_name(playerid), playerid);
SendClientMessage(forplayerid, -1, string);
}
}
OnPlayerStreamOut, сообщая о том, что тот за кем я следил ранее - вышел из зоны видимости.
Как это можно было бы исправить? Сам пытался, но не получилось.