Здесь Мы используем темы
Разделение техники
Заводим автомобиль и включаем свет
Делаем объем бака для каждого автомобиля свой
Система АЗС(на файлах)
Сделаем разделение топлива
Объявим максимальное количество техники на сервере

Код:
const MAX_VEHICLES = 1024;

Создадим переменные

Код:
local Fuel	= array(MAX_VEHICLES, 0);
local fuelCheckTimer; // таймер

В onScriptInit

Код:
fuelCheckTimer = timer(fuelCheck, 30000, -1); // таймер
for (local car = 0; car < MAX_VEHICLES; car++) {
    Fuel[car] = 10; // начальное количество топлива в технике при старте сервера
	}

В onScriptExit

Код:
fuelCheckTimer.kill(); // убиваем таймер

Сделаем пару функций

Код:
function fuelCheck() // чтоб расходовалось топливо
{
	foreach(playerid, playername in getPlayers())
    {
    local vehid = getPlayerVehicleId(playerid).tointeger();
    if(BoatVeh(vehid)||PlaneVeh(vehid)) return true;
    if(Engine[playerid] == 1) {
    	if(Fuel[vehid] > 0) {
        Fuel[vehid]--;
        if(Fuel[vehid] == 0) {
        	Engine[playerid] = 0;
        	setVehicleEngineState(vehid, false);
        	sendPlayerMessage(playerid,"Двигатель заглох",0xB4B5B7FF);
        }
    	}
    	else if(Fuel[vehid] <= 0) {
        Engine[playerid] = 0;
        setVehicleEngineState(vehid, false);
        sendPlayerMessage(playerid,"Двигатель заглох",0xB4B5B7FF);
    	}
    }
	}
}

function fillUp() // заправка
{
	foreach(playerid, playername in getPlayers())
    {
    for(local a = 0; a< AZSInfo.len(); a++)
    {
    	local carid = getPlayerVehicleId(playerid);
    	local up = fuelMax(carid) - Fuel[carid];
    	local summa;
    	if(AZSInfo[a].AZSProd < up) return sendPlayerMessage(playerid,"На АЗС закончились запасы топлива",0xB4B5B7FF);
    	if(IsADiesel(carid)){
        summa = up*AZSInfo[a].AZSCenaDis;
    	}
    	else if(IsA92Fuel(carid)){
        summa = up*AZSInfo[a].AZSCena92;
    	}
    	else if(IsA95Fuel(carid)){
        summa = up*AZSInfo[a].AZSCena95;
    	}
    	Fuel[carid] += up;
    	users[playerid].money -= summa;
    	givePlayerMoney(playerid, -summa);
    	AZSInfo[a].AZSTill += summa;
    	AZSInfo[a].AZSProd -= up;
    	saveCFG();
    	sendPlayerMessage(playerid,"Вы заправили "+up+" л на сумму $"+summa,0xB4B5B7FF);
    }
	}
}

Теперь в скрипт KeyPress.nut после

Код:
if(key == "l" && status == "down")
	{
    triggerServerEvent("switchLights");
	}

Вставим

Код:
if(key == "h" && status == "down") // при нажатии на кнопку H(Сигнал) вызываем диалог
	{
    triggerServerEvent("fill");
	}

Теперь в сам мод вставим функцию

Код:
addEvent("fill",
	function(playerid)
	{
    for(local a = 0; a< AZSInfo.len(); a++)
    {
    	if(playerToPoint(playerid, 5.0, AZSInfo[a].AZSEntranceX, AZSInfo[a].AZSEntranceY, AZSInfo[a].AZSEntranceZ) && isPlayerInAnyVehicle(playerid)){
        if(Engine[playerid] == 1) return sendPlayerMessage(playerid, "Заглушите автомобиль", 0xB4B5B7FF);
        showPlayerDialog(playerid, 4, 0, "АЗС", "Вы хотите заправить автомобиль?", "Да", "Нет");
    	}
    }
	}
);

Ну и наконец в onDialogResponse

Код:
if(dialogid == 4)
    {
        if(response)
        {
            fillUp();
        }
    else
    {
    	 
    }
    }

Ну вот и все
Дальше будет интереснее. Оставайтесь с нами.