MENU
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » SA-MP SCRIPTING » Школа PAWNO » Создание фракций в SAMP
Создание фракций в SAMP
Chev_cheliosДата: Воскресенье, 17-Июл-2011, 19:45 | Сообщение # 1
Уважаемый человек
Сообщений: 104
Награды: 0
Репутация: 63
Статус:
Итак сегодня мы будем создавать фракцию!

Итак сразу перейдем к делу:

Для начало создадим скины для фракции, для этого нам понадобяться:
1) ID скинов, можно узнать здесь http://world-of-gta.ru/samp_wiki/index/Category:Skins
2) Допустим создадим банду Grove, их скины: 105,106,107 где 105 позьмем как лидерский

Создаем новую переменную допустим
new GrovePed[2][1] = { //Где 3 - это число скинов, а 1 это сколько параметров в скине
{106},
{107} //Не забывайте в последнем скине уберать ","
};

Мы с вами создали скины для нашей новой фракции Grove

Теперь надо их вставить дял выбора:

Находим if(strcmp(cmd, "/invite", true) == 0)

И видем чуть ниже примерно такие строки:
if(PlayerInfo[playerid][pLeader] == 1) { PlayerInfo[para1][pTeam] = 1; ftext = "ДПС"; ChosenSkin[para1] = 288; SetPlayerSkin(para1, 288); }
else if(PlayerInfo[playerid][pLeader] == 2) { PlayerInfo[para1][pTeam] = 2; ftext = "Полиция"; ChosenSkin[para1] = 265; SetPlayerSkin(para1, 265); }

PlayerInfo[playerid][pLeader] == 1 - это есть ID фракции которой будем присваивать скин. В данном случае ID - 1 (В стандартном ГФ это Полиция)
Для того что бы присвоить нашей новой банде скин последним прописываем следую строчку:
else if(PlayerInfo[playerid][pLeader] == ID Новой фракции) { PlayerInfo[para1][pTeam] = ID Новой фракции; ftext = "Grove"; ChosenSkin[para1] = 106; SetPlayerSkin(para1, 106); }

Где 106 - это ID скина участника банды

А так же надо будет поместить наши скины для прокрутки:

Ищем public OnPlayerText(playerid, text[])

Ниже видим примерно такие строки:
case 1:
{
if(SelectCharPlace[playerid] == 1) { SetPlayerSkin(playerid, DPSPed[0][0]); SelectCharPlace[playerid] = 2; ChosenSkin[playerid] = DPSPed[0][0]; }
else if(SelectCharPlace[playerid] == 2) { SetPlayerSkin(playerid, DPSPed[1][0]); SelectCharPlace[playerid] = 3; ChosenSkin[playerid] = DPSPed[1][0]; }
else if(SelectCharPlace[playerid] == 3) { SetPlayerSkin(playerid, DPSPed[2][0]); SelectCharPlace[playerid] = 4; ChosenSkin[playerid] = DPSPed[2][0]; }
else if(SelectCharPlace[playerid] == 4) { SetPlayerSkin(playerid, DPSPed[3][0]); SelectCharPlace[playerid] = 5; ChosenSkin[playerid] = DPSPed[3][0]; }
else if(SelectCharPlace[playerid] == 5) { SetPlayerSkin(playerid, DPSPed[4][0]); SelectCharPlace[playerid] = 6; ChosenSkin[playerid] = DPSPed[4][0]; }
else if(SelectCharPlace[playerid] == 6) { SetPlayerSkin(playerid, DPSPed[5][0]); SelectCharPlace[playerid] = 7; ChosenSkin[playerid] = DPSPed[5][0]; }
else if(SelectCharPlace[playerid] == 7) { SetPlayerSkin(playerid, DPSPed[6][0]); SelectCharPlace[playerid] = 1; ChosenSkin[playerid] = DPSPed[6][0]; }
}

И ниже добавляем наши скины:

case ID фракциии:
{
if(SelectCharPlace[playerid] == 1) { SetPlayerSkin(playerid, GrovePed[0][0]); SelectCharPlace[playerid] = 2; ChosenSkin[playerid] = GrovePed[0][0]; }
else if(SelectCharPlace[playerid] == 2) { SetPlayerSkin(playerid, GrovePed[1][0]); SelectCharPlace[playerid] = 3; ChosenSkin[playerid] = GrovePed[1][0]; }
else if(SelectCharPlace[playerid] == 3) { SetPlayerSkin(playerid, GrovePed[2][0]); SelectCharPlace[playerid] = 1; ChosenSkin[playerid] = GrovePed[2][0]; }
}

Теперь перейдем к созданию скина для лидера:

1) Найдем в моде такие строки if(strcmp(cmd, "/makeleader", true) == 0)

Эта команда отвечает за присвоения человеку Лидера той или иной фракции

В этой команде видим примерно такие строки:
if(level == 0) { PlayerInfo[para1][pChar] = 0; }
else if(level == 1) { PlayerInfo[para1][pChar] = 295; }//Где 1 - это ID фракции, а 295 - это ID скина
else if(level == 2) { PlayerInfo[para1][pChar] = 287; }

Так как мы с вами взяли скин с ID 105 то в конец скинов добавим
else if(level == ID фракции) { PlayerInfo[para1][pChar] = 105; }

Важно! Обязательно посматри ID последней Фракции:
Например если у вас последний ID был 11, то нашей банде Grove присваиваем 12 ID

Значит вы создали скин лидеру, но на этом мы не заканчиваем работать с командой /makeleader

Так же что бы команда не ругалась, исправляем строчку
if(level > Id последней фракции || level < 0)

И вписываем вместо строк "Id последней фракции" ID новой созданной Фракции!

Ту же самую операцию проводим и с PlayerInfo[para1][pTeam] = ID последней фракции;

Наконец то мы сделали скин лидеру! Теперь займемся Чатом Банды:

Ищем if(strcmp(cmd, "/family", true) == 0 || strcmp(cmd, "/f", true) == 0)

Видем ниже что идут Ранги прописываемые людям в чате
Дописываем нашу новую фракцию:

else if(member==ID Фракции)
{
if(PlayerInfo[playerid][pRank] == 6) { format(string, sizeof(string), "** Ас %s: %s. )) **", sendername, result); }
else if(PlayerInfo[playerid][pRank] == 5) { format(string, sizeof(string), "** Пилот %s: %s. )) **", sendername, result); }
else if(PlayerInfo[playerid][pRank] == 4) { format(string, sizeof(string), "** Гонщик %s: %s. )) **", sendername, result); }
else if(PlayerInfo[playerid][pRank] == 3) { format(string, sizeof(string), "** Штурман %s: %s. )) **", sendername, result); }
else if(PlayerInfo[playerid][pRank] == 2) { format(string, sizeof(string), "** Уверенный %s: %s. )) **", sendername, result); }
else if(PlayerInfo[playerid][pRank] == 1) { format(string, sizeof(string), "** Сопляк %s: %s. )) **", sendername, result); }
else { format(string, sizeof(string), "** Новичок %s: %s. )) **", sendername, result); }
SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string);}

Ну я думаю здесь не надо ничего обьяснять кроме:
else if(PlayerInfo[playerid][pRank] == 1) { format(string, sizeof(string), "** Сопляк %s: %s. )) **", sendername, result); } - это есть условие, Допустим если у игрока Ранг 1, то в чате будет писать Сопляк итд

Чуть ниже так же добавим ранг для Лидера:

else if(leader==ID факции)
{
format(string, sizeof(string), "** Крестный отец %s: %s. )) **", sendername, result);
SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string);}

С чатом мы закончили, перейдем к Оружию!

Ищем public SetPlayerWeapons(playerid)

И ниже добовляем такие строки:
if(PlayerInfo[playerid][pMember] == ID фракции || PlayerInfo[playerid][pLeader] == ID фракции)
{
GivePlayerWeapon(playerid, 29, 500); //Mp5
GivePlayerWeapon(playerid, 24, 50);//deagle
GivePlayerWeapon(playerid, 4, 1);//knife

}

где в GivePlayerWeapon(playerid, 29, 500); 29 - это ID Оружия, можно узнать здесь http://world-of-gta.ru/samp_wiki/index/Weapons, а 500 - количество патронов

Теперь добавим место появления Фракции(Спавн)

ищем public SetPlayerSpawn(playerid)

Ниже добавляем такие строки

if(PlayerInfo[playerid][pMember] == ID фракции || PlayerInfo[playerid][pLeader] == ID фракции)
{
SetPlayerToTeamColor(playerid);
SetPlayerPos(playerid, 325.9258,307.3484,999.1484);
SetPlayerFacingAngle(playerid, 122.5681);
SetPlayerInterior(playerid, 5);
PlayerInfo[playerid][pInt] = 5;
return 1;
}

Где SetPlayerToTeamColor(playerid); - Мы делаем человека невидимым на карте
SetPlayerPos(playerid, 325.9258,307.3484,999.1484); - Это коориданты спавна X,Y,Z(Узнать можно через команду /save в игре)
SetPlayerFacingAngle(playerid, 122.5681); - Угол поворота игрока (от 0 до 360)SetPlayerInterior(playerid, 5); и PlayerInfo[playerid][pInt] = 5; - Это ID интерьера(о интерьерах узнаем в других Уроках, если человек должен появляться на улице то ставим 0)

На этом всё

P.S Не забываем про plus ))


 
Форум » SA-MP SCRIPTING » Школа PAWNO » Создание фракций в SAMP
  • Страница 1 из 1
  • 1
Поиск: