Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Делаем заводку двигателя(с задержкой)

Статус
В этой теме нельзя размещать новые ответы.

Lucky_Drug

Умник
- Добрый день.
- Решил сделать заводку двигателя с задержкой, специально для RolePlay серверов.
- Чтобы моментально двигатель не заводился, с учетом заведется он или нет.


1. Создаем переменные:
PHP:
new engine,lights,alarm,doors,bonnet,boot,objective;
- Если есть, то не надо.

2.В public OnPlayerKeyStateChange, вставляем:
PHP:
	if(newkeys == KEY_FIRE)//можете сменить на свою кнопку, в этом случае ЛКМ.
	{
	    new vehid = GetPlayerVehicleID(playerid);
	    if(GetPlayerState(playerid) == 2)//проверка, игрок в машине
	    {
			if(BicycleVeh(vehid))return true;//проверка, велосипеды
			if(!EngineStatus(vehid))//проверка, заведен, нет
			{
				 if(GetPVarInt(playerid, "EngineStart") == 1) return SendMe(playerid,-1,"Двигатель заводиться! Подождите...");//чтобы не нажимали, проверка
				 SetPVarInt(playerid, "EngineStart", 1);//заведен, поднимаем
	 	 	 	 SetTimerEx("StatusVehicle",2500,0,"i",playerid);//таймер заводки двигателя
	 	 	 	 SendMe(playerid,-1,"подождите двигатель заводиться.");//выводим инструкцию
			}
/* аналогично, без таймера и опускаем, что заглушен. */
	 		else if(EngineStatus(carid))
	      	{
	      	     SetPVarInt(playerid, "EngineStart", 0);
	     		 Engine(carid,false);
	 	 	 	 SendMe(playerid,-1,"Вы заглушили двигатель.");
				 return true;
	  		}
	  	}
	}
3. Наш таймер, создаем его:
PHP:
forward StatusVehicle(playerid);
public StatusVehicle(playerid)
{
    SetPVarInt(playerid, "EngineStart", 0);//опускаем
    if(IsPlayerConnected(playerid))
    {
        new vehid = GetPlayerVehicleID(playerid);
        if(IsPlayerInAnyVehicle(playerid))
        {
            new startrandom = random(4);//рандом, может и не завестись
            switch(startrandom)
            {
                case 0,1,2:
                {
					SendMe(playerid,-1,"Вы завели двигатель");
					Engine(vehid,true);//завелся двигатель
                }
                case 3:
                {
					SendMe(playerid,-1,"Вы не завели двигатель");
					Engine(vehid,false);//не завелся двигатель
                }
            }
        }
    }
    return true;
}
4. Наши функции:
PHP:
stock Engine(vehicleid,bool:launched)
{
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    return launched ? SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective) : SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
}

stock EngineStatus(vehicleid) {
        GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
        return engine;
}

stock BicycleVeh(carid)
{
	switch(GetVehicleModel(carid))
	{
	   case 481, 509, 510: return true;//наши id's велосипедов
	}
	return false;
}
#define SendMe(%0,%2,%1) SendClientMessage(%0, %2,%1)//оптимизация на милесекунды
- Это я сделал, для того чтобы вы взяли за основу, и переделали под свой мод, конечно у Вас там разные функции, меняйте под свой вкус, добавляйте проверок. Получится красиво.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу