Карты для samp
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Школа мапинга » MTA Race, Map Editor » xObjects (Что делать если количество обьектов превышает лимит сервера!)
xObjects
ATOM57Дата: Суббота, 08.11.2008, 10:52 | Сообщение # 1
.:Pro Maper:.
Группа: Админ
Сообщений: 155
Репутация: 9 [18%]
Статус: Offline
:) Наверняка вы сталкивались с проблемой превышения лимита обьектов, и серв ложился, либо пользователей "выкидывало"

Есть такая "штука" 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)

Прикрепления: 1482166.jpg(83Kb)


 
ATOM57Дата: Суббота, 08.11.2008, 13:49 | Сообщение # 2
.:Pro Maper:.
Группа: Админ
Сообщений: 155
Репутация: 9 [18%]
Статус: Offline
У кого не видно обьектов качаем заготовку
http://ifolder.ru/7634764

 
Форум » Школа мапинга » MTA Race, Map Editor » xObjects (Что делать если количество обьектов превышает лимит сервера!)
Страница 1 из 11
Поиск: