Всем Хай!
Решил выложить Урок по написанию Системы Бизнесов. Система подойдёт для любого мода.
В системе всё есть, кроме продуктов, баров и т.д. - я решил, что будет 100500 вопросов по ним и лучше напишите сами.
И так... Для начала нам потребуются 2 include'а:Решил выложить Урок по написанию Системы Бизнесов. Система подойдёт для любого мода.
В системе всё есть, кроме продуктов, баров и т.д. - я решил, что будет 100500 вопросов по ним и лучше напишите сами.
PHP:
#include mxINI
#include sscanf2
PHP:
#define MAX_BUSINESS 500//Макс. кол-во Бизнесов
enum bInfo
{
bBusName[64], //Название
bOwner[MAX_PLAYER_NAME], //Владелец
bPrice, //Цена
bLock, //Двери(Открыты, закрыты)
bInterior, //Интерьер
bVirtWorld, //Виртуальный мир
bPick, // Пикап
Text3D:bText, //3DText
Float:bX, //X Координата
Float:bY, //Y Координата
Float:bZ //Z Координата
};
new BusinessInfo[MAX_BUSINESS][bInfo];
new BusAmount; //Количество Бизнесов
new LString[128];
enum biInfo //Значения берутся из Массива ниже
{
biInt, //Интерьер
Float:biX, //X Координата
Float:biY, //Y Координата
Float:biZ, //Z Координата
biName[15], //Имя
}
new bInts[][biInfo]=
{
{4,457.304748,-88.428497,999.554687,"Закусочная №1"},
{5,454.973937,-110.104995,1000.077209,"Закусочная №2"},
{15,207.737991,-109.019996,1005.132812,"Binco"},
{5,226.293991,-7.431529,1002.210937,"Vicitim"},
{4,286.800994,-82.547599,1001.515625,"Ammo"},
{5,772.111999,-3.898649,1000.728820,"Спортзал"},
{15,2215.454833,-1147.475585,1025.796875,"Гостиница"},
{2,1204.809936,-11.586799,1000.921875,"Стриптиз Клуб"},
{17,493.390991,-22.722799,1000.679687,"Альхамбра"}
};
PHP:
{
4, //Интерьер
457.304748, //X координата входа
-88.428497, //Y координата входа
999.554687, //Z координата входа
"Закусочная №1" //Имя
}
Теперь пишем Загрузку, Обновление и Сохранение Бизнесов:
В public OnGameModeInit():
PHP:
LoadBusiness();//Загружаем Бизнесы
PHP:
LoadBusiness()
{
if(!fexist("Business/MBusiness.ini")) return print("[Бизнесы]Ошибка: Файл 'MBusiness.ini' не найден!");//Если нет файла MBusiness.ini
new f = ini_openFile("Business/MBusiness.ini");
ini_getInteger(f, "Amount", BusAmount);//Получаем значение
ini_closeFile(f);//Закрываем файл
if(!fexist("Business/Business.ini")) return print("[Бизнесы]Ошибка: Файл 'Business.ini' не найден!");//Если нет файла Business.ini
f = ini_openFile("Business/Business.ini");//Открываем файл
new str[8];
for(new b = 1; b <= BusAmount; b++)//Для всех Бизнесов
{
format(str, sizeof(str), "ID %d", b);//Форматируем
ini_getString(f, str, LString);//Получаем Значение
sscanf(LString, "p<|>s[32]s[24]fffiiii", BusinessInfo[b][bBusName], BusinessInfo[b][bOwner], BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ], BusinessInfo[b][bInterior], BusinessInfo[b][bVirtWorld], BusinessInfo[b][bPrice], BusinessInfo[b][bLock]);
if(!strcmp(BusinessInfo[b][bOwner],"None",true))//Если нет владельца
{
BusinessInfo[b][bPick] = CreatePickup(1274, 23, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ], 0);//Создаём Пикап
format(LString,128,"Бизнес\n%s\nЦена: $%d", BusinessInfo[b][bBusName], BusinessInfo[b][bPrice]);//Форматируем
BusinessInfo[b][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ] + 0.5, 10.0, 0, 0);//Создаём 3DText
}
else//Иначе
{
BusinessInfo[b][bPick] = CreatePickup(1272, 23, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ],0);//Создаём Пикап
format(LString, 128, "Бизнес\n%s\nВладелец: %s", BusinessInfo[b][bBusName],BusinessInfo[b][bOwner]);//Форматируем
BusinessInfo[b][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ] +0.5, 10.0, 0, 0);//Создаём 3DText
}
}
ini_closeFile(f);//Закрываем файл
return printf("Бизнесы Загружены | Кол-во: %d",BusAmount);//Записываем в Логи
}
PHP:
UpdateBusiness(b)
{
DestroyPickup(BusinessInfo[b][bPick]);//Удаляем Пикап
if(!strcmp(BusinessInfo[b][bOwner],"None",true))//Если нет владельца
{
BusinessInfo[b][bPick] = CreatePickup(1274, 23, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ],0);//Создаём Пикап
format(LString, 128, "Бизнес\n%s\nЦена: $%d", BusinessInfo[b][bBusName], BusinessInfo[b][bPrice]);//Форматируем
Update3DTextLabelText(BusinessInfo[b][bText],0xFFFFFFFF,LString);//Обновляем 3DText
}
else//Иначе
{
BusinessInfo[b][bPick] = CreatePickup(1272, 23, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ], 0);//Создаём Пикап
format(LString,128,"Бизнес\n%s\nВладелец: %s",BusinessInfo[b][bBusName],BusinessInfo[b][bOwner]);//Форматируем
Update3DTextLabelText(BusinessInfo[b][bText],0xFFFFFFFF,LString);//Обновляем 3DText
}
}
PHP:
SaveBusiness(b)
{
new f = ini_openFile("Business/Business.ini");//Открываем файл
new str[8];
format(str, 8, "ID %d", b);//Форматируем
format(LString,sizeof(LString),"%s|%s|%f|%f|%f|%d|%d|%d|%d", BusinessInfo[b][bBusName], BusinessInfo[b][bOwner], BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ], BusinessInfo[b][bInterior], BusinessInfo[b][bVirtWorld], BusinessInfo[b][bPrice], BusinessInfo[b][bLock]);//Форматируем
ini_setString(f,str,LString);//Присваиваем значение
ini_closeFile(f);//Закрываем файл
return true;
}
PHP:
SaveBusinessAmount()
{
new f=ini_openFile("Business/MBusiness.ini");//Открываем файл
ini_setInteger(f,"Amount",BusAmount);//Присваиваем значение
return ini_closeFile(f);//Закрываем файл
}
Покупка и продажа:
PHP:
if(strcmp("/buybus", cmdtext, true, 9) == 0)
{
for(new b = 1; b <= BusAmount; b++)//Для всех Бизнесов
{
if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue;
if(GetPlayerMoney(playerid) < BusinessInfo[b][bPrice]) return SendClientMessage(playerid,-1,"У вас не достаточно наличных средств, для покупки."); //Если не достаточно денег
if(strcmp(BusinessInfo[b][bOwner], "None",true) != 0) return SendClientMessage(playerid,-1,"Бизнес не продаётся."); //Если есть Владелец
strmid(BusinessInfo[b][bOwner], PlayerName(playerid), 0, 24, 24);//Устанавливаем Владельца
UpdateBusiness(b);//Обновляем
SaveBusiness(b); //Сохраняем
GivePlayerMoney(playerid,-BusinessInfo[b][bPrice]); //Отнимаем сумму
SendClientMessage(playerid,-1,"Поздравляем с покупкой");
return true;
}
SendClientMessage(playerid,-1,"Подойдите к Бизнесу который желаете купить.");
return true;
}
if(strcmp("/sellbus", cmdtext, true, 10) == 0)
{
for(new b = 1; b <= BusAmount; b++)//Для всех Бизнесов
{
if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue;
if(!strcmp(BusinessInfo[b][bOwner], PlayerName(playerid), true))
{
strmid(BusinessInfo[b][bOwner], "None", 0, 5, 5);//Убираем владельца с Бизнеса
UpdateBusiness(b);//Обновляем
SaveBusiness(b);//Сохраняем
GivePlayerMoney(playerid,BusinessInfo[b][bPrice]/2);//Даём игроку 1/2 стоимости Бизнеса
SendClientMessage(playerid,-1,"Вы продали свой Бизнес государству. За 1/2 его стоимости.");
return true;
}
}
return true;
}
PHP:
if(strcmp("/enter", cmdtext, true, 6) == 0)
{
for(new b = 1; b <= BusAmount; b++)//Для всех Бизнесов
{
if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue;
if(strcmp(BusinessInfo[b][bOwner],PlayerName(playerid), true) !=0 && BusinessInfo[b][bLock] == 1) return SendClientMessage(playerid,-1,"Бизнес закрыт.");//Если закрыт
SetPlayerPos(playerid, bInts[BusinessInfo[b][bInterior]][biX], bInts[BusinessInfo[b][bInterior]][biY], bInts[BusinessInfo[b][bInterior]][biZ]);//Устанавливаем позицию игроку
SetPlayerInterior(playerid, bInts[BusinessInfo[b][bInterior]][biInt]);//Устанавливаем интерьер игроку
SetPlayerVirtualWorld(playerid, BusinessInfo[b][bVirtWorld]);//Устанавливаем виртуальный мир игроку
}
return true;
}
if(strcmp("/exit", cmdtext, true, 5) == 0)
{
for(new b = 1; b <= BusAmount; b++)//Для всех Бизнесов
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, bInts[BusinessInfo[b][bInterior]][biX], bInts[BusinessInfo[b][bInterior]][biY], bInts[BusinessInfo[b][bInterior]][biZ]) && GetPlayerVirtualWorld(playerid) == BusinessInfo[b][bVirtWorld])//Если в радиусе 5 метров от выхода((Координат входа))
{
SetPlayerPos(playerid, BusinessInfo[b][bX],BusinessInfo[b][bY],BusinessInfo[b][bZ]);//Устанавливаем позицию игроку
SetPlayerVirtualWorld(playerid,0);//Устанавливаем виртуальный мир игроку
SetPlayerInterior(playerid,0);//Устанавливаем интерьер игроку
}
}
return true;
}
PHP:
if(strcmp("/bopen", cmdtext, true, 6) == 0)
{
for(new b = 1; b <= BusAmount; b++)//Для всех Бизнесов
{
if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue;//Если на пикапе входа
if(strcmp(BusinessInfo[b][bOwner],PlayerName(playerid) ,true) !=0 ) return SendClientMessage(playerid,-1,"У вас нет ключей от данной собственности.");//Если вы не владелец этого Бизнеса
if(BusinessInfo[b][bLock] == 1)//Если закрыт
{
BusinessInfo[b][bLock] = 0;//Открываем
SaveBusiness(b);//Сохраняем
GameTextForPlayer(playerid,"~w~Business ~g~Un~r~Locked",100,1);
}
else if(BusinessInfo[b][bLock] == 0) return SendClientMessage(playerid,-1,"Бизнес уже открыт.");
return true;
}
return true;
}
if(strcmp("/bclose", cmdtext, true, 6) == 0)
{
for(new b = 1; b <= BusAmount; b++)//Для всех Бизнесов
{
if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue;//Если на пикапе входа
if(strcmp(BusinessInfo[b][bOwner], PlayerName(playerid), true) != 0) return SendClientMessage(playerid,-1,"У вас нет ключей от данной собственности.");//Если вы не владелец этого Бизнеса
if(BusinessInfo[b][bLock] == 0)//Если открыт
{
BusinessInfo[b][bLock]=1;//Закрываем
SaveBusiness(b);//Сохраняем
GameTextForPlayer(playerid,"~w~Business ~r~Locked",100,1);
}
else if(BusinessInfo[b][bLock] == 1) return SendClientMessage(playerid,-1,"Бизнес уже закрыт.");
return true;
}
return true;
}
PHP:
if(strcmp("/addbus", cmdtext, true, 13) == 0)
{
if(IsPlayerAdmin(playerid))//Если Ркон Админ
{
return ShowPlayerDialog(playerid,2000,DIALOG_STYLE_INPUT,"Название","Введите название:","Далее","Отмена");//Выводим Диалог
}
}
В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]):
PHP:
switch(dialogid)
{
case 2000:
{
if(response)//Если продолжаем
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2000, DIALOG_STYLE_INPUT, "Название", "Введите название:", "Далее","Отмена");//Если не введено - повторяем
SetPVarString(playerid, "b_name", inputtext);//Записываем
ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость Бизнеса:", "Далее", "Отмена");//Показываем Диалог с Ценой
}
}
case 2001:
{
if(response)//Если продолжаем
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость бизнеса:","Далее","Назад");//Если не введено - повторяем
SetPVarInt(playerid, "b_price", strval(inputtext));
LString = "";
for(new i; i < sizeof(bInts); i++)
{
strcat(LString, bInts[i][biName]);
strcat(LString, "\n");
}
ShowPlayerDialog(playerid, 2002, DIALOG_STYLE_LIST, "Интерьер", LString, "Далее", "Назад");//Показываем Диалог с выбором Интерьера
}
else DeletePVar(playerid, "b_name"), ShowPlayerDialog(playerid, 2000, DIALOG_STYLE_INPUT, "Название","Введите название:", "Далее", "Отмена");//Иначе
}
case 2002:
{
if(response)//Если продолжаем
{
SetPVarInt(playerid, "b_int", listitem);
ShowPlayerDialog(playerid, 2003, DIALOG_STYLE_MSGBOX, "Подтверждение", "Вы действительно желаете создать Бизнес?", "V", "X");//Подтверждаем
}
else DeletePVar(playerid, "b_price"), ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость Бизнеса:", "Далее", "Назад");//Иначе
}
case 2003:
{
if(response)//Если продолжаем
{
BusAmount++;//КОл-во Бизнесов плюсуем
SaveBusinessAmount();//Сохраняем
new Float:x[3], str[32];
GetPlayerPos(playerid, x[0], x[1], x[2]);//Получаем позицию
GetPVarString(playerid, "b_name", str, 32);
BusinessInfo[BusAmount][bX] = x[0];//Присваиваем Координату X
BusinessInfo[BusAmount][bY] = x[1];//Присваиваем Координату Y
BusinessInfo[BusAmount][bZ] = x[2];//Присваиваем Координату Z
BusinessInfo[BusAmount][bPrice] = GetPVarInt(playerid, "b_price");//Присваиваем Цену
BusinessInfo[BusAmount][bInterior] = GetPVarInt(playerid, "b_int");//Присваиваем Интерьер
BusinessInfo[BusAmount][bVirtWorld] = BusAmount;//Присваиваем Виртуальный Мир
strmid(BusinessInfo[BusAmount][bBusName], str, 0, 32, 32);//Присваиваем Имя
strmid(BusinessInfo[BusAmount][bOwner], "None", 0, 5, 5);//Присваиваем Владельца "None"
SaveBusiness(BusAmount);//Сохраняем
BusinessInfo[BusAmount][bPick] = CreatePickup(1274,23,x[0],x[1],x[2],0);//Создаём Пикап
format(LString, 128, "Бизнес\n%s\nЦена: $%d", BusinessInfo[BusAmount][bBusName], BusinessInfo[BusAmount][bPrice]);//Форматируем
BusinessInfo[BusAmount][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, x[0], x[1], x[2] + 0.5, 10.0, 0, 0);//Создаём 3DText
GameTextForPlayer(playerid, "~w~Business ~g~Created",100,1);
DeletePVar(playerid, "b_price");
DeletePVar(playerid, "b_name");
DeletePVar(playerid, "b_int");
}
else DeletePVar(playerid,"b_price"), DeletePVar(playerid, "b_name"), DeletePVar(playerid, "b_int");//Иначе
}
}
PHP:
PlayerName(playerid)
{
new Name[24];
GetPlayerName(playerid,Name,24);
return Name;
}
PHP:
#include a_samp
#include mxINI
#include <sscanf2>
#define MAX_BUSINESS 500
enum bInfo
{
bBusName[64],
bOwner[MAX_PLAYER_NAME],
bPrice,
bLock,
bInterior,
bVirtWorld,
bPick,
Text3D:bText,
Float:bX,
Float:bY,
Float:bZ
};
new BusinessInfo[MAX_BUSINESS][bInfo];
new BusAmount;
new LString[128];
enum biInfo
{
biInt,
Float:biX,
Float:biY,
Float:biZ,
biName[15],
}
new bInts[][biInfo]=
{
{4,457.304748,-88.428497,999.554687,"Закусочная №1"},
{5,454.973937,-110.104995,1000.077209,"Закусочная №2"},
{15,207.737991,-109.019996,1005.132812,"Binco"},
{5,226.293991,-7.431529,1002.210937,"Vicitim"},
{4,286.800994,-82.547599,1001.515625,"Ammo"},
{5,772.111999,-3.898649,1000.728820,"Спортзал"},
{15,2215.454833,-1147.475585,1025.796875,"Гостиница"},
{2,1204.809936,-11.586799,1000.921875,"Стриптиз Клуб"},
{17,493.390991,-22.722799,1000.679687,"Альхамбра"}
};
public OnGameModeInit()
{
LoadBusiness();
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp("/addbus", cmdtext, true, 13) == 0)
{
if(IsPlayerAdmin(playerid))
{
return ShowPlayerDialog(playerid,2000,DIALOG_STYLE_INPUT,"Название","Введите название:","Далее","Отмена");
}
}
if(strcmp("/buybus", cmdtext, true, 9) == 0)
{
for(new b = 1; b <= BusAmount; b++)
{
if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue;
if(GetPlayerMoney(playerid) < BusinessInfo[b][bPrice]) return SendClientMessage(playerid,-1,"У вас не достаточно наличных средств, для покупки."); //Если не достаточно денег
if(strcmp(BusinessInfo[b][bOwner], "None",true) != 0) return SendClientMessage(playerid,-1,"Бизнес не продаётся."); //Если есть Владелец
strmid(BusinessInfo[b][bOwner], PlayerName(playerid), 0, 24, 24);
UpdateBusiness(b);//Обновляем
SaveBusiness(b); //Сохраняем
GivePlayerMoney(playerid,-BusinessInfo[b][bPrice]); //Отнимаем сумму
SendClientMessage(playerid,-1,"Поздравляем с покупкой");
return true;
}
SendClientMessage(playerid,-1,"Подойдите к Бизнесу который желаете купить.");
return true;
}
if(strcmp("/sellbus", cmdtext, true, 10) == 0)
{
for(new b = 1; b <= BusAmount; b++)
{
if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue;
if(!strcmp(BusinessInfo[b][bOwner], PlayerName(playerid), true))
{
strmid(BusinessInfo[b][bOwner], "None", 0, 5, 5);
UpdateBusiness(b);
SaveBusiness(b);
GivePlayerMoney(playerid,BusinessInfo[b][bPrice]/2);
SendClientMessage(playerid,-1,"Вы продали свой Бизнес государству. За 1/2 его стоимости.");
return true;
}
}
return true;
}
if(strcmp("/enter", cmdtext, true, 6) == 0)
{
for(new b = 1; b <= BusAmount; b++)
{
if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue;
if(strcmp(BusinessInfo[b][bOwner],PlayerName(playerid), true) !=0 && BusinessInfo[b][bLock] == 1) return SendClientMessage(playerid,-1,"Бизнес закрыт.");
SetPlayerPos(playerid, bInts[BusinessInfo[b][bInterior]][biX], bInts[BusinessInfo[b][bInterior]][biY], bInts[BusinessInfo[b][bInterior]][biZ]);
SetPlayerInterior(playerid, bInts[BusinessInfo[b][bInterior]][biInt]);
SetPlayerVirtualWorld(playerid, BusinessInfo[b][bVirtWorld]);
}
return true;
}
if(strcmp("/exit", cmdtext, true, 5) == 0)
{
for(new b = 1; b <= BusAmount; b++)
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, bInts[BusinessInfo[b][bInterior]][biX], bInts[BusinessInfo[b][bInterior]][biY], bInts[BusinessInfo[b][bInterior]][biZ]) && GetPlayerVirtualWorld(playerid) == BusinessInfo[b][bVirtWorld])
{
SetPlayerPos(playerid, BusinessInfo[b][bX],BusinessInfo[b][bY],BusinessInfo[b][bZ]);
SetPlayerVirtualWorld(playerid,0);
SetPlayerInterior(playerid,0);
}
}
return true;
}
if(strcmp("/bclose", cmdtext, true, 6) == 0)
{
for(new b = 1; b <= BusAmount; b++)
{
if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue;
if(strcmp(BusinessInfo[b][bOwner], PlayerName(playerid), true) != 0) return SendClientMessage(playerid,-1,"У вас нет ключей от данной собственности.");
if(BusinessInfo[b][bLock] == 0)
{
BusinessInfo[b][bLock]=1;
SaveBusiness(b);
GameTextForPlayer(playerid,"~w~Business ~r~Locked",100,1);
}
else if(BusinessInfo[b][bLock] == 1) return SendClientMessage(playerid,-1,"Бизнес уже закрыт.");
return true;
}
return true;
}
if(strcmp("/bopen", cmdtext, true, 6) == 0)
{
for(new b = 1; b <= BusAmount; b++)
{
if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue;
if(strcmp(BusinessInfo[b][bOwner],PlayerName(playerid) ,true) !=0 ) return SendClientMessage(playerid,-1,"У вас нет ключей от данной собственности.");
if(BusinessInfo[b][bLock] == 1)
{
BusinessInfo[b][bLock] = 0;
SaveBusiness(b);
GameTextForPlayer(playerid,"~w~Business ~g~Un~r~Locked",100,1);
}
else if(BusinessInfo[b][bLock] == 0) return SendClientMessage(playerid,-1,"Бизнес уже открыт.");
return true;
}
return true;
}
return false;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case 2000:
{
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2000, DIALOG_STYLE_INPUT, "Название", "Введите название:", "Далее","Отмена");
SetPVarString(playerid, "b_name", inputtext);
ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость Бизнеса:", "Далее", "Отмена");
}
}
case 2001:
{
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость бизнеса:","Далее","Назад");
SetPVarInt(playerid, "b_price", strval(inputtext));
LString = "";
for(new i; i < sizeof(bInts); i++)
{
strcat(LString, bInts[i][biName]);
strcat(LString, "\n");
}
ShowPlayerDialog(playerid, 2002, DIALOG_STYLE_LIST, "Интерьер", LString, "Далее", "Назад");
}
else DeletePVar(playerid, "b_name"), ShowPlayerDialog(playerid, 2000, DIALOG_STYLE_INPUT, "Название","Введите название:", "Далее", "Отмена");
}
case 2002:
{
if(response)
{
SetPVarInt(playerid, "b_int", listitem);
ShowPlayerDialog(playerid, 2003, DIALOG_STYLE_MSGBOX, "Подтверждение", "Вы действительно желаете создать Бизнес?", "V", "X");
}
else DeletePVar(playerid, "b_price"), ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость Бизнеса:", "Далее", "Назад");
}
case 2003:
{
if(response)
{
BusAmount++, SaveBusinessAmount();
new Float:x[3], str[32];
GetPlayerPos(playerid, x[0], x[1], x[2]);
GetPVarString(playerid, "b_name", str, 32);
BusinessInfo[BusAmount][bX] = x[0];
BusinessInfo[BusAmount][bY] = x[1];
BusinessInfo[BusAmount][bZ] = x[2];
BusinessInfo[BusAmount][bPrice] = GetPVarInt(playerid, "b_price");
BusinessInfo[BusAmount][bInterior] = GetPVarInt(playerid, "b_int");
BusinessInfo[BusAmount][bVirtWorld] = BusAmount;
strmid(BusinessInfo[BusAmount][bBusName], str, 0, 32, 32);
strmid(BusinessInfo[BusAmount][bOwner], "None", 0, 5, 5);
SaveBusiness(BusAmount);
BusinessInfo[BusAmount][bPick]=CreatePickup(1274,23,x[0],x[1],x[2],0);
format(LString, 128, "Бизнес\n%s\nЦена: $%d", BusinessInfo[BusAmount][bBusName], BusinessInfo[BusAmount][bPrice]);
BusinessInfo[BusAmount][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, x[0], x[1], x[2] + 0.5, 10.0, 0, 0);
GameTextForPlayer(playerid, "~w~Business ~g~Created",100,1);
DeletePVar(playerid, "b_price"), DeletePVar(playerid, "b_name"), DeletePVar(playerid, "b_int");
}
else DeletePVar(playerid,"b_price"), DeletePVar(playerid, "b_name"), DeletePVar(playerid, "b_int");
}
}
return 1;
}
PlayerName(playerid)
{
new Name[24];
GetPlayerName(playerid,Name,24);
return Name;
}
SaveBusinessAmount()
{
new f=ini_openFile("Business/MBusiness.ini");
ini_setInteger(f,"Amount",BusAmount);
return ini_closeFile(f);
}
LoadBusiness()
{
if(!fexist("Business/MBusiness.ini")) return print("[Бизнесы]Ошибка: Файл 'MBusiness.ini' не найден!");
new f = ini_openFile("Business/MBusiness.ini");
ini_getInteger(f, "Amount", BusAmount);
ini_closeFile(f);
if(!fexist("Business/Business.ini")) return print("[Бизнесы]Ошибка: Файл 'Business.ini' не найден!");
f = ini_openFile("Business/Business.ini");
new str[8];
for(new b = 1; b <= BusAmount; b++)
{
format(str, sizeof(str), "ID %d", b);
ini_getString(f, str, LString);
sscanf(LString, "p<|>s[32]s[24]fffiiii", BusinessInfo[b][bBusName], BusinessInfo[b][bOwner], BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ], BusinessInfo[b][bInterior], BusinessInfo[b][bVirtWorld], BusinessInfo[b][bPrice], BusinessInfo[b][bLock]);
if(!strcmp(BusinessInfo[b][bOwner],"None",true))
{
BusinessInfo[b][bPick] = CreatePickup(1274, 23, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ], 0);
format(LString,128,"Бизнес\n%s\nЦена: $%d", BusinessInfo[b][bBusName], BusinessInfo[b][bPrice]);
BusinessInfo[b][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ] + 0.5, 10.0, 0, 0);
}
else
{
BusinessInfo[b][bPick] = CreatePickup(1272, 23, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ],0);
format(LString, 128, "Бизнес\n%s\nВладелец: %s", BusinessInfo[b][bBusName],BusinessInfo[b][bOwner]);
BusinessInfo[b][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ] +0.5, 10.0, 0, 0);
}
}
ini_closeFile(f);
return printf("Бизнесы Загружены | Кол-во: %d",BusAmount);
}
SaveBusiness(b)
{
new f = ini_openFile("Business/Business.ini");
new str[8];
format(str, 8, "ID %d", b);
format(LString,sizeof(LString),"%s|%s|%f|%f|%f|%d|%d|%d|%d", BusinessInfo[b][bBusName], BusinessInfo[b][bOwner], BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ], BusinessInfo[b][bInterior], BusinessInfo[b][bVirtWorld], BusinessInfo[b][bPrice], BusinessInfo[b][bLock]);
ini_setString(f,str,LString);
ini_closeFile(f);
return true;
}
UpdateBusiness(b)
{
DestroyPickup(BusinessInfo[b][bPick]);
if(!strcmp(BusinessInfo[b][bOwner],"None",true))
{
BusinessInfo[b][bPick] = CreatePickup(1274, 23, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ],0);
format(LString, 128, "Бизнес\n%s\nЦена: $%d", BusinessInfo[b][bBusName], BusinessInfo[b][bPrice]);
Update3DTextLabelText(BusinessInfo[b][bText],0xFFFFFFFF,LString);
}
else
{
BusinessInfo[b][bPick] = CreatePickup(1272, 23, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ], 0);
format(LString,128,"Бизнес\n%s\nВладелец: %s",BusinessInfo[b][bBusName],BusinessInfo[b][bOwner]);
Update3DTextLabelText(BusinessInfo[b][bText],0xFFFFFFFF,LString);
}
}
Не забудьте добавить в Scriptfiles папку Business, а в ней создать "Business.ini" и "MBusiness.ini"
Всё Готово! Спасибо За Внимание!
Автор: Я ((Lev_Popov))
Последнее редактирование: