Доступ к архиву

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

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

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

Делаем магазины незаконной продукции (МНП) [ Orio[N] ]

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

anonimniy

Компетентный
Доброго, времени суток, уважаемые пользователи Pawno-Info. В данной теме я расскажу вам, как сделать магазины незаконной продукции, такие как на сервере Orio[N], вернее, я не знаю как они там устроены, я лишь взял у них оформление 3д Текстов, остальное доделал (придумал) сам.

Идея принадлежит проекту Orio[N] и его создателю [A]Le[X]and[R]`y.
Код и сам мануал принадлежит мне. (anonimniy).

При обнаружение багов, напишите мне. я исправлю.





Для тех кто не в теме:

МНП - Магазины незаконной продукции. С помощью них игрок может купить там материалы/наркотики. У МНП есть владельцы, касса и много функций.

Приступим.

Ко всем #define:

PHP:
#define MAX_MNP 1                                                               // Кол-во МНП
Ко всем forward:

PHP:
forward LoadMNP();
В pInfo:

PHP:
pPMNPkey,
К enum:

PHP:
enum sMNPInfo
{
    sMNPOwned,
    sMNPOwner[64],
    Float:sMNPEntranceX,
    Float:sMNPEntranceY,
    Float:sMNPEntranceZ,
    sMNPLevelNeeded,
    sMNPCena,
    sMNPTill,
    sMNPNarko,
    sMNPMati,
    sMNPCenaNarko,
    sMNPCenaMati,
    Text3D: sMNPLabel,
};
new SMNPInfo[MAX_MNP][sMNPInfo];
new Text3D: SMNP3D[sizeof(SMNPInfo)];
В OnPlayerConnect:

PHP:
PlayerInfo[playerid][pPMNPkey] = 255;
В любое место мода (Главное не в скобки)

PHP:
stock PrintSMNPInfo(playerid,targetid)
{
    if(IsPlayerConnected(playerid))
    {
        new coordsstring[160];
        format(coordsstring, sizeof(coordsstring), "Цена за 1 материал: $%d\nЦена за 1 грамм наркотиков: %d\nНаркотиков: %d\nМатериалов: %d\nВ сейфе: $%d\n",SMNPInfo[targetid][sMNPCenaMati],SMNPInfo[targetid][sMNPCenaNarko],SMNPInfo[targetid][sMNPNarko],SMNPInfo[targetid][sMNPMati],SMNPInfo[targetid][sMNPTill]);
        SPD(playerid, DIALOG_NONE, DIALOG_STYLE_MSGBOX, "МНП", coordsstring, "Готово", "");
    }
}
Ниже:

PHP:
public LoadMNP()
{
    new arrCoords[12][64];
    new strFromFile2[256];
    new File: file = fopen("Black/mnp.cfg", io_read);
    if (file)
    {
        new idx;
        while (idx < sizeof(SMNPInfo))
        {
            fread(file, strFromFile2);
            split(strFromFile2, arrCoords, '|');
            SMNPInfo[idx][sMNPOwned] = strval(arrCoords[0]);
            strmid(SMNPInfo[idx][sMNPOwner], arrCoords[1], 0, strlen(arrCoords[1]), 255);
            SMNPInfo[idx][sMNPEntranceX] = floatstr(arrCoords[2]);
            SMNPInfo[idx][sMNPEntranceY] = floatstr(arrCoords[3]);
            SMNPInfo[idx][sMNPEntranceZ] = floatstr(arrCoords[4]);
            SMNPInfo[idx][sMNPLevelNeeded] = strval(arrCoords[5]);
            SMNPInfo[idx][sMNPCena] = strval(arrCoords[6]);
            SMNPInfo[idx][sMNPTill] = strval(arrCoords[7]);
            SMNPInfo[idx][sMNPNarko] = strval(arrCoords[8]);
            SMNPInfo[idx][sMNPMati] = strval(arrCoords[9]);
            SMNPInfo[idx][sMNPCenaNarko] = strval(arrCoords[10]);
            SMNPInfo[idx][sMNPCenaMati] = strval(arrCoords[11]);
            idx++;
        }
        fclose(file);
        printf("|Магазины незаконной продукции (МНП): %d", MAX_MNP);
        printf("|==============================");
    }
    return true;
}
В OnGameModeInit:

PHP:
LoadMNP();
В конец OnGameModeInit:

PHP:
for(new h = 0; h < sizeof(SMNPInfo); h++)
    {
        new text[600];
        if(SMNPInfo[h][sMNPOwned] == 0)
        {
            format(text,sizeof(text),"{FF6347}< Магазин незаконной продукции >{FFFFFF}\n\nСтатус: {7CFC00}Продаётся{FFFFFF}\nНомер: {7CFC00}%d{FFFFFF}\nУровень: {7CFC00}%d{FFFFFF}\nЦена: {7CFC00}%d{FFFFFF}\n\nДля покупки введите '{FF6347}/buymnp{FFFFFF}'",h+1,SMNPInfo[h][sMNPLevelNeeded],SMNPInfo[h][sMNPCena]);
            SMNP3D[h] = Create3DTextLabel(text,0xA9C4E4FF,SMNPInfo[h][sMNPEntranceX],SMNPInfo[h][sMNPEntranceY],SMNPInfo[h][sMNPEntranceZ]+1,20.0,0,1);
        }
        if(SMNPInfo[h][sMNPOwned] == 1)
        {
            format(text,sizeof(text),"{FF6347}< Магазин незаконной продукции >{FFFFFF}\n\nНомер: %d\nВладелец: {7CFC00}%s{FFFFFF}\nУровень: {7CFC00}%d{FFFFFF}\nЦена за 1 материал: %d\nЦена за 1 грамм наркотиков: %d\n[Материалы: {7CFC00}%d{FFFFFF} | Наркотики: {7CFC00}%d{FFFFFF}]\n\nДля покупки введите '{FF6347}/shop{FFFFFF}'",h+1,SMNPInfo[h][sMNPOwner],SMNPInfo[h][sMNPLevelNeeded],SMNPInfo[h][sMNPCenaMati],SMNPInfo[h][sMNPCenaNarko],SMNPInfo[h][sMNPMati],SMNPInfo[h][sMNPNarko]);
            SMNP3D[h] = Create3DTextLabel(text,0xA9C4E4FF,SMNPInfo[h][sMNPEntranceX],SMNPInfo[h][sMNPEntranceY],SMNPInfo[h][sMNPEntranceZ]+1,20.0,0,1);
        }
        CreateDynamicMapIcon(SMNPInfo[h][sMNPEntranceX], SMNPInfo[h][sMNPEntranceY], SMNPInfo[h][sMNPEntranceZ], 39, COLOR_WHITE, 0, -1, -1, 400.0);
        CreateDynamicPickup(1279, 23, SMNPInfo[h][sMNPEntranceX], SMNPInfo[h][sMNPEntranceY], SMNPInfo[h][sMNPEntranceZ],0);
    }
    printf("|Магазины незаконной продукции (МНП) загружены");
В OnPlayerRegister:

PHP:
dini_IntSet(string, "MNP", PlayerInfo[playerid][pPMNPkey]);
В OnPlayerSave:

PHP:
dini_IntSet(string, "MNP", PlayerInfo[playerid][pPMNPkey]);
В OnPlayerLogin:

PHP:
PlayerInfo[playerid][pPMNPkey] = dini_Int(string2,"MNP");
В public OnPropUpdate:

PHP:
idx = 0;
	while (idx < sizeof(SMNPInfo))
    {
        new coordsstring[256];
        format(coordsstring, sizeof(coordsstring), "%d|%s|%f|%f|%f|%d|%d|%d|%d|%d|%d|%d\n",
        SMNPInfo[idx][sMNPOwned],
        SMNPInfo[idx][sMNPOwner],
        SMNPInfo[idx][sMNPEntranceX],
        SMNPInfo[idx][sMNPEntranceY],
        SMNPInfo[idx][sMNPEntranceZ],
        SMNPInfo[idx][sMNPLevelNeeded],
        SMNPInfo[idx][sMNPCena],
        SMNPInfo[idx][sMNPTill],
        SMNPInfo[idx][sMNPNarko],
        SMNPInfo[idx][sMNPMati],
        SMNPInfo[idx][sMNPCenaNarko],
        SMNPInfo[idx][sMNPCenaMati]);
        if(idx == 0)
        {
            file2 = fopen("Black/mnp.cfg", io_write);
        }
        else
        {
            file2 = fopen("Black/mnp.cfg", io_append);
        }
        fwrite(file2, coordsstring);
        idx++;
        fclose(file2);
    }
В OnPlayerCommandText:

PHP:
if(strcmp(string,"/shop",true) == 0)
    {
        if(gPlayerLogged[playerid] == 1)
        {
            for(new h = 0; h < sizeof(SMNPInfo); h++)
			{
				if(PlayerToPoint(2.0, playerid, SMNPInfo[h][sMNPEntranceX], SMNPInfo[h][sMNPEntranceY], SMNPInfo[h][sMNPEntranceZ]))
				{
				    SPD(playerid,4503,DIALOG_STYLE_LIST,"МНП","[1] - Купить материалы\n[2] - Купить наркотики",">>>","Х");
				}
			}
		}
		return true;
	}
    if(strcmp(string, "/mnpmenu",true)== 0)
    {
		if(gPlayerLogged[playerid] == 1)
		{
			if(PlayerInfo[playerid][pPMNPkey] == 255)
			{
			    SendClientMessage(playerid,COLOR_WHITE,"{FF0000}[Ошибка]{FFFFFF} Вы не владеете МНП!");
			    return true;
			}
			SPD(playerid,4500,DIALOG_STYLE_LIST,"{33CCFF}МНП","[1] - Местоположение МНП\n[2] - Уст. цену за 1 материал\n[3] - Уст. цену за 1 наркотик\n[4] - Забрать материалы\n[5] - Забрать наркотики\n[6] - Забрать деньги\n[7] - Продать МНП\n[8] - Положить материалы\n[9] - Положить наркотики",">>>","X");
		}
		return true;
	}
if(strcmp(string, "/mnpo", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
		{
			if(PlayerInfo[playerid][pAdmin] == 0) return true;
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "{FF9900}[Использование]{FFFFFF} /mnpo [ID Магазина]");
			new housenum = strval(tmp);
			SetPlayerPos(playerid,SMNPInfo[housenum][sMNPEntranceX],SMNPInfo[housenum][sMNPEntranceY],SMNPInfo[housenum][sMNPEntranceZ]);
			GameTextForPlayer(playerid, "~w~ЏE‡EЊOPЏA‰…•", 5000, 1);
			SetPlayerVirtualWorld(playerid, 0);
			SetPlayerInterior(playerid,0);
			PlayerInfo[playerid][pInt] = 0;
		}
		return true;
	}
if(strcmp(string, "/buymnp", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
		{
			new Float:oldposx, Float:oldposy, Float:oldposz;
			GetPlayerName(playerid, playername, sizeof(playername));
			GetPlayerPos(playerid, oldposx, oldposy, oldposz);
			if(PlayerInfo[playerid][pPMNPkey] != 255)
			{
				SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[Ошибка]{FFFFFF} У вас уже есть МНП!");
				return true;
			}
			for(new b = 0; b < sizeof(SMNPInfo); b++)
			{
				if(PlayerToPoint(2.0, playerid, SMNPInfo[b][sMNPEntranceX], SMNPInfo[b][sMNPEntranceY], SMNPInfo[b][sMNPEntranceZ]) && SMNPInfo[b][sMNPOwned] == 0)
				{
					if(PlayerInfo[playerid][pLevel] < SMNPInfo[b][sMNPLevelNeeded])
					{
						format(string, sizeof(string), "JustGame RPG: Вы должны быть уровня %d чтобы купить это предприятие.",SMNPInfo[b][sMNPLevelNeeded]);
						SendClientMessage(playerid, COLOR_GRAD5, string);
						return true;
					}
					if(PlayerInfo[playerid][pMoney] >= SMNPInfo[b][sMNPCena])
					{
						PlayerInfo[playerid][pPMNPkey] = b;
						SMNPInfo[b][sMNPOwned] = 1;
						GetPlayerName(playerid, sendername, sizeof(sendername));
						strmid(SMNPInfo[b][sMNPOwner], sendername, 0, strlen(sendername), 255);
						PlayerInfo[playerid][pMoney] -= SMNPInfo[b][sMNPCena];
						PlayerPlayMusic(playerid);
						SendClientMessage(playerid, COLOR_WHITE, "JustGame RPG: Поздравляем, Вы только что приобрели магазин незаконной продукции (МНП).");
						SendClientMessage(playerid, COLOR_WHITE, "Меню управление заправкой - {33CCFF}/mnpmenu.");
                        OnPropUpdate();
                        UpdateSMNP(b);
						OnPlayerSave(playerid);
						return true;
					}
					else
					{
						SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[Ошибка]{FFFFFF} Недостаточно средств!");
						return true;
					}
				}
			}
		}
		return true;
	}
if(strcmp(string, "/sellmnp", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
		{
			GetPlayerName(playerid, playername, sizeof(playername));
			if(PlayerInfo[playerid][pPMNPkey] == 255)
			{
				SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[Ошибка]{FFFFFF} У Вас нет МНП.");
				return true;
			}
			if(PlayerInfo[playerid][pMarried] > 0)
		    {
		        SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[Ошибка]{FFFFFF} Вы женаты и не можете продать МНП!");
		        return true;
		    }
			if(PlayerInfo[playerid][pPMNPkey] >= 0 && strcmp(playername, SMNPInfo[PlayerInfo[playerid][pPMNPkey]][sMNPOwner], true) == 0)
			{
				new bouse = PlayerInfo[playerid][pPMNPkey];
				PlayerInfo[playerid][pMoney] += SMNPInfo[bouse][sMNPCena];
				SMNPInfo[bouse][sMNPOwned] = 0;
				GetPlayerName(playerid, sendername, sizeof(sendername));
				strmid(SMNPInfo[bouse][sMNPOwner], "-", 0, strlen("-"), 255);
				PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
				new string123[60];
				format(string123, sizeof(string123), "Вы продали МНП за $%d.",SMNPInfo[bouse][sMNPCena]);
				SendClientMessage(playerid, COLOR_WHITE, string123);
				PlayerInfo[playerid][pPMNPkey] = 255;
				OnPlayerSave(playerid);
				UpdateSMNP(bouse);
				OnPropUpdate();
				return true;
			}
			else
			{
				SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[Ошибка]{FFFFFF} Вы не владеете МНП!");
			}
		}
		return true;
	}
if (strcmp(string, "/mnpinfo", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
		{
			new bouse = PlayerInfo[playerid][pPMNPkey];
			if(bouse == 255)
			{
				SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[Ошибка]{FFFFFF} Вы не владеете МНП!");
				return true;
			}
			PrintSMNPInfo(playerid,bouse);
		}
		return true;
	}
В OnDialogResponse:

PHP:
if(dialogid == 4500)
	{
	    if(response)
	    {
	        if(listitem == 0)
	        {
				if(PlayerInfo[playerid][pPMNPkey] != 255)
				{
	            	SetPlayerCheckpoint(playerid,SMNPInfo[PlayerInfo[playerid][pPMNPkey]][sMNPEntranceX], SMNPInfo[PlayerInfo[playerid][pPMNPkey]][sMNPEntranceY], SMNPInfo[PlayerInfo[playerid][pPMNPkey]][sMNPEntranceZ], 4.0);
					GameTextForPlayer(playerid, "~w~ЏOЌKA ЊУЏ… УCЏAмO‹‡EмA ~r~Home", 5000, 1);
				}
			}
			if(listitem == 1)
			{
			    if(PlayerInfo[playerid][pPMNPkey] != 255)
				{
			    	SPD(playerid,4501,DIALOG_STYLE_INPUT,"Управление МНП","Установите цену за 1 материал:",">>>","X");
			    }
			}
			if(listitem == 2)
			{
			    if(PlayerInfo[playerid][pPMNPkey] != 255)
				{
			    	SPD(playerid,4502,DIALOG_STYLE_INPUT,"Управление МНП","Установите цену за 1 наркотик:",">>>","X");
			    }
			}
			if(listitem == 3)
			{
			    if(PlayerInfo[playerid][pPMNPkey] != 255)
				{
				    new mnp = PlayerInfo[playerid][pPMNPkey];
				    if(PlayerToPoint(3, playerid,SMNPInfo[mnp][sMNPEntranceX], SMNPInfo[mnp][sMNPEntranceY], SMNPInfo[mnp][sMNPEntranceZ]))
					{
					    if(SMNPInfo[mnp][sMNPMati] >= 1)
					    {
						    PlayerInfo[playerid][pMats] += SMNPInfo[mnp][sMNPMati];
						    SMNPInfo[mnp][sMNPMati] = 0;
						    UpdateSMNP(mnp);
						    SendClientMessage(playerid,COLOR_WHITE,"Вы забрали все материалы с вашего МНП.");
				        }
					}
				}
			}
			if(listitem == 4)
			{
			    if(PlayerInfo[playerid][pPMNPkey] != 255)
				{
				    new mnp = PlayerInfo[playerid][pPMNPkey];
				    if(PlayerToPoint(3, playerid,SMNPInfo[mnp][sMNPEntranceX], SMNPInfo[mnp][sMNPEntranceY], SMNPInfo[mnp][sMNPEntranceZ]))
					{
					    if(SMNPInfo[mnp][sMNPNarko] >= 1)
					    {
						    PlayerInfo[playerid][pDrugs] += SMNPInfo[mnp][sMNPNarko];
						    SMNPInfo[mnp][sMNPNarko] = 0;
						    UpdateSMNP(mnp);
						    SendClientMessage(playerid,COLOR_WHITE,"Вы забрали все наркотики с вашего МНП.");
				        }
					}
				}
			}
			if(listitem == 5)
			{
                if(PlayerInfo[playerid][pPMNPkey] != 255)
				{
				    new mnp = PlayerInfo[playerid][pPMNPkey];
				    if(PlayerToPoint(3, playerid,SMNPInfo[mnp][sMNPEntranceX], SMNPInfo[mnp][sMNPEntranceY], SMNPInfo[mnp][sMNPEntranceZ]))
					{
					    if(SMNPInfo[mnp][sMNPTill] >= 1)
					    {
						    PlayerInfo[playerid][pMoney] += SMNPInfo[mnp][sMNPTill];
						    SMNPInfo[mnp][sMNPTill] = 0;
						    UpdateSMNP(mnp);
						    SendClientMessage(playerid,COLOR_WHITE,"Вы забрали все деньги с вашего МНП.");
				        }
				    }
				}
			}
			if(listitem == 6)
			{
			    if(PlayerInfo[playerid][pPMNPkey] != 255)
				{
				    if(PlayerInfo[playerid][pMarried] > 0)
		    		{
		        		SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[Ошибка]{FFFFFF} Вы женаты и не можете продать МНП!");
		        		return true;
		    		}
		    		new sendername[MAX_PLAYER_NAME];
					GetPlayerName(playerid, sendername, sizeof(sendername));
					if(PlayerInfo[playerid][pPMNPkey] >= 0 && strcmp(sendername, SMNPInfo[PlayerInfo[playerid][pPMNPkey]][sMNPOwner], true) == 0)
					{
						new bouse = PlayerInfo[playerid][pPMNPkey];
						PlayerInfo[playerid][pMoney] += SMNPInfo[bouse][sMNPCena];
						SMNPInfo[bouse][sMNPOwned] = 0;
						strmid(SMNPInfo[bouse][sMNPOwner], "-", 0, strlen("-"), 255);
						PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
						new string123[60];
						format(string123, sizeof(string123), "Вы продали МНП за $%d.",SMNPInfo[bouse][sMNPCena]);
						SendClientMessage(playerid, COLOR_WHITE, string123);
						PlayerInfo[playerid][pPMNPkey] = 255;
						OnPlayerSave(playerid);
						UpdateSMNP(bouse);
						OnPropUpdate();
						return true;
					}
					else
					{
						SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[Ошибка]{FFFFFF} Вы не владеете МНП!");
					}
				}
			}
			if(listitem == 7)
			{
                SPD(playerid,4506,DIALOG_STYLE_INPUT,"Материалы","Введите кол-во материалов которые вы хотите положить:",">>>","X");
            }
            if(listitem == 8)
            {
                SPD(playerid,4507,DIALOG_STYLE_INPUT,"Наркотики","Введите кол-во наркотиков которые вы хотите положить:",">>>","X");
            }
		}
	}
	if(dialogid == 4501)
	{
	    if(response)
	    {
            new bouse = PlayerInfo[playerid][pPMNPkey];
			if(!strval(inputtext))
			{
				SPD(playerid,4501,DIALOG_STYLE_INPUT,"Управление МНП","Установите цену за 1 материал:",">>>","X");
				return true;
			}
			new color = strval(inputtext);
			if(color > SMNPInfo[bouse][sMNPTill])
			{
				SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[Ошибка]{FFFFFF} Вы не имеете столько в корзине!");
				return true;
			}
			SMNPInfo[bouse][sMNPCenaMati] = color;
			UpdateSMNP(bouse);
			format(string, sizeof(string), "Цена за 1 материал теперь $%d.", SMNPInfo[bouse][sMNPCenaMati]);
			SendClientMessage(playerid, COLOR_WHITE, string);
		}
	}
	if(dialogid == 4502)
	{
	    if(response)
	    {
	        new bouse = PlayerInfo[playerid][pPMNPkey];
			if(!strval(inputtext))
			{
				SPD(playerid,4501,DIALOG_STYLE_INPUT,"Управление МНП","Установите цену за 1 наркотик:",">>>","X");
				return true;
			}
			new color = strval(inputtext);
			if(color > SMNPInfo[bouse][sMNPTill])
			{
				SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[Ошибка]{FFFFFF} Вы не имеете столько в корзине!");
				return true;
			}
			SMNPInfo[bouse][sMNPCenaNarko] = color;
			UpdateSMNP(bouse);
			format(string, sizeof(string), "Цена за 1 наркотик теперь $%d.", SMNPInfo[bouse][sMNPCenaMati]);
			SendClientMessage(playerid, COLOR_WHITE, string);
		}
	}
	if(dialogid == 4503)
	{
	    if(response)
	    {
	        if(listitem == 0)
	        {
	        	for(new h = 0; h < sizeof(SMNPInfo); h++)
				{
					if(PlayerToPoint(2.0, playerid, SMNPInfo[h][sMNPEntranceX], SMNPInfo[h][sMNPEntranceY], SMNPInfo[h][sMNPEntranceZ]))
					{
				        SPD(playerid,4504,DIALOG_STYLE_INPUT,"Покупка материалов","Введите кол-во материалов которые вы хотите купить",">>>","X");
				        return true;
				    }
				}
			}
			if(listitem == 1)
			{
			    for(new h = 0; h < sizeof(SMNPInfo); h++)
				{
					if(PlayerToPoint(2.0, playerid, SMNPInfo[h][sMNPEntranceX], SMNPInfo[h][sMNPEntranceY], SMNPInfo[h][sMNPEntranceZ]))
					{
				        SPD(playerid,4505,DIALOG_STYLE_INPUT,"Покупка наркотиков","Введите кол-во наркотиков которые вы хотите купить",">>>","X");
				        return true;
				    }
				}
			}
			if(listitem == 2)
			{
			    for(new h = 0; h < sizeof(SMNPInfo); h++)
				{
					if(PlayerToPoint(2.0, playerid, SMNPInfo[h][sMNPEntranceX], SMNPInfo[h][sMNPEntranceY], SMNPInfo[h][sMNPEntranceZ]))
					{
				        SPD(playerid,4506,DIALOG_STYLE_INPUT,"Продажа материалов","Введите кол-во материалов которые вы хотите продать",">>>","X");
				        return true;
				    }
				}
			}
			if(listitem == 3)
			{
			    for(new h = 0; h < sizeof(SMNPInfo); h++)
				{
					if(PlayerToPoint(2.0, playerid, SMNPInfo[h][sMNPEntranceX], SMNPInfo[h][sMNPEntranceY], SMNPInfo[h][sMNPEntranceZ]))
					{
				        SPD(playerid,4507,DIALOG_STYLE_INPUT,"Продажа наркотиков","Введите кол-во наркотиков которые вы хотите продать",">>>","X");
				        return true;
				    }
				}
			}
		}
	}
	if(dialogid == 4504)
	{
	    if(response)
	    {
            if(!strval(inputtext))
			{
				SPD(playerid,4504,DIALOG_STYLE_INPUT,"Покупка материалов","Введите кол-во материалов которые вы хотите купить",">>>","X");
				return true;
			}
			new color = strval(inputtext);
			for(new h = 0; h < sizeof(SMNPInfo); h++)
			{
				if(PlayerToPoint(2.0, playerid, SMNPInfo[h][sMNPEntranceX], SMNPInfo[h][sMNPEntranceY], SMNPInfo[h][sMNPEntranceZ]))
				{
					if(color < 1 || color > SMNPInfo[h][sMNPMati])
					{
					    SendClientMessage(playerid,COLOR_WHITE,"{FF0000}[Ошибка]{FFFFFF} У этого магазина нету столько материалов.");
					    SPD(playerid,4504,DIALOG_STYLE_INPUT,"Покупка материалов","Введите кол-во материалов которые вы хотите купить",">>>","X");
					    return true;
			        }
			        if(PlayerInfo[playerid][pMoney] < (SMNPInfo[h][sMNPCenaMati])*(color))
			        {
			            SendClientMessage(playerid,COLOR_WHITE,"{FF0000}[Ошибка]{FFFFFF} У вас недостаточно денег.");
					    SPD(playerid,4504,DIALOG_STYLE_INPUT,"Покупка материалов","Введите кол-во материалов которые вы хотите купить",">>>","X");
					    return true;
			        }
					format(string,sizeof(string),"Вы купили %d материалов за $%d. Спасибо за покупку!",color,(color)*(SMNPInfo[h][sMNPCenaMati]));
					SendClientMessage(playerid,COLOR_WHITE,string);
					PlayerInfo[playerid][pMoney] -= (color)*(SMNPInfo[h][sMNPCenaMati]);
					PlayerInfo[playerid][pMats] += color;
					SMNPInfo[h][sMNPMati] -= color;
					SMNPInfo[h][sMNPTill] += (color)*(SMNPInfo[h][sMNPCenaMati]);
					OnPropUpdate();
					UpdateSMNP(h);
					return true;
			    }
			}
		}
	}
	if(dialogid == 4505)
	{
	    if(response)
	    {
            if(!strval(inputtext))
			{
				SPD(playerid,4505,DIALOG_STYLE_INPUT,"Покупка наркотиков","Введите кол-во наркотиков которые вы хотите купить",">>>","X");
				return true;
			}
			new color = strval(inputtext);
			for(new h = 0; h < sizeof(SMNPInfo); h++)
			{
				if(PlayerToPoint(2.0, playerid, SMNPInfo[h][sMNPEntranceX], SMNPInfo[h][sMNPEntranceY], SMNPInfo[h][sMNPEntranceZ]))
				{
					if(color < 1 || color > SMNPInfo[h][sMNPNarko])
					{
					    SendClientMessage(playerid,COLOR_WHITE,"{FF0000}[Ошибка]{FFFFFF} У этого магазина нету столько наркотиков.");
					    SPD(playerid,4505,DIALOG_STYLE_INPUT,"Покупка наркотиков","Введите кол-во наркотиков которые вы хотите купить",">>>","X");
					    return true;
			        }
			        if(PlayerInfo[playerid][pMoney] < (SMNPInfo[h][sMNPCenaNarko])*(color))
			        {
			            SendClientMessage(playerid,COLOR_WHITE,"{FF0000}[Ошибка]{FFFFFF} У вас недостаточно денег.");
					    SPD(playerid,4505,DIALOG_STYLE_INPUT,"Покупка наркотиков","Введите кол-во наркотиков которые вы хотите купить",">>>","X");
					    return true;
			        }
					format(string,sizeof(string),"Вы купили %d наркотиков за $%d. Спасибо за покупку!",color,(color)*(SMNPInfo[h][sMNPCenaNarko]));
					SendClientMessage(playerid,COLOR_WHITE,string);
					PlayerInfo[playerid][pMoney] -= (color)*(SMNPInfo[h][sMNPCenaNarko]);
					PlayerInfo[playerid][pDrugs] += color;
					SMNPInfo[h][sMNPNarko] -= color;
					SMNPInfo[h][sMNPTill] += (color)*(SMNPInfo[h][sMNPCenaNarko]);
					OnPropUpdate();
					UpdateSMNP(h);
					return true;
			    }
			}
		}
	}
	if(dialogid == 4506)
	{
	    if(response)
	    {
            if(!strval(inputtext))
			{
				SPD(playerid,4506,DIALOG_STYLE_INPUT,"Материалы","Введите кол-во материалов которые вы хотите положить",">>>","X");
				return true;
			}
			new color = strval(inputtext);
			new key = PlayerInfo[playerid][pPMNPkey];
			if(color < 1 || color > PlayerInfo[playerid][pMats])
			{
			    SendClientMessage(playerid,COLOR_WHITE,"{FF0000}[Ошибка]{FFFFFF} У вас нету столько материалов.");
			    SPD(playerid,4506,DIALOG_STYLE_INPUT,"Материалы","Введите кол-во материалов которые вы хотите положить",">>>","X");
			    return true;
	        }
			format(string,sizeof(string),"Вы положили %d материалов в свой магазин.",color);
			SendClientMessage(playerid,COLOR_WHITE,string);
			PlayerInfo[playerid][pMats] -= color;
			SMNPInfo[key][sMNPMati] += color;
			OnPropUpdate();
			UpdateSMNP(key);
			return true;
	    }
	}
	if(dialogid == 4507)
	{
	    if(response)
	    {
            if(!strval(inputtext))
			{
				SPD(playerid,4507,DIALOG_STYLE_INPUT,"Наркотики","Введите кол-во наркотиков которые вы хотите положить",">>>","X");
				return true;
			}
			new color = strval(inputtext);
			new key = PlayerInfo[playerid][pPMNPkey];
			if(color < 1 || color > PlayerInfo[playerid][pDrugs])
			{
			    SendClientMessage(playerid,COLOR_WHITE,"{FF0000}[Ошибка]{FFFFFF} У вас нету столько наркотиков.");
			    SPD(playerid,4507,DIALOG_STYLE_INPUT,"Наркотики","Введите кол-во наркотиков которые вы хотите положить",">>>","X");
			    return true;
	        }
			format(string,sizeof(string),"Вы положили %d наркотиков в свой магазин.",color);
			SendClientMessage(playerid,COLOR_WHITE,string);
			PlayerInfo[playerid][pDrugs] -= color;
			SMNPInfo[key][sMNPNarko] += color;
			OnPropUpdate();
			UpdateSMNP(key);
			return true;
	    }
	}
В конец мода:

PHP:
stock UpdateSMNP(idx)
	{
		new text[300];
		if(SMNPInfo[idx][sMNPOwned] == 0)
		{
			format(text,sizeof(text),"{FF6347}< Магазин незаконной продукции >{FFFFFF}\n\nСтатус: {7CFC00}Продаётся{FFFFFF}\nНомер: {7CFC00}%d{FFFFFF}\nУровень: {7CFC00}%d{FFFFFF}\nЦена: {7CFC00}%d{FFFFFF}\n\nДля покупки введите '{FF6347}/buymnp{FFFFFF}'",idx+1,SMNPInfo[idx][sMNPLevelNeeded],SMNPInfo[idx][sMNPCena]);
			Update3DTextLabelText(SMNP3D[idx], 0xA9C4E4FF, text);
		}
		if(SMNPInfo[idx][sMNPOwned] == 1)
		{
			format(text,sizeof(text),"{FF6347}< Магазин незаконной продукции >{FFFFFF}\n\nНомер: %d\nВладелец: {7CFC00}%s{FFFFFF}\nУровень: {7CFC00}%d{FFFFFF}\nЦена за 1 материал: %d\nЦена за 1 грамм наркотиков: %d\n[Материалы: {7CFC00}%d{FFFFFF} | Наркотики: {7CFC00}%d{FFFFFF}]\n\nДля покупки введите '{FF6347}/shop{FFFFFF}'",idx+1,SMNPInfo[idx][sMNPOwner],SMNPInfo[idx][sMNPLevelNeeded],SMNPInfo[idx][sMNPCenaMati],SMNPInfo[idx][sMNPCenaNarko],SMNPInfo[idx][sMNPMati],SMNPInfo[idx][sMNPNarko]);
			Update3DTextLabelText(SMNP3D[idx], 0xA9C4E4FF, text);
		}
}
В папке scriptfiles создаём папку Black и туда закидываем файл mnp.
Ссылка на mnp. -

Вот и всё. Всем спасибо за прочтение данного мануала, не забывайте ставить "Спасибо" и отписываться!
С уважением, anonimniy.​
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу