Воскресенье, 05.05.2024, 00:38 Приветствую Вас Отбросок

Оффициальный сайт SA:MP клана T.O.S.

Меню сайта
Мини-чат
200
Наш опрос

Разбираетесь лы вы в Pawno?
javascript:; javascript:;
Всего ответов: 21

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: cyssero  
Форум » SA:MP » Маппинг » Как сделать карту для SA:MP. (xObjects)
Как сделать карту для SA:MP.
cysseroДата: Суббота, 25.04.2009, 18:41 | Сообщение # 1
Admin
Группа: Администраторы
Сообщений: 26
Награды: 4 [ 0 ]
Статус: Offline
smile Наверняка вы сталкивались с проблемой превышения лимита обьектов, и серв ложился, либо пользователей "выкидывало"

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


 
Форум » SA:MP » Маппинг » Как сделать карту для SA:MP. (xObjects)
  • Страница 1 из 1
  • 1
Поиск:

Форма входа
Логин:
Пароль:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Terminate on Sight © 2024