PDA

Просмотр полной версии : [Вопрос] IsPlayerInRangeOfPoint()



_lizard
10.12.2016, 12:20
Не могу понять в чём проблема, тому кто прописывает команду не даёт хп. С помощью логирования выяснил, что IsPlayerInRangeOfPoint на игрока, прописавшего команду, возвращает 0.

CMD:hpall(playerid, params[])
{
new Float:range, Float:pos_x, Float:pos_y, Float:pos_z;
if(!strlen(params)) return SCM(playerid, COLOR_LIGHT_GREY, "/hpall [range]");
sscanf(params, "f", range);
GetPlayerPos(playerid, pos_x, pos_y, pos_z);
new vw = GetPlayerVirtualWorld(playerid);
foreach(new i: Player)
{
new str[22];
format(str, 22, "id %d iteration", i); SendClientMessageToAll(-1, str); // log - срабатывает
if(!IsPlayerInRangeOfPoint(i, range, pos_x, pos_y, pos_z) || GetPlayerVirtualWorld(i) != vw) continue;
format(str, 22, "id %d OK", i); SendClientMessageToAll(-1, str); // log - не срабатывает на игроке, прописавшем команду
SetPlayerHealth(i, 100.0);
SCM(i, COLOR_WHITE, "Вам восстановили здоровье");
}
return 1;
}

DeimoS
10.12.2016, 12:46
Никаких перехватов/макросов на IsPlayerInRangeOfPoint нет?
Всё прекрасно работает
http://i.imgur.com/4R83W4x.png

_lizard
10.12.2016, 14:32
Решил проблему. Странно конечно, обновил foreach, стало всё работать =/

- - - Добавлено - - -



Получается, что если игрок в не радиуса или не в том виртуальном мире, то пропускаем.

Суть команды именно в этом и заключается. Игрок должен быть в радиусе и в вирт. мире одновременно