mastaZz zonepvp_pos у тебя массив, а коде if должна быть vector
обьяви в начале функции vector zonepvp_pos_current;
затем перед проверкой зоны в тащи в нее элемент массива и уже тогда проверяй
И еще
Пользователей ты перебрал
А положение пользователя относительно каждой зоны?
Внутри цикл не забыл?
Подними глаза
И переменную player надо в начале функции обьявлять а не в цикле
Вот
Сравни со своим кодом
void CheckPVPZone()
{
TVectorArray zonepvp_pos = {"5231.25 0 9820.31", "5180.73 0 9907.51"};// Координаты для центра зоны
ref array<Man> players = new array<Man>;
GetGame().GetPlayers( players );
PlayerBase player; //ПЕРЕМЕННЫЕ ОБЬЯВЛЯЕМ ТУТ! ИБО В ЦИКЛЕ БУДЕТ ОШИБКА ТК ОНИ БУДУТ ОБЬЯВЛЕНЫ НЕСКОЛЬКО РАЗ
vector zonepvp_pos_current;
float newHeal;
vector position_player;
if ( players.Count() > 0 )
{
for ( int i = 0; i < players.Count(); i++ )
{
Class.CastTo(player, players.Get(i));
position_player = player.GetPosition();
for ( int x = 0; x < zonepvp_pos.Count(); x++ ) //ТЫ НИЧЕГО НЕ ЗАБЫЛ???
{
zonepvp_pos_current = zonepvp_pos.Get(x); //СНАЧАЛА ИЗ ЭЛЕМЕНТ МАССИВА c номером X загоним в переменную!!!
if( (vector.Distance(position_player,zonepvp_pos_current)) > 350) //дистанция от центра к игроку, откуда игрок будет получать предупреждения и урон
{
newHeal = player.GetHealth("", "") - 1; //1 - это урон для игрока
player.SetHealth("", "", newHeal);
string messPlayers = "эй ты (" + player.GetIdentity().GetName() + ") пиздуй обратно, а то здохнеш!";
Param1<string> m_MessageParam = new Param1<string>(messPlayers);
GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_MessageParam, true, player.GetIdentity());
}
}
}
}
}
И if ( players.Count() > 0 ) тут лишняя конструкция поскольку если игроков будет 0 цикл и так не выполнется