27.07.2012, 18:10
How can I do that? I know there's a function OnPlayerEnterVehicle, but I need to stop player from entering that vehicle, any suggestions?
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
RemovePlayerFromVehicle(playerid);
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
if(vehicleid == YourVehicleIDHere) // if the vehicle that streams in is the vehicle you want to lock (Change YourVehicleIDHere)
{
if(forplayerid == ThePlayerIDHere) // if the player that the vehicle streams in for is the player you want to stop from entering the vehicle (Change ThePlayerIDHere)
{
SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1); // lock the doors for the player
}
}
return 1;
}
// Loop through all vehicles for vid = 0 to 1999 // Check if this vehicle exists if (VehicleData[vid][VehicleExists] == 1) // Loop through all players for playerid = 0 to MAX_PLAYERS // Check if this player is connected if IsPlayerConnected(playerid) // Check if this player is the owner if (GetPlayerName(playerid) == VehicleData[vid][Owner]) // Unlock the doors for the owner SetVehicleParamsForPlayer(vid, playerid, 0, 0) else // Lock the doors for every other player SetVehicleParamsForPlayer(vid, playerid, 0, 1) endif endif next endif next
RemovePlayerFromVehicle would only work if he's already inside the vehicle.
I think he wants to know how to prevent anyone to even enter the vehicle, like it would be as if the doors are locked. Everytime a player logs in, you can process all vehicles and set the doors locked/unlocked based on the ownership of the vehicle. Pseudocode: Code:
// Loop through all vehicles for vid = 0 to 1999 // Check if this vehicle exists if (VehicleData[vid][VehicleExists] == 1) // Loop through all players for playerid = 0 to MAX_PLAYERS // Check if this player is connected if IsPlayerConnected(playerid) // Check if this player is the owner if (GetPlayerName(playerid) == VehicleData[vid][Owner]) // Unlock the doors for the owner SetVehicleParamsForPlayer(vid, playerid, 0, 0) else // Lock the doors for every other player SetVehicleParamsForPlayer(vid, playerid, 0, 1) endif endif next endif next |
if(!strcmp("/dvere", cmdtext))
{
if(GetPlayerVehicleID(playerid) != 0)
{
new motor, svetla, alarm, dvere, kapota, kufor, obj;
GetVehicleParamsEx(GetPlayerVehicleID(playerid), motor, svetla, alarm, dvere, kapota, kufor, obj);
if(dvere == 0)
dvere = 1;
else
dvere = 0;
SetVehicleParamsEx(GetPlayerVehicleID(playerid), motor, svetla, alarm, dvere, kapota, kufor, obj);
}
return 1;
}
Everytime a player logs in, you can process all vehicles and set the doors locked/unlocked based on the ownership of the vehicle.
|
Originally Posted by Wiki
Note: From 0.3 you will have to re-apply this function when OnVehicleStreamIn is called!
|
public OnPlayerSpawn(playerid) // or OnPlayerConnect
{
for(new i = 0; i < MAX_VEHICLES; i ++)
{
print("executing");
SetVehicleParamsForPlayer(i, playerid, 0, 1);
}
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1);
return 1;
}
it should lock/unlock doors when I use command /dvere, however I can enter vehicle even if I locked it
|
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER && GetPlayerVehicleID(playerid) == VEHICLE_ID)
RemovePlayerFromVehicle(playerid);
return 1;
}
Here, try this:
pawn Code:
|
public OnPlayerEnterVehicle(playerid, vehicleid)
{
if(vehicleid == VEHICLE_ID && ANY_OTHER_STATEMENT)
TogglePlayerControllable(playerid, true);
return 1;
}