Rico_W
Умник
Сделал простенькую систему автомобилей. Мод new.pwn.
В OnPlayerStateChange поставил проверку:
Все работает, кроме следующего:
1) Если игрок не состоит в фракции №1, сообщение выводится дважды, первый раз, когда игрок садится в авто, второй, когда из него выходит. Как сделать так, чтобы выводилось единожды?
2) Если игрок состоит в 1 фракции, он остается в машине, но не заводится двигатель. Подскажите функцию, которая отвечает за запуск двигателя?
---------- Post added at 13:21 ---------- Previous post was at 13:03 ----------
С сообщениями проблему решил, добавил
С двигателем проблема остается...
---------- Post added at 14:06 ---------- Previous post was at 13:21 ----------
---------- Post added at 14:34 ---------- Previous post was at 14:06 ----------
Сделал сис-му "заведения" двигателя с урока клац. Немного переделал. Вообщем, переделал команду :
И вместо OnPlayerStateChange, сделал следующее:
В OnPlayerEnterVehicle
Проблема в следующем, если завел 1 автомобиль, оставил его заведенным, пересаживаешься в другой, то другой уже нельзя завести т.к. (я думаю) EngineState[playerid] уже истина. Так же, если сесть в другую машину, при одновременно заведенной какой-нибудь другой, прописать stop, пишет что двигатель заглох и после этого уже можно ее завести. Подскажите что делать?
В 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.");
}
Последнее редактирование:
