SA-MP Forums Archive
Is there a better way? - 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)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: Is there a better way? (/showthread.php?tid=181732)



Is there a better way? - Scenario - 07.10.2010

Hi guys. I'm trying to change the way I script as it seems to be a lot more efficient this way. I am confused on else if statements, while using this method. This is my command:

pawn Код:
command(gotolv, playerid, params[]) // Credits to "Mimic" //
{
    #pragma unused params
    new vehicle;
    if(PlayerStatistics[playerid][pAdminLevel] < 3) return false;
    if(PlayerStatistics[playerid][pAdminDuty] < 1) return SendClientMessage(playerid, COLOR_SYSTEM, "You must be on admin duty to teleport!");
    if(IsPlayerInAnyVehicle(playerid))
    {
        vehicle = GetPlayerVehicleID(playerid);
        SetVehiclePos(vehicle, 1699.2, 1435.1, 10.7);
        PutPlayerInVehicle(playerid, vehicle, 0);
        SetPlayerPos(playerid, 1699.2, 1435.1, 10.7);
        SetPlayerVirtualWorld(playerid, 0);
        SetPlayerInterior(playerid, 0);
    }
    else
    {
        SetPlayerPos(playerid, 1699.2, 1435.1, 10.7);
        SetPlayerVirtualWorld(playerid, 0);
        SetPlayerInterior(playerid, 0);
    }
    SendClientMessage(playerid, COLOR_WHITE, "You have now teleported to Las Venturas");
    return 1;
}
Is there a better way to perform the last if statement? If so, please elaborate a little bit.

- Regards


Re: Is there a better way? - bigcomfycouch - 07.10.2010

pawn Код:
command(gotolv, playerid, params[])
{
    #pragma unused params
    new
        vehicle = GetPlayerVehicleID(playerid);
    if(PlayerStatistics[playerid][pAdminLevel] < 3) return false;
    if(PlayerStatistics[playerid][pAdminDuty] < 1) return SendClientMessage(playerid, COLOR_SYSTEM, "You must be on admin duty to teleport!");
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    if (IsPlayerInAnyVehicle(playerid))
    {
        SetVehicleVirtualWorld(vehicle, 0);
        SetVehiclePos(vehicle, 1699.2, 1435.1, 10.7);
    }
    else SetPlayerPos(playerid, 1699.2, 1435.1, 10.7);
    SendClientMessage(playerid, COLOR_WHITE, "You have now teleported to Las Venturas");
    return 1;
}



Re: Is there a better way? - samgreen - 07.10.2010

pawn Код:
command(gotolv, playerid, params[])
{
    // If you use zcmd, you won't have to suppress this warning.
    #pragma unused params

    if(PlayerStatistics[playerid][pAdminLevel] < 3) return false;
    if(PlayerStatistics[playerid][pAdminDuty] < 1) return SendClientMessage(playerid, COLOR_SYSTEM, "You must be on admin duty to teleport!");
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);

    new
        vehicle = GetPlayerVehicleID(playerid);
    if (vehicle > 0)
    {
        SetVehicleVirtualWorld(vehicle, 0);
        SetVehiclePos(vehicle, 1699.2, 1435.1, 10.7);
    }
    else
    {
        SetPlayerPos(playerid, 1699.2, 1435.1, 10.7);
    }
    SendClientMessage(playerid, COLOR_WHITE, "You have now teleported to Las Venturas");
    return 1;
}
No need to check IsPlayerInAnyVehicle, since you have already called GetPlayerVehicleID. You can use the result of that function to determine if the player is in any vehicle.