SA-MP Forums Archive
Variable "ispassenger" returns 68 - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Variable "ispassenger" returns 68 (/showthread.php?tid=480679)



Variable "ispassenger" returns 68 - Biesmen - 12.12.2013

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?


Re: Variable "ispassenger" returns 68 - iPLEOMAX - 12.12.2013

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;
}



Re: Variable "ispassenger" returns 68 - Biesmen - 12.12.2013

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!