SA-MP Forums Archive
Restricted vehicles help [part 2] - 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: Restricted vehicles help [part 2] (/showthread.php?tid=439633)



Restricted vehicles help [part 2] - Face9000 - 26.05.2013

So ok, im again here for another problem. I made restricted vehicles per team and on OnPlayerStateChange i placed this:

pawn Код:
//Usa restricted uvehicles
    new uvehicle;
    uvehicle = GetPlayerVehicleID(playerid);
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
    if(uvehicle == RhinoUsaOne || uvehicle == RhinoUsaTwo || uvehicle == HunterUsaOne || uvehicle == HydraUsaOne || uvehicle == SeaSparrowUsaOne && gTeam[playerid] != TEAM_USA)
    {
    SendClientMessage(playerid, red, "This vehicle can be used by USA team only.");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }

    //Germany restricted vehicles
    new gvehicle;
    gvehicle = GetPlayerVehicleID(playerid);
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
    if( gvehicle == RhinoGermanyOne || gvehicle == RhinoGermanyTwo || gvehicle == HunterGermanyOne || gvehicle == SeaSparrowGermanyOne || gvehicle == HydraGermanyOne || gvehicle == RustlerGermanyOne && gTeam[playerid] != TEAM_GERMANY)
    {
    SendClientMessage(playerid, red, "This vehicle can be used by Germany team only.");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }

    //Russia restricted vehicles
    new rvehicle;
    rvehicle = GetPlayerVehicleID(playerid);
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
    if(rvehicle == SeaSparrowRussiaOne || rvehicle == RhinoRussiaOne || rvehicle == RhinoRussiaTwo || rvehicle == HydraRussiaOne || rvehicle == RustlerRussiaOne && gTeam[playerid] != TEAM_RUSSIA)
    {
    SendClientMessage(playerid, red, "This vehicle can be used by Russia team only.");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }

    //Japan restricted vehicles
    new jvehicle;
    jvehicle = GetPlayerVehicleID(playerid);
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
    if(jvehicle == RhinoJapanOne || jvehicle == RhinoJapanTwo || jvehicle == SeaSparrowJapanOne || jvehicle == HydraJapanOne || jvehicle == HunterJapanOne && gTeam[playerid] != TEAM_JAPAN)
    {
    SendClientMessage(playerid, red, "This vehicle can be used by Japan team only.");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }

    //Mercenary restricted vehicles
    new mvehicle;
    mvehicle = GetPlayerVehicleID(playerid);
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
    if(mvehicle == RhinoMercOne || mvehicle == RhinoMercTwo || mvehicle == SeaSparrowMercOne || mvehicle == RustlerMercOne || mvehicle == HunterMercOne &&  gTeam[playerid] != TEAM_MERCENARY)
    {
    SendClientMessage(playerid, red, "This vehicle can be used by Mercenary team only.");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }
The problem is: If im as Usa team and i try to enter in RhinoUsaOne vehicle (already declared and created), it says "This vehicle can be used by USA team only.".

Same with other teams. How i can fix it?


Re: Restricted vehicles help [part 2] - Abhishek. - 26.05.2013

how about keeping your codes in onplayerentervehicle
it would be more accurate and fast


Re: Restricted vehicles help [part 2] - park4bmx - 26.05.2013

That code is wrong!

It doesn't check for what team the player is it checks if the car matches any of the if statements.
So ur checking cars for variables they aren't!


Re: Restricted vehicles help [part 2] - Face9000 - 26.05.2013

Quote:
Originally Posted by Abhishek.
Посмотреть сообщение
how about keeping your codes in onplayerentervehicle
it would be more accurate and fast
I'll try now.

Quote:
Originally Posted by park4bmx
Посмотреть сообщение
That code is wrong!

It doesn't check for what team the player is it checks if the car matches any of the if statements.
So ur checking cars for variables they aren't!
What about this:

pawn Код:
&& gTeam[playerid] != TEAM_USA
EDIT: Tried with OnPlayerEnterVehicle:

pawn Код:
//Usa restricted uvehicles
    new uvehicle;
    uvehicle = GetPlayerVehicleID(playerid);
    if(uvehicle == RhinoUsaOne || uvehicle == RhinoUsaTwo || uvehicle == HunterUsaOne || uvehicle == HydraUsaOne || uvehicle == SeaSparrowUsaOne && gTeam[playerid] != TEAM_USA)
    {
    SendClientMessage(playerid, red, "This vehicle can be used by USA team only.");
    return 0;
    }

    //Germany restricted vehicles
    new gvehicle;
    gvehicle = GetPlayerVehicleID(playerid);
    if( gvehicle == RhinoGermanyOne || gvehicle == RhinoGermanyTwo || gvehicle == HunterGermanyOne || gvehicle == SeaSparrowGermanyOne || gvehicle == HydraGermanyOne || gvehicle == RustlerGermanyOne && gTeam[playerid] != TEAM_GERMANY)
    {
    SendClientMessage(playerid, red, "This vehicle can be used by Germany team only.");
    return 0;
    }

    //Russia restricted vehicles
    new rvehicle;
    rvehicle = GetPlayerVehicleID(playerid);
    if(rvehicle == SeaSparrowRussiaOne || rvehicle == RhinoRussiaOne || rvehicle == RhinoRussiaTwo || rvehicle == HydraRussiaOne || rvehicle == RustlerRussiaOne && gTeam[playerid] != TEAM_RUSSIA)
    {
    SendClientMessage(playerid, red, "This vehicle can be used by Russia team only.");
    return 0;
    }

    //Japan restricted vehicles
    new jvehicle;
    jvehicle = GetPlayerVehicleID(playerid);
    if(jvehicle == RhinoJapanOne || jvehicle == RhinoJapanTwo || jvehicle == SeaSparrowJapanOne || jvehicle == HydraJapanOne || jvehicle == HunterJapanOne && gTeam[playerid] != TEAM_JAPAN)
    {
    SendClientMessage(playerid, red, "This vehicle can be used by Japan team only.");
    return 0;
    }

    //Mercenary restricted vehicles
    new mvehicle;
    mvehicle = GetPlayerVehicleID(playerid);
    if(mvehicle == RhinoMercOne || mvehicle == RhinoMercTwo || mvehicle == SeaSparrowMercOne || mvehicle == RustlerMercOne || mvehicle == HunterMercOne &&  gTeam[playerid] != TEAM_MERCENARY)
    {
    SendClientMessage(playerid, red, "This vehicle can be used by Mercenary team only.");
    return 0;
    }
Same problem.


Re: Restricted vehicles help [part 2] - park4bmx - 26.05.2013

pawn Код:
new uvehicle;
    uvehicle = GetPlayerVehicleID(playerid);
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
    if(uvehicle == RhinoUsaOne && gTeam[playerid] != TEAM_USA || uvehicle == RhinoUsaTwo && gTeam[playerid] != TEAM_USA || uvehicle == HunterUsaOne && gTeam[playerid] != TEAM_USA || uvehicle == HydraUsaOne && gTeam[playerid] != TEAM_USA || uvehicle == SeaSparrowUsaOne && gTeam[playerid] != TEAM_USA)
    {
    SendClientMessage(playerid, red, "This vehicle can be used by USA team only.");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }
Another way
pawn Код:
new uvehicle;
    uvehicle = GetPlayerVehicleID(playerid);
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
    switch(uvehicle)
    {
        case RhinoUsaOne,RhinoUsaTwo,HunterUsaOne,HydraUsaOne,SeaSparrowUsaOne:
        {
            if(gTeam[playerid] != TEAM_USA)
                {
                    SendClientMessage(playerid, red, "This vehicle can be used by USA team only.");
                    RemovePlayerFromVehicle(playerid);
                    return 0;
                }
        }
    }
    return 1;
    }



Re: Restricted vehicles help [part 2] - Face9000 - 26.05.2013

pawn Код:
new uvehicle;
    uvehicle = GetPlayerVehicleID(playerid);
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
    switch(uvehicle)
    {
        case RhinoUsaOne,RhinoUsaTwo,HunterUsaOne,HydraUsaOne,SeaSparrowUsaOne:
        {
                if(gTeam[playerid] != TEAM_USA)
                {
                    SendClientMessage(playerid, red, "This vehicle can be used by USA team only.");
                    RemovePlayerFromVehicle(playerid);
                    return 0;
                }
        }
    }
    return 1;
    }
(9871) : error 008: must be a constant expression; assumed zero

9871:

pawn Код:
case RhinoUsaOne,RhinoUsaTwo,HunterUsaOne,HydraUsaOne,SeaSparrowUsaOne:



Re: Restricted vehicles help [part 2] - Vince - 26.05.2013

I think the problem with the original code was the precedence of operators. I bet that if you do it like this with an extra set of brackets, it'll work.

pawn Код:
if((uvehicle == RhinoUsaOne || uvehicle == RhinoUsaTwo || uvehicle == HunterUsaOne || uvehicle == HydraUsaOne || uvehicle == SeaSparrowUsaOne) && gTeam[playerid] != TEAM_USA)



Re: Restricted vehicles help [part 2] - Face9000 - 26.05.2013

Oh yeah :P thanks Vince!