Создание ганг зон - Уроки - Уроки скриптинга в samp - Помощь по скриптингу SAMP
Четверг, 08.12.2016, 03:11
Приветствую Вас Гость | RSS

Samp Helped

Меню сайта

Категории раздела

Мини-чат

200

Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Уроки скриптинга в samp

Главная » Статьи » Уроки

Создание ганг зон
Здравие всем! Я просвещу вас как создавать тимы с ганг зонами!
И так начнем:
Для начала надо сделать команду или так сказать ТИМ.
В самое начало вписываем:

Code

new gTeam[MAX_PLAYERS];//Это для различия тим или банд.  
#define TEAM_BALLA_COLOR 0x80008096 //цвет для вашей тим команды или банды  
#define TEAM_GROVE 1//название тим команды или банды! обязатльно указывайте при создании новой банды ее номер если хотите создать еще 1 банду допустим баласов пишите так  
#define TEAM_BALLA 2 //обязательно перенумеровывайте.

Теперь для вашей банды или тим нужно при выборе сделать скины (какие скины относится к какой банде)
В паблик суем.

Code


public OnPlayerRequestClass(playerid, classid)  
{  
if(classid == 5)//5 номер скина! Но считать надо от нуля  
{  
gTeam[playerid] = TEAM_GROVE;//Здесь указываем для какой тим скин  
GameTextForPlayer(playerid, "GROVE", 1000, 3);//Ну и тексдрав для различия  
}  
retirn 1;  
}  

Также повторяем с остальными тимами или бандами как вам удобно.

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

В самое начало пихаем это:

Code


new taketurfbackcount[MAX_PLAYERS];  
new gangkillcount[MAX_PLAYERS];  
#define REOWN_TURF 4  
#define GANGAREA_WARNINGS 2  
#define GANGAREA_TAKE 4  
new grove;//название зоны или территории для захвата.  

Теперь вставляем ниже указанное.

Code


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.Как ей пользоваться покажу позже.
Для того чтоб на карте были видны зоны в ниже указанный паблик пихаем: GangZoneShowForPlayer(playerid,grove, 0x24FF0AB9);

Code


public OnPlayerConnect(playerid)  
{  
GangZoneShowForPlayer(playerid,grove, COLOR_GREEN);//Чтоб на карте были видны зоны.grove - название зоны в даный момент мы делаем грув. и соответственно ее цвет.Желательно указывать цвет вашей банды для которой вы это делаете в данный момент грув.  
return 1;  
}

Для того чтобы когда другие игроки захватывают зоны "захватываемая зона" мигала, делаем ниже указанное.

Code


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;  
}  
}  

//Теперь сделаем чтоб писало то что зона захватывается или захвачена!
Для этого в этом же паблики пишем.

Code


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;  
}  

ну и в свободное место пихаем

Code


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;  
}  

Думаю ваша бандиты со своими ганг зонами готовы.

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

Code


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;  
}  

Теперь у вас есть тим чат для каждой команды, чтобы в него писать всего лиш стоит поставить в начале текста "!" восклицательный знак идалее пишите что хотите.

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

В самое начало пихаем

Code


#define COLOR_RED 0xAA3333AA // RED  
#define COLOR_GREEN 0x33AA33FF // GREEN  
new tk[MAX_PLAYERS];  

//Потом

[code[

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;
}

[/code]

Все готово система анти тим килл!

И так я вам обещал научится пользыватся программой!
Чтобы сделать координаты для ганг зоны делаем следующие
Заходим в программу, выбераем нужный город где будете создавать ганг зону, с верху выбираем 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)! собствено урок дан.

Code
Код программы
Категория: Уроки | Добавил: Style (13.05.2011)
Просмотров: 11903 | Комментарии: 5 | Рейтинг: 3.7/3
Всего комментариев: 5
5  
Здравствуйте Дорогие друзья.
Я хочу представить вам замечательный сервер версии samp(0.3x)
[RPG]-Samp Stories:Episode TWO.
Вот IP сервера: 176.32.37.221:7777
Форум сервера: board.samp-stories.ru
Мод не скачанный и не списанный,а написано совершенно с нуля.
На сервере вас Ждет:
1)Постоянная работа сервера.
2)Опытная Администрация.
3)Новые Обновления.
4)Помощники помогут вам по игровому процессу.
5)Добрые и отзывчивые игроки.
Администрация Сервера Samp Stories:Episode TWO -Будет рада вам.

4  
Тема спизжена !!! http://pawn-wiki.ru/index.php?/topic/234-sozdanie-team-i-gang-zon/ с вики

3  
Спасибо за урок. Но система не доработана. Она не сохраняет ганг зоны...
То есть если я играя за Grove захвачу терру Ballas`ов, она перекраситя в мой цвет. Все норм.
Но если я перезайду на сервер, то территория балласов снова будет пурпурной. Гиганский минус...
Если кто-то знает лучшую чичтему, дайте знать пожалуйста. Очень нужно!
Skуpe: toy_2012
Даже заплачу! Очень над хорошие ганг зоны!

2  
Можно спросить, это как отдельный мод делать или вписывать в поставленный над?

1  
этот урок по сети гоняют уже несколько лет, просто переменные меняют, и нужного ничего не выкладывают

Имя *:
Email *:
Код *: