- Регистрация
- 18 Фев 2015
- Сообщения
- 542
- Лучшие ответы
- 0
- Репутация
- 106
Работа с ганг зонами [Gang Zone's]
[HR][/HR]
[HR][/HR]
ИНСТРУМЕНТЫ ДЛЯ РАБОТЫ С GANG ЗОНАМИ
Удобная программа для создания ганг зон.
Автор: iPleomax
[HR][/HR]
УРОКИ и F.A.Q
[HR][/HR]
P.S: Разделы будут дополняться по мере возможности!
Спасибо, что потратили время на мой F.A.Q рад помочь
[HR][/HR]
[HR][/HR]
GangZoneCreate Создает новую зону в памяти сервера. Функция возвращает ID созданной зоны.
GangZoneDestroy Стирает созданную зону из памяти сервера.
GangZoneShowForPlayer Показать зону для игрока.
GangZoneHideForPlayer Скрыть зону от игрока.
GangZoneShowForAll Показать зону для всех игроков.
GangZoneHideForAll Скрыть зону от всех игроков.
GangZoneFlashForPlayer Показать зону мигающей для игрока.
GangZoneFlashForAll Показать зону мигающей для всех игроков.
GangZoneStopFlashForPlayer Остановить мигание зоны для игрока.
GangZoneStopFlashForAll Остановить мигание зоны для всех игроков.
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);
PHP:
Синтаксис
GangZoneDestroy(zone);
Параметры функции
zone – ID зоны которую нужно стереть
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneDestroy(grovestreet);
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);
PHP:
Синтаксис
GangZoneHideForPlayer(playerid, zone);
Параметры функции
playerid – ID игрока, которому нужно показать зону
zone – ID зоны которую нужно показать
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneHideForPlayer(playerid, grovestreet);
PHP:
Синтаксис
GangZoneShowForAll(zone, color);
Параметры функции
zone – ID зоны которую нужно показать
color – цвет зоны.
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneShowForAll(grovestreet, 0xAAFFDDAA);
PHP:
Синтаксис
GangZoneShowForAll(zone);
Параметры функции
zone – ID зоны которую нужно показать
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneHideForAll(grovestreet);
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);
PHP:
Синтаксис
GangZoneFlashForAll(zone, flashcolor);
Параметры функции
zone – ID зоны
flashcolor – цвет мигающей зоны.
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneFlashForAll(grovestreet, 0xAAFFDDAA);
PHP:
Синтаксис
GangZoneStopFlashForPlayer(playerid, zone);
Параметры функции
playerid – ID игрока
zone – ID зоны
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneStopFlashForPlayer(playerid, grovestreet);
PHP:
Синтаксис
GangZoneStopFlashForAll(zone);
Параметры функции
zone – ID зоны
Возможное использование:
new grovestreet = GangZoneCreate(1980.0, 280.0, 2110.0, 480.0);
GangZoneStopFlashForAll(grovestreet);
ИНСТРУМЕНТЫ ДЛЯ РАБОТЫ С GANG ЗОНАМИ
Описание редактора ганг-зон
С помощью этого редактора вы можете создать карту ганг-зон (gangzones) для сервера SA-MP с точностью до 1 игровой единицы.
Горячие клавиши
F - сфокусироваться на текущей зоне (прокрутка карты)
V - открыть мини-карту
D - создать дубликат выбранной зоны
S - сохранить карту
A - добавить зону на месте курсора мыши
Del - удалить выбранную зону
Стрелки - подвинуть зону на 1ед в направлении стрелки (при зажатом Shift x10)
Ctrl + Стрелки - изменить размер зоны на 1ед в направлении стрелки (при зажатом Shift x10)
F11 - полноэкранный режим
С помощью этого редактора вы можете создать карту ганг-зон (gangzones) для сервера SA-MP с точностью до 1 игровой единицы.
Горячие клавиши
F - сфокусироваться на текущей зоне (прокрутка карты)
V - открыть мини-карту
D - создать дубликат выбранной зоны
S - сохранить карту
A - добавить зону на месте курсора мыши
Del - удалить выбранную зону
Стрелки - подвинуть зону на 1ед в направлении стрелки (при зажатом Shift x10)
Ctrl + Стрелки - изменить размер зоны на 1ед в направлении стрелки (при зажатом Shift x10)
F11 - полноэкранный режим
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Удобная программа для создания ганг зон.
Автор: iPleomax
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
< ----- DownloadУРОКИ и F.A.Q
Автор урока : reygЗдравствуйте, я уже натыкался на много тем с вопросами на счет координат ГангЗонНам нужно зайти в игру, перейти в то место, где мы хотим создать зону.
Я знаю, что это очень легко и не надо на меня накидываться. Эта тема для новичков!
Приступим.
Становимся на угол, где будет наша ГангЗона.Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Прописываем /save
Далее нам нужно пройти в ПРОТИВОПОЛОЖНЫЙ угол.Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
И так же, сохранить координаты (/save).
Всё, теперь нам нужно вытащить координаты из файла savedpositions.
Идём в C:\Documents\GTA San Andreas User Files\SAMP\savedpositions - по умолчанию.
И в самом текстовом документе есть 2 последних записей.
У меня это:
Нам из них нужно вытащить только X, Y.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); //
У меня это:
Вот те самые координаты которые нам нужны (min:X, min:Y, max:X, max:Y)PHP:1169.6711,-1714.1644 1093.8754,-1795.2982
Теперь создаем ГангЗону.
Ко всем new
В OnGameModeInitPHP:new gz;
Теперь для показа зоны игроку в OnPlayerConnect (Или в любую команду к примеру если вам надо, или же в OnPlayerSpawn - вам решать)PHP:gz = GangZoneCreate(1169.6711,-1714.1644, 1093.8754,-1795.2982); // Функция имеет параметры (Float:minx, Float:miny, Float:maxx, Float:maxy)
PHP:GangZoneShowForPlayer(playerid, gz, 0xFFFF0096); // Где gz - наша переменная к которой мы приравняли ГангЗону, где 0xFFFF0096 - цвет, которым будет отображаться ГангЗона // функция имеет параметры (playerid, zone, color), если что.
Вот и всё!
Ничего в этом сложного нет)
Если в чем то ошибся, напишите в комментарии
Писал всё с браузера.
Если помог - +
А да, кстате, накидайте пару идей какие мануалы сделать, а то мыслей уже нету
Урок пользователя "Ramzes" с портала "PW"(No Rekl, указал источник урока)
Здравие всем! Я просвещу вас как создавать тимы с ганг зонами!
И так начнем:
Для начала надо сделать команду или так сказать ТИМ.
В самое начало вписываем:
Теперь для вашей банды или тим нужно при выборе сделать скины (какие скины относится к какой банде)
В паблик суем.
Также повторяем с остальными тимами или бандами как вам удобно.
Теперь приступим делать ганг зоны!
Допустим сделаем зону для грув стрит.
В самое начало пихаем это:
Теперь вставляем ниже указанное:
2197.193 - минимум по Х
-1887.144 - минимум по У
2630.716 - максимум по Х
-1381.833 - максимум по У
Для этого я использую удобную программу Xtreme Vehicle Plotter.Как ей пользоваться покажу позже.
Для того чтоб на карте были видны зоны в ниже указанный паблик пихаем:
В
Для того чтобы когда другие игроки захватывают зоны "захватываемая зона" мигала, делаем ниже указанное:
Теперь сделаем чтоб писало то что зона захватывается или захвачена!
Для этого в этом же паблике пишем:
ну и в свободное место пихаем:
Думаю ваша бандиты со своими ганг зонами готовы.
Дополнительно:
Если хотите чтоб у вашей банды был закрытый чат только для нее тогда делаем ниже указанное:
Теперь у вас есть тим чат для каждой команды, чтобы в него писать всего лишь стоит поставить в начале текста "!" восклицательный знак и далее пишите что хотите.
Если хотите чтоб игроки одной банды за убийство своего дружественного бандита соответственно наказывались делаем так.
В самое начало пихаем:
Потом
Все готово система анти тим килл!
И так я вам обещал научится пользыватся программой!
Чтобы сделать координаты для ганг зоны делаем следующие
Заходим в программу, выбераем нужный город где будете создавать ганг зону, с верху выбираем 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)! собствено урок дан.
И так начнем:
Для начала надо сделать команду или так сказать ТИМ.
В самое начало вписываем:
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)
-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
1. Добавить к глобальным переменным (ко всем new):
2. Добавим forward's (Ко всем forward):
3. Создать паблики, лучше в самом конце мода:
4. В OnGameModeInit() добавим:
5. В OnPlayerConnect() добавим:
6. В OnPlayerDisconnect() добавим:
7. В OnPlayerDeath() добавим:
8. В OnPlayerCommandText(playerid, cmdtext[]) добавим:
9. В public OnPlayerCommandText(playerid, cmdtext[]):
10.
Файл zone.ini:
Система /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 делать было нечего вот решил перевести ганг зоны
находим старую загрузку и удаляем
теперь вставляем мою
Cоздадим бд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; }
На этом все.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 рад помочь
[HR][/HR]
Модеры,попрошу добавить в шапку раздела,дабы это очень полезная информация для новичков.
[HR][/HR]
Последнее редактирование: