Trago aqui para vocês um sistema simples, muito requisitado pela sua importância em servidores RP/G.
1- Para facilitar nossa vida, utilizaremos as seguintes duas stocks:
- Código:
SetVehicleEngineState(vehicleID, newState)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehicleID, engine, lights, alarm, doors, bonnet, boot, objective);
if (engine != newState)
{
SetVehicleParamsEx(vehicleID, newState, lights, alarm, doors, bonnet, boot, objective);
}
}
GetVehicleEngineState(vehicleID)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehicleID, engine, lights, alarm, doors, bonnet, boot, objective);
return engine;
}
OBS: A stock GetVehicleEngineState retornara valor nulo (0) caso o motor esteja desligado, e valor verdadeiro (1) caso esteja ligado.
OBS2: Na stock SetVehicleEngineState, utilize valor verdadeiro (1) no argumento newState para ativar o motor, e valor nulo (0) para desativa-lo.
_____________________________________________________________________________________________________________________________________________
EXEMPLO DE USO
2- No fim de nosso callback OnGamemodeInit ( ou em outro lugar em que você utilize para criar os veículos), utilizamos:
- Código:
for(new i; i < MAX_VEHICLES; i++)
{
SetVehicleEngineState(i,0);
}
3- Definimos o comando para alterar o estado do motor
- Código:
CMD:motor(playerid)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(GetVehicleEngineState(GetPlayerVehicleID(playerid)) == 0)
{
SetVehicleEngineState(GetPlayerVehicleID(playerid),1);
SendClientMessage(playerid,-1,"Motor Ligado");
}
else
{
SetVehicleEngineState(GetPlayerVehicleID(playerid),0);
SendClientMessage(playerid,-1,"Motor Desligado");
}
}
else
{
SendClientMessage(playerid,-1,"Você não é o motorista desse veículo!");
}
}
else
{
SendClientMessage(playerid,-1,"Você precisa estar em algum veículo para executar esse comando.");
}
return 1;
}
4 - Criamos a função para o estado do motor ser alterado quando pressionado a letra 'Y', como em servidores de RPG
- Código:
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
if(newkeys == KEY_YES)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
cmd_motor(playerid);
}
}
return 1;
}