Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

FAQ Немного о ганг зонах [GangZone]

Смогли вы найти что хотели?(Помните, тема пополняется по мере появления вопросов)

  • Да

    Голосов: 2 40.0%
  • Нет

    Голосов: 3 60.0%
  • Нет, РЅРµ нашел, укажу РІ комментариях, что искал РІ данной С

    Голосов: 0 0.0%

  • Всего проголосовало
    5

Alex_Bardakov

Изучающий
Пользователь
Регистрация
18 Фев 2015
Сообщения
542
Лучшие ответы
0
Репутация
106
Работа с ганг зонами [Gang Zone's]


[HR][/HR]
GangZoneCreate Создает новую зону в памяти сервера. Функция возвращает ID созданной зоны.
PHP:
Синтаксис
GangZoneCreate(Float:minx, Float:miny, Float:maxx, Float:maxy);
Параметры функции
Float:minx – Координата нижней границы зоны по оси x.
Float:miny – Координата нижней границы зоны по оси y.
Float:maxx – Координата верхней границы зоны по оси x.
Float:maxy – Координата верхней границы зоны по оси y.
Возможное использование:
1 new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneDestroy Стирает созданную зону из памяти сервера.
PHP:
Синтаксис
GangZoneDestroy(zone);
Параметры функции
zone – ID зоны которую нужно стереть
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneDestroy(grovestreet);
GangZoneShowForPlayer Показать зону для игрока.
PHP:
Синтаксис
GangZoneShowForPlayer(playerid, zone, color);
Параметры функции
playerid – ID игрока, которому нужно показать зону
zone – ID зоны которую нужно показать
color – цвет зоны.
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneShowForPlayer(playerid, grovestreet, 0xAAFFDDAA);
GangZoneHideForPlayer Скрыть зону от игрока.
PHP:
Синтаксис
GangZoneHideForPlayer(playerid, zone);
Параметры функции
playerid – ID игрока, которому нужно показать зону
zone – ID зоны которую нужно показать
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneHideForPlayer(playerid, grovestreet);
GangZoneShowForAll Показать зону для всех игроков.
PHP:
Синтаксис
GangZoneShowForAll(zone, color);
Параметры функции
zone – ID зоны которую нужно показать
color – цвет зоны.
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneShowForAll(grovestreet, 0xAAFFDDAA);
GangZoneHideForAll Скрыть зону от всех игроков.
PHP:
Синтаксис
GangZoneShowForAll(zone);
Параметры функции
zone – ID зоны которую нужно показать
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneHideForAll(grovestreet);
GangZoneFlashForPlayer Показать зону мигающей для игрока.
PHP:
Синтаксис
GangZoneFlashForPlayer(playerid, zone, flashcolor);
Параметры функции
playerid – ID игрока
zone – ID зоны
flashcolor – цвет мигающей зоны.
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneFlashForPlayer(playerid, grovestreet, 0xAAFFDDAA);
GangZoneFlashForAll Показать зону мигающей для всех игроков.
PHP:
Синтаксис
GangZoneFlashForAll(zone, flashcolor);
Параметры функции
zone – ID зоны
flashcolor – цвет мигающей зоны.
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneFlashForAll(grovestreet, 0xAAFFDDAA);
GangZoneStopFlashForPlayer Остановить мигание зоны для игрока.
PHP:
Синтаксис
GangZoneStopFlashForPlayer(playerid, zone);
Параметры функции
playerid – ID игрока
zone – ID зоны
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneStopFlashForPlayer(playerid, grovestreet);
GangZoneStopFlashForAll Остановить мигание зоны для всех игроков.
PHP:
Синтаксис
GangZoneStopFlashForAll(zone);
Параметры функции
zone – ID зоны
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneStopFlashForAll(grovestreet);
[HR][/HR]
ИНСТРУМЕНТЫ ДЛЯ РАБОТЫ С GANG ЗОНАМИ

Описание редактора ганг-зон

С помощью этого редактора вы можете создать карту ганг-зон (gangzones) для сервера SA-MP с точностью до 1 игровой единицы.
Горячие клавиши

F - сфокусироваться на текущей зоне (прокрутка карты)
V - открыть мини-карту
D - создать дубликат выбранной зоны
S - сохранить карту
A - добавить зону на месте курсора мыши
Del - удалить выбранную зону
Стрелки - подвинуть зону на 1ед в направлении стрелки (при зажатом Shift x10)
Ctrl + Стрелки - изменить размер зоны на 1ед в направлении стрелки (при зажатом Shift x10)
F11 - полноэкранный режим


Удобная программа для создания ганг зон.

Автор: iPleomax

< ----- Download
[HR][/HR]
УРОКИ и F.A.Q

Здравствуйте, я уже натыкался на много тем с вопросами на счет координат ГангЗон
Я знаю, что это очень легко и не надо на меня накидываться. Эта тема для новичков!
Приступим.​
Нам нужно зайти в игру, перейти в то место, где мы хотим создать зону.
Становимся на угол, где будет наша ГангЗона.
Прописываем /save
Далее нам нужно пройти в ПРОТИВОПОЛОЖНЫЙ угол.
И так же, сохранить координаты (/save).
Всё, теперь нам нужно вытащить координаты из файла savedpositions.
Идём в C:\Documents\GTA San Andreas User Files\SAMP\savedpositions - по умолчанию.
И в самом текстовом документе есть 2 последних записей.
У меня это:
PHP:
AddPlayerClass(1,1169.6711,-1714.1644,13.6751,162.5978,0,0,0,0,0,0); //
AddPlayerClass(1,1093.8754,-1795.2982,13.6039,293.5724,0,0,0,0,0,0); //
Нам из них нужно вытащить только X, Y.
У меня это:
PHP:
1169.6711,-1714.1644
1093.8754,-1795.2982
Вот те самые координаты которые нам нужны (min:X, min:Y, max:X, max:Y)
Теперь создаем ГангЗону.
Ко всем new
PHP:
new gz;
В OnGameModeInit
PHP:
gz = GangZoneCreate(1169.6711,-1714.1644, 1093.8754,-1795.2982); // Функция имеет параметры (Float:minx, Float:miny, Float:maxx, Float:maxy)
Теперь для показа зоны игроку в OnPlayerConnect (Или в любую команду к примеру если вам надо, или же в OnPlayerSpawn - вам решать)
PHP:
GangZoneShowForPlayer(playerid, gz, 0xFFFF0096); // Где gz - наша переменная к которой мы приравняли ГангЗону, где 0xFFFF0096 - цвет, которым будет отображаться ГангЗона
// функция имеет параметры (playerid, zone, color), если что.
Вот и всё!
Ничего в этом сложного нет)
Если в чем то ошибся, напишите в комментарии
Писал всё с браузера.
Если помог - +
А да, кстате, накидайте пару идей какие мануалы сделать, а то мыслей уже нету :)
Автор урока : reyg

Урок пользователя "Ramzes" с портала "PW"(No Rekl, указал источник урока)
Здравие всем! Я просвещу вас как создавать тимы с ганг зонами!
И так начнем:
Для начала надо сделать команду или так сказать ТИМ.
В самое начало вписываем:
PHP:
new gTeam[MAX_PLAYERS];//Это для различия тим или банд.
#define TEAM_BALLA_COLOR 0x80008096 //цвет для вашей тим команды или банды
#define TEAM_GROVE 1//название тим команды или банды! обязатльно указывайте при создании новой банды ее номер если хотите создать еще 1 банду допустим баласов пишите так
#define TEAM_BALLA 2 //обязательно перенумеровывайте.
Теперь для вашей банды или тим нужно при выборе сделать скины (какие скины относится к какой банде)
В паблик суем.
PHP:
public OnPlayerRequestClass(playerid, classid)
{
if(classid == 5)//5 номер скина! Но считать надо от нуля
{
gTeam[playerid] = TEAM_GROVE;//Здесь указываем для какой тим скин
GameTextForPlayer(playerid, "GROVE", 1000, 3);//Ну и тексдрав для различия
}
retirn 1;
}
Также повторяем с остальными тимами или бандами как вам удобно.

Теперь приступим делать ганг зоны!
Допустим сделаем зону для грув стрит.

В самое начало пихаем это:
PHP:
new taketurfbackcount[MAX_PLAYERS];
new gangkillcount[MAX_PLAYERS];
#define REOWN_TURF 4
#define GANGAREA_WARNINGS 2
#define GANGAREA_TAKE 4
new grove;//название зоны или территории для захвата.
Теперь вставляем ниже указанное:
PHP:
public OnGameModeInit()
{
grove = GangZoneCreate(2197.193,-1887.144,2630.716,-1381.833);//grove- это название ваше зоны в начале мы указывали ее название.
В скобках указано(2197.193,-1887.144,2630.716,-1381.833)
2197.193 - минимум по Х
-1887.144 - минимум по У
2630.716 - максимум по Х
-1381.833 - максимум по У

Для этого я использую удобную программу Xtreme Vehicle Plotter.Как ей пользоваться покажу позже.
Для того чтоб на карте были видны зоны в ниже указанный паблик пихаем:
PHP:
GangZoneShowForPlayer(playerid,grove, 0x24FF0AB9);
В
PHP:
public OnPlayerConnect(playerid)
{
GangZoneShowForPlayer(playerid,grove, COLOR_GREEN);//Чтоб на карте были видны зоны.grove - название зоны в данный момент мы делаем грув. и соответственно ее цвет.Желательно указывать цвет вашей банды для которой вы это делаете в данный момент грув.
return 1;
}
Для того чтобы когда другие игроки захватывают зоны "захватываемая зона" мигала, делаем ниже указанное:
PHP:
public OnPlayerDeath(playerid, killerid, reason)
{
if(gTeam[killerid] == TEAM_GROVE) {//Указываем тим или банду захватываемой зоны в данный момент грув TEAM_GROVE.
taketurfbackcount[killerid]++;
if(taketurfbackcount[killerid] == REOWN_TURF) {
GangZoneStopFlashForAll(grove);//указываем в скобках название зоны которая будет мигать в данный момент это grove
GangZoneHideForAll(grove);//Вставляем в скобки название зоны в данный момент грув grove
GangZoneShowForAll(grove, GetPlayerColor(killerid) );//Это когда игрок захватил зону! будет перекрашиваться в его цвет, вставляем в скобки название зоны в данный момент grove.
taketurfbackcount[killerid]=0;
}
}
Теперь сделаем чтоб писало то что зона захватывается или захвачена!
Для этого в этом же паблике пишем:
PHP:
new str[256];
if(gTeam[killerid] == TEAM_GROVE) {//Название тима в данный момент грув TEAM_GROVE
taketurfbackcount[killerid]++;
if(taketurfbackcount[killerid] == REOWN_TURF) {
GangZoneStopFlashForAll(grove);//название захвачеваемой территории в данный момент grove
GangZoneHideForAll(grove);//название захвачеваемой территории в данный момент grove
GangZoneShowForAll(grove,GetPlayerColor(killerid));//название захвачеваемой территории в данный момент grove
taketurfbackcount[killerid]=0;
}
}
if(IsPlayerInArea(playerid,2383.532, -1748.974, 2543.251, -1618.698))//Координаты зоны в даный момент зоны grove
{
if((gTeam[playerid] == TEAM_GROVE) && (gTeam[killerid] != TEAM_GROVE) && (killerid != INVALID_PLAYER_ID))//Указываем название тим или банды в данный момент TEAM_GROVE
{
gangkillcount[playerid]++;
if(gangkillcount[playerid] == GANGAREA_WARNINGS)
{
SendClientMessageToAll(COLOR_RED,"Бандит: Территория банды Grove атакована!");//Сообщение в общ. чат то что база атакована
GangZoneFlashForAll(grove,GetPlayerColor(killerid) );//Указываем название зоны в данный момент grove
}
if(gangkillcount[playerid] == GANGAREA_TAKE)
{
new KillerName[30];
GetPlayerName(killerid, KillerName, 30);
format(str, 256, "Бандит: %s Захватил территорию банды Grove!", KillerName);//Пишется игрокам то что определенный игрок захватил зону
SendClientMessageToAll(GetPlayerColor(killerid), str);
GangZoneStopFlashForAll(grove);//Указываем захватываемую зону в данный момент grove
GangZoneHideForAll(grove);//Указываем захватываемую зону в данный момент grove
GangZoneShowForAll(grove, GetPlayerColor(killerid) );//Указываем захватываемую зону в данный момент grove
gangkillcount[playerid]=0;
}
}
}
return 1;
}
ну и в свободное место пихаем:
PHP:
stock IsPlayerInArea(playerid, Float:min_x, Float:min_y ,Float:max_x, Float:max_y)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X <= max_x && X >= min_x && Y <= max_y && Y >= min_y) return 1;
return 0;
}
Думаю ваша бандиты со своими ганг зонами готовы.

Дополнительно:
Если хотите чтоб у вашей банды был закрытый чат только для нее тогда делаем ниже указанное:
PHP:
public OnPlayerText(playerid, text[])
{
if(text[0] == '!')
{
new name[24], string[256];
GetPlayerName(playerid, name, 24);
strdel(text,0,1);
format(string, sizeof(string), "*Чат банды %s: %s", name, text);
printf("%s", string);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(gTeam[i] == gTeam[playerid])
SendClientMessage(i, GetPlayerColor(playerid), string);
}
}
return 0;
}
return 1;
}
Теперь у вас есть тим чат для каждой команды, чтобы в него писать всего лишь стоит поставить в начале текста "!" восклицательный знак и далее пишите что хотите.

Если хотите чтоб игроки одной банды за убийство своего дружественного бандита соответственно наказывались делаем так.

В самое начало пихаем:
PHP:
#define COLOR_RED 0xAA3333AA // RED
#define COLOR_GREEN 0x33AA33FF // GREEN
new tk[MAX_PLAYERS];
Потом
PHP:
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid == INVALID_PLAYER_ID)
{
SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
}
else
{
if(gTeam[killerid] != gTeam[playerid])
{
SendDeathMessage(killerid,playerid,reason);
SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
GivePlayerMoney(killerid, 1000);
}
//TEAM KILL
else
{
SendClientMessage(killerid, COLOR_RED, "Не убивай своих!В следущий раз будь окуратнее!");
SendDeathMessage(killerid,playerid,reason);
SetPlayerScore(killerid,GetPlayerScore(killerid)-1);
GivePlayerMoney(killerid, -2000);
SetPlayerHealth(killerid,0);
tk[killerid] ++;
if(tk[killerid] == 2)
{
SendClientMessage(killerid, COLOR_RED, "еще раз убьеш своего и тебя кикнут!");
}
if(tk[killerid] >= 3)
{
new string[256];
new name[MAX_PLAYER_NAME];
GetPlayerName(killerid,name, sizeof(name));
printf(" -A.T.K Script-: %s kicked for teamkilling",name);
Kick(killerid);
format(string, sizeof(string), "АнтиТимКилл кикнула %s за убийство своих бандитов!",name);
SendClientMessageToAll(COLOR_GREEN, string);
}
}
}
return 1;
}
Все готово система анти тим килл!

И так я вам обещал научится пользыватся программой!
Чтобы сделать координаты для ганг зоны делаем следующие
Заходим в программу, выбераем нужный город где будете создавать ганг зону, с верху выбираем Draw Config, отмечаем на карте зону,
вам вылазит окошко! выбираем там Gang Zones & World Boundaries! выбераем пункт Use Gang Zone в окошко вписываем название зоны и выбираем ее цвет
Вот у вас получилось vagos = GangZoneCreate(1147,61, -1863,458, 1626,767, -1346,304); тут есть одно неудобство это запятые вместо точек! заменяем некоторые запятые на точки (1147.61, -1863.458, 1626.767, -1346.304);
И еще то что там типо надо писать в public OnPlayerSpawn(playerid) пишем в public OnPlayerConnect(playerid)! собствено урок дан.
Автор урока : R.Jonsee
Система /capture по фрагам Advance RP [RLS]







Система подойдёт к любому моду,где нет системы захвата.​


1. Добавить к глобальным переменным (ко всем new):
PHP:
new bool:StopWar = false;
new Command[2];
new CommandKill[2];
new WarZoneID;
new Text: onecommand;
new Text: twocommand;
new Text: kolone;
new Text: koltwo;
new Text: fon;
new Text: time;
new Text: vremya;
new WarTimeMin;
new WarTimeSec;
new WarStop;

2. Добавим forward's (Ко всем forward):
PHP:
forward LoadGZ();
forward SaveGZ();
forward CheckArmour(); // такой форвад уже скорей всего есть, так что можно просто добавить содержимое моего кода в данный паблик

3. Создать паблики, лучше в самом конце мода:
PHP:
public LoadGZ()
{
  new string[256];
  new ololo[5][32];    
  new File: file = fopen("zone.ini", io_read);    
  if(file)
  {
    new idx;        
    while (idx < sizeof(GZInfo))        
    {            
      fread(file, string);            
      split(string, ololo, '|');            
      GZInfo[idx][px1] = floatstr(ololo[0]);            
      GZInfo[idx][py1] = floatstr(ololo[1]);            
      GZInfo[idx][px2] = floatstr(ololo[2]);            
      GZInfo[idx][py2] = floatstr(ololo[3]);            
      GZInfo[idx][pfrak] = strval(ololo[4]);            
      idx++;        
    }        
    fclose(file);    
  }
}
public SaveGZ()
{    
  new string[128], 
  idx;    
  new File: file2;    
  while (idx < sizeof(GZInfo))    
  {        
    format(string, sizeof(string),"%f|%f|%f|%f|%d\n",GZInfo[idx][px1],GZInfo[idx][py1],GZInfo[idx][px2],GZInfo[idx][py2],GZInfo[idx][pfrak]);        
    if(idx == 0)        
    {            
      file2 = fopen("zone.ini", io_write);        
    }        
    else        
    {            
      file2 = fopen("zone.ini", io_append);        
    }        
      fwrite(file2,string);        idx++;        
      fclose(file2);    
  }    
  return 1;
}
public CheckArmour()
{    
  WarTimeSec--;    
  if(WarStop > 0) WarStop--;    
  if(WarStop == 0) StopWar = false;    
  if(WarTimeSec == 0 && WarTimeMin == 0)    
  {        
    TextDrawDestroy(fon);        
    TextDrawDestroy(onecommand);        
    TextDrawDestroy(twocommand);        
    TextDrawDestroy(kolone);        
    TextDrawDestroy(koltwo);        
    TextDrawDestroy(time);        
    TextDrawDestroy(vremya);        
    GangZoneStopFlashForAll(WarZoneID);        
    SaveGZ();        
    if(CommandKill[0] > CommandKill[1])        
    {            
      for(new i = 0; i < GetMaxPlayers(); 
      i++)            
      {                
        if(IsPlayerConnected(i))                
        {                    
          if(GZInfo[WarZoneID][pfrak] == 19) GangZoneShowForPlayer(i, WarZoneID, 0x00BC1E96);                    
          else if(GZInfo[WarZoneID][pfrak] == 20)  GangZoneShowForPlayer(i, WarZoneID, 0xD800C796);                    
          else if(GZInfo[WarZoneID][pfrak] == 21)  GangZoneShowForPlayer(i, WarZoneID, 0x5418D696);                    
          else if(GZInfo[WarZoneID][pfrak] == 22)  GangZoneShowForPlayer(i, WarZoneID, 0x0098FF96);                    
          else if(GZInfo[WarZoneID][pfrak] == 23)  GangZoneShowForPlayer(i, WarZoneID, 0xFFCF0096);                
        }                
        if(PlayerInfo[i][pMember] == Command[0] || PlayerInfo[i][pLeader] == Command[0])                
        {                    
          SendClientMessage(i, COLOR_GREEN, "Вы выиграли эту битву.");                
        }            
      }            
      GZInfo[WarZoneID][pfrak] = Command[0];        
    }        
    else if(CommandKill[0] < CommandKill[1])        
    {            
      for(new i = 0; i < GetMaxPlayers(); 
      i++)            
      {                
        if(IsPlayerConnected(i))                
        {                    
          if(GZInfo[WarZoneID][pfrak] == 19) GangZoneShowForPlayer(i, WarZoneID, 0x00BC1E96);                    
          else if(GZInfo[WarZoneID][pfrak] == 20)  GangZoneShowForPlayer(i, WarZoneID, 0xD800C796);                    
          else if(GZInfo[WarZoneID][pfrak] == 21)  GangZoneShowForPlayer(i, WarZoneID, 0x5418D696);                    
          else if(GZInfo[WarZoneID][pfrak] == 22)  GangZoneShowForPlayer(i, WarZoneID, 0x0098FF96);                    
          else if(GZInfo[WarZoneID][pfrak] == 23)  GangZoneShowForPlayer(i, WarZoneID, 0xFFCF0096);                
        }                
        if(PlayerInfo[i][pMember] == Command[1] || PlayerInfo[i][pLeader] == Command[1])                
        {                    
          SendClientMessage(i, COLOR_GRAD1, "Вы выиграли эту битву.");                
        }                
        else if(PlayerInfo[i][pMember] == Command[0] || PlayerInfo[i][pLeader] == Command[0])                
        {                    
          new string[64],ftext[16];                    
          if(GZInfo[WarZoneID][pfrak] == 19) ftext = "The Grove";                    
          else if(GZInfo[WarZoneID][pfrak] == 20) ftext = "Ballas";                    
          else if(GZInfo[WarZoneID][pfrak] == 21) ftext = "Rifa";                    
          else if(GZInfo[WarZoneID][pfrak] == 22) ftext = "Aztecas";                    
          else if(GZInfo[WarZoneID][pfrak] == 23) ftext = "Vagos";                    
          format(string, sizeof(string),"Вам не удалось захватить территорию банды %s",ftext);                    
          SendClientMessage(i, COLOR_GREEN, string);                
        }            
      }        
    }        
    else        
    {            
      for(new i = 0; i < GetMaxPlayers(); 
      i++)            
      {                
        if(PlayerInfo[i][pMember] == Command[1] || PlayerInfo[i][pLeader] == Command[1])                
        {                    
          SendClientMessage(i, COLOR_GREEN, "Ничья, зона остаётся у вас.");                    
          if(GZInfo[WarZoneID][pfrak] == 19) GangZoneShowForPlayer(i, WarZoneID, 0x00BC1E96);                    
          else if(GZInfo[WarZoneID][pfrak] == 20)  GangZoneShowForPlayer(i, WarZoneID, 0xD800C796);                    
          else if(GZInfo[WarZoneID][pfrak] == 21)  GangZoneShowForPlayer(i, WarZoneID, 0x5418D696);                    
          else if(GZInfo[WarZoneID][pfrak] == 22)  GangZoneShowForPlayer(i, WarZoneID, 0x0098FF96);                    
          else if(GZInfo[WarZoneID][pfrak] == 23)  GangZoneShowForPlayer(i, WarZoneID, 0xFFCF0096);                
        }            
      }        
    }        
    Command[0] = 0;        
    Command[1] = 0;    
  }    
  else if(WarTimeSec == 0) 
  { 
    WarTimeSec = 60; WarTimeMin--; 
  }    
  new string[32];    
  if(WarTimeSec > 9) format(string, sizeof(string),"%d:%d",WarTimeMin,WarTimeSec);    
  else format(string, sizeof(string),"%d:0%d",WarTimeMin,WarTimeSec);    
  TextDrawSetString(vremya, string);
}

4. В OnGameModeInit() добавим:
PHP:
SetTimer("CheckArmour",1000,1); // если такого нет        
LoadGZ();    
for(new i = 0; i < sizeof(GZInfo); i++)    
{        
  GangZoneCreate(GZInfo[i][px1],GZInfo[i][py1],GZInfo[i][px2],GZInfo[i][py2]);    
}

5. В OnPlayerConnect() добавим:
PHP:
for(new i = 0; i < sizeof(GZInfo);
i++)
{    
  if(GZInfo[i][pfrak] == 0) GangZoneShowForPlayer(playerid, i, 0xB4B4B496);    
  else if(GZInfo[i][pfrak] == 19) GangZoneShowForPlayer(playerid, i, 0x00BC1E96);    
  else if(GZInfo[i][pfrak] == 20)  GangZoneShowForPlayer(playerid, i, 0xD800C796);    
  else if(GZInfo[i][pfrak] == 21)  GangZoneShowForPlayer(playerid, i, 0x5418D696);    
  else if(GZInfo[i][pfrak] == 22)  GangZoneShowForPlayer(playerid, i, 0x0098FF96);    
  else if(GZInfo[i][pfrak] == 23)  GangZoneShowForPlayer(playerid, i, 0xFFCF0096); 
}

6. В OnPlayerDisconnect() добавим:
PHP:
if(PlayerInfo[playerid][pMember] == Command[0] || PlayerInfo[playerid][pLeader] == Command[0] ||    PlayerInfo[playerid][pMember] == Command[1] || PlayerInfo[playerid][pLeader] == Command[1])    
{        
  TextDrawHideForPlayer(playerid, fon);        
  TextDrawHideForPlayer(playerid, onecommand);        
  TextDrawHideForPlayer(playerid, twocommand);        
  TextDrawHideForPlayer(playerid, kolone);        
  TextDrawHideForPlayer(playerid, koltwo);        
  TextDrawHideForPlayer(playerid, time);        
  TextDrawHideForPlayer(playerid, vremya);    
}

7. В OnPlayerDeath() добавим:
PHP:
if(WarTimeSec > 0)    
{        
  if(PlayerInfo[playerid][pMember] == Command[0] || PlayerInfo[playerid][pLeader] == Command[0])        
  {            
    if(PlayerInfo[killerid][pMember] == Command[1] || PlayerInfo[killerid][pLeader] == Command[1])            
    {                
      new Float:x, Float:y, Float:z;                
      GetPlayerPos(playerid, x,y,z);                
      if((x >= GZInfo[WarZoneID][px1] && x <= GZInfo[WarZoneID][px2]) && (y >= GZInfo[WarZoneID][py1] && y <= GZInfo[WarZoneID][py2]))                
      {                    
        CommandKill[1]++;                    
        new string[12];                    
        format(string, sizeof(string),"%d",CommandKill[1]);                    
        TextDrawSetString(kolone, string);                
      }            
    }        
  }        
  if(PlayerInfo[playerid][pMember] == Command[1] || PlayerInfo[playerid][pLeader] == Command[1])        
  {            
    if(PlayerInfo[killerid][pMember] == Command[0] || PlayerInfo[killerid][pLeader] == Command[0])            
    {                
      new Float:x, Float:y, Float:z;                
      GetPlayerPos(playerid, x,y,z);                
      if((x >= GZInfo[WarZoneID][px1] && x <= GZInfo[WarZoneID][px2]) && (y >= GZInfo[WarZoneID][py1] && y <= GZInfo[WarZoneID][py2]))                
      {                    
        CommandKill[0]++;                    
        new string[12];                    
        format(string, sizeof(string),"%d",CommandKill[0]);                    
        TextDrawSetString(koltwo, string);                
      }            
    }        
  }    
}

8. В OnPlayerCommandText(playerid, cmdtext[]) добавим:
PHP:
else if(strcmp(cmd, "/gzone", true) == 0)    
{        
  if(PlayerInfo[playerid][pAdmin] >= 1)        
  {            
    tmp=strtok(cmdtext, idx);            
    if(!strlen(tmp) || (!IsNumeric(tmp)))            
    {                
      SendClientMessage(playerid, COLOR_GRAD1, "Используйте: /gzone [ 19 - 23 ]");                
      return 1;            
    }            
    new banda = strval(tmp);            
    if(banda > 18 && banda < 24)            
    {                
      new zid;                
      new Float:x, Float:y, Float:z;                
      GetPlayerPos(playerid, x,y,z);                
      for(new i = 0; i < sizeof(GZInfo); i++)                
      {                    
        if((x >= GZInfo[i][px1] && x <= GZInfo[i][px2]) && (y >= GZInfo[i][py1] && y <= GZInfo[i][py2]))                    
        {                        
          zid = i;                        
          i = 5555;                    
        }                
      }                
      GZInfo[zid][pfrak] = banda;                
      SaveGZ();                
      if(GZInfo[zid][pfrak] == 19) GangZoneShowForAll(zid, 0x00BC1E96);                
      else if(GZInfo[zid][pfrak] == 20)  GangZoneShowForAll(zid, 0xD800C796);
      else if(GZInfo[zid][pfrak] == 21)  GangZoneShowForAll(zid, 0x5418D696);                
      else if(GZInfo[zid][pfrak] == 22)  GangZoneShowForAll(zid, 0x0098FF96);                
      else if(GZInfo[zid][pfrak] == 23)  GangZoneShowForAll(zid, 0xFFCF0096);                
      SendClientMessage(playerid,COLOR_GRAD1, "Сделано.");            
    }            
    else            
    {                
      SendClientMessage(playerid, COLOR_GRAD1, "Недопустимое значение.");                
      return 1;            
    }        
  }    
}

9. В public OnPlayerCommandText(playerid, cmdtext[]):
PHP:
else if(strcmp(cmd, "/capture", true) == 0)    
{    
  new fntext[60];    
  new string[128];    
  new fztext[60];        
  if(PlayerInfo[playerid][pMember] >= 19 && PlayerInfo[playerid][pMember] <= 23)        
  {            
    if(PlayerInfo[playerid][pRang] >= 7)            
    {                
      if(StopWar == false)                
      {                    
        if(Command[0] != 0) { SendClientMessage(playerid, COLOR_GRAD1, "На данный момент уже захватывается территория"); 
        return 1; 
      }                    
      new zid,mid;                    
      new Float:x, Float:y, Float:z;                    
      GetPlayerPos(playerid, x,y,z);                    
      for(new i = 0; i < sizeof(GZInfo); i++)                    
      {                        
        if((x >= GZInfo[i][px1] && x <= GZInfo[i][px2]) && (y >= GZInfo[i][py1] && y <= GZInfo[i][py2]))                        
        {                            
          zid = i;                            
          i = 5555;                        
        }                    
      }                    
      if(PlayerInfo[playerid][pMember] != 0) mid = PlayerInfo[playerid][pMember];                    
      else if(PlayerInfo[playerid][pLeader] != 0) mid = PlayerInfo[playerid][pLeader];                    
      if(mid == GZInfo[zid][pfrak]) 
      { 
        SendClientMessage(playerid, COLOR_GRAD1, "Данная территория принадлежит вам"); 
        return 1; 
      }                    
      if(GZInfo[zid][pfrak] == 0)                    
      {                        
        GZInfo[zid][pfrak] = mid;                        
        SaveGZ();                        
        if(GZInfo[zid][pfrak] == 19)  GangZoneShowForPlayer(playerid, zid, 0x03c03cAA);                        
        else if(GZInfo[zid][pfrak] == 20)  GangZoneShowForPlayer(playerid, zid, 0xcd00cdAA);                        
        else if(GZInfo[zid][pfrak] == 21)  GangZoneShowForPlayer(playerid, zid, 0x3D62F296);                        
        else if(GZInfo[zid][pfrak] == 22)  GangZoneShowForPlayer(playerid, zid, 0x1ee7ffAA);                        
        else if(GZInfo[zid][pfrak] == 23)  GangZoneShowForPlayer(playerid, zid, 0xffd700AA);                        
        return 1;                    
      }                    
      new kol;                    
      for(new i = 0; i < GetMaxPlayers(); i++)                    
      {                        
        if(PlayerInfo[i][pMember] == GZInfo[zid][pfrak] || PlayerInfo[i][pLeader] == GZInfo[zid][pfrak])                        
        {                            
          kol++;                        
        }                    
      }                    
      if(kol < 1) 
      { 
        SendClientMessage(playerid, COLOR_GRAD1, "У данной банды нету онлайна"); return 1; 
      }            
      if(mid == 19) fntext = "Grove Street";                    
      else if(mid == 20) fntext = "The Ballas";                    
      else if(mid == 21) fntext = "The Rifa";                    
      else if(mid == 22) fntext = "Varios Los Aztecas";                    
      else if(mid == 23) fntext = "Los Santos Vagos";                                        
      if(GZInfo[zid][pfrak] == 19) fztext = "Grove Street";                    
      else if(GZInfo[zid][pfrak] == 20) fztext = "The Ballas";                    
      else if(GZInfo[zid][pfrak] == 21) fztext = "The Rifa";                    
      else if(GZInfo[zid][pfrak] == 22) fztext = "Varios Los Aztecas";                    
      else if(GZInfo[zid][pfrak] == 23) fztext = "Los Santos Vagos";                
      format(string, sizeof(string), "Банда '%s' начала захват территории у '%s' в районе '%s'",fntext, fztext, GetPlayerZone(playerid));                
      SendFamilyMessage(19, 0xdd4400AA, string),SendFamilyMessage(20, 0xdd4400AA, string),SendFamilyMessage(21, 0xdd4400AA, string),SendFamilyMessage(22, 0xdd4400AA, string),SendFamilyMessage(23, 0xdd4400AA, string);                    
      GangZoneFlashForAll(zid, COLOR_RED);                    
      Command[0] = mid;                    
      Command[1] = GZInfo[zid][pfrak];                    
      WarZoneID = zid;                    
      new ftext[16];                    
      fon = TextDrawCreate(1, 285, "_");                                    
      TextDrawUseBox(fon, 1);                                    
      TextDrawBoxColor(fon, 0x00000075);                                    
      TextDrawTextSize(fon, 150.0, 400.0);                                    
      TextDrawLetterSize(fon, 0.0, 5.3);                    
      time = TextDrawCreate(10.0, 285.0, "Time:");                    
      TextDrawLetterSize(time, 0.4, 1.2);                    
      TextDrawColor(time, 0x37FA00FF);                    
      TextDrawFont(time, 2);                    
      TextDrawSetProportional(time, 1);                    
      TextDrawSetOutline(time, 2);                    
      vremya = TextDrawCreate(50.0, 285.0, "5:00");                    
      TextDrawLetterSize(vremya, 0.4, 1.2);                    
      TextDrawColor(vremya, 0x37FA00FF);                    
      TextDrawFont(vremya, 2);                    
      TextDrawSetOutline(vremya, 2);                    
      if(mid == 19) ftext = "Grove";                    
      else if(mid == 20) ftext = "Ballas";                    
      else if(mid == 21) ftext = "Rifa";                    
      else if(mid == 22) ftext = "Aztecas";                    
      else if(mid == 23) ftext = "Vagos";                    
      onecommand = TextDrawCreate(10.0, 300.0, ftext);                    
      TextDrawLetterSize(onecommand, 0.4, 1.2);                    
      TextDrawFont(onecommand, 2);                    
      TextDrawSetOutline(onecommand, 2);                    
      if(GZInfo[zid][pfrak] == 19) ftext = "Grove";                    
      else if(GZInfo[zid][pfrak] == 20) ftext = "Ballas";                    
      else if(GZInfo[zid][pfrak] == 21) ftext = "Rifa";                    
      else if(GZInfo[zid][pfrak] == 22) ftext = "Aztecas";                    
      else if(GZInfo[zid][pfrak] == 23) ftext = "Vagos";                    
      twocommand = TextDrawCreate(10.0, 315.0, ftext);                    
      TextDrawUseBox(twocommand, 0);                    
      TextDrawLetterSize(twocommand, 0.4, 1.2);                    
      TextDrawFont(twocommand, 2);                    
      TextDrawSetOutline(twocommand, 2);                    
      kolone = TextDrawCreate(133.0, 315.0, "0");                    
      TextDrawLetterSize(kolone, 0.4, 1.2);                    
      TextDrawFont(kolone, 2);                    
      TextDrawSetOutline(kolone, 2);                    
      koltwo = TextDrawCreate(133.0, 300.0, "0");                    
      TextDrawLetterSize(koltwo, 0.4, 1.2);                    
      TextDrawFont(koltwo, 2);                    
      TextDrawSetOutline(koltwo, 2);                    
      for(new i = 0; i < GetMaxPlayers();i++)                    
      {                        
        if((PlayerInfo[i][pMember] >= 19 && PlayerInfo[i][pMember] <= 23) || (PlayerInfo[i][pLeader] >= 19 && PlayerInfo[i][pLeader] <= 23))                        
        {                            
          TextDrawShowForPlayer(i,fon);                            
          TextDrawShowForPlayer(i,time);                            
          TextDrawShowForPlayer(i,vremya);                            
          TextDrawShowForPlayer(i,onecommand);                            
          TextDrawShowForPlayer(i,twocommand);                            
          TextDrawShowForPlayer(i,kolone);                            
          TextDrawShowForPlayer(i,koltwo);                        
        }                    
      }                    
      WarTimeMin = 2;                    
      WarTimeSec = 60;                    
      WarStop = 7200000;                    
      CommandKill[0] = 0;                    
      CommandKill[1] = 0;                    
      StopWar = true;                
    }                
      else                
      {                    
        SendClientMessage(playerid, COLOR_GRAD1, "Захват территории возможен 1 раз в час");                    
        return 1;                
      }            
    }            
    else            
    {               
      SendClientMessage(playerid, COLOR_GRAD1, "Данная функция доступна с 7 ранга");                
      return 1;            
    }        
  }        
  else        
  {            
    SendClientMessage(playerid, COLOR_GRAD1, "Данная функция Вам не доступна");            
    return 1;        
  }    
}

10.
PHP:
enum pZone{ Float:px1, Float:py1, Float:px2, Float:py2, pfrak,};

Файл zone.ini:
PHP:
1625.199951|-2176.175537|1755.199951|-2036.507812|221755.199951|-2176.188476|1885.199951|-2036.507812|221885.199951|-2176.201416|2015.199951|-2036.507812|222015.199951|-2176.214599|2145.199951|-2036.507812|222145.199951|-2176.227539|2275.199951|-2036.507812|222275.199951|-2176.240478|2405.199951|-2036.507812|212405.199951|-2176.253417|2535.199951|-2036.507812|212535.199951|-2176.266601|2665.199951|-2036.507812|212665.199951|-2176.279541|2795.199951|-2036.507812|212795.199951|-2176.292480|2925.199951|-2036.507812|211625.199951|-2036.175537|1755.199951|-1896.507812|221755.199951|-2036.188476|1885.199951|-1896.507812|221885.199951|-2036.201538|2015.199951|-1896.507812|222015.199951|-2036.214477|2145.199951|-1896.507812|222145.199951|-2036.227539|2275.199951|-1896.507812|222275.199951|-2036.240478|2405.199951|-1896.507812|212405.199951|-2036.253540|2535.199951|-1896.507812|212535.199951|-2036.266479|2665.199951|-1896.507812|212665.199951|-2036.279541|2795.199951|-1896.507812|212795.199951|-2036.292480|2925.199951|-1896.507812|211625.199951|-1896.175537|1755.199951|-1756.507812|221755.199951|-1896.188476|1885.199951|-1756.507812|221885.199951|-1896.201538|2015.199951|-1756.507812|222015.199951|-1896.214477|2145.199951|-1756.507812|222145.199951|-1896.227539|2275.199951|-1756.507812|222275.199951|-1896.240478|2405.199951|-1756.507812|212405.199951|-1896.253540|2535.199951|-1756.507812|212535.199951|-1896.266479|2665.199951|-1756.507812|212665.199951|-1896.279541|2795.199951|-1756.507812|212795.199951|-1896.292480|2925.199951|-1756.507812|211625.199951|-1756.175537|1755.199951|-1616.507812|221755.199951|-1756.188476|1885.199951|-1616.507812|221885.199951|-1756.201538|2015.199951|-1616.507812|192015.199951|-1756.214477|2145.199951|-1616.507812|192145.199951|-1756.227539|2275.199951|-1616.507812|192275.199951|-1756.240478|2405.199951|-1616.507812|192405.199951|-1756.253540|2535.199951|-1616.507812|192535.199951|-1756.266479|2665.199951|-1616.507812|192665.199951|-1756.279541|2795.199951|-1616.507812|212795.199951|-1756.292480|2925.199951|-1616.507812|211625.199951|-1616.175537|1755.199951|-1476.507812|201755.199951|-1616.188476|1885.199951|-1476.507812|221885.199951|-1616.201538|2015.199951|-1476.507812|192015.199951|-1616.214477|2145.199951|-1476.507812|192145.199951|-1616.227539|2275.199951|-1476.507812|192275.199951|-1616.240478|2405.199951|-1476.507812|192405.199951|-1616.253540|2535.199951|-1476.507812|192535.199951|-1616.266479|2665.199951|-1476.507812|192665.199951|-1616.279541|2795.199951|-1476.507812|212795.199951|-1616.292480|2925.199951|-1476.507812|231625.199951|-1476.175537|1755.199951|-1336.507812|201755.199951|-1476.188476|1885.199951|-1336.507812|201885.199951|-1476.201538|2015.199951|-1336.507812|192015.199951|-1476.214477|2145.199951|-1336.507812|192145.199951|-1476.227539|2275.199951|-1336.507812|192275.199951|-1476.240478|2405.199951|-1336.507812|192405.199951|-1476.253540|2535.199951|-1336.507812|192535.199951|-1476.266479|2665.199951|-1336.507812|192665.199951|-1476.279541|2795.199951|-1336.507812|232795.199951|-1476.292480|2925.199951|-1336.507812|231625.199951|-1336.175537|1755.199951|-1196.507812|201755.199951|-1336.188476|1885.199951|-1196.507812|201885.199951|-1336.201538|2015.199951|-1196.507812|202015.199951|-1336.214477|2145.199951|-1196.507812|202145.199951|-1336.227539|2275.199951|-1196.507812|202275.199951|-1336.240478|2405.199951|-1196.507812|232405.199951|-1336.253540|2535.199951|-1196.507812|232535.199951|-1336.266479|2665.199951|-1196.507812|232665.199951|-1336.279541|2795.199951|-1196.507812|232795.199951|-1336.292480|2925.199951|-1196.507812|231625.199951|-1196.175537|1755.199951|-1056.507812|201755.199951|-1196.188476|1885.199951|-1056.507812|201885.199951|-1196.201538|2015.199951|-1056.507812|202015.199951|-1196.214477|2145.199951|-1056.507812|202145.199951|-1196.227539|2275.199951|-1056.507812|202275.199951|-1196.240478|2405.199951|-1056.507812|232405.199951|-1196.253540|2535.199951|-1056.507812|232535.199951|-1196.266479|2665.199951|-1056.507812|232665.199951|-1196.279541|2795.199951|-1056.507812|232795.199951|-1196.292480|2925.199951|-1056.507812|231625.199951|-1056.175537|1755.199951|-916.517028|201755.199951|-1056.188476|1885.199951|-916.513000|201885.199951|-1056.201538|2015.199951|-916.513000|202015.199951|-1056.214477|2145.199951|-916.513000|202145.199951|-1056.227539|2275.199951|-916.513000|202275.199951|-1056.240478|2405.199951|-916.513000|232405.199951|-1056.253540|2535.199951|-916.513000|232535.199951|-1056.266479|2665.199951|-916.513000|232665.199951|-1056.279541|2795.199951|-916.513000|232795.199951|-1056.292480|2925.199951|-916.513000|23

Если помог, то не откажусь от "+" :)
Автор урока : Dima_Tushin
Добрый день.
18.02.14 делать было нечего вот решил перевести ганг зоны


находим старую загрузку и удаляем


теперь вставляем мою
PHP:
stock LoadGZ() mysql_function_query(MYSQL,"SELECT * FROM `gangz`", true, "CallBackGangZone", "");
publics: CallBackGangZone()
{    
  new rows, fields;    
  cache_get_data(rows, fields);    
  new temp[64],i = 0;    
  if(rows)    
  {        
    for(new he = 0; 
    he < rows; he++)        
    {            
      cache_get_row(he, 0, temp),GZInfo[he][gCoords][0] = floatstr(temp);            
      cache_get_row(he, 1, temp),GZInfo[he][gCoords][1] = floatstr(temp);            
      cache_get_row(he, 2, temp),GZInfo[he][gCoords][2] = floatstr(temp);            
      cache_get_row(he, 3, temp),GZInfo[he][gCoords][3] = floatstr(temp);            
      cache_get_row(he, 4, temp),GZInfo[he][gFrakVlad] = strval(temp);            
      GZInfo[he][gID] = GangZoneCreate(GZInfo[he][gCoords][0],GZInfo[he][gCoords][1],GZInfo[he][gCoords][2],GZInfo[he][gCoords][3]);            
      if(GZInfo[he][gFrakVlad] == 0) GZInfo[he][gFrakVlad] = allowedfactions[random(sizeof(allowedfactions))];            
      ZoneOnBattle[he] = 0;            
      GZSafeTime[he] = 0;            
      i++;            
      TotalGangZone++;        
    }        
    printf("[Загрузка]:\tLoadGZ\t\t|\tЗагрузка: %d", i);    
  }    
  else printf("Ганг Зоны не загружены.");    
  return 1;
}
stock SaveGZ(i)
{    
  new query[100];    
  format(query,sizeof(query),"UPDATE `gangz` SET \    `gID`='%d',`gCoords[0]`='%f',`gCoords[1]`='%f',`gCoords[2]`='%f',\`gCoords[3]`='%f',`gFrakVlad`='%d',`gNapad`='%d'",GZInfo[i][gID],GZInfo[i][gCoords][0],GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3],GZInfo[i][gFrakVlad]);    
  mysql_function_query(MYSQL,query,false,"","");    
  return 1;
}
Cоздадим бд
PHP:
CREATE TABLE IF NOT EXISTS `gangz` (  `gID` int(11) NOT NULL,`gCoords[0]` float NOT NULL,`gCoords[1]` float NOT NULL,`gCoords[2]` float NOT NULL,`gCoords[3]` float NOT NULL,`gFrakVlad` int(11) NOT NULL,`gNapad` int(11) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
На этом все.

[HR][/HR]

P.S: Разделы будут дополняться по мере возможности!

Спасибо, что потратили время на мой F.A.Q :D рад помочь :)

[HR][/HR]
Модеры,попрошу добавить в шапку раздела,дабы это очень полезная информация для новичков.
[HR][/HR]
 
Последнее редактирование:
Сверху Снизу