How to check if there is a driver in the car or not? -
Tamer - 23.02.2013
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
new playerState = GetPlayerState(killerid); // Get the killer's state
if (playerState == PLAYER_STATE_PASSENGER ) // If the killer was in a vehicle,alright. What about and there were no drivers in it?
{
// do the stuff.
}
return 1;
}
Read the if statement. How can I manage to do a thing like this?
So simply it will check if there is no players in the car of the killerid (a driver) if there is a driver it won't do anything.
Re: How to check if there is a driver in the car or not? -
Misiur - 23.02.2013
1. Get the vehicle id
2. Loop through all players (except for killer), and check if they are inside this car, and their state is "teh driver"
3.
![Huh?](images/smilies/confused.gif)
4. Profit
Re: How to check if there is a driver in the car or not? -
Scenario - 23.02.2013
Something like this would work:
pawn Код:
stock DoesVehicleHaveDriver(vehicleid)
{
#if defined foreach
foreach(new i : Player)
#else
for(new i = 0; i < MAX_PLAYERS; i++)
#endif
{
if(GetPlayerVehicleID(i) == vehicleid && GetPlayerState(i) == PLAYER_STATE_DRIVER) return true;
}
return false;
}
Re: How to check if there is a driver in the car or not? -
Tamer - 24.02.2013
pawn Код:
new playerState = GetPlayerState(killerid); // Get the killer's state
if (playerState == PLAYER_STATE_PASSENGER ) // If the killer was in a vehicle,alright. What about and there were no drivers in it?
{
if(DoesVehicleHaveDriver(vehicleid)) return 0;
}
pawn Код:
stock DoesVehicleHaveDriver(vehicleid)
{
#if defined foreach
foreach(new i : Player)
#else
for(new i = 0; i < MAX_PLAYERS; i++)
#endif
{
if(GetPlayerVehicleID(i) == vehicleid && GetPlayerState(i) == PLAYER_STATE_DRIVER) return true;
}
return false;
}
Код:
C:\Users\Tamer\Desktop\pwn\AVT scripting\gamemodes\GameMode.pwn(3588) : error 017: undefined symbol "vehicleid"
C:\Users\Tamer\Desktop\pwn\AVT scripting\gamemodes\GameMode.pwn(3617) : warning 217: loose indentation
C:\Users\Tamer\Desktop\pwn\AVT scripting\gamemodes\GameMode.pwn(3618) : warning 217: loose indentation
C:\Users\Tamer\Desktop\pwn\AVT scripting\gamemodes\GameMode.pwn(9245) : error 017: undefined symbol "foreach"
C:\Users\Tamer\Desktop\pwn\AVT scripting\gamemodes\GameMode.pwn(9245) : error 029: invalid expression, assumed zero
C:\Users\Tamer\Desktop\pwn\AVT scripting\gamemodes\GameMode.pwn(9245) : error 017: undefined symbol "i"
C:\Users\Tamer\Desktop\pwn\AVT scripting\gamemodes\GameMode.pwn(9245) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
5 Errors.
Re: How to check if there is a driver in the car or not? -
Scenario - 24.02.2013
In your code, replace vehicleid with GetPlayerVehicleID(playerid)
In mine, remove the things with a # in front and then remove the foreach line.
Re: How to check if there is a driver in the car or not? -
Tamer - 24.02.2013
Yes,I tried to do this on my own and worked,thanks for the help,no errors now. I need to test it thought.
Posting incase someone would like to learn how this works
pawn Код:
new playerState = GetPlayerState(killerid);
if (playerState == PLAYER_STATE_PASSENGER )
{
new vehicleid = GetPlayerVehicleID(killerid);
if(DoesVehicleHaveDriver(vehicleid)) return 0;
}
pawn Код:
stock DoesVehicleHaveDriver(vehicleid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerVehicleID(i) == vehicleid && GetPlayerState(i) == PLAYER_STATE_DRIVER) return true;
}
return false;
}