Nitro - please help, newbie here
#1

Hey i have problem here. I created nitro system, and players can turn him on/off (personally). But when somebody turns off nitro, it disappears for all server players. Please help.
How can i turn off nitro for specified player which enter command?
Nitro == 0 (no nitro)
Nitro == 1 (nitro)
Nitro script:

PHP код:
forward Nitro(playeridvehicleid);
public 
Nitro(playeridvehicleid)
{
for(new 
0i<MAX_PLAYERSi++)
{
new 
vehicle GetPlayerVehicleID(i);
if(
nitro[playerid] == 0)
{
      
RemoveVehicleComponent(vehicle,1010);
}
if(
nitro[playerid] == 1)
{
if(
CheckVehicle(vehicleid))
{
     
AddVehicleComponent(vehicle1010);
}
}
}
return 
0;

Reply
#2

I cant see the problem, maybe someone else can help.
Reply
#3

This should work.
pawn Код:
CMD:nitro( playerid, params[ ] )
{
    Nitro( playerid)
    return 1;
}

stock Nitro(playerid)
{
    new vehicle = GetPlayerVehicleID(playerid);
    if(nitro[playerid] == 0) RemoveVehicleComponent(vehicle,1010);
    else
    {
        if(CheckVehicle(vehicleid)) AddVehicleComponent(vehicle, 1010);
    }
    return 1;
}
Do you run a timer that gives nitro to the player? Since you have to use as less as timers you can, it would be better if you press a key, gives nitro if nitro is equal to 1, of course.
Reply
#4

Quote:
Originally Posted by Dwane
Посмотреть сообщение
This should work.
pawn Код:
CMD:nitro( playerid, params[ ] )
{
    Nitro( playerid)
    return 1;
}

stock Nitro(playerid)
{
    new vehicle = GetPlayerVehicleID(playerid);
    if(nitro[playerid] == 0) RemoveVehicleComponent(vehicle,1010);
    else
    {
        if(CheckVehicle(vehicleid)) AddVehicleComponent(vehicle, 1010);
    }
    return 1;
}
Do you run a timer that gives nitro to the player? Since you have to use as less as timers you can, it would be better if you press a key, gives nitro if nitro is equal to 1, of course.
Am, yes im using timer, but with your code only i can use nitro, other player cant install it.

Full code of nitro :
Gamemodeinit:
PHP код:
SetTimer("InfiniteNitro",400,1); 
Callback:
PHP код:
forward InfiniteNitro(playeridvehicleid);
public 
InfiniteNitro(playeridvehicleid)
{
    new 
vehicle GetPlayerVehicleID(playerid);
    if(
nitro[playerid] == 0RemoveVehicleComponent(vehicle,1010);
    else
    {
        if(
CheckVehicle(vehicleid)) AddVehicleComponent(vehicle1010);
    }
       return 
1;

Reply
#5

It's weird, because nitro has an array of MAX_PLAYERS and if any of the online players use /nitro, it calls the function. Try with your timer.

pawn Код:
// OnGameModeInit/OnFilterScriptInit
SetTimer( "Nitro", 1000, true );

CMD:nitro( playerid, params[ ] )
{
    if( nitro[ playerid ] == 0 ) nitro[ playerid ] = 1;
    else nitro[ playerid ] = 0;
    return 1;
}

forward Nitro();
public Nitro()
{
    for( new i = 0; i < MAX_PLAYERS; i ++ )
    {
        new vehicle = GetPlayerVehicleID(i);
        if(nitro[i] == 0) RemoveVehicleComponent(vehicle,1010);
        else
        {
            if(CheckVehicle(vehicleid)) AddVehicleComponent(vehicle, 1010);
        }
    }
    return 1;
}
EDIT: Now, you posted the part of the code, it's clearly. You use SetTimer and you pass the parameters (playerid, vehicleid), you have to use SetTimerEx instead, or with SetTimer and make a for loop.
Reply
#6

Quote:
Originally Posted by Dwane
Посмотреть сообщение
It's weird, because nitro has an array of MAX_PLAYERS and if any of the online players use /nitro, it calls the function. Try with your timer.

pawn Код:
// OnGameModeInit/OnFilterScriptInit
SetTimer( "Nitro", 1000, true );

CMD:nitro( playerid, params[ ] )
{
    if( nitro[ playerid ] == 0 ) nitro[ playerid ] = 1;
    else nitro[ playerid ] = 0;
    return 1;
}

forward Nitro();
public Nitro()
{
    for( new i = 0; i < MAX_PLAYERS; i ++ )
    {
        new vehicle = GetPlayerVehicleID(i);
        if(nitro[i] == 0) RemoveVehicleComponent(vehicle,1010);
        else
        {
            if(CheckVehicle(vehicleid)) AddVehicleComponent(vehicle, 1010);
        }
    }
    return 1;
}
EDIT: Now, you posted the part of the code, it's clearly. You use SetTimer and you pass the parameters (playerid, vehicleid), you have to use SetTimerEx instead, or with SetTimer and make a for loop.
Working perfect, thanks you very much.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)