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

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

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

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

Мануал Система магазина скинов[ALL]

Статус
В этой теме нельзя размещать новые ответы.

free.time_

Умник
Написал систему магазина скинов на TextDraw, подобных мануалов/уроков я тут не видел.
И так приступим:

Сперва нам нужно создать пикап входа в магазин:

Для этого нам необходимо объявить несколько переменных:
PHP:
new buyskinv, selectskin, buyskinvix;
После чего, необходимо прикрепить пикапы к нашим переменным, входа/выхода(public OnGameModeInit):
PHP:
	buyskinv = CreatePickup(19132, 23, 461.7174,-1500.8893,31.0443,-1);
	buyskinvix = CreatePickup(19132, 23, 207.0089,-140.2160,1003.5078,-1);
	selectskin = CreatePickup(19134, 23, 201.9689,-131.0056,1003.5078,-1);
После создания пикапов, необходимо чтобы они реагировали когда мы к ним подходим(public OnPlayerPickUpPickup):
PHP:
if(pickupid == buyskinv)
	{
 		SetPlayerVirtualWorld(playerid, playerid);
	  	SetPlayerInterior(playerid, 3);
		SetPlayerPos(playerid, 206.4627,-137.7076,1003.0938);
	}
	if(pickupid == buyskinvix)
	{
 		SetPlayerVirtualWorld(playerid, playerid);
	  	SetPlayerInterior(playerid, 0);
		SetPlayerPos(playerid, 459.2481,-1501.1431,31.0392);
		SetPlayerFacingAngle(playerid,98.1108);
	}
	if(pickupid == selectskin)
	{
	    if(Player[playerid][pMember] != 0 || Player[playerid][pSetLeader] != 0) return SendClientMessage(playerid, -1, ""Y"Вы состоите во фракции введите /leave, чтобы уволится"); // проверку заменить на свою
 		SetPlayerVirtualWorld(playerid, playerid);
	  	SetPlayerInterior(playerid, 3);
	  	TogglePlayerControllable(playerid, 0);
	    SetPlayerPos(playerid,215.3667,-131.4807,1003.5078);
	   	SetPlayerFacingAngle(playerid,89.6741);
	   	SetPlayerCameraPos(playerid,209.4374,-131.5909,1003.5078);
	   	SetPlayerCameraLookAt(playerid,209.4374,-131.5909,1003.5078);
	   	if(Player[playerid][pSex] == 1) SetPlayerSkin(playerid, 1), SelectModel[playerid] = 28, SetSkin[playerid] = 1, SetMoney[playerid] = 1305;
		else SetPlayerSkin(playerid, 151), SelectModel[playerid] = 28, SetSkin[playerid] = 151, SetMoney[playerid] = 1700;
   		TextDrawShowForPlayer(playerid,ButtonLeftt);
		TextDrawShowForPlayer(playerid,ButtonRightt);
		TextDrawShowForPlayer(playerid,ButtonSelectt);
		SelectTextDraw(playerid, 0xFF4040AA);
  		LevelModel[playerid] = 1;
   		TogglePlayerControllable(playerid, 0);
   		SendClientMessage(playerid, -1, "{bbbbbb}Подсказка: Нажмите {f36223}ESC{bbbbbb}, чтобы отменить выбор одежды.");
	}
Ах да, совсем забыл про TD:
PHP:
new LevelModel[MAX_PLAYERS], SelectModel[MAX_PLAYERS], SetMoney[MAX_PLAYERS], Text:ButtonLeftt, Text:ButtonRightt, Text:ButtonSelectt, SetMoney[MAX_PLAYERS], SetSkin[MAX_PLAYERS];
Теперь нам необходимо создать сами td(OnPlayerConnect):
PHP:
	//
 	ButtonLeftt = TextDrawCreate(50.0, 200.0, "LD_BEAT:left");
	TextDrawFont(ButtonLeftt, 4);
	TextDrawTextSize(ButtonLeftt, 50, 25);
	TextDrawSetSelectable(ButtonLeftt, 1);

	ButtonRightt = TextDrawCreate(530.0, 200.0, "LD_BEAT:right");
	TextDrawFont(ButtonRightt, 4);
	TextDrawTextSize(ButtonRightt, 50, 25);
	TextDrawSetSelectable(ButtonRightt, 1);

	ButtonSelectt = TextDrawCreate(382.000000, 371.000000, "Select");
	TextDrawTextSize(ButtonSelectt, 482.0, 22.0);
	TextDrawBackgroundColor(ButtonSelectt, 255);
	TextDrawFont(ButtonSelectt, 3);
	TextDrawLetterSize(ButtonSelect, 0.899999, 2.400000);
	TextDrawColor(ButtonSelectt, 869072895);
	TextDrawSetOutline(ButtonSelectt, 0);
	TextDrawSetProportional(ButtonSelectt, 1);
	TextDrawSetShadow(ButtonSelectt, 1);
	TextDrawSetSelectable(ButtonSelectt, 1);
Теперь можно и настроить кликабельность TD(OnPlayerClickTextDraw), у кого нет этого паблика создайте:
PHP:
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{	
if(LevelModel[playerid] == 1)
    {
        if(clickedid == ButtonRightt)
		{
	 		if(Player[playerid][pSex] == 1)
			{
				switch(SelectModel[playerid])
			    {
			        case 1: SetPlayerSkin(playerid, 1), SelectModel[playerid] = 2, SetSkin[playerid] = 1, SetMoney[playerid] = 1305;
					case 2: SetPlayerSkin(playerid, 230), SelectModel[playerid] = 3, SetSkin[playerid] = 230, SetMoney[playerid] = 1453;
					case 3: SetPlayerSkin(playerid, 212), SelectModel[playerid] = 4, SetSkin[playerid] = 212, SetMoney[playerid] = 1500;
					case 4: SetPlayerSkin(playerid, 210), SelectModel[playerid] = 5, SetSkin[playerid] = 210, SetMoney[playerid] = 1600;
					case 5: SetPlayerSkin(playerid, 202), SelectModel[playerid] = 6,SetSkin[playerid] = 202, SetMoney[playerid] = 2000;
					case 6: SetPlayerSkin(playerid, 4), SelectModel[playerid] = 7, SetSkin[playerid] = 4, SetMoney[playerid] = 2400;
					case 7: SetPlayerSkin(playerid, 3), SelectModel[playerid] = 8, SetSkin[playerid] = 3, SetMoney[playerid] = 2700;
					case 8: SetPlayerSkin(playerid, 15), SelectModel[playerid] = 9, SetSkin[playerid] = 15, SetMoney[playerid] = 3102;
					case 9: SetPlayerSkin(playerid, 66), SelectModel[playerid] = 10, SetSkin[playerid] = 66, SetMoney[playerid] = 3400;
					case 10: SetPlayerSkin(playerid, 19), SelectModel[playerid] = 11, SetSkin[playerid] = 19, SetMoney[playerid] = 3600;
					case 11: SetPlayerSkin(playerid, 170), SelectModel[playerid] = 12, SetSkin[playerid] = 170, SetMoney[playerid] = 3850;
					case 12: SetPlayerSkin(playerid, 21), SelectModel[playerid] = 13, SetSkin[playerid] = 21, SetMoney[playerid] = 3900;
					case 13: SetPlayerSkin(playerid, 221), SelectModel[playerid] = 14, SetSkin[playerid] = 221, SetMoney[playerid] = 4070;
					case 14: SetPlayerSkin(playerid, 272), SelectModel[playerid] = 15, SetSkin[playerid] = 272, SetMoney[playerid] = 6400;
					case 15: SetPlayerSkin(playerid, 126), SelectModel[playerid] = 16, SetSkin[playerid] = 126, SetMoney[playerid] = 7000;
					case 16: SetPlayerSkin(playerid, 249), SelectModel[playerid] = 17, SetSkin[playerid] = 249, SetMoney[playerid] = 7800;
					case 17: SetPlayerSkin(playerid, 48), SelectModel[playerid] = 18, SetSkin[playerid] = 48, SetMoney[playerid] = 8500;
					case 18: SetPlayerSkin(playerid, 46), SelectModel[playerid] = 19, SetSkin[playerid] = 46, SetMoney[playerid] = 12000;
					case 19: SetPlayerSkin(playerid, 297), SelectModel[playerid] = 20, SetSkin[playerid] = 297, SetMoney[playerid] = 14566;
					case 20: SetPlayerSkin(playerid, 149), SelectModel[playerid] = 21, SetSkin[playerid] = 149, SetMoney[playerid] = 15945;
					case 21: SetPlayerSkin(playerid, 299), SelectModel[playerid] = 22, SetSkin[playerid] = 299, SetMoney[playerid] = 17080;
					case 22: SetPlayerSkin(playerid, 82), SelectModel[playerid] = 23, SetSkin[playerid] = 82, SetMoney[playerid] = 18645;
					case 23: SetPlayerSkin(playerid, 289), SelectModel[playerid] = 24, SetSkin[playerid] = 289, SetMoney[playerid] = 21090;
					case 24: SetPlayerSkin(playerid, 291), SelectModel[playerid] = 25, SetSkin[playerid] = 291, SetMoney[playerid] = 20400;
					case 25: SetPlayerSkin(playerid, 147), SelectModel[playerid] = 26, SetSkin[playerid] = 147, SetMoney[playerid] = 23000;
					case 26: SetPlayerSkin(playerid, 296), SelectModel[playerid] = 27, SetSkin[playerid] = 296, SetMoney[playerid] = 24050;
					case 27: SetPlayerSkin(playerid, 83), SelectModel[playerid] = 28, SetSkin[playerid] = 83, SetMoney[playerid] = 24456;
					case 28: SetPlayerSkin(playerid, 294), SelectModel[playerid] = 1, SetSkin[playerid] = 294, SetMoney[playerid] = 26740;
					//case 29: SetPlayerSkin(playerid, 4), SelectModel[playerid] = 1, SetSkin[playerid] = 78, SetMoney[playerid] -= 2400;
				//	case 30: SetPlayerSkin(playerid, 4), SelectModel[playerid] = 1, SetSkin[playerid] = 78, SetMoney[playerid] -= 2400;
				}
			}
  			else
			{
     		    switch(SelectModel[playerid])
			    {
			        case 1: SetPlayerSkin(playerid, 151), SelectModel[playerid] = 28, SetSkin[playerid] = 151, SetMoney[playerid] = 1700;
			        case 2: SetPlayerSkin(playerid, 201), SelectModel[playerid] = 1, SetSkin[playerid] = 201, SetMoney[playerid] = 2000;
			        case 3: SetPlayerSkin(playerid, 152), SelectModel[playerid] = 2, SetSkin[playerid] = 152, SetMoney[playerid] = 3460;
			        case 4: SetPlayerSkin(playerid, 55), SelectModel[playerid] = 5, SetSkin[playerid] = 55, SetMoney[playerid] = 5600;
			        case 5: SetPlayerSkin(playerid, 9), SelectModel[playerid] = 6, SetSkin[playerid] = 9, SetMoney[playerid] = 6450;
			        case 6: SetPlayerSkin(playerid, 211), SelectModel[playerid] = 7, SetSkin[playerid] = 211, SetMoney[playerid] = 7480;
			        case 7: SetPlayerSkin(playerid, 69), SelectModel[playerid] = 8, SetSkin[playerid] = 69, SetMoney[playerid] = 7856;
			        case 8: SetPlayerSkin(playerid, 214), SelectModel[playerid] = 9, SetSkin[playerid] = 214, SetMoney[playerid] = 9300;
			        case 9: SetPlayerSkin(playerid, 215), SelectModel[playerid] = 10, SetSkin[playerid] = 215, SetMoney[playerid] = 10000;
			        case 10: SetPlayerSkin(playerid, 193), SelectModel[playerid] = 11, SetSkin[playerid] = 193, SetMoney[playerid] = 10734;
			        case 11: SetPlayerSkin(playerid, 216), SelectModel[playerid] = 12, SetSkin[playerid] = 216, SetMoney[playerid] = 11490;
			        case 12: SetPlayerSkin(playerid, 233), SelectModel[playerid] = 13, SetSkin[playerid] = 233, SetMoney[playerid] = 13000;
			        case 13: SetPlayerSkin(playerid, 40), SelectModel[playerid] = 14, SetSkin[playerid] = 40, SetMoney[playerid] = 13740;
			        case 14: SetPlayerSkin(playerid, 192), SelectModel[playerid] = 15, SetSkin[playerid] = 192, SetMoney[playerid] = 14500;
			        case 15: SetPlayerSkin(playerid, 91), SelectModel[playerid] = 1, SetSkin[playerid] = 91, SetMoney[playerid] = 16000;
   				}   
 			}
		}
		else if(clickedid == ButtonLeftt)
		{
	 		if(Player[playerid][pSex] == 1)
			{
			    switch(SelectModel[playerid])
			    {
			        case 1: SetPlayerSkin(playerid, 1), SelectModel[playerid] = 28, SetSkin[playerid] = 1, SetMoney[playerid] = 1305;
			        case 28: SetPlayerSkin(playerid, 294), SelectModel[playerid] = 27, SetSkin[playerid] = 294, SetMoney[playerid] = 26740;
			        case 27: SetPlayerSkin(playerid, 83), SelectModel[playerid] = 26, SetSkin[playerid] = 83, SetMoney[playerid] = 24456;
			        case 26: SetPlayerSkin(playerid, 296), SelectModel[playerid] = 25, SetSkin[playerid] = 296, SetMoney[playerid] = 24050;
			        case 25: SetPlayerSkin(playerid, 147), SelectModel[playerid] = 24, SetSkin[playerid] = 147, SetMoney[playerid] = 23000;
			        case 24: SetPlayerSkin(playerid, 291), SelectModel[playerid] = 23, SetSkin[playerid] = 291, SetMoney[playerid] = 20400;
			        case 23: SetPlayerSkin(playerid, 289), SelectModel[playerid] = 22, SetSkin[playerid] = 289, SetMoney[playerid] = 21090;
                    case 22: SetPlayerSkin(playerid, 82), SelectModel[playerid] = 21, SetSkin[playerid] = 82, SetMoney[playerid] = 18645;
                    case 21: SetPlayerSkin(playerid, 299), SelectModel[playerid] = 20, SetSkin[playerid] = 299, SetMoney[playerid] = 17080;
                    case 20: SetPlayerSkin(playerid, 149), SelectModel[playerid] = 19, SetSkin[playerid] = 149, SetMoney[playerid] = 15945;
                    case 19: SetPlayerSkin(playerid, 297), SelectModel[playerid] = 18, SetSkin[playerid] = 297, SetMoney[playerid] = 14566;
                    case 18: SetPlayerSkin(playerid, 46), SelectModel[playerid] = 17, SetSkin[playerid] = 46, SetMoney[playerid] = 12000;
                    case 17: SetPlayerSkin(playerid, 48), SelectModel[playerid] = 16, SetSkin[playerid] = 48, SetMoney[playerid] = 8500;
                    case 16: SetPlayerSkin(playerid, 249), SelectModel[playerid] = 15, SetSkin[playerid] = 249, SetMoney[playerid] = 7800;
                    case 15: SetPlayerSkin(playerid, 126), SelectModel[playerid] = 14, SetSkin[playerid] = 126, SetMoney[playerid] = 7000;
                    case 14: SetPlayerSkin(playerid, 272), SelectModel[playerid] = 13, SetSkin[playerid] = 272, SetMoney[playerid] = 6400;
                    case 13: SetPlayerSkin(playerid, 221), SelectModel[playerid] = 12, SetSkin[playerid] = 221, SetMoney[playerid] = 4070;
                    case 12: SetPlayerSkin(playerid, 21), SelectModel[playerid] = 11, SetSkin[playerid] = 21, SetMoney[playerid] = 3900;
                    case 11: SetPlayerSkin(playerid, 170), SelectModel[playerid] = 10, SetSkin[playerid] = 170, SetMoney[playerid] = 3850;
                    case 10: SetPlayerSkin(playerid, 19), SelectModel[playerid] = 9, SetSkin[playerid] = 19, SetMoney[playerid] = 3600;
                    case 9: SetPlayerSkin(playerid, 66), SelectModel[playerid] = 8, SetSkin[playerid] = 66, SetMoney[playerid] = 3400;
                    case 8: SetPlayerSkin(playerid, 15), SelectModel[playerid] = 7, SetSkin[playerid] = 15, SetMoney[playerid] = 3102;
                    case 7: SetPlayerSkin(playerid, 3), SelectModel[playerid] = 6, SetSkin[playerid] = 3, SetMoney[playerid] = 2700;
                    case 6: SetPlayerSkin(playerid, 4), SelectModel[playerid] = 5, SetSkin[playerid] = 4, SetMoney[playerid] = 2400;
                    case 5: SetPlayerSkin(playerid, 202), SelectModel[playerid] = 4,SetSkin[playerid] = 202, SetMoney[playerid] = 2000;
                    case 4: SetPlayerSkin(playerid, 210), SelectModel[playerid] = 3, SetSkin[playerid] = 210, SetMoney[playerid] = 1600;
                    case 3: SetPlayerSkin(playerid, 212), SelectModel[playerid] = 2, SetSkin[playerid] = 212, SetMoney[playerid] = 1500;
                    case 2: SetPlayerSkin(playerid, 230), SelectModel[playerid] = 1, SetSkin[playerid] = 230, SetMoney[playerid] = 1453;
				}
			}
  			else
     		{
     		    switch(SelectModel[playerid])
			    {
			        case 1: SetPlayerSkin(playerid, 151), SelectModel[playerid] = 15, SetSkin[playerid] = 151, SetMoney[playerid] = 1700;
			        case 15: SetPlayerSkin(playerid, 91), SelectModel[playerid] = 14, SetSkin[playerid] = 91, SetMoney[playerid] = 16000;
			        case 14: SetPlayerSkin(playerid, 192), SelectModel[playerid] = 13, SetSkin[playerid] = 192, SetMoney[playerid] = 14500;
			        case 13: SetPlayerSkin(playerid, 40), SelectModel[playerid] = 12, SetSkin[playerid] = 40, SetMoney[playerid] = 13740;
			        case 12: SetPlayerSkin(playerid, 233), SelectModel[playerid] = 11, SetSkin[playerid] = 233, SetMoney[playerid] = 13000;
			        case 11: SetPlayerSkin(playerid, 216), SelectModel[playerid] = 10, SetSkin[playerid] = 216, SetMoney[playerid] = 11490;
			        case 10: SetPlayerSkin(playerid, 193), SelectModel[playerid] = 9, SetSkin[playerid] = 193, SetMoney[playerid] = 10734;
			        case 9: SetPlayerSkin(playerid, 215), SelectModel[playerid] = 8, SetSkin[playerid] = 215, SetMoney[playerid] = 10000;
			        case 8: SetPlayerSkin(playerid, 214), SelectModel[playerid] = 7, SetSkin[playerid] = 214, SetMoney[playerid] = 9300;
			        case 7: SetPlayerSkin(playerid, 69), SelectModel[playerid] = 6, SetSkin[playerid] = 69, SetMoney[playerid] = 7856;
			        case 6: SetPlayerSkin(playerid, 211), SelectModel[playerid] = 5, SetSkin[playerid] = 211, SetMoney[playerid] = 7480;
			        case 5: SetPlayerSkin(playerid, 9), SelectModel[playerid] = 4, SetSkin[playerid] = 9, SetMoney[playerid] = 6450;
			        case 4: SetPlayerSkin(playerid, 55), SelectModel[playerid] = 3, SetSkin[playerid] = 55, SetMoney[playerid] = 5600;
                    case 3: SetPlayerSkin(playerid, 152), SelectModel[playerid] = 2, SetSkin[playerid] = 152, SetMoney[playerid] = 3460;
                    case 2: SetPlayerSkin(playerid, 201), SelectModel[playerid] = 1, SetSkin[playerid] = 201, SetMoney[playerid] = 2000;
   				}
			}
		}
		else if(clickedid == ButtonSelectt)
		{
		    if(GetPlayerCash(playerid) < SetMoney[playerid]) return SendClientMessage(playerid, COLOR_YELLOW, "У Вас недостаточно денег для покупки этой одежды.");
		    format(tsg, sizeof(tsg), "Данная одежда стоит %d$, Вы действительно желаете ее приобрести?", SetMoney[playerid]);
		    ShowPlayerDialog(playerid, 39, DIALOG_STYLE_MSGBOX, ""Y"Магазин одежды", tsg, "Конечно", "Нет");
		}
		if(_:clickedid == INVALID_TEXT_DRAW)
		{
		    if(LevelModel[playerid] == 1)
		    {
    			TogglePlayerControllable(playerid, 1);
   				TextDrawHideForPlayer(playerid,ButtonLeftt);
				TextDrawHideForPlayer(playerid,ButtonRightt);
				TextDrawHideForPlayer(playerid,ButtonSelectt);
 				CancelSelectTextDraw(playerid);
 				SetCameraBehindPlayer(playerid);
 				LevelModel[playerid] = 0, SetSkin[playerid] = 0, SelectModel[playerid] = 0, SetMoney[playerid] = 0;
 				SetPlayerSkin(playerid, Player[playerid][pModel]);
 				return true;
			}
			return true;
		}
	}
    return true;
}
Теперь нам необходимо сделать диалог, о согласии покупки скина(public OnDialogResponse):
PHP:
case 39:
		{
			if(!response) return true;
            MinuPlayerCash(playerid, SetMoney[playerid]);
	   		Player[playerid][pModel] = SetSkin[playerid];
	    	SelectModel[playerid] = 0;
	    	LevelModel[playerid] = 0;
    		TogglePlayerControllable(playerid, 1);
   			TextDrawHideForPlayer(playerid,ButtonLeftt);
			TextDrawHideForPlayer(playerid,ButtonRightt);
			TextDrawHideForPlayer(playerid,ButtonSelectt);
 			CancelSelectTextDraw(playerid);
 			SetCameraBehindPlayer(playerid);
 			SendClientMessage(playerid, -1, ""B"Поздравляем Вас, с покупкой новой одежды.");
 			mysql_format(CHDL,query,128, "UPDATE `accounts` SET `model` = '%d' WHERE `Name` = '%s'", SetSkin[playerid], Player[playerid][pSendername]);
            mysql_function_query(CHDL, query, false, "", "");
			return true;
		}
Вот и все, всем спасибо за внимание!

Дополнительно:
Переменные скина, лидерки, фракции, а так же функцию обновления аккаунта(UPDATE `accounts`), заменить на свои!
В противном случае могут быть ошибки.

Доп.функция(в конец мода):
PHP:
stock MinuPlayerCash(playerid, money)// Функция, чтоб отнять деньги у игрока
{
  	Player[playerid][pMoney] -= money;
  	ResetPlayerMoney(playerid);
  	GivePlayerMoney(playerid,Player[playerid][pMoney]);
  	return Player[playerid][pMoney];
}
Удачи всем!


 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу