Nitro - please help, newbie here -
beasty - 28.12.2012
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(playerid, vehicleid);
public Nitro(playerid, vehicleid)
{
for(new i = 0; i<MAX_PLAYERS; i++)
{
new vehicle = GetPlayerVehicleID(i);
if(nitro[playerid] == 0)
{
RemoveVehicleComponent(vehicle,1010);
}
if(nitro[playerid] == 1)
{
if(CheckVehicle(vehicleid))
{
AddVehicleComponent(vehicle, 1010);
}
}
}
return 0;
}
Re: Nitro - please help, newbie here -
Jimmy0wns - 28.12.2012
I cant see the problem, maybe someone else can help.
Re: Nitro - please help, newbie here -
Konstantinos - 28.12.2012
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.
Re: Nitro - please help, newbie here -
beasty - 28.12.2012
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(playerid, vehicleid);
public InfiniteNitro(playerid, vehicleid)
{
new vehicle = GetPlayerVehicleID(playerid);
if(nitro[playerid] == 0) RemoveVehicleComponent(vehicle,1010);
else
{
if(CheckVehicle(vehicleid)) AddVehicleComponent(vehicle, 1010);
}
return 1;
}
Re: Nitro - please help, newbie here -
Konstantinos - 28.12.2012
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.
Re: Nitro - please help, newbie here -
beasty - 28.12.2012
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.