| ATOM57 | Дата: Суббота, 08.11.2008, 10:52 | Сообщение # 1 |
.:Pro Maper:.
Группа: Админ
Сообщений: 155
| Наверняка вы сталкивались с проблемой превышения лимита обьектов, и серв ложился, либо пользователей "выкидывало" Есть такая "штука" xObjects, она работает так : скрывает обьекты которые никто в данный момент не видит Качать инклудов никаких не надо. Как конвертировать обьекты из формата MTA в формат sa-mp читаем тут Делаем тоже самое только в настройках указываем xObjects (отмечено красным) Зелёным отмечено расстояние видимости обьектов, соответственно чем обьектов больше тем меньше это число должно быть Получаем что-то типо этого Code new Objects[][object_info] = { {4553,37.624,-1186.372,564.951,0.0,0.0,97.812,100.0}, {4553,132.834,-1255.177,564.497,0.0,0.0,7.812,100.0}, {4553,59.886,-1348.48 4,5 64.704,0.0,0.0,-82.188,100.0}, {4553,-35.474,-1278.254,564.730,0.0,0.0,-172.188,100.0}, {4553,-158.149,-1295.127,564.753,0.0,0.0,7.812 ,1 00.0}, {4553,77.190,-1473.807,564.760,0.0,0.0,-262.188,100.0} }; Теперь открываем Pawno Вот что должно быть в начале Code #include <a_samp> //********xObjects********** forward PlayerObjectUpdate(playerid);
enum object_info { modelidd, Float:ox, Float:oy, Float:oz, Float:orx, Float:ory, Float:orz, Float:viewdist } После этого куска вставляем ниже то что у нас получилось в конвертере Code new Objects[][object_info] = { {4553,37.624,-1186.372,564.951,0.0,0.0,97.812,100.0}, {4553,132.834,-1255.177,564.497,0.0,0.0,7.812,100.0}, {4553,59.886,-1348.48 4,5 64.704,0.0,0.0,-82.188,100.0}, {4553,-35.474,-1278.254,564.730,0.0,0.0,-172.188,100.0}, {4553,-158.149,-1295.127,564.753,0.0,0.0,7.812 ,1 00.0}, {4553,77.190,-1473.807,564.760,0.0,0.0,-262.188,100.0} }; Ниже вставляем Code enum player_info { objid[sizeof(Objects)], bool:view[sizeof(Objects)] } new PlayerO[MAX_PLAYERS][player_info];
//**************************
public OnPlayerSpawn(playerid) { SetTimerEx("PlayerObjectUpdate", 100, 1, "d", playerid); return 1; }
//------------------------------------------------------------------------------ // 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]); } } } }
Компилируем скрипт (F5) и имя файла вписываем в server.cfg (строка filterscripts)
|
| |
| |