Timer crash
#1

Hi all, im creating a firefighter job on my gamemode, and i saw code at this forum for holding a key fire, and i use it, but after i shut down 1-2 flames, timer crashes.

Crashdetect:
Код:
[17:13:26] [debug] Run time error 4: "Array index out of bounds"
[17:13:26] [debug]  Accessing element at negative index -1
[17:13:26] [debug] AMX backtrace:
[17:13:26] [debug] #0 000db7fc in ?? (0) from disaronno.amx
[17:13:26] [debug] #1 000dafec in public VatrogasniCheck (0) from disaronno.amx
Script:
Код:
if(newkeys & KEY_FIRE && !HoldingKey[playerid])
{
VatrogasniCheck( playerid );
HoldingKey[playerid] = true;
}
forward VatrogasniCheck(playerid);
public VatrogasniCheck(playerid)
{
	if(IsPlayerConnected(playerid))
	{
		new
		    keys, ud, lr;

		GetPlayerKeys(playerid, keys, ud, lr);

		if(keys & KEY_FIRE)
		{
			PozarGasenje( playerid );
		    SetTimerEx("VatrogasniCheck", 500, 0, "i", playerid);

		    return 0;
		}
	}

	HoldingKey[playerid] = false;

	return 0;
}
stock PozarGasenje( playerid )
{
    if(GasiPozar [ playerid ] != -1 )
    {
        if(GetPlayerState( playerid ) == PLAYER_STATE_ONFOOT)
		{
			if(NajblizaVatra(playerid) != -1 && GetPlayerWeapon(playerid) == 42)
			{
			    if(IsPlayerAimingAt(playerid, FireCoord[ GasiPozar [ playerid ] ][ NajblizaVatra(playerid) ][ 0 ], FireCoord[ GasiPozar [ playerid ] ][ NajblizaVatra(playerid) ][ 1 ], FireCoord[ GasiPozar [ playerid ] ][ NajblizaVatra(playerid) ][ 2 ], 6.0))
			    {
					if(FireData[ GasiPozar [ playerid ] ][ VatraHealth ][ NajblizaVatra(playerid) ] > 3)
					{
						FireData[ GasiPozar [ playerid ] ][ VatraHealth ][ NajblizaVatra(playerid) ] -= 3+random(3);
						UpdatePlamenLabel( GasiPozar[ playerid ], NajblizaVatra(playerid) );
					}
					else
					{
						if(FireData[ GasiPozar [ playerid ] ][ VatraGori ][ NajblizaVatra(playerid) ] != 0)
						{
						    Delete3DTextLabel( FireData[ GasiPozar [ playerid ] ][ VatraLabel ][ NajblizaVatra(playerid) ] );
						    if( IsValidObject( FireData[ GasiPozar [ playerid ] ][ VatraObjekat ][ NajblizaVatra(playerid) ] )) DestroyObject(FireData[ GasiPozar [ playerid ] ][ VatraObjekat ][ NajblizaVatra(playerid) ]);
						    FireData[ GasiPozar [ playerid ] ][ VatraGori ][ NajblizaVatra(playerid) ] = 0;
						    new platica = 50+random(50);
	    					Msg3( playerid, "(Posao) Ugasili ste plamen, dobili ste "WHT"%d$ "B3"na platu.", platica);
	    					PlayerInfo[ playerid ][ Plata ] += platica;
	    					if(jobdeal == PlayerInfo[ playerid ][ pPosao ])
						    {
						        Msg3(playerid, "(Posao) Dobili ste dodatnih "WHT"%d$"B3" na platu jer je na vasem poslu Job Deal.", platica);
						    	PlayerInfo[ playerid ][ Plata ] += platica;
						    }
	    					DPC(playerid);
						    CheckEnd( playerid );
					    }
					}
				}
			}
		}
		else if(GetPlayerState( playerid ) == PLAYER_STATE_DRIVER)
		{
			if(GetVehicleModel( GetPlayerVehicleID( playerid ) ) == 407)
			{
			    if(IsPlayerAimingAt(playerid, FireCoord[ GasiPozar [ playerid ] ][ NajblizaKamVatra( playerid ) ][ 0 ], FireCoord[ GasiPozar [ playerid ] ][ NajblizaKamVatra( playerid ) ][ 1 ], FireCoord[ GasiPozar [ playerid ] ][ NajblizaKamVatra( playerid ) ][ 2 ]+1, 10.0)
				&& NajblizaKamVatra( playerid ) != -1)
			    {
					if(FireData[ GasiPozar [ playerid ] ][ VatraHealth ][ NajblizaKamVatra( playerid ) ] > 3)
					{
						FireData[ GasiPozar [ playerid ] ][ VatraHealth ][ NajblizaKamVatra( playerid ) ] -= 3+random(3);
						UpdatePlamenLabel( GasiPozar[ playerid ], NajblizaKamVatra( playerid ) );
					}
					else
					{
						if(FireData[ GasiPozar [ playerid ] ][ VatraGori ][ NajblizaKamVatra( playerid ) ] != 0)
						{
						    Delete3DTextLabel( FireData[ GasiPozar [ playerid ] ][ VatraLabel ][ NajblizaKamVatra( playerid ) ] );
						    if( IsValidObject( FireData[ GasiPozar [ playerid ] ][ VatraObjekat ][ NajblizaKamVatra( playerid ) ] )) DestroyObject(FireData[ GasiPozar [ playerid ] ][ VatraObjekat ][ NajblizaKamVatra( playerid ) ]);
						    FireData[ GasiPozar [ playerid ] ][ VatraGori ][ NajblizaKamVatra( playerid ) ] = 0;
						    new platica = 50+random(50);
    						Msg3( playerid, "(Posao) Ugasili ste plamen, dobili ste "WHT"%d$ "B3"na platu.", platica);
    						PlayerInfo[ playerid ][ Plata ] += platica;
    						if(jobdeal == PlayerInfo[ playerid ][ pPosao ])
						    {
						        Msg3(playerid, "(Posao) Dobili ste dodatnih "WHT"%d$"B3" na platu jer je na vasem poslu Job Deal.", platica);
						    	PlayerInfo[ playerid ][ Plata ] += platica;
						    }
    						DPC(playerid);
						    CheckEnd( playerid );
					    }
					}
				}
			}
		}
    }
}
Reply
#2

Compile your script with -d3 Other than that, show your NajblizaKamVatra function
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)