Variable "ispassenger" returns 68
#1

So, I'm doing some experimenting with vehicles. At the moment I need to gather information if the player attempts to join a vehicle as a passenger or driver. However, the variable "ispassenger" in the callback "OnPlayerEnterVehicle(playerid, vehicleid, is passenger)" returns "68". It's supposed to return 0 when the user is a driver, and 1 if the user is a passenger.

pawn Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    new string[128], pName[MAX_PLAYER_NAME], pPassenger[30];
    GetPlayerName(playerid, pName, sizeof pName);

    if(playerVehicleState[playerid] != 1)
    {
        if(ispassenger == 1) pPassenger = "Passenger";
        else
        if(ispassenger == 0) pPassenger = "Driver";
       
        format(string, sizeof string, "%s is attempting to join vehicle: %i as a %s (value: %i)", pName, vehicleid, pPassenger, ispassenger);
        playerVehicleState[playerid] = 1;
        SendClientMessageToAll(-1, string);
    }
    return 1;
}
However
If I change my code to the following:

pawn Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    new string[128], pName[MAX_PLAYER_NAME], pPassenger[30];
    GetPlayerName(playerid, pName, sizeof pName);

    if(playerVehicleState[playerid] != 1)
    {
        if(ispassenger == 1) pPassenger = "Passenger";
        else
        if(ispassenger == 0) pPassenger = "Driver";
        else
        pPassenger = "Something else!";
       
        format(string, sizeof string, "%s is attempting to join vehicle: %i as a %s (value: %i)", pName, vehicleid, pPassenger, ispassenger);
        playerVehicleState[playerid] = 1;
        SendClientMessageToAll(-1, string);
    }
    return 1;
}
It seems to return the correct value.

In what way am I affecting it's value?
Reply
#2

I'm guessing its because of the way you are using "if..else".

Just keep it simple:
Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    if(playerVehicleState[playerid] != 1)
    {
        playerVehicleState[playerid] = 1;
		
        new string[128];
        GetPlayerName(playerid, string, MAX_PLAYER_NAME);
        format(string, sizeof string, "%s is attempting to join vehicle %i as a %s", string, vehicleid, ispassenger ? ("passenger") : ("driver"));
        SendClientMessageToAll(-1, string);
    }
    return 1;
}
Reply
#3

I've never actually had problems using the if else statement on this way.. Or for some reason I never noticed it. I'm too much used to programming in C#..

You've just taught me a new method of displaying text via a boolean without defining a new string. Thanks!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)