[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум игры САМП (SAMP) / San Andreas Multiplayer » Pawno » Готовые решения » Захват Ганг Зон (new)
Захват Ганг Зон (new)
BoufenДата: Четверг, 18.04.2013, 22:16 | Сообщение # 1
Проверенный временем
Группа: Проверенный
Сообщений: 204
Статус: Offline
Гангзону нельзя захватить если игрок(и) этой банды не онлайн
Чтобы захватить гангзону введите /capture ждете 2 минуты (на подготовку) и стреляетесь, если вы всех убили и их на ГангЗоне нету то территория
будет принадлежать вам.

Ну так вот, начнем:

Ко всем new:
Код
new Float:STANDARTGangZone[49][4] = {   
{0.0, 0.0,0.0, 0.0},   
{2577.861572, -1056.913940, 2787.590087, -898.770690},   
{2368.133056, -1056.913940, 2577.861572, -898.770690},   
{2158.404541, -1056.913940, 2368.133056, -898.770690},   
{1948.676025, -1056.913940, 2158.404541, -898.770690},   
{1738.947509, -1056.913940, 1948.676025, -898.770690},   
{2787.590087, -1056.913940, 2997.318603, -898.770690},   
{2787.590087, -1215.057128, 2997.318603, -1056.913940},   
{2787.590087, -1373.200439, 2997.318603, -1215.057128},   
{2787.590087, -1531.343750, 2997.318603, -1373.200439},   
{2787.590087, -1689.486938, 2997.318603, -1531.343750},   
{2787.590087, -1847.630126, 2997.318603, -1689.486938},   
{2787.590087, -2005.773437, 2997.318603, -1847.630126},   
{2787.590087, -2163.916503, 2997.318603, -2005.773437},   
{2577.861572, -1215.057128, 2787.590087, -1056.913940},   
{2577.861572, -1373.200439, 2787.590087, -1215.057128},   
{2577.861572, -1531.343750, 2787.590087, -1373.200439},   
{2577.861572, -1689.486938, 2787.590087, -1531.343750},   
{2577.861572, -1847.630126, 2787.590087, -1689.486938},   
{2577.861572, -2005.773437, 2787.590087, -1847.630126},   
{2577.861572, -2163.916503, 2787.590087, -2005.773437},   
{2368.133056, -1215.057128, 2577.861572, -1056.913940},   
{2368.133056, -1373.200439, 2577.861572, -1215.057128},   
{2368.133056, -1531.343750, 2577.861572, -1373.200439},   
{2368.133056, -1689.486938, 2577.861572, -1531.343750},   
{2368.133056, -1847.630126, 2577.861572, -1689.486938},   
{2368.133056, -2005.773437, 2577.861572, -1847.630126},   
{2368.133056, -2163.916503, 2577.861572, -2005.773437},   
{2158.404541, -1215.057128, 2368.133056, -1056.913940},   
{2158.404541, -1373.200439, 2368.133056, -1215.057128},   
{2158.404541, -1531.343750, 2368.133056, -1373.200439},   
{2158.404541, -1689.486938, 2368.133056, -1531.343750},   
{2158.404541, -1847.630126, 2368.133056, -1689.486938},   
{2158.404541, -2005.773437, 2368.133056, -1847.630126},   
{2158.404541, -2163.916503, 2368.133056, -2005.773437},   
{1948.676025, -1215.057128, 2158.404541, -1056.913940},   
{1948.676025, -1373.200439, 2158.404541, -1215.057128},   
{1948.676025, -1531.343750, 2158.404541, -1373.200439},   
{1948.676025, -1689.486938, 2158.404541, -1531.343750},   
{1948.676025, -1847.630126, 2158.404541, -1689.486938},   
{1948.676025, -2005.773437, 2158.404541, -1847.630126},   
{1948.676025, -2163.916503, 2158.404541, -2005.773437},   
{1738.947509, -1215.057128, 1948.676025, -1056.913940},   
{1738.947509, -1373.200439, 1948.676025, -1215.057128},   
{1738.947509, -1531.343750, 1948.676025, -1373.200439},   
{1738.947509, -1689.486938, 1948.676025, -1531.343750},   
{1738.947509, -1847.630126, 1948.676025, -1689.486938},   
{1738.947509, -2005.773437, 1948.676025, -1847.630126},   
{1738.947509, -2163.916503, 1948.676025, -2005.773437}   
};   
new OnZONE[49][20];   
new ZoneOnBattle[49];   
new ZoneTimer[49];   
new allowedfactions[] = { 13,14,16,19,15};   
new GZSafeTime[49];   
enum GzoneInfo   
{   
      gID,   
      Float:gCoords[4],   
      gFrakVlad,   
      gNapad,   
}   
new GZInfo[49][GzoneInfo];   
new FrakCD[20];
Ко всем forward'ам:
Код
forward LoadGZ();   
forward SaveGZ();   
forward GzCheck();   
forward PlayerToKvadrat( playerid, Float:min_x, Float:min_y, Float:max_x, Float:max_y );
Ко всем stock:
Код
stock GetGangZoneColor(gangzonex)   
{   
      new zx;   
      switch(GZInfo[gangzonex][gFrakVlad])   
      {   
          case 13: zx =0x00FF1465;   
          case 14: zx = 0x00EBFF65;   
          case 16: zx =0xFF00EB65;   
          case 19: zx =0x0087FF65;   
          case 15: zx =0xFFC80065;   
          default: zx = 0xFFBE0065;   
      }   
      return zx;   
}   

stock GetGZColorF(fnumber)   
{   
      new zx;   
      switch(fnumber)   
      {   
          case 13: zx =0x00FF1465;   
          case 14: zx = 0x00EBFF65;   
          case 16: zx =0xFF00EB65;   
          case 19: zx =0x0087FF65;   
          case 15: zx =0xFFC80065;   
      }   
      return zx;   
}   

stock IsInAllowed(playerid)   
{   
      for(new i =0;i<sizeof(allowedfactions);i++)   
      {   
          if(PlayerInfo [playerid][pMember]== allowedfactions[i]||PlayerInfo [playerid][pLeader]== allowedfactions) return 1;   
      }   
      return 0;   
}   

stock IsInAllowedF(fnumbers)   
{   
      for(new i =0;i<sizeof(allowedfactions);i++)   
      {   
          if(fnumbers == allowedfactions) return 1;   
      }   
      return 0;   
}   

stock GetGangName(fnumbwer)   
{   
      new string[256];   
      switch(fnumbwer)   
      {   
          case 13: format(string,sizeof(string),"Grove Street Gang");   
          case 14: format(string,sizeof(string),"Los Aztecas Gang");   
          case 16: format(string,sizeof(string),"The Ballas Gang");   
          case 19: format(string,sizeof(string),"SF Rifa Gang");   
          case 15: format(string,sizeof(string),"Los Santos Vagos Gang");   
      }   
      return string;   
}   

stock IsPlayerInBandOnline(bandid)   
{   
for(new i=0; i < GetMaxPlayers(); i++)   
{   
if(PlayerInfo [pMember]== bandid || PlayerInfo [pLeader]== bandid) return 1;   
}   
return 0;   
}   

stock Name(playerid) { new pl[24]; GetPlayerName(playerid,pl,24); return pl; } Ко всем [b]public[/b]:
public LoadGZ()   
{   
      new string[256];   
      new File = iniOpen("GangZonesTrigga.ini");   
      new l[256];   
      new asd[5][10];   
      for(new i =0;i<sizeof(GZInfo);i++)   
      {   
          format(string,sizeof(string),"Zone%d",i);   
          new x = iniGet(File,string,l);   
          if(x < 0)   
          {   
              GZInfo[gCoords][0] = STANDARTGangZone[0];   
              GZInfo[gCoords][1] = STANDARTGangZone[1];   
              GZInfo[gCoords][2] =STANDARTGangZone[2];   
              GZInfo[gCoords][3] =STANDARTGangZone[3];   
          }   
          else   
          {   
              split(l,asd,'|');   
              GZInfo[gCoords][0] = floatstr(asd[0]);   
              GZInfo[gCoords][1] = floatstr(asd[1]);   
              GZInfo[gCoords][2] = floatstr(asd[2]);   
              GZInfo[gCoords][3] = floatstr(asd[3]);   
          }   
          GZInfo [gFrakVlad]= strval(asd[4]);   
          if(GZInfo [gFrakVlad]== 0) GZInfo [gFrakVlad]= allowedfactions[random(sizeof(allowedfactions))];   
          GZInfo [gID]= GangZoneCreate(GZInfo[gCoords][0],GZInfo[gCoords][1],GZInfo[gCoords][2],GZInfo[gCoords][3]);   
          ZoneOnBattle =0;   
          GZSafeTime =0;   
      }   
      iniClose(File);   
      print("Система гангзон успешно загружена!");   
}   

public SaveGZ()   
{   
      new string[256];   
      new File = iniOpen("GangZonesTrigga.ini");   
      new l[10];   
      for(new i =0;i<sizeof(GZInfo);i++)   
      {   
          format(l,sizeof(l),"Zone%d",i);   
          format(string,sizeof(string),"%f|%f|%f|%f|%d",GZInfo[gCoords][0], GZInfo[gCoords][1],GZInfo[gCoords][2],GZInfo[gCoords][3],GZInfo[gFrakVlad]);   
          iniSet(File,l,string);   
      }   
      iniClose(File);   
}   

public GzCheck()   
{   
      new string[256];   
      for(new i =0;i<sizeof(GZInfo);i++)   
      {   
          if(ZoneOnBattle == 1 && GZSafeTime == 0)   
          {   
              ZoneTimer -=10;   
              if(ZoneTimer <=0)   
              {   
                  SendClientMessageToAll(-1,"Наблюдатель: Время на захват зоны вышел. Ничья.");   
                  ZoneOnBattle =0;   
                  GangZoneStopFlashForAll(GZInfo[gID]);   
              }   
              for(new x =0;x<MAX_PLAYERS;x++)   
              {   
                  if(PlayerToKvadrat(x,GZInfo[gCoords][0], GZInfo[gCoords][1],GZInfo[gCoords][2],GZInfo[gCoords][3])&&IsInAllowed(x))   
                  {   
                      new faction;   
                      if(PlayerInfo [x][pLeader]!=0) {faction = PlayerInfo[x][pLeader];}   
                      else { faction = PlayerInfo[x][pMember];}   
                      OnZONE [faction]++;   
                  }   
              }   
              new asd;   
              for(new x =0;x<20;x++)   
              {   
                  if(OnZONE [x]> 0 && IsInAllowedF(x)) asd ++;   
              }   
              if(asd == 1)   
              {   
                  for(new x =0;x<20;x++)   
                  {   
                      if(OnZONE [x]> 0)   
                      {   
                          new zx,zl;   
                          zx = x;   
                          zl = i;   
                          if(GZInfo [gFrakVlad]== x) {format(string,sizeof(string),"Наблюдатель: Банда %s отстояла свою зону.",GetGangName(zx)); }   
                          else   
                          {format(string,sizeof(string),"Наблюдатель: Банда %s выйгрывает зону.",GetGangName(zx)); }   
                          for(new ads = 13;ads <= 19;ads++)   
                          {   
                    SendFamilyMessage(ads,GetGangZoneColor(zx),string);   
                          }   
                          ZoneOnBattle [zl]=0;   
                          GZInfo [zl][gNapad]= 0;   
                          GZInfo [zl][gFrakVlad]= zx;   
                          GangZoneStopFlashForAll(GZInfo[zl][gID]);   
                          GangZoneHideForAll(GZInfo[zl][gID]);   
                          GangZoneShowForAll(GZInfo[zl][gID],GetGangZoneColor(zl));   
                          break;   
                      }   
                  }   
              }   
          }   
      }   
      for(new i =0;i<49;i++)   
      {   
          for(new z = 0;z<20;z++)   
          {   
              OnZONE [z]=0;   
          }   
      }   
}   

public PlayerToKvadrat(playerid,Float:min_x,Float:min_y,Float:max_x,Float:max_y)   
{   
      new Float:xxp,Float:yyp,Float:zzp;   
      GetPlayerPos(playerid, xxp, yyp, zzp);   
      if((xxp <= max_x && xxp >= min_x) && (yyp <= max_y && yyp >= min_y)) return 1;   
      return 0;   
} В [b]public OnPlayerConnect(playerid)[/b]:
for(new i =0;i<49;i++)   
      {   
          GangZoneShowForPlayer(playerid,GZInfo[gID],GetGangZoneColor(i));   
      } В [b]public OnGameModeInit:
SetTimer("GzCheck",10000,1);   
SetTimer("SaveGZ",100000,1);   
LoadGZ(); В public SaveAccounts():
SaveGZ(); Ну и команды, в OnPlayerCommandText(playerid, cmdtext[]):
new faction;
if(PlayerInfo [playerid][pMember]!=0 && PlayerInfo[playerid][pLeader]==0) faction = PlayerInfo[playerid][pMember];
else if(PlayerInfo[playerid][pLeader]!=0 && PlayerInfo[playerid][pMember]==0) faction = PlayerInfo[playerid][pLeader];
else faction =0;
if(!strcmp(cmd,"/changegzcolor",true))   
      {   
          tmp = strtok(cmdtext,idx);   
          new l = strval(tmp);   
          if(!IsInAllowedF(l)) return SendClientMessage(playerid,COLOR_LIGHTRED,"Неправильный ид банды!");   
          if(PlayerInfo [playerid][pAdmin]>= 6)   
          {   
              for(new i = 0;i<49;i++)   
              {   
                  if(PlayerToKvadrat(playerid,GZInfo[gCoords][0], GZInfo[gCoords][1],GZInfo[gCoords][2],GZInfo[gCoords][3]))   
                  {   
                      GZInfo [gFrakVlad]= l;   
                      GangZoneStopFlashForAll(GZInfo[gID]);   
                      GangZoneHideForAll(GZInfo[gID]);   
                      GangZoneShowForAll(GZInfo[gID],GetGangZoneColor(i));   
                      return 1;   
                  }   
              }   
          }   
      }   
      if(!strcmp(cmd,"/capture",true))   
      {   
          if(FrakCD [faction]== 0)   
          {   
              if(!IsInAllowed(playerid))   
              {   
                  return SendClientMessage(playerid,COLOR_LIGHTRED,"Ваша банда не может учавствовать в захвате зон или вы не на 1 зоне");   
              }   
              for(new i = 0;i<49;i++)   
              {   
                  if(PlayerToKvadrat(playerid,GZInfo[gCoords][0], GZInfo[gCoords][1],GZInfo[gCoords][2],GZInfo[gCoords][3]) && GZInfo [gFrakVlad]!= faction && ZoneOnBattle == 0)   
                  {   
                     if(!IsPlayerInBandOnline(GZInfo[gFrakVlad])) return SendClientMessage(playerid,COLOR_LIGHTRED,"Зону банды которую вы хотите атаковать нет в онлайне!");   
                      if(PlayerInfo [playerid][pRank]< 5) return SendClientMessage(playerid,COLOR_LIGHTRED,"Иницировать захват можно только с 5 ранга и выше!");   
                      SendFamilyMessage(GZInfo[gFrakVlad],COLOR_LIGHTRED,"Ваша Зона под атакой. У вас 2 минуты чтобы подготовится к защите зоны.");   
                      SendFamilyMessage(GZInfo[gFrakVlad],COLOR_LIGHTRED,"Если через 2 минуты на зоне никого не будет то зона автоматически перейдет к врагу");   
                      format(string,sizeof(string),"%s начал борьбу за зону против %s банды. У вас 2 минуты чтобы подготовится к атаке",Name(p layerid),GetGangName(GZInfo[gFrakVlad]));   
                      SendFamilyMessage(faction,COLOR_LIGHTRED,string);   
                      GangZoneFlashForAll(GZInfo[gID],GetGZColorF(faction));   
                      GZSafeTime = 120;   
                      FrakCD  [faction]= 3000;   
                      GZInfo [gNapad]= faction;   
                      ZoneTimer = 720;   
                      ZoneOnBattle = 1;   
                      break;   
                  }   
              }   
          }   
          else   
          {   
              return SendClientMessage(playerid,COLOR_LIGHTRED,"Ваша банда еще не окрепла с момента последнего захвата. Ждите!");   
          }   
      } В public SetPlayerUnjail():
for(new i =0;i<49;i++)   
      {   
          if(GZSafeTime>0)   
          {   
              GZSafeTime --;   
              if(GZSafeTime == 60 || GZSafeTime == 120)   
              {   
                  format(string,sizeof(string),"У вас осталось %d секунд на подготовку",GZSafeTime);   
                  SendFamilyMessage(GZInfo[gNapad],COLOR_LIGHTRED,string);   
                  SendFamilyMessage(GZInfo[gFrakVlad],COLOR_LIGHTRED,string);   
              }   
              if(GZSafeTime==0)   
              {   
                  format(string,sizeof(string),"Время на подготовку вышло. Если у вас нет ни одного солдата на поле боя то зона автоматически п ереходит к противнику");   
                  SendFamilyMessage(GZInfo[gNapad],COLOR_LIGHTRED,string);   
                  SendFamilyMessage(GZInfo[gFrakVlad],COLOR_LIGHTRED,string);   
              }   
          }   
      }   
      for(new i =0;i<sizeof(FrakCD);i++)   
      {   
          if(FrakCD >0)   
          {   
              FrakCD --;   
              if(FrakCD == 0) SendFamilyMessage(i,COLOR_LIGHTRED,"Ваша банда снова может учавствовать в захвате зон");   
          }   
      } Иды фракций заменяйте на свои ( 13,14,16,19,15 )
Без инклуда mxINI ничего не получится, [url=http://rghost.ru/9599211]скачать[/url]
Сам файлик [url=http://rghost.ru/9599031]этот[/url] нужно запихнуть в папкy scriptfiles, иды фрак меняйте на свои
Автор: [color=#2e8b57]Trigger[/color]
Урок: [color=#008080]Terner[/color][/b][/i]


Подключаю сервера с MySQL - 50 руб.
Делаю маппинг на заказ - Цена договорная
 
Форум игры САМП (SAMP) / San Andreas Multiplayer » Pawno » Готовые решения » Захват Ганг Зон (new)
  • Страница 1 из 1
  • 1
Поиск: