19:43
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 1
  • 1
Модератор форума: AXE, Weddew  
Проблема с чекпоинтом (зоны)
EragonДата: Понедельник, 26.05.2008, 19:56 | Сообщение # 1
Уважаемый человек
Группа: Продвинутые
Сообщений: 799
Награды: 6
Город: Novokuznetsk
Репутация: 127
Замечания: 60%
Статус:
Нашел хороший мод по захвату зон, и решил впихнуть его систему в мой мод. И кароче ничего не получается. Решил сделать сначало для 1 зоны, с 4 бандами. Смысл что при заходе в зону появляется чекпоинт, заходим в него, зона мигает 30 сек цветом банды,а после окрашевается в ее цвет.

Ну зона канешно отмечена на карте, но при заходе туда любой из банд чекпоинт не появляется, следовательно не возможно ее захватить. ХЕЛП (=

Code
forward CheckZone (zoneid,zone);
forward CheckCoord ();
forward CheckZonea ();
forward capture2 ();
forward capture2a ();
forward capture2b ();
forward capture2c ();
forward SetCheckpoint ();

new Float:gCheckpoints[1][4] = {
{-2271.4436,1355.3636,7.1875,5.0}
};
enum pInfo
{
     pCheck,
  pTimer,
  pZone,
  pNumber,
  pZonea
};
enum zInfo
{
  aZone
};
new ZoneInfo[7][zInfo];
new timer2;
new vehcheck;
new PlayerInfo[MAX_PLAYERS][pInfo];
new zone1;

Code

public OnGameModeInit()
{
zone1 = GangZoneCreate(-2730.736, 1205.531, -2035.453, 1552.688);
}

Code
public OnPlayerConnect(playerid) {
   GangZoneShowForPlayer(playerid, zone1, 0x80808096);
}

Code
public CheckZone(zoneid,zone)
{
  if(zone == 4)
  {
  GangZoneShowForAll(zoneid, COLOR_RED);
  }
  else
   {
      if(zone == 3)
       {
       GangZoneShowForAll(zoneid, COLOR_GREEN);
       }
      else
          {
    if(zone == 2)
     {
     GangZoneShowForAll(zoneid, COLOR_BLACK);
     }
    else
     {
        if(zone == 1)
         {
         GangZoneShowForAll(zoneid, COLOR_ORANGE);
         }
   }
       }
           }
}
   
public CheckCoord() {
  new i;
  new Float:x;
  new Float:y;
  new Float:z;
  for (i=0; i<MAX_PLAYERS; i++)
   {
   if (IsPlayerConnected(i))
       {
    GetPlayerPos(i,x,y,z);
    if ((-2730.736 <x< -2035.453)&&(1552.688 <y<  1205.531)&&(PlayerInfo[i][pZone] != zone1))
        {
                 PlayerInfo[i][pZone] = zone1;
                 PlayerInfo[i][pNumber] = 0;
                 SetCheckpoint();
     }
             CheckZonea();
    }
   }
}

public CheckZonea()
{
  new i;
  for (i=0; i<MAX_PLAYERS; i++)
   {
   if (IsPlayerConnected(i))
       {
       PlayerInfo[i][pZonea] = ZoneInfo[PlayerInfo[i][pNumber]][aZone];
       }
   }
}

public OnPlayerEnterCheckpoint(playerid)
{
  vehcheck=IsPlayerInAnyVehicle(playerid);
  PlayerInfo[playerid][pCheck] = 1;
  if (vehcheck==0)
  {
   switch (gTeam[playerid])
   {
    case TEAM_TRIAD:
    {
     if(PlayerInfo[playerid][pZonea] != 4)
         {
         SendClientMessageToAll(COLOR_GREEN," [SERVER]: Триада пытается захватить зону");
      if(PlayerInfo[playerid][pZone] == zone1)
          {
       timer2 = SetTimer("capture2",30000,0);
       GangZoneFlashForAll(zone1,COLOR_RED);
       PlayerInfo[playerid][pTimer]=timer2;
       }
      }

    }
     case TEAM_GROUV:
      {
       if(PlayerInfo[playerid][pZonea] != 3)
              {
         SendClientMessageToAll(COLOR_GREEN," [SERVER]: Гроув пытается захватить зону");
      if(PlayerInfo[playerid][pZone] == zone1)
          {
       timer2 = SetTimer("capture2a",30000,0);
       GangZoneFlashForAll(zone1,COLOR_GREEN);
       PlayerInfo[playerid][pTimer]=timer2;
       }
                     }
      }
     case TEAM_FBI:
      {
       if(PlayerInfo[playerid][pZonea] != 2)
              {
         SendClientMessageToAll(COLOR_GREEN," [SERVER]: ФБР пытается захватить зону");
      if(PlayerInfo[playerid][pZone] == zone1)
          {
       timer2 = SetTimer("capture2b",30000,0);
       GangZoneFlashForAll(zone1,COLOR_BLACK);
       PlayerInfo[playerid][pTimer]=timer2;
       }
                     }
      }
     case TEAM_Police:
      {
       if(PlayerInfo[playerid][pZonea] != 1)
              {
         SendClientMessageToAll(COLOR_GREEN," [SERVER]: Полиция пытается захватить зону");
      if(PlayerInfo[playerid][pZone] == zone1)
          {
       timer2 = SetTimer("capture2c",30000,0);
       GangZoneFlashForAll(zone1,COLOR_ORANGE);
       PlayerInfo[playerid][pTimer]=timer2;
       }
                     }
      }
      }
     }
     else
     {SendClientMessage(playerid,COLOR_RED," Вы не можете захватить территорию на машине!");}

}

public OnPlayerLeaveCheckpoint(playerid)
{
  printf("OnPlayerLeaveCheckpoint(%d)", playerid);
  PlayerInfo[playerid][pCheck] = 0;
  KillTimer(PlayerInfo[playerid][pTimer]);
  GangZoneStopFlashForAll(PlayerInfo[playerid][pZone]);
  switch (gTeam[playerid])
  {
   case TEAM_TRIAD:
   {
    if(PlayerInfo[playerid][pZonea] !=4)
     {
     SendClientMessageToAll(COLOR_GREEN," [SERVER]: Триада не смогла захватить территорию!");
     }
   }
    case TEAM_GROUV:
     {
         if(PlayerInfo[playerid][pZonea] !=3)
     {
     SendClientMessageToAll(COLOR_GREEN," [SERVER]: Гроув не смогла захватить территорию!");
     }
   }
         case TEAM_FBI:
     {
         if(PlayerInfo[playerid][pZonea] !=2)
     {
     SendClientMessageToAll(COLOR_GREEN," [SERVER]: ФБР не смогла захватить территорию!");
     }
   }
   case TEAM_Police:
     {
         if(PlayerInfo[playerid][pZonea] !=1)
     {
     SendClientMessageToAll(COLOR_GREEN," [SERVER]: Полиция не смогла захватить территорию!");
     }
   }
  }
  return 1;
}

public capture2()
{
  CheckZone(zone1,4);
  ZoneInfo[0][aZone] = 4;
  SendClientMessageToAll(COLOR_GREEN," [SERVER]: Триада захватила территорию!");
  GangZoneStopFlashForAll(zone1);
  new i;
  for (i=0; i<MAX_PLAYERS; i++)
  {
   if (IsPlayerConnected(i))
     {
    if(gTeam[i] == TEAM_TRIAD)
    {
     if (PlayerInfo[i][pZone] == zone1)
     {
      DisablePlayerCheckpoint(i);
      PlayerInfo[i][pCheck] = 0;
     }
    }
   }
  }

}

public capture2a()
{
  CheckZone(zone1,3);
  ZoneInfo[0][aZone] = 3;
  SendClientMessageToAll(COLOR_GREEN," [SERVER]: Гроув захватили территорию!");
  GangZoneStopFlashForAll(zone1);
  new i;
  for (i=0; i<MAX_PLAYERS; i++)
  {
   if (IsPlayerConnected(i))
     {
    if(gTeam[i] == TEAM_GROUV)
    {
     if (PlayerInfo[i][pZone] == zone1)
     {
      DisablePlayerCheckpoint(i);
      PlayerInfo[i][pCheck] = 0;
     }
    }
   }
  }
}

public capture2b()
{
  CheckZone(zone1,2);
  ZoneInfo[0][aZone] = 2;
  SendClientMessageToAll(COLOR_GREEN," [SERVER]: ФБР захватили территорию!");
  GangZoneStopFlashForAll(zone1);
  new i;
  for (i=0; i<MAX_PLAYERS; i++)
  {
   if (IsPlayerConnected(i))
     {
    if(gTeam[i] == TEAM_FBI)
    {
     if (PlayerInfo[i][pZone] == zone1)
     {
      DisablePlayerCheckpoint(i);
      PlayerInfo[i][pCheck] = 0;
     }
    }
   }
  }
}
public capture2c()
{
  CheckZone(zone1,1);
  ZoneInfo[0][aZone] = 1;
  SendClientMessageToAll(COLOR_GREEN," [SERVER]: Полиция захватила территорию!");
  GangZoneStopFlashForAll(zone1);
  new i;
  for (i=0; i<MAX_PLAYERS; i++)
  {
   if (IsPlayerConnected(i))
     {
    if(gTeam[i] == TEAM_Police)
    {
     if (PlayerInfo[i][pZone] == zone1)
     {
      DisablePlayerCheckpoint(i);
      PlayerInfo[i][pCheck] = 0;
     }
    }
   }
  }
}

public SetCheckpoint()
{
new i;
     for (i=0; i<MAX_PLAYERS; i++)
  {
   if (IsPlayerConnected(i))
   {
             if (PlayerInfo[i][pCheck] == 0)
             {
    if((gTeam[i] == TEAM_TRIAD)&&(PlayerInfo[i][pZone] == zone1))
        {
        SetPlayerCheckpoint(i,gCheckpoints[0][0],gCheckpoints[0][1],gCheckpoints[0][2],gCheckpoints[0][3]);
        }

    if((gTeam[i] == TEAM_GROUV)&&(PlayerInfo[i][pZone] == zone1))
        {
        SetPlayerCheckpoint(i,gCheckpoints[0][0],gCheckpoints[0][1],gCheckpoints[0][2],gCheckpoints[0][3]);
        }
         
    if((gTeam[i] == TEAM_FBI)&&(PlayerInfo[i][pZone] == zone1))
        {
        SetPlayerCheckpoint(i,gCheckpoints[0][0],gCheckpoints[0][1],gCheckpoints[0][2],gCheckpoints[0][3]);
        }
         
    if((gTeam[i] == TEAM_Police)&&(PlayerInfo[i][pZone] == zone1))
        {
        SetPlayerCheckpoint(i,gCheckpoints[0][0],gCheckpoints[0][1],gCheckpoints[0][2],gCheckpoints[0][3]);
        }

    }
   }
  }
}

ExcessДата: Вторник, 27.05.2008, 05:41 | Сообщение # 2
Уверенный в себе
Группа: Продвинутые
Сообщений: 217
Награды: 1
Город: Екатеринбург
Репутация: 19
Замечания: 0%
Статус:
в этом public SetCheckpoint() воткни куданить проверку по радиусу
Code
if (PlayerToPoint(Rad, playerid,X, Y, Z)

X,Y,Z координаты середины зоны. Радиус сам расчитай примерный.
Должно сканать но я не уверен.




Хостинг предоставлен игровым порталом Gameway http://gameway.ru
BazДата: Вторник, 27.05.2008, 15:36 | Сообщение # 3
Постоялец
Группа: Продвинутые
Сообщений: 390
Награды: 2
Город: Moscow
Репутация: 48
Замечания: 0%
Статус:
лучше дай сюда мод, наверняка не так вырезал=)


Делаю дизайны сайтов, недорого. Обращаться в ЛС
EragonДата: Среда, 28.05.2008, 19:41 | Сообщение # 4
Уважаемый человек
Группа: Продвинутые
Сообщений: 799
Награды: 6
Город: Novokuznetsk
Репутация: 127
Замечания: 60%
Статус:
http://ifolder.ru/6757403
  • Страница 1 из 1
  • 1
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua