Is there a better way?
#1

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
Reply
#2

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;
}
Reply
#3

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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)