Raid_Liker
Умник
Всем привет вот решил выложить мануал как сделать магазин одежды как на Samp-RP. Ну чтож приступим.
Ко всем new'ам добовляем:
Далее в OnGameModeInit создадим меню и сделаем кнопки:
Дальше в OnPlayerSelectedMenuRow(playerid, row) перед последним ретурном вставляем это:
Создадим команду /clothes
Помог поставь +
Ко всем new'ам добовляем:
Код:
new Menu:BuyClothes;
new Menu:current = GetPlayerMenu(playerid);
new SkinMen[7][2] ={
{15,1000},
{66,1000},
{143,1000},
{50,1000},
{24,5000},
{23,50000},
{29,350000}
};
new SkinMale[5][2] ={
{12,1000},
{93,5000},
{192,100000},
{233,100000},
{216,2000000}
};
new ChangeSkin[MAX_PLAYERS];
Код:
BuyClothes = CreateMenu ( "Clothes", 1, 10.0, 130.0, 100.0, 80.0);//Создаём меню
AddMenuItem(BuyClothes, 0, "Next>>");//"Кнопка" Далее
AddMenuItem(BuyClothes, 0, "<<Previous");//"Кнопка" Назад
AddMenuItem(BuyClothes, 0, "Done");//"Кнопка" Выбор
AddMenuItem(BuyClothes, 0, "Exit");//"Кнопка" Отмена
Код:
[SPOILER]if(current == BuyClothes)//Если меню игрока buyclothes то..
{
switch(row)//Переключаем "кнопки"
{
case 0://Если он нажал на "кнопку" NExt to
{
if(PlayerInfo[playerid][pSex] == 1)//Если игрока мужик то..
{
ChangeSkin[playerid]++;//Увелчиваем переменную..
if(ChangeSkin[playerid] >= 6)//Если переменная равна ил более 6 то..
{
ChangeSkin[playerid] = 0;//Обнуляем её.. т.е. переходим к скину 0(Не CJ А каторый в Масиве SkinMen самый первый)
}
SetPlayerSkin(playerid,SkinMen[ChangeSkin[playerid]][0]);//Меняем игроку скин на тот каторый он выбрал
format(string,sizeof(string),"%d$",SkinMen[ChangeSkin[playerid]][1]);//Показываем ему стоимость скина
GameTextForPlayer(playerid,string,9999,1);
}
else// Или если игрок женщина
{
ChangeSkin[playerid]++;//велчиваем переменную
if(ChangeSkin[playerid] >= 5)//Если переменная равна или более 5 то
{
ChangeSkin[playerid] = 0;//Обнуляем её т.е. переходим к скину 0(Не CJ А каторый в Масиве SkinMale самый первый)
}
SetPlayerSkin(playerid,SkinMale[ChangeSkin[playerid]][0]);//Меняем её скин
format(string,sizeof(string),"%d$",SkinMale[ChangeSkin[playerid]][1]);//Показываем стоимость скина
GameTextForPlayer(playerid,string,9999,1);
}
ShowMenuForPlayer(BuyClothes, playerid);//Показываем меню, т.к. после нажатия на любую кнопку оно исчезает
}
case 1://Если нажал на кнопку Назад
{
if(PlayerInfo[playerid][pSex] == 1)//Если он мужик
{
ChangeSkin[playerid]--;//Уменьшаем переменную
if(ChangeSkin[playerid] <= 0)//Если пересменная меньше или равна 0 то
{
ChangeSkin[playerid] = 6;//Даём ей значение 6 переходим к самому последнему скину в масиве SkinMale
}
SetPlayerSkin(playerid,SkinMen[ChangeSkin[playerid]][0]);//Меняем скин
format(string,sizeof(string),"%d$",SkinMen[ChangeSkin[playerid]][1]);//Показываем стоимость
GameTextForPlayer(playerid,string,9999,1);
}
else//Если она женщина
{
ChangeSkin[playerid]--;//Уменьшаем переменную
if(ChangeSkin[playerid] <= 0)//Если переменная равна или меньше 0 то
{
ChangeSkin[playerid] = 5;// Ставим значение 5 и переходим к последниму скину в масиве SkinMale
}
SetPlayerSkin(playerid,SkinMale[ChangeFirstSkin[playerid]][0]);//Меняем скин
format(string,sizeof(string),"%d$",SkinMale[ChangeSkin[playerid]][1]);//Показываем стоимость
GameTextForPlayer(playerid,string,9999,1);
}
ShowMenuForPlayer(BuyClothes, playerid);//Показываем меню, зачем я уже говарил выше
}
case 2://Если игрока нажал на "кнопку" Даллее
{
new cost;//Создадим переменную..
cost = SkinMen[ChangeSkin[playerid]][1];//Приравниваем переменную к цене скина в масиве Цыфра 1 - второй столбик масива
new cena;//Создаём ещё одну переменную..
cena = SkinMen[ChangeSkin[playerid]][1];//Приравниваем переменную к цене скина в масиве Цыфра 1 - второй столбик масива
if(PlayerInfo[playerid][pSex] == 1)//Если он мужик то
{
if(GetPlayerMoney(playerid) >= cost)//Если у него денег больше и равно цене скина то
{
PlayerInfo[playerid][pChar] = GetPlayerSkin(playerid);//Узнаём его скин и записываем в акаунт
SetPlayerSkin(playerid,PlayerInfo[playerid][pChar]);//Меняем ему скин на тот каторый он купил
TogglePlayerControllable(playerid, 1);//Размораживаем его
SetCameraBehindPlayer(playerid);//Ставим нормально камеру(чтоб он не багал хз где а ккамера осталась в магазине)
SetPlayerPos(playerid,221.7944,-8.4229,1002.2109);//Меняем позицию
SetPlayerFacingAngle(playerid,273.5792);//Меняем поворот головы
SetPlayerInterior(playerid,5);//Даём 5 интерьер
GivePlayerMoney(playerid,-cost);//Забираем деньги за скин
}
else//Если нету денег то
{
SendClientMessage(playerid,COLOR_GREY,"У вас не достатачн денег");//Пишем сообщение
ShowMenuForPlayer(BuyClothes, playerid);//Показываем меню..
}
}
else//Если она женщина то
{
if(GetPlayerMoney(playerid) >= cena)//Если у неё денег больше или равно цене скину в масиве то
{
PlayerInfo[playerid][pChar] = GetPlayerSkin(playerid);//УЗнаём её скин и записваем в акаунт
SetPlayerSkin(playerid,PlayerInfo[playerid][pChar]);//Меняем ей скин каторый она купила
TogglePlayerControllable(playerid, 1);//Размораживаем
SetCameraBehindPlayer(playerid);//Ставим камеру нормально
SetPlayerPos(playerid,221.7944,-8.4229,1002.2109);//Меняем позицию
SetPlayerFacingAngle(playerid,273.5792);//Меняем поворт головы
SetPlayerInterior(playerid,5);//Даём 5 интерьер
GivePlayerMoney(playerid,-cost);//Забираем деньги за скин
}
else//Если у неё меньше денег то
{
SendClientMessage(playerid,COLOR_GREY,"У вас не достатачн денег");//Машем сообщение
ShowMenuForPlayer(BuyClothes, playerid);//Паказываем меню
}
}
}
case 3://Если игрок нажал на "кнопку" Exit
{
SetPlayerSkin(playerid,PlayerInfo[playerid][pChar]);//Меняем на скин каторый у игрока был
TogglePlayerControllable(playerid, 1);//Размораживаем
SetPlayerPos(playerid,221.7944,-8.4229,1002.2109);//Меняем позицию
SetPlayerFacingAngle(playerid,273.5792);//Меняем поворот головы
SetPlayerInterior(playerid,5);//Даём 5 интерьер
SetCameraBehindPlayer(playerid);//Делаем норм камеру
}
}
}[/SPOILER]
Код:
if(strcmp(cmd, "/clothes", true) == 0)
{
if(gPlayerLogged[playerid] != 0)//Если игрок залогинен
{
if(PlayerToPoint(5.0,playerid,X,Y,Z))//Если игрок находится в превельных координатах(Коорджината ставим свои!)
{
if(PlayerInfo[playerid][pLeader]==0 && PlayerInfo[playerid][pMember] == 0)//Если игрок не состоит во фракции и не лидер
{
ShowMenuForPlayer(BuyClothes, playerid);//Показываем ему меню..
new rand = random(sizeof(gInviteSpawns));//Создаём переменню рандум и приравниваем её
SetPlayerPos(playerid, 222.3489,-8.5845,1002.2109); //меняем позицию
SetPlayerFacingAngle(playerid, 266.7302);//Меняем поворто головы
SetPlayerCameraPos(playerid,222.3489 + 3, -8.5845, 1002.2109);//Меняем позицию камеры, чтобы она сметрела прямо на игрока
SetPlayerCameraLookAt(playerid,222.3489, -8.5845, 1002.2109);//Устанавлием направление камеры
TogglePlayerControllable(playerid, 0);//Замораживаем, чтоы не ходил туда сюда
ChangeSkin[playerid]=0;//Обнуляем переменную.
}
}
}
return 1;
}
