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

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

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

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

Система мини бизнесов(ларьков)

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

Dark_Ilya

Компетентный
Всем доброго вечера/ночи.
Вот думал думал и всё-таки дописал эту систему.Хотя, нужно будет её ещё не много доработать,но это завтра.
Ладно давайте приступим:
Ко всем enum'ам
PHP:
ко всем #define
#define DIALOG_LAREK_INFO 454//можете изменить
enum kbInfo
{
	kbOwned,//занято или нет
	kbOwner[24],//владелец
Float:kbEntranceX,//координата X
Float:kbEntranceY,//координата Y
Float:kbEntranceZ,//координата Z
	kbTill,//денег в кассе
	kbCena,//цена ларька
	kbToovar1,//1 слот товаров
	kbToovar2,//2 слот товаров
	kbToovar3,//3 слот товаров
	kbToovar4,//4 слот товаров
	kbToovar5,//5 слот товаров
	kbTovarKol1,//кол-во товаров 1 слота
	kbTovarKol2,//кол-во товаров 2 слота
	kbTovarKol3,//кол-во товаров 3 слота
	kbTovarKol4,//кол-во товаров 4 слота
	kbTovarKol5,//кол-во товаров 5 слота
	kbTovCena1,//цена за ед. товара 1 слота
	kbTovCena2,//цена за ед. товара 2 слота
	kbTovCena3,//цена за ед. товара 3 слота
	kbTovCena4,//цена за ед. товара 4 слота
	kbTovCena5,//цена за ед. товара 5 слота
};
new kbBizzInfo[2][kbInfo];
Далее ищем enum pInfo
PHP:
pLarkkey,
В public OnPlayerConnect(playerid)
PHP:
PlayerInfo[playerid][pLarkkey] = 255;
Теперь нам нужно найти паблик,который отвечает за клавиши(Извените,но никак не могу вспомнить название)
PHP:
if (newkeys == 1024)//alt
{
	for(new kb = 0; kb < sizeof(kbBizzInfo); kb++)
	{
		if(PlayerToPoint(3, playerid,kbBizzInfo[kb][kbEntranceX], kbBizzInfo[kb][kbEntranceY], kbBizzInfo[kb][kbEntranceZ]))
		{
			if(kbBizzInfo[kb][kbOwned] == 0)
			{
				format(string,sizeof(string),"\nНомер ларька: %d\nЦена: %d\n\tНажмите 'Выбрать' чтобы перейти к меню покупки ларька",kb,kbBizzInfo[kb][kbCena]);
				ShowPlayerDialog(playerid,DIALOG_LAREK_INFO-1,DIALOG_STYLE_MSGBOX,"Ларёк",string,"Выбрать","Отмена");
			}
			else if(kbBizzInfo[kb][kbOwned] == 1)
			{
				new summma = kbBizzInfo[kb][kbTovarKol1] + kbBizzInfo[kb][kbTovarKol2] + kbBizzInfo[kb][kbTovarKol3] + kbBizzInfo[kb][kbTovarKol4] + kbBizzInfo[kb][kbTovarKol5];
				format(string,sizeof(string),"\n{FFFFFF}______________________________________\nИнформация о ларьке: Владелец: %s | Номер ларька: %d\n\tКоличество товаров на складе: %d\n\tНажмите 'Выбрать' чтобы перейти к меню покупки\n\t______________________________________",kbBizzInfo[kb][kbOwner],kb,summma);
				ShowPlayerDialog(playerid,DIALOG_LAREK_INFO,DIALOG_STYLE_MSGBOX,"Ларёк",string,"Выбрать","Отмена");
			}
		}
	}
}
В public OnGameModeInit()
PHP:
for(new f = 0; f < sizeof(kbBizzInfo); f++)
	{
		if(kbBizzInfo[f][kbOwned] == 0)
		{
			Create3DTextLabel("Нажмите 'ALT",0xFFFFFFFF,kbBizzInfo[f][kbEntrancex], kbBizzInfo[f][kbEntrancey], kbBizzInfo[f][kbEntrancez]+1,10,1);
			CreatePickup(1239, 23, kbBizzInfo[f][kbEntrancex], kbBizzInfo[f][kbEntrancey], kbBizzInfo[f][kbEntrancez]);
		}
		else if(kbBizzInfo[f][kbOwned] == 1)
		{
			Create3DTextLabel("Нажмите 'ALT'",0xFFFFFFFF,kbBizzInfo[f][kbEntrancex], kbBizzInfo[f][kbEntrancey], kbBizzInfo[f][kbEntrancez]+1,10,1);
			CreatePickup(1239, 23, kbBizzInfo[f][kbEntrancex], kbBizzInfo[f][kbEntrancey], kbBizzInfo[f][kbEntrancez]);
		}
	}
К диалогАМ:
PHP:
if(dialogid == DIALOG_LAREK_INFO-1)
{
	if(PlayerInfo[playerid][pLarkkey] != 255) return SendClientMessage(playerid,COLOR_WHITE,"У вас уже есть ларёк");
	for(new kb = 0; kb < sizeof(kbBizzInfo); kb++)
	{
		if(PlayerToPoint(3, playerid,kbBizzInfo[kb][kbEntranceX], kbBizzInfo[kb][kbEntranceY], kbBizzInfo[kb][kbEntranceZ]))
		{
			if(kbBizzInfo[kb][kbOwned] != 0) return SendClientMessage(playerid,COLOR_WHITE,"Этот ларёк не продаётся!");
			if(kbBizzInfo[kb][kbCena] > PlayerInfo[playerid][pCash]) return SendClientMessage(playerid,COLOR_WHITE,"У вас не хватает денег для совершения покупки!");
			kbBizzInfo[kb][kbOwned] = 1;
			new sendername[MAX_PLAYER_NAME];
			GetPlayerName(playerid,sendername,sizeof(sendername));
			PlayerInfo[playerid][pLarkkey] = kb;
			strmid(kbBizzInfo[kb][kbOwner], sendername, 0, strlen(sendername), 255);
			GivePlayerMoney(playerid, -kbBizzInfo[kb][kbCena]);
		}
	}
}
if(dialogid == DIALOG_LAREK_INFO)
{
    new str[128], sctring[200];
	for(new kb = 0; kb < sizeof(kbBizzInfo); kb++)
	{
		if(PlayerToPoint(3, playerid,kbBizzInfo[kb][kbEntranceX], kbBizzInfo[kb][kbEntranceY], kbBizzInfo[kb][kbEntranceZ]))
		{
		    switch(kbBizzInfo[kb][kbTovarKol1])
			{
			case 0:format(str, sizeof(str),"[1]Пусто\n"),strcat(sctring,str);
			case 1 ..100: format(str, sizeof(str),"[1]Хотдог[%d$][%d штук]\n", kbBizzInfo[kb][kbTovCena1], kbBizzInfo[kb][kbTovarKol1]),strcat(sctring,str);
			}
			switch(kbBizzInfo[kb][kbTovarKol2])
			{
			case 0:format(str, sizeof(str),"[2]Пусто\n"),strcat(sctring,str);
			case 1 ..100: format(str, sizeof(str),"[2]Гамбургер[%d$][%d штук]\n", kbBizzInfo[kb][kbTovCena2], kbBizzInfo[kb][kbTovarKol2]),strcat(sctring,str);
			}
			switch(kbBizzInfo[kb][kbTovarKol3])
			{
			case 0:format(str, sizeof(str),"[3]Пусто\n"),strcat(sctring,str);
			case 1 ..100: format(str, sizeof(str),"[3]Сендвич[%d$][%d штук]\n", kbBizzInfo[kb][kbTovCena3], kbBizzInfo[kb][kbTovarKol3]),strcat(sctring,str);
			}
			switch(kbBizzInfo[kb][kbTovarKol4])
			{
			case 0:format(str, sizeof(str),"[4]Пусто\n"),strcat(sctring,str);
			case 1 ..100: format(str, sizeof(str),"[4]Пицца[%d$][%d штук]\n", kbBizzInfo[kb][kbTovCena4], kbBizzInfo[kb][kbTovarKol4]),strcat(sctring,str);
			}
			switch(kbBizzInfo[kb][kbTovarKol5])
			{
			case 0:format(str, sizeof(str),"[5]Пусто\n"),strcat(sctring,str);
			case 1 ..100: format(str, sizeof(str),"[5]Сосиска в тесте[%d$][%d штук]\n", kbBizzInfo[kb][kbTovCena5], kbBizzInfo[kb][kbTovarKol5]),strcat(sctring,str);
			}
			strcat(sctring,"[6]Другое");
			ShowPlayerDialog(playerid,DIALOG_LAREK_INFO+1,DIALOG_STYLE_LIST,"Ларёк",sctring,"Выбрать","Отмена");
		}
	}
}
if(dialogid == DIALOG_LAREK_INFO+1)
	{
		if(response)
		{
		    new sendername[MAX_PLAYER_NAME];
			GetPlayerName(playerid,sendername,sizeof(sendername));
			switch(listitem)
			{
				for(new kb = 0; kb < sizeof(kbBizzInfo); kb++)
				{
					if(PlayerToPoint(3, playerid,kbBizzInfo[kb][kbEntranceX], kbBizzInfo[kb][kbEntranceY], kbBizzInfo[kb][kbEntranceZ]))
					{
						case 0:
						{
							if(kbBizzInfo[kb][kbTovarKol1] < 1) return SendClientMessage(playerid,COLOR_WHITE,"Нет товаров!");
						    if(PlayerInfo[playerid][pCash] < kbBizzInfo[kb][kbTovCena1]) return SendClientMessage(playerid,COLOR_WHITE,"У вас не достаточно денег для соевершения покупки!");
							if(GetPlayerHealth(playerid, health) > 91) return SendClientMessage(playerid,COLOR_WHITE,"Вы больше не можете съесть!");
							new Float:health;
							GetPlayerHealth(playerid, health);
							SetPlayerHealth(playerid, health+10);
							kbBizzInfo[kb][kbTovarKol1] --;
							kbBizzInfo[kb][kbTill] += kbBizzInfo[kb][kbTovCena1];
							ApplyAnimation(playerid,"FOOD","EAT_Burger",4.1,0,1,1,1,1);
							GivePlayerMoney(playerid, -kbBizzInfo[kb][kbTovCena1]);
							format(string,sizeof(string),"%s купил хотдог и съел его",sendername);
							ProxDetector(30.0, playerid,string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
						}
						case 1:
						{
						    if(kbBizzInfo[kb][kbTovarKol2] < 1) return SendClientMessage(playerid,COLOR_WHITE,"Нет товаров!");
						    if(PlayerInfo[playerid][pCash] < kbBizzInfo[kb][kbTovCena2]) return SendClientMessage(playerid,COLOR_WHITE,"У вас не достаточно денег для соевершения покупки!");
							if(GetPlayerHealth(playerid, health) > 91) return SendClientMessage(playerid,COLOR_WHITE,"Вы больше не можете съесть!");
							new Float:health;
							GetPlayerHealth(playerid, health);
							SetPlayerHealth(playerid, health+10);
							kbBizzInfo[kb][kbTovarKol2] --;
							kbBizzInfo[kb][kbTill] += kbBizzInfo[kb][kbTovCena2];
							ApplyAnimation(playerid,"FOOD","EAT_Burger",4.1,0,1,1,1,1);
							GivePlayerMoney(playerid, -kbBizzInfo[kb][kbTovCena1]);
							format(string,sizeof(string),"%s купил гамбургер и съел его",sendername);
							ProxDetector(30.0, playerid,string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
						}
						case 2:
						{
						    if(kbBizzInfo[kb][kbTovarKol3] < 1) return SendClientMessage(playerid,COLOR_WHITE,"Нет товаров!");
						    if(PlayerInfo[playerid][pCash] < kbBizzInfo[kb][kbTovCena3]) return SendClientMessage(playerid,COLOR_WHITE,"У вас не достаточно денег для соевершения покупки!");
							if(GetPlayerHealth(playerid, health) > 91) return SendClientMessage(playerid,COLOR_WHITE,"Вы больше не можете съесть!");
							new Float:health;
							GetPlayerHealth(playerid, health);
							SetPlayerHealth(playerid, health+10);
							kbBizzInfo[kb][kbTovarKol3] --;
							kbBizzInfo[kb][kbTill] += kbBizzInfo[kb][kbTovCena3];
							ApplyAnimation(playerid,"FOOD","EAT_Burger",4.1,0,1,1,1,1);
							GivePlayerMoney(playerid, -kbBizzInfo[kb][kbTovCena3]);
							format(string,sizeof(string),"%s купил сендвич и съел его",sendername);
							ProxDetector(30.0, playerid,string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
						}
						case 3:
						{
						    if(kbBizzInfo[kb][kbTovarKol4] < 1) return SendClientMessage(playerid,COLOR_WHITE,"Нет товаров!");
						    if(PlayerInfo[playerid][pCash] < kbBizzInfo[kb][kbTovCena4]) return SendClientMessage(playerid,COLOR_WHITE,"У вас не достаточно денег для соевершения покупки!");
							if(GetPlayerHealth(playerid, health) > 91) return SendClientMessage(playerid,COLOR_WHITE,"Вы больше не можете съесть!");
							new Float:health;
							GetPlayerHealth(playerid, health);
							SetPlayerHealth(playerid, health+10);
							kbBizzInfo[kb][kbTovarKol4] --;
							kbBizzInfo[kb][kbTill] += kbBizzInfo[kb][kbTovCena4];
							ApplyAnimation(playerid,"FOOD","EAT_Burger",4.1,0,1,1,1,1);
							GivePlayerMoney(playerid, -kbBizzInfo[kb][kbTovCena4]);
							format(string,sizeof(string),"%s купил пиццу и съел её",sendername);
							ProxDetector(30.0, playerid,string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
						}
						case 4:
						{
						    if(kbBizzInfo[kb][kbTovarKol5] < 1) return SendClientMessage(playerid,COLOR_WHITE,"Нет товаров!");
						    if(PlayerInfo[playerid][pCash] < kbBizzInfo[kb][kbTovCena5]) return SendClientMessage(playerid,COLOR_WHITE,"У вас не достаточно денег для соевершения покупки!");
							if(GetPlayerHealth(playerid, health) > 91) return SendClientMessage(playerid,COLOR_WHITE,"Вы больше не можете съесть!");
							new Float:health;
							GetPlayerHealth(playerid, health);
							SetPlayerHealth(playerid, health+10);
							kbBizzInfo[kb][kbTovarKol5] --;
							kbBizzInfo[kb][kbTill] += kbBizzInfo[kb][kbTovCena5];
							ApplyAnimation(playerid,"FOOD","EAT_Burger",4.1,0,1,1,1,1);
							GivePlayerMoney(playerid, -kbBizzInfo[kb][kbTovCena1]);
							format(string,sizeof(string),"%s купил сосиску в тесте и съел его",sendername);
							ProxDetector(30.0, playerid,string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
						}
						case 5:SendClientMessage(playerid,COLOR_WHITE,"Не доделано!");
					}
					else return SendClientMessage(playerid,COLOR_WHITE,"Вы отошли слишком далеко от ларька");
				}
			}
		}
		else
		{
			return true;
		}
	}
Ну и последнее добавляем команду;
PHP:
if(strcmp(cmd, "/fastfood", true) == 0)
	{
		if(IsPlayerConnected(playerid))
		{
			if(PlayerInfo[playerid][pLarKey] == 255) return SendClientMessage(playerid, COLOR_WHITE,"У вас нет ларька!");
			new kluch,kolvo,summa;
			kluch = PlayerInfo[playerid][pLarKey];
			new idx;
			tmp = strtok(text, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COLOR_WHITE,"ИСПОЛЬЗОВАТЬ: /fastfood [название покупки] [кол-во] 1 единица товара = 5$");
				SendClientMessage(playerid, COLOR_WHITE,"Товары: Хотдог, Гамбургер, Сендвич, Пицца, Сосиска в тесте");
				return true;
			}
			if((strcmp("Хотдог", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("Хотдог")))
			{
					kolvo = strval(tmp);
					if(kolvo < 1) return SendClientMessage(playerid, COLOR_LIGHTRED, "Неверное значение!");
					if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Используйте: /fastfood [название покупки] [кол-во] [кол-во] 1 единица товара = 5$");
					summa = kolvo * 5;
					if(kbBizzInfo[kluch][kbTovarKol1] += kolvo > 100) return SendClientMessage(playerid, COLOR_LIGHTRED, "Нельзя покупать больше, чем 100 товаров");
					GivePlayerMoney(playerid, -summa);
					kbBizzInfo[kluch][kbTovarKol1] += kolvo;
				}
				else if ((strcmp("Гамбургер", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("Гамбургер")))
				{
					kolvo = strval(tmp);
						if(kolvo < 1) return SendClientMessage(playerid, COLOR_LIGHTRED, "Неверное значение!");
						if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Используйте: /fastfood [название покупки] [кол-во] [кол-во] 1 единица товара = 5$");
						summa = kolvo * 10;
						if(kbBizzInfo[kluch][kbTovarKol2] += kolvo > 100) return SendClientMessage(playerid, COLOR_LIGHTRED, "Нельзя покупать больше, чем 100 товаров");
						GivePlayerMoney(playerid, -summa);
						kbBizzInfo[kluch][kbTovarKol2] += kolvo;
				}
				else if ((strcmp("Сендвич", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("Сендвич")))
				{
					kolvo = strval(tmp);
						if(kolvo < 1) return SendClientMessage(playerid, COLOR_LIGHTRED, "Неверное значение!");
						if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Используйте: /fastfood [название покупки] [кол-во] [кол-во] 1 единица товара = 5$");
						summa = kolvo * 10;
						if(kbBizzInfo[kluch][kbTovarKol3] += kolvo > 100) return SendClientMessage(playerid, COLOR_LIGHTRED, "Нельзя покупать больше, чем 100 товаров");
						GivePlayerMoney(playerid, -summa);
						kbBizzInfo[kluch][kbTovarKol3] += kolvo;
				}
				else if ((strcmp("Пицца", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("Пицца")))
				{
					kolvo = strval(tmp);
						if(kolvo < 1) return SendClientMessage(playerid, COLOR_LIGHTRED, "Неверное значение!");
						if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Используйте: /fastfood [название покупки] [кол-во] [кол-во] 1 единица товара = 5$");
						summa = kolvo * 15;
						if(kbBizzInfo[kluch][kbTovarKol4] += kolvo > 100) return SendClientMessage(playerid, COLOR_LIGHTRED, "Нельзя покупать больше, чем 100 товаров");
						GivePlayerMoney(playerid, -summa);
						kbBizzInfo[kluch][kbTovarKol4] += kolvo;
				}
				else if ((strcmp("Сосиска в тесте", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("Сосиска в тесте")))
				{
					kolvo = strval(tmp);
						if(kolvo < 1) return SendClientMessage(playerid, COLOR_LIGHTRED, "Неверное значение!");
						if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Используйте: /fastfood [название покупки] [кол-во] [кол-во] 1 единица товара = 5$");
						summa = kolvo * 10;
						if(kbBizzInfo[kluch][kbTovarKol5] += kolvo > 100) return SendClientMessage(playerid, COLOR_LIGHTRED, "Нельзя покупать больше, чем 100 товаров");
						GivePlayerMoney(playerid, -summa);
						kbBizzInfo[kluch][kbTovarKol5] += kolvo;
				}
				else return SendClientMessage(playerid, COLOR_GRAD6, "  Неправильное название.");
			}
			return true;
		}
Систему не проверял,хочется спать.Всем пока(До завтра!)
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу