Наверняка вы сталкивались с проблемой превышения лимита обьектов, и серв ложился, либо пользователей "выкидывало" Есть такая "штука" xObjects, она работает так : скрывает обьекты которые никто в данный момент не видит
Качать инклудов никаких не надо.
Делаем тоже самое только в настройках указываем xObjects (отмечено красным)
Зелёным отмечено расстояние видимости обьектов, соответственно чем обьектов больше тем меньше это число должно быть
Получаем что-то типо этого
Code
new Objects[][object_info] = {
{1374,2417.448,1028.917,10.216,0.0,0.0,0.0,100.0},
{1374,2357.403,989.032,10.427,0.0,0.0,0.0,100.0}
};
enum player_info
{
objid[sizeof(Objects)],
bool:view[sizeof(Objects)]
}
new PlayerO[MAX_PLAYERS][player_info];
//**************************
main()
{
print("\n----------------------------------");
print(" x Objects ");
print("----------------------------------\n");
}
public OnPlayerSpawn(playerid)
{
SetTimerEx("PlayerObjectUpdate", 100, 1, "d", playerid);
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
///
return 1;
}
return 0;
}
//------------------------------------------------------------------------------
// xObjects
//------------------------------------------------------------------------------
bool:IsInReach(Float:x,Float:y,Float:z,Float:x2,Float:y2,F loat:z2,Float:dist)
{
x = (x > x2) ? x - x2 : x2 - x;
if(x > dist) return false;
y = (y > y2) ? y - y2 : y2 - y;
if(y > dist) return false;
z = (z > z2) ? z - z2 : z2 - z;
if(z > dist) return false;
return true;
}
//------------------------------------------------------------------------------
public PlayerObjectUpdate(playerid)
{
if(IsPlayerConnected(playerid))
{
new Float:pos[3];
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
for(new i = 0; i < sizeof(Objects); i++)
{
if(!PlayerO[playerid][view][i])
{
if(IsInReach(pos[0],pos[1],pos[2],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist]))
{
PlayerO[playerid][view][i] = true;
PlayerO[playerid][objid][i] = CreatePlayerObject(playerid,Objects[i][modelidd],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][orx],Objects[i][ory],Objects[i][orz]);
}
} else if(!IsInReach(pos[0],pos[1],pos[2],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist]))
{
PlayerO[playerid][view][i] = false;
DestroyPlayerObject(playerid,PlayerO[playerid][objid][i]);
}
}
}
}
[size=17]Последний объект должен быть без зяпятой![/size]