Unlock car when driver leaves. -
InActtive™ - 13.01.2013
Can anyone assist me with unlocking the car doors when the driver leaves? Getting a bit confused here..
pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT)
{
//Now what? Lol
}
return 1;
}
How I lock:
pawn Код:
YCMD:vlock(playerid, params[], help)
{
new string[128];
new vid = GetPlayerVehicleID(playerid);
new State = GetPlayerState(playerid);
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xFFFFFFAA, "You have to be inside a vehicle to lock the doors right?");
if(State != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, 0xFFFFFFAA, "You must be the driver of the vehicle to lock it.");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(i != playerid)
{
SetVehicleParamsForPlayer(vid, i, 0, 1);
}
}
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* %s locked his/her car doors.", sendername);
SendClientMessage(playerid, 0xFFFF00AA, "Vehicle locked!");
new Float:pX, Float:pY, Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
PlayerPlaySound(playerid,1056,pX,pY,pZ);
return 1;
}
How I unlock:
pawn Код:
YCMD:vunlock(playerid, params[], help)
{
new string[128];
new vid = GetPlayerVehicleID(playerid);
new State = GetPlayerState(playerid);
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xFFFFFFAA, "You have to be inside a vehicle to unlock the doors right?");
if(State != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, 0xFFFFFFAA, "You must be the driver of the vehicle to unlock it.");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(i != playerid)
{
SetVehicleParamsForPlayer(vid, i, 0, 0);
}
}
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* %s unlocked his/her car doors.", sendername);
SendClientMessage(playerid, 0xFFFF00AA, "Vehicle unlocked!");
new Float:pX, Float:pY, Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
PlayerPlaySound(playerid,1057,pX,pY,pZ);
return 1;
}
Getting the vehicle params' the hard part for me.. I'm confused...
Re: Unlock car when driver leaves. -
mineralo - 13.01.2013
pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT)
{
new vid = GetPlayerVehicleID(playerid);
for(new i = 0; i < MAX_PLAYERS; i++)
{
SetVehicleParamsForPlayer(vid, i, 0, 0);
}
}
return 1;
}
Re: Unlock car when driver leaves. -
ThePhenix - 13.01.2013
There is a easier way:
PHP код:
public OnPlayerExitVehicle(playerid, vehicleid)
{
new string[128], sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
SetVehicleParamsForPlayer(vehicleid, playerid, 0, 0);
SendClientMessage(playerid, -1, "Doors unlocked");
GameTextForPlayer(playerid,"~r~Doors unlocked", 4000, 3);
format(string, sizeof(string), "* %s unlocked his/her car doors.", sendername);
SendClientMessageToAll(-1 , string);
return 1;
}
Re: Unlock car when driver leaves. -
Threshold - 13.01.2013
That would work... if he wanted the doors to unlock for passengers as well...
You would need to save the vehicle id to a player variable so when they exit, you can check the last vehicle they were in, and change its parameters.
Something like:
pawn Код:
new lastvehicle[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
lastvehicle[playerid] = -1; //They do not have a last vehicle so -1 / invalid
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER)
{
if(lastvehicle[playerid] != -1)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(lastvehicle[playerid], engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(lastvehicle[playerid], engine, lights, alarm, 1, bonnet, boot, objective);
}
}
if(newstate == PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_ONFOOT)
{
lastvehicle[playerid] = GetPlayerVehicleID(playerid);
}
return 1;
}
Re: Unlock car when driver leaves. -
InActtive™ - 13.01.2013
I used Mineralo's method along with Benzo's Last Vehicle and got it working. Thanks guys.