Ко всем 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