Ко всем const
Код:
const MAX_AZS = 1;// Сколько азс в моде.
Сделаем переменную
Код:
local AZSInfo = {};
local vidTopliwa = array(getPlayerSlots(), 0);В onScriptInit вставим
Код:
for(local i=0; i<MAX_AZS; i++)
{
AZSInfo[i] <- {};
AZSInfo[i].AZSOwned <- 0;// есть владелец или нет
AZSInfo[i].AZSOwner <- 0;// владелец
AZSInfo[i].AZSEntranceX <- 0;// коры
AZSInfo[i].AZSEntranceY <- 0;
AZSInfo[i].AZSEntranceZ <- 0;
AZSInfo[i].AZSLevel <- 0;// уровень бизнеса
AZSInfo[i].AZSCena <- 0;// цена бизнеса
AZSInfo[i].AZSTill <- 0;// касса
AZSInfo[i].AZSProd <- 0;// сколько продуктов в наличии
AZSInfo[i].AZSMaxProd <- 0;// максимальное число прод
AZSInfo[i].AZSCenaDis <- 0;
AZSInfo[i].AZSCena92 <- 0;
AZSInfo[i].AZSCena95 <- 0;
}В onPlayerJoin
Код:
users[playerid].azskey <- 255;
В onPlayerRegister
Код:
pFile.setKey("Property", "AZSkey", "255");В onPlayerLogin
Код:
users[playerid].azskey = pFile.getKey("Property", "AZSkey").tointeger();В savePlayers
Код:
pFile.setKey("Property", "AZSkey", users[i].azskey.tostring());Далее сделаем команды
В onPlayerCommand
Код:
//===================================< AZS >=================================================
if(cmd[0] == "/buyazs")
{
if(users[playerid].azskey != 255) return sendPlayerMessage(playerid, "[Ошибка] У вас уже есть АЗС!",Red);
for(local a = 0; a < AZSInfo.len(); a++) {
if(playerToPoint(playerid, 2.0, AZSInfo[a].AZSEntranceX, AZSInfo[a].AZSEntranceY, AZSInfo[a].AZSEntranceZ) && AZSInfo[a].AZSOwned == 0) {
if(users[playerid].level < AZSInfo[a].AZSLevel) return sendPlayerMessage(playerid, " Вы должны быть "+AZSInfo[a].AZSLevel+" уровня чтобы купить АЗС.",Red);
if(users[playerid].money >= AZSInfo[a].AZSCena) {
users[playerid].azskey = a;
AZSInfo[a].AZSOwned = 1;
AZSInfo[a].AZSOwner = getPlayerName(playerid);
local amount = AZSInfo[a].AZSCena;
givePlayerMoney(playerid, -amount);users[playerid].money -= amount;
sendPlayerMessage(playerid, "* Поздравляем, Вы только что приобрели АЗС.",Lemon);
sendPlayerMessage(playerid, "* Информация - /azs",Lemon);
saveCFG();updateLabel();
savePlayers();
return true;
}
else {
sendPlayerMessage(playerid, "[Ошибка] Недостаточно средств!",Red);
return true;
}
}
}
return true;
}
if(cmd[0] == "/azs")
{
if(users[playerid].azskey == 255) return sendPlayerMessage(playerid, "[Ошибка] У вас уже нет АЗС!",Red);
showPlayerDialog(playerid, 5, 2, "АЗС инфо", "Информация\nСменить цену за литр\nСнять деньги с кассы", "Да", "Нет");
}
//Далее сделаем диалоги. В onDialogResponse
Код:
if(dialogid == 5)
{
if(response)
{
if(listitem == 0)
{
if(users[playerid].azskey == 255) return sendPlayerMessage(playerid, "[Ошибка] У вас уже нет АЗС!",Red);
local azs = users[playerid].azskey;
showPlayerDialog(playerid, 6, 0, "АЗС Информация ", "Касса: "+AZSInfo[azs].AZSTill+" \nЦены за 1 литр \nДизтопливо "+AZSInfo[azs].AZSCenaDis+" \nАи-92 "+AZSInfo[azs].AZSCena92+" \nАи-95 "+AZSInfo[azs].AZSCena95, "Назад","Отмена");
}
if(listitem == 1)
{
if(users[playerid].azskey == 255) return sendPlayerMessage(playerid, "[Ошибка] У вас уже нет АЗС!",Red);
showPlayerDialog(playerid, 7, 2, "Выберите топливо", "Дизтопливо\nАи-92\nАи-95", "Да", "Отмена");
}
if(listitem == 2)
{
if(users[playerid].azskey == 255) return sendPlayerMessage(playerid, "[Ошибка] У вас уже нет АЗС!",Red);
local azs = users[playerid].azskey;
local summa = AZSInfo[azs].AZSTill;
givePlayerMoney(playerid, summa); users[playerid].money += summa;
AZSInfo[azs].AZSTill = 0;
saveCFG(); updateLabel();
savePlayers();
sendPlayerMessage(playerid, "* Вы сняли $"+summa,Lemon);
}
}
else
{
showPlayerDialog(playerid, 5, 2, "АЗС инфо", "Информация\nСменить цену за литр\nСнять деньги с кассы", "Да", "Отмена");
}
}
if(dialogid == 6)
{
if(response)
{
showPlayerDialog(playerid, 5, 2, "АЗС инфо", "Информация\nСменить цену за литр\nСнять деньги с кассы", "Да", "Отмена");
}
else
{
}
}
if(dialogid == 7)
{
if(response)
{
if(listitem == 0)
{
showPlayerDialog(playerid, 8, 1, "Цену за литр", "Какая будет цена?", "Да", "Отмена");
vidTopliwa = 1;
}
if(listitem == 1)
{
showPlayerDialog(playerid, 8, 1, "Цену за литр", "Какая будет цена?", "Да", "Отмена");
vidTopliwa = 2;
}
if(listitem == 2)
{
showPlayerDialog(playerid, 8, 1, "Цену за литр", "Какая будет цена?", "Да", "Отмена");
vidTopliwa = 3;
}
}
else
{
showPlayerDialog(playerid, 5, 2, "АЗС инфо", "Информация\nСменить цену за литр\nСнять деньги с кассы", "Да", "Отмена");
}
}
if(dialogid == 8)
{
if(response)
{
local cena = split(inputtext, " ");
local azs = users[playerid].azskey;
if(vidTopliwa == 1)
{
AZSInfo[azs].AZSCenaDis = cena[0].tointeger();
saveCFG();
}
if(vidTopliwa == 2)
{
AZSInfo[azs].AZSCena92 = cena[0].tointeger();
saveCFG();
}
if(vidTopliwa == 3)
{
AZSInfo[azs].AZSCena95 = cena[0].tointeger();
saveCFG();
}
saveCFG();
updateLabel();
showPlayerDialog(playerid, 5, 2, "АЗС инфо", "Информация\nСменить цену за литр\nСнять деньги с кассы", "Да", "Отмена");
}
else
{
showPlayerDialog(playerid, 5, 2, "АЗС инфо", "Информация\nСменить цену за литр\nСнять деньги с кассы", "Да", "Отмена");
}
}Затем загрузка и сохранение файла
Код:
function loadAZS()
{
local myfile = file("azs.cfg", "rb+");
local arrCoords = array(13);
local fileContent = myfile.readFile();
local aFileContent = split(fileContent, "\n");
if(myfile)
{
local idx = 0;
while(idx < AZSInfo.len())
{
arrCoords = split(aFileContent[idx], "|");
AZSInfo[idx].AZSOwned = arrCoords[0].tointeger();
AZSInfo[idx].AZSOwner = arrCoords[1].tostring();
AZSInfo[idx].AZSEntranceX = arrCoords[2].tofloat();
AZSInfo[idx].AZSEntranceY = arrCoords[3].tofloat();
AZSInfo[idx].AZSEntranceZ = arrCoords[4].tofloat();
AZSInfo[idx].AZSLevel = arrCoords[5].tointeger();
AZSInfo[idx].AZSCena = arrCoords[6].tointeger();
AZSInfo[idx].AZSTill = arrCoords[7].tointeger();
AZSInfo[idx].AZSProd = arrCoords[8].tointeger();
AZSInfo[idx].AZSMaxProd = arrCoords[9].tointeger();
AZSInfo[idx].AZSCenaDis = arrCoords[10].tointeger();
AZSInfo[idx].AZSCena92 = arrCoords[11].tointeger();
AZSInfo[idx].AZSCena95 = arrCoords[12].tointeger();
log("AZS № "+ idx +"|Owner: "+ AZSInfo[idx].AZSOwner +" Till: "+ AZSInfo[idx].AZSTill);
idx++;
}
log("|AZS: "+MAX_AZS);
}
return true;
}
addEvent("scriptInit", loadAZS);
function saveCFG()
{
local idx=0;
local myfile2;
local str;
while (idx < AZSInfo.len())
{
str = format(AZSInfo[idx].AZSOwned+"|"
+AZSInfo[idx].AZSOwner+"|"
+AZSInfo[idx].AZSEntranceX+"|"
+AZSInfo[idx].AZSEntranceY+"|"
+AZSInfo[idx].AZSEntranceZ+"|"
+AZSInfo[idx].AZSLevel+"|"
+AZSInfo[idx].AZSCena+"|"
+AZSInfo[idx].AZSTill+"|"
+AZSInfo[idx].AZSProd+"|"
+AZSInfo[idx].AZSMaxProd+"|"
+AZSInfo[idx].AZSCenaDis+"|"
+AZSInfo[idx].AZSCena92+"|"
+AZSInfo[idx].AZSCena95+"\r\n");
if(idx == 0)
{
myfile2 = file("azs.cfg", "wb+");
}
else
{
myfile2 = file("azs.cfg", "ab+");
}
myfile2.writeline(str);
idx++;
}
idx = 0;
return true;
}Далее сделаем 3D текст
Код:
function LoadLabel()
{
for(local a = 0; a< AZSInfo.len(); a++)
{
if(AZSInfo[a].AZSOwned == 1)
azsLabel = create3DLabel(" АЗС № "+(a+1)+"\n Владелец "+AZSInfo[a].AZSOwner+"\n Цена за 1 литр \n Дизтопливо: $ "+AZSInfo[a].AZSCenaDis+"\n Аи-92: $ "+AZSInfo[a].AZSCena92+"\n Аи-95: $ "+AZSInfo[a].AZSCena95, AZSInfo[a].AZSEntranceX, AZSInfo[a].AZSEntranceY, AZSInfo[a].AZSEntranceZ, 0xB4B5B7FF, true, 50.0);
else
azsLabel = create3DLabel(" АЗС № "+(a+1)+" Продается \n Цена "+AZSInfo[a].AZSCena+"\n Уровень"+AZSInfo[a].AZSLevel+"\n Цена за 1 литр \n Дизтопливо: $ "+AZSInfo[a].AZSCenaDis+"\n Аи-92: $ "+AZSInfo[a].AZSCena92+"\n Аи-95: $ "+AZSInfo[a].AZSCena95, AZSInfo[a].AZSEntranceX, AZSInfo[a].AZSEntranceY, AZSInfo[a].AZSEntranceZ, 0xB4B5B7FF, true, 50.0);
}
}
addEvent("scriptInit", LoadLabel);Обновление 3D текста
Код:
function updateLabel()
{
delete3DLabel(azsLabel);
for(local a = 0; a< AZSInfo.len(); a++)
{
if(AZSInfo[a].AZSOwned == 1)
azsLabel = create3DLabel(" АЗС № "+(a+1)+"\n Владелец "+AZSInfo[a].AZSOwner+"\n Цена за 1 литр \n Дизтопливо: $ "+AZSInfo[a].AZSCenaDis+"\n Аи-92: $ "+AZSInfo[a].AZSCena92+"\n Аи-95: $ "+AZSInfo[a].AZSCena95, AZSInfo[a].AZSEntranceX, AZSInfo[a].AZSEntranceY, AZSInfo[a].AZSEntranceZ, 0xB4B5B7FF, true, 50.0);
else
azsLabel = create3DLabel(" АЗС № "+(a+1)+" Продается \n Цена "+AZSInfo[a].AZSCena+"\n Уровень"+AZSInfo[a].AZSLevel+"\n Цена за 1 литр \n Дизтопливо: $ "+AZSInfo[a].AZSCenaDis+"\n Аи-92: $ "+AZSInfo[a].AZSCena92+"\n Аи-95: $ "+AZSInfo[a].AZSCena95, AZSInfo[a].AZSEntranceX, AZSInfo[a].AZSEntranceY, AZSInfo[a].AZSEntranceZ, 0xB4B5B7FF, true, 50.0);
}
}Иконку на карте
Код:
function LoadBlips()
{
for(local a = 0; a< AZSInfo.len(); a++)
{
local azsblip = createBlip(83, AZSInfo[a].AZSEntranceX, AZSInfo[a].AZSEntranceY, AZSInfo[a].AZSEntranceZ, true);
}
}
addEvent("scriptInit", LoadBlips);Ну и в конце мода
Код:
class file extends file
{
function readFile()
{
local fullStr = "";
while (!this.eos ())
{
local c = this.readn ('c');
fullStr += c.tochar();
if (this.eos ()) return fullStr;
}
return fullStr;
}
function writeline(line)
{
foreach(char in line)
{
this.writen(char, 'c');
}
this.writen('\n', 'c');
}
}В папку files помещаем файл azs.cfg
Подробнее про файл и как добавить новую азс в следующей теме
Теги: Система АЗС,iv-mp


