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

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

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

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

Фракционные автомобили.

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

Rico_W

Умник
Сделал простенькую систему автомобилей. Мод new.pwn.
В OnPlayerStateChange поставил проверку:
PHP:
    new newcar;
    newcar = newstate;
    if(newcar == povcar[0] || newcar == povcar[1] || newcar == povcar[2] || newcar == povcar[3] || newcar == povcar[4] || newcar == povcar[5] || newcar == povcar[6] || newcar == povcar[7] || newcar == povcar[8])
	{
		if(pInfo[playerid][pLeader] != 1 && pInfo[playerid][pMember] != 1)
		{
			TogglePlayerControllable(playerid,1);
			RemovePlayerFromVehicle(playerid);
			return SendClientMessage(playerid,COLOR_RED,"[Сервер]:Вы не Имеете доступ к этому автомобилю.");
		}
	}
Все работает, кроме следующего:
1) Если игрок не состоит в фракции №1, сообщение выводится дважды, первый раз, когда игрок садится в авто, второй, когда из него выходит. Как сделать так, чтобы выводилось единожды?
2) Если игрок состоит в 1 фракции, он остается в машине, но не заводится двигатель. Подскажите функцию, которая отвечает за запуск двигателя?

---------- Post added at 13:21 ---------- Previous post was at 13:03 ----------

С сообщениями проблему решил, добавил
PHP:
if(newstate == PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_ONFOOT)
С двигателем проблема остается...

---------- Post added at 14:06 ---------- Previous post was at 13:21 ----------



---------- Post added at 14:34 ---------- Previous post was at 14:06 ----------

Сделал сис-му "заведения" двигателя с урока клац. Немного переделал. Вообщем, переделал команду :
PHP:
COMMAND:start(playerid, params[])
{
    if(EngineState[playerid] == false)
    {
        if(GetPlayerVehicleID(playerid) != INVALID_VEHICLE_ID)
        {
            if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
            {
                new string[180];
            	GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
                SetVehicleParamsEx(GetPlayerVehicleID(playerid) ,VEHICLE_PARAMS_ON,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
                format(string, sizeof(string), "%s завел(а) машину.", pNick(playerid));
                ProxDetector(15.0, playerid, string, GetPlayerColor(playerid),GetPlayerColor(playerid),GetPlayerColor(playerid),GetPlayerColor(playerid),GetPlayerColor(playerid));
                EngineState[playerid] = true;
            }
        }
        return true;
    }
	else
	{
	    SendClientMessage(playerid, 0x1E90FFFF, "[Сервер]: Двигатель уже работает.");
	}
	return 1;
}
COMMAND:stop(playerid, params[])
{
    if(EngineState[playerid] == true)
    {
        if(GetPlayerVehicleID(playerid) != INVALID_VEHICLE_ID)
        {
            if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
            {
                new string[180];
                GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
                SetVehicleParamsEx(GetPlayerVehicleID(playerid),VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
                format(string, sizeof(string), "%s заглушил(а) машину", pNick(playerid));
                ProxDetector(15.0, playerid, string, GetPlayerColor(playerid),GetPlayerColor(playerid),GetPlayerColor(playerid),GetPlayerColor(playerid),GetPlayerColor(playerid));
                EngineState[playerid] = false;
            }
        }
        return true;
    }
    else
	{
	    SendClientMessage(playerid, 0x1E90FFFF, "[Сервер]: Двигатель не работает.");
	}
	return 1;
}

И вместо OnPlayerStateChange, сделал следующее:

В OnPlayerEnterVehicle
PHP:
if(EngineState[playerid] == false)
	{
	    SendClientMessage(playerid, 0x1E90FFFF, "[Сервер]: Чтобы завести двигатель - /start, заглушить - /stop.");
	}
Проблема в следующем, если завел 1 автомобиль, оставил его заведенным, пересаживаешься в другой, то другой уже нельзя завести т.к. (я думаю) EngineState[playerid] уже истина. Так же, если сесть в другую машину, при одновременно заведенной какой-нибудь другой, прописать stop, пишет что двигатель заглох и после этого уже можно ее завести. Подскажите что делать?
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу