Dark_Ilya
Компетентный
Всем доброго вечера/ночи.
Вот думал думал и всё-таки дописал эту систему.Хотя, нужно будет её ещё не много доработать,но это завтра.
Ладно давайте приступим:
Ко всем enum'ам
Далее ищем enum pInfo
В public OnPlayerConnect(playerid)
Теперь нам нужно найти паблик,который отвечает за клавиши(Извените,но никак не могу вспомнить название)
В public OnGameModeInit()
К диалогАМ:
Ну и последнее добавляем команду;
Систему не проверял,хочется спать.Всем пока(До завтра!)
Вот думал думал и всё-таки дописал эту систему.Хотя, нужно будет её ещё не много доработать,но это завтра.
Ладно давайте приступим:
Ко всем 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];
PHP:
pLarkkey,
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,"Выбрать","Отмена");
}
}
}
}
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;
}
Последнее редактирование:
