SA-MP Forums Archive
OnPlayerStateChange Bug! - 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: OnPlayerStateChange Bug! (/showthread.php?tid=481531)



OnPlayerStateChange Bug! - viveka27 - 16.12.2013

Hi Guys
I am get this problem (Detected Using Crashdetect.dll)
Код:
[debug] Run time error 4: "Array index out of bounds"
[14:54:30] [debug]  Accessing element at index 999 past array upper bound 499
[14:54:30] [debug] AMX backtrace:
[14:54:30] [debug] #0 0006c808 in public OnPlayerStateChange () from relic.amx
[14:54:30] [debug] Run time error 4: "Array index out of bounds"
[14:54:30] [debug]  Accessing element at index 999 past array upper bound 499
[14:54:30] [debug] AMX backtrace:
[14:54:30] [debug] #0 0006c808 in public OnPlayerStateChange () from relic.amx
Onplayerstatechange:
Код:
	if(newstate != 2) NOPTrigger[playerid] = 0;
    if(IsPlayerNPC(playerid))
	{
	    if(newstate == PLAYER_STATE_SPECTATING)
	    {
        	TogglePlayerSpectating(playerid, false);
		}
		return 1;
	}
  	if(GettingSpectated[playerid] != -1)
		{
		    new spectator = GettingSpectated[playerid];
		    if(!IsPlayerConnected(spectator))
		    {
		        GettingSpectated[playerid] = 999;
		        Spectate[spectator] = 999;
			}
		    if(newstate == PLAYER_STATE_DRIVER && PlayerInfo[spectator][pAdmin] >= 2 || newstate == PLAYER_STATE_PASSENGER && PlayerInfo[spectator][pAdmin] >= 2)
		    {
	    	    TogglePlayerSpectating(spectator, true);
				new carid = GetPlayerVehicleID( playerid );
				PlayerSpectateVehicle( spectator, carid );
				SetPVarInt(spectator, "SpecState", newstate);
	    	}
	    	else if(newstate == PLAYER_STATE_ONFOOT && PlayerInfo[spectator][pAdmin] >= 2)
	    	{
	    	    TogglePlayerSpectating(spectator, true);
			   	PlayerSpectatePlayer( spectator, playerid );
		 	  	SetPlayerInterior( spectator, GetPlayerInterior( playerid ) );
				SetPVarInt(spectator, "SpecState", newstate);
	    	}
		}
		if(newstate == PLAYER_STATE_ONFOOT)
		{
 			if(Audio_IsClientConnected(playerid))
			{
				Audio_Stop(playerid, stationidp[playerid]);
 				stationidp[playerid] = 0;
			}
	    	new spectator = GettingSpectated[playerid];
	    	if(PlayerInfo[spectator][pAdmin] >= 2 && spectator != -1) {
	        // Preventing possible buffer overflows with the arrays
	 		TogglePlayerSpectating(spectator, true);
			PlayerSpectatePlayer( spectator, playerid );
			SetPlayerInterior( spectator, GetPlayerInterior( playerid ) );
			SetPVarInt(spectator, "SpecState", newstate);
			SetPlayerInterior( spectator, GetPlayerInterior( playerid ) );
			SetPlayerVirtualWorld( spectator, GetPlayerVirtualWorld( playerid ) );
		}
	    if(oldstate == PLAYER_STATE_DRIVER)
		{
			SetPlayerWeaponsEx(playerid);
		}
		else if(oldstate == PLAYER_STATE_PASSENGER) SetPlayerWeaponsEx(playerid);

		if(ConnectedToPC[playerid] == 1337)//mdc
	    {
            SendClientMessageEx(playerid, COLOR_LIGHTBLUE, "* You are now logged off the MDC.");
	        ConnectedToPC[playerid] = 0;
		}
        if(TransportDuty[playerid] > 0)
		{
		    if(TransportDuty[playerid] == 1)
			{
		        TaxiDrivers -= 1;
			}
			else if(TransportDuty[playerid] == 2)
			{
			    BusDrivers -= 1;
			}
			TransportDuty[playerid] = 0;
			new string[42];
			format(string, sizeof(string), "* You are now off duty and earned $%d.", TransportMoney[playerid]);
			SendClientMessageEx(playerid, COLOR_LIGHTBLUE, string);
			GivePlayerCash(playerid, TransportMoney[playerid]);
			ConsumingMoney[playerid] = 1; TransportValue[playerid] = 0; TransportMoney[playerid] = 0;
			SetPlayerColor(playerid, TEAM_HIT_COLOR);
			TransportTime[playerid] = 0;
   			TransportCost[playerid] = 0;
		}
		if(TransportDriver[playerid] < 999)
		{
			new string[128];
			TransportMoney[TransportDriver[playerid]] += TransportCost[playerid];
			format(string, sizeof(string), "~w~The ride cost~n~~r~$%d",TransportCost[playerid]);
			GameTextForPlayer(playerid, string, 5000, 3);
			format(string, sizeof(string), "~w~Passenger left the taxi.~n~~g~Earned $%d",TransportCost[playerid]);
			GameTextForPlayer(TransportDriver[playerid], string, 5000, 3);
			GivePlayerCash(playerid, -TransportCost[playerid]);

			new ip[32], ipex[32];
			GetPlayerIp(playerid, ip, sizeof(ip));
			GetPlayerIp(TransportDriver[playerid], ipex, sizeof(ipex));
			TaxiWarn[playerid][TransportDriver[playerid]] += TransportCost[playerid];
			if(TaxiWarn[playerid][TransportDriver[playerid]] >= 10000)
			{
				format(string, sizeof(string), "%s (IP:%s) has taxied %s (IP:%s) $%d in this session.", GetPlayerNameEx(playerid), ip, GetPlayerNameEx(TransportDriver[playerid]), ipex, TaxiWarn[playerid][TransportDriver[playerid]]);
				Log("logs/pay.log", string);
				ABroadCast(COLOR_YELLOW, string, 2);
			}
			TransportTime[TransportDriver[playerid]] = 0;
			TransportCost[TransportDriver[playerid]] = 0;
			TransportCost[playerid] = 0;
			TransportTime[playerid] = 0;
			TransportDriver[playerid] = 999;
		}
		TelePos[playerid][0] = 0.0;
		TelePos[playerid][1] = 0.0;
	}
    if(newstate == PLAYER_STATE_PASSENGER) // TAXI & BUSSES
	{
 		if(stationidv[GetPlayerVehicleID(playerid)] != 0)
		{
		    new station[64];
			switch(stationidv[GetPlayerVehicleID(playerid)])
			{
				case 1: format(station, sizeof(station), "http://216.246.109.162:8000");
				case 2: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1415249");
				case 3: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1415249");
				case 4: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1628721");
				case 5: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1283687");
				case 6: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1628932");
				case 7: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1756658");
				case 8: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1377200");
				case 9: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=2057197");
				case 10: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=18695");
				case 11: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=412093");
				case 12: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=181367");
				case 13: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1275071");
				case 14: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=412093");
				case 15: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1280356");
				case 16: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1279013");
				case 17: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1281016");
				case 18: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1280855");
				case 19: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1116397");
				case 20: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=2057543");
				case 21: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=616366");
				case 22: format(station, sizeof(station), "http://38.107.220.164:8014");
				case 23: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=847066");
			}
			if(Audio_IsClientConnected(playerid))
		 	{
		 	    Audio_Stop(playerid, stationidp[playerid]);
				stationidp[playerid] = Audio_PlayStreamed(playerid, station, false, true, false);
			}
		}
        new vehicleid = GetPlayerVehicleID(playerid);
	    if(vehicleid == NGVehicles[12] ||
		vehicleid == NGVehicles[13] ||
		vehicleid == NGVehicles[14] ||
		vehicleid == NGVehicles[15] ||
		vehicleid == NGVehicles[16] ||
		vehicleid == NGVehicles[17])
		{
		    TogglePlayerSpectating(playerid, 1);
			PlayerSpectateVehicle(playerid, vehicleid);
			SetPVarInt(playerid, "NGPassenger", 1);
			SetPVarInt(playerid, "NGPassengerVeh", vehicleid);
			SetPVarInt(playerid, "NGPassengerSkin", GetPlayerSkin(playerid));
			new Float:health, Float:armour;
			GetPlayerHealth(playerid, health);
			GetPlayerArmour(playerid, armour);
			SetPVarFloat(playerid, "NGPassengerHP", health);
			SetPVarFloat(playerid, "NGPassengerArmor", armour);
		}
        if( GetPVarInt( playerid, "ToBeEjected" ) >= 1 )
    	{
	       	SetPVarInt( playerid, "ToBeEjected", 0 );
	       	RemovePlayerFromVehicle( playerid );
	       	new Float:X, Float:Y, Float:Z;
			GetPlayerPos(playerid, X, Y, Z);
			SetPlayerPos(playerid, X, Y, Z+2);

			if(GetPVarInt(playerid, "Injured") == 1)
  			{
  			    Streamer_UpdateEx(playerid, GetPVarFloat(playerid,"MedicX"), GetPVarFloat(playerid,"MedicY"), GetPVarFloat(playerid,"MedicZ"));
		   		SetPlayerPos(playerid, GetPVarFloat(playerid,"MedicX"), GetPVarFloat(playerid,"MedicY"), GetPVarFloat(playerid,"MedicZ"));
				SetPlayerVirtualWorld(playerid, GetPVarInt(playerid,"MedicVW"));
				SetPlayerInterior(playerid, GetPVarInt(playerid,"MedicInt"));
   				ClearAnimations(playerid);
				ApplyAnimation(playerid, "KNIFE", "KILL_Knife_Ped_Die", 4.0, 0, 1, 1, 1, 0, 1);
   			}
   		}
	    //SetPVarInt(playerid, "LastWeapon", GetPlayerWeapon(playerid));
	    gLastCar[playerid] = vehicleid;
	    foreach(Player, i)
	    {
     		if(IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i) == 2 && TransportDuty[i] > 0)
       		{
				if(GetPlayerCash(playerid) < TransportValue[i])
				{
					new string[40];
					format(string, sizeof(string), "* You need $%d to enter.", TransportValue[i]);
					SendClientMessageEx(playerid, COLOR_LIGHTBLUE, string);
					RemovePlayerFromVehicle(playerid);
					new Float:X, Float:Y, Float:Z;
					GetPlayerPos(playerid, X, Y, Z);
					SetPlayerPos(playerid, X, Y, Z+2);
					TogglePlayerControllable(playerid, 1);
				}
				else
				{
					new string[38];
					if(TransportDuty[i] == 1)
					{
						format(string, sizeof(string), "* You paid $%d to the taxi driver.", TransportValue[i]);
						SendClientMessageEx(playerid, COLOR_LIGHTBLUE, string);
						format(string, sizeof(string), "* Passenger %s has entered your taxi.", GetPlayerNameEx(playerid));
						SendClientMessageEx(i, COLOR_LIGHTBLUE, string);
						TransportTime[i] = 1;
						TransportTime[playerid] = 1;
						TransportCost[playerid] = TransportValue[i];
						TransportCost[i] = TransportValue[i];
						TransportDriver[playerid] = i;
					}
					else if(TransportDuty[i] == 2)
					{
						format(string, sizeof(string), "* You paid $%d to the Taxi Driver.", TransportValue[i]);
						SendClientMessageEx(playerid, COLOR_LIGHTBLUE, string);
						format(string, sizeof(string), "* Passenger %s has entered your Taxi.", GetPlayerNameEx(playerid));
						SendClientMessageEx(i, COLOR_LIGHTBLUE, string);
					}
					GivePlayerCash(playerid, - TransportValue[i]);
					TransportMoney[i] += TransportValue[i];
				}
      		}
	    }
	}
	if(newstate == PLAYER_STATE_WASTED)
	{
	    if(GetPVarInt(playerid, "EventToken") == 0)
	    {
			SetPVarInt(playerid, "MedicBill", 1);
		}
		if(ConnectedToPC[playerid] == 1337)//mdc
	    {
	        ConnectedToPC[playerid] = 0;
		}
		Seatbelt[playerid] = 0;
	}
	if(newstate == PLAYER_STATE_DRIVER)
	{
	    if(stationidv[GetPlayerVehicleID(playerid)] != 0)
		{
		    new station[64];
			switch(stationidv[GetPlayerVehicleID(playerid)])
			{
				case 1: format(station, sizeof(station), "http://216.246.109.162:8000");
				case 2: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1415249");
				case 3: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1415249");
				case 4: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1628721");
				case 5: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1283687");
				case 6: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1628932");
				case 7: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1756658");
				case 8: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1377200");
				case 9: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=2057197");
				case 10: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=18695");
				case 11: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=412093");
				case 12: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=181367");
				case 13: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1275071");
				case 14: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=412093");
				case 15: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1280356");
				case 16: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1279013");
				case 17: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1281016");
				case 18: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1280855");
				case 19: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1116397");
				case 20: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=2057543");
				case 21: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=616366");
				case 22: format(station, sizeof(station), "http://38.107.220.164:8014");
				case 23: format(station, sizeof(station), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=847066");
			}
			if(Audio_IsClientConnected(playerid))
		 	{
		 	    Audio_Stop(playerid, stationidp[playerid]);
				stationidp[playerid] = Audio_PlayStreamed(playerid, station, false, true, false);
			}
		}

		new
			newcar = GetPlayerVehicleID(playerid),
			engine, lights, alarm, doors, bonnet, boot, objective, v;

		gLastCar[playerid] = newcar;

	 	foreach(Player, i) {
	   		v = GetPlayerVehicle(i, newcar);
		    if(v != -1) {
				if(i == playerid) {

					new
						string[96];

					format(string, sizeof(string),"You are the owner of this %s.", GetVehicleName(newcar));
					SendClientMessageEx(playerid, COLOR_GREY, string);
					if(PlayerVehicleInfo[i][v][pvTicket] != 0)
					{
						format(string, sizeof(string),"A $%d parking ticket was left on your vehicle. You must pay the ticket at the LSPD.", PlayerVehicleInfo[i][v][pvTicket]);
						SendClientMessageEx(playerid, COLOR_GREY, string);
						SendClientMessageEx(playerid, COLOR_GREY, "Failure to pay this ticket as soon as possible will result in a fine, or even an arrest.");
					}
				}
				else if(i == PlayerInfo[playerid][pVehicleKeysFrom]) {

					new
						string[64 + MAX_PLAYER_NAME];

					format(string, sizeof(string),"You have the keys for this %s from owner %s.", GetVehicleName(newcar), GetPlayerNameEx(i));
					SendClientMessageEx(playerid, COLOR_GREY, string);
				}
				else if(PlayerVehicleInfo[i][v][pvLocked] == 1 && PlayerVehicleInfo[i][v][pvLock] == 1) {
				    GetVehicleParamsEx(newcar,engine,lights,alarm,doors,bonnet,boot,objective);
					SetVehicleParamsEx(newcar,engine,lights,VEHICLE_PARAMS_ON,doors,bonnet,boot,objective);
					SetTimerEx("DisableVehicleAlarm", 20000, 0, "d",  newcar);
				}
				else if(PlayerVehicleInfo[i][v][pvLocked] == 1 && PlayerVehicleInfo[i][v][pvLock] == 2) {

					new
						string[49 + MAX_PLAYER_NAME];

	          		if(PlayerInfo[playerid][pAdmin] < 99999)
					{
						format(string, sizeof(string), "* %s has been stunned by the electric anti-theft.",GetPlayerNameEx(playerid));
						ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
						new Float:X, Float:Y, Float:Z, Float:HP;
	     				GetPlayerPos(playerid, X, Y, Z);
	     				SendAudioToRange(10300, 100, 0, X, Y, Z, 20.0);
	     				SetPlayerPos(playerid, X + 1, Y, Z);
	         			RemovePlayerFromVehicle(playerid);
	         			SetPVarInt(playerid, "IsFrozen", 1);
	            		TogglePlayerControllable(playerid,0);
		            	SetTimerEx("ReleasePlayer", 10000, 0, "d", playerid);
			            GameTextForPlayer(playerid,"~r~STUNNED!",11000,3);
			            GetPlayerHealth(playerid,HP);
			            SetPlayerHealth(playerid,HP-15);
					}
					else
					{
	    				format(string, sizeof(string), "Warning: This %s is owned by %s.", GetVehicleName(newcar), GetPlayerNameEx(i));
	      				SendClientMessageEx(playerid, COLOR_GREY, string);
					}
				}
				return 1;
			}
		}

		for(new f = 0; f < MAX_FAMILY; f++) {
			v = GetGangVehicle(f, newcar);
			if(v != -1) {
				new string[49 + MAX_PLAYER_NAME];
				if(PlayerInfo[playerid][pFMember] == f)
				{
					format(string, sizeof(string), "You are in the family that owns this %s.", GetVehicleName(newcar));
	    			SendClientMessageEx(playerid, COLOR_GREY, string);
				}
				else if(FamilyVehicleInfo[f][v][fvLocked] == 1 && FamilyVehicleInfo[f][v][fvLock] == 1)
				{
					GetVehicleParamsEx(newcar,engine,lights,alarm,doors,bonnet,boot,objective);
					SetVehicleParamsEx(newcar,engine,lights,VEHICLE_PARAMS_ON,doors,bonnet,boot,objective);
					SetTimerEx("DisableVehicleAlarm", 20000, 0, "d",  newcar);
				}
				else if(FamilyVehicleInfo[f][v][fvLocked] == 1 && FamilyVehicleInfo[f][v][fvLock] == 2)
				{
		            format(string, sizeof(string), "* %s has been stunned by the electric anti-theft.",GetPlayerNameEx(playerid));
		            ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
		            new Float:X, Float:Y, Float:Z, Float:HP;
		            GetPlayerPos(playerid, X, Y, Z);
		            SendAudioToRange(10300, 100, 0, X, Y, Z, 20.0);
		            SetPlayerPos(playerid, X + 1, Y, Z);
		            RemovePlayerFromVehicle(playerid);
		            new Float:slx, Float:sly, Float:slz;
					GetPlayerPos(playerid, slx, sly, slz);
					SetPlayerPos(playerid, slx, sly, slz);
					SetPVarInt(playerid, "IsFrozen", 1);
		            TogglePlayerControllable(playerid,0);
		            SetTimerEx("ReleasePlayer", 10000, 0, "d", playerid);
		            GameTextForPlayer(playerid,"~r~STUNNED!",11000,3);
		            GetPlayerHealth(playerid,HP);
		            SetPlayerHealth(playerid,HP-15);
				}
				return 1;
			}
		}
		new vehicleid = newcar;
  		if(IsAnSASDCar(vehicleid))
		{
			if(PlayerInfo[playerid][pMember] == 7 || PlayerInfo[playerid][pLeader] == 7)
		    {
		    }
		    else
		    {
		        RemovePlayerFromVehicle(playerid);
		        new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
		        NOPCheck(playerid);
		        SendClientMessageEx(playerid, COLOR_GRAD2, "You are not in the SASD!");
		    }
		}
		else if(IsAHotdogCar(vehicleid))
		{
		    if(PlayerInfo[playerid][pJob] == 15 || PlayerInfo[playerid][pJob2] == 15)
			{
			}
		    else
			{
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    NOPCheck(playerid);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not a hotdog seller!");
			}
		}
		else if(IsADPUCar(vehicleid))
		{
		    if(PlayerInfo[playerid][pJob] == 22 || PlayerInfo[playerid][pJob2] == 22)
			{
			}
		    else
			{
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    NOPCheck(playerid);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not a public worker!");
			}
		}
		else if(IsAnSFPDCar(vehicleid))
		{
            if(PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3)
			{
			}
		    else
			{
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    NOPCheck(playerid);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not in the SFPD!");
			}
		}
		else if(IsAnEPCar(vehicleid))
		{
		    if(PlayerInfo[playerid][pMember] == 3 && PlayerInfo[playerid][pDivision] == 2 || PlayerInfo[playerid][pMember] == 3 && PlayerInfo[playerid][pRank] >= 5)
			{
			}
		    else
			{
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    NOPCheck(playerid);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not in the SFPD Executive Protection Division!");
			}
		}
		else if(IsAnWPCar(vehicleid))
		{
		   	if(PlayerInfo[playerid][pMember] == 7 || PlayerInfo[playerid][pMember] == 7){
			}
		    else
			{
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    NOPCheck(playerid);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not in the SASD!");
			}
		}
		else if(IsACopCar(vehicleid))
		{
		    if(PlayerInfo[playerid][pMember] == 1||PlayerInfo[playerid][pLeader] == 1)
			{
			}
		    else
			{
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    NOPCheck(playerid);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not in the LSPD!");
			}
		}
		else if(IsAFBICar(vehicleid))
		{
		    if(PlayerInfo[playerid][pMember] == 2||PlayerInfo[playerid][pLeader] == 2)
			{
			}
		    else
			{
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    NOPCheck(playerid);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not in the FBI!");
			}
		}
	/*	else if(IsAnNGARMCar(vehicleid))
		{
		    if((PlayerInfo[playerid][pMember] == 11||PlayerInfo[playerid][pLeader] == 11) && (PlayerInfo[playerid][pDivision] == 2 || PlayerInfo[playerid][pDivision] == 3 || PlayerInfo[playerid][pDivision] == 6 || PlayerInfo[playerid][pDivision] == 7))
			{
			}
		    else
			{
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    NOPCheck(playerid);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not in the NG ARM Division!");
			}
		} */
		else if(vehicleid == LSMDVehicles[12])
		{
		    if(PlayerInfo[playerid][pLeader] == 4 || PlayerInfo[playerid][pMember] == 4 && PlayerInfo[playerid][pDivision] == 1)
		    {
		    }
			else
			{
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    NOPCheck(playerid);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not in the Fire Department Division!");
			}
		}
		else if(vehicleid == LSMDVehicles[37])
		{
		    if(PlayerInfo[playerid][pLeader] == 4 || PlayerInfo[playerid][pMember] == 4 && PlayerInfo[playerid][pDivision] == 2)
		    {
		    }
			else
			{
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    NOPCheck(playerid);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not in the Life Flight Division!");
			}
		}
		else if(IsAnNGAIRCar(vehicleid))
		{
		    if((PlayerInfo[playerid][pMember] == 11||PlayerInfo[playerid][pLeader] == 11) && (PlayerInfo[playerid][pDivision] == 1 || PlayerInfo[playerid][pDivision] == 4))
			{
			}
		    else
			{
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    NOPCheck(playerid);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not in the NG AIR Division!");
			}
		}
		else if(IsAnNGCar(vehicleid))
		{
		    if(PlayerInfo[playerid][pMember] == 11||PlayerInfo[playerid][pLeader] == 11)
			{
			}
		    else
			{
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    NOPCheck(playerid);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not in the National Guard!");
			}
		}
		else if(IsAnDOCCar(vehicleid))
		{
		    if(PlayerInfo[playerid][pMember] == 11||PlayerInfo[playerid][pLeader] == 11)
			{
			}
		    else
			{
	   			NOPCheck(playerid);
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not in the National Guard!");
			}
		}
		else if(IsAnMPSCar(vehicleid))
		{
		    if(IsACop(playerid))
		    {
		    }
		    else
		    {
		        RemovePlayerFromVehicle(playerid);
		        new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
		        NOPCheck(playerid);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You aren't in a LEO Faction.");
		    }
		}
		else if(IsACoastguardCar(vehicleid))
		{
		    if( ( PlayerInfo[playerid][pMember] == 4 || PlayerInfo[playerid][pLeader] == 4 ) || ( PlayerInfo[playerid][pMember] == 3 && PlayerInfo[playerid][pDivision] == 3 ))
			{
			}
			else
			{
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not in the Coastguard division!");
			}
		}
	 	else if(IsANewsCar(vehicleid))
		{
		    if(PlayerInfo[playerid][pMember] == 9 ||PlayerInfo[playerid][pLeader] == 9)
			{
			}
		    else
			{
			    RemovePlayerFromVehicle(playerid);
			    new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
			    NOPCheck(playerid);
			    SendClientMessageEx(playerid, COLOR_GRAD2, "You are not in the SANews!");
			}
		}
	   	else if(IsAPlane(vehicleid))
		{
	  		if(PlayerInfo[playerid][pFlyLic] != 1)
	  		{
		  		RemovePlayerFromVehicle(playerid);
		  		new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
		  		NOPCheck(playerid);
			 	SendClientMessageEx(playerid,COLOR_GREY,"You don't have a pilot license!");
	  		}
		}
		else if(IsAHelicopter(vehicleid))
		{
		    PlayerInfo[playerid][pAGuns][GetWeaponSlot(46)] = 46;
			GivePlayerValidWeapon(playerid, 46, 1);
		}
		else if(IsAnTaxi(vehicleid) || IsAnBus(vehicleid))
		{
	        if(PlayerInfo[playerid][pJob] == 17 || PlayerInfo[playerid][pJob2] == 17 || PlayerInfo[playerid][pMember] == 10 || PlayerInfo[playerid][pLeader] == 10 || PlayerInfo[playerid][pTaxiLicense] == 1)
			{
			}
		    else
			{
		        SendClientMessageEx(playerid,COLOR_GREY,"   You are not a Taxi/Bus Driver!");
		        RemovePlayerFromVehicle(playerid);
		        new Float:slx, Float:sly, Float:slz;
				GetPlayerPos(playerid, slx, sly, slz);
				SetPlayerPos(playerid, slx, sly, slz);
		    }
		}
	    if( GetPVarInt( playerid, "ToBeEjected" ) >= 1 )
    	{
	       	SetPVarInt( playerid, "ToBeEjected", 0 );
	       	RemovePlayerFromVehicle( playerid );
	       	new Float:X, Float:Y, Float:Z;
			GetPlayerPos(playerid, X, Y, Z);
			SetPlayerPos(playerid, X, Y, Z+2);

			if(GetPVarInt(playerid, "Injured") == 1)
  			{
  			    Streamer_UpdateEx(playerid, GetPVarFloat(playerid,"MedicX"), GetPVarFloat(playerid,"MedicY"), GetPVarFloat(playerid,"MedicZ"));
		   		SetPlayerPos(playerid, GetPVarFloat(playerid,"MedicX"), GetPVarFloat(playerid,"MedicY"), GetPVarFloat(playerid,"MedicZ"));
				SetPlayerVirtualWorld(playerid, GetPVarInt(playerid,"MedicVW"));
				SetPlayerInterior(playerid, GetPVarInt(playerid,"MedicInt"));
   				ClearAnimations(playerid);
				ApplyAnimation(playerid, "KNIFE", "KILL_Knife_Ped_Die", 4.0, 0, 1, 1, 1, 0, 1);
   			}
   		}
		//if(lights == VEHICLE_PARAMS_UNSET) SetVehicleParamsEx(newcar,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
		TelePos[playerid][0] = 0.0;
		TelePos[playerid][1] = 0.0;
		//SetPVarInt(playerid, "LastWeapon", GetPlayerWeapon(playerid));
	    if(GetCarDealershipVehicleId(newcar) != -1 && GetCarDealershipVehicleId(newcar) == GetPVarInt(playerid, "editingcdveh")) return 1;
        if(GetCarDealershipVehicleId(newcar) != -1)
        {
			new string[57 + 20 + 4];
			format(string, sizeof(string),"Would you like to buy this %s?\n\nThis vehicle costs $%d.", GetVehicleName(newcar), CarDealershipInfo[GetCarDealershipId(newcar)][cdVehicleCost][GetCarDealershipVehicleId(newcar)]);
		    ShowPlayerDialog(playerid,DIALOG_CDBUY,DIALOG_STYLE_MSGBOX,"Warning:",string,"Buy","Cancel");
		    TogglePlayerControllable(playerid, false);
		    return 1;
        }
		GetVehicleParamsEx(newcar,engine,lights,alarm,doors,bonnet,boot,objective);
		if((engine == VEHICLE_PARAMS_UNSET || engine == VEHICLE_PARAMS_OFF) && GetVehicleModel(newcar) != 509 && GetVehicleModel(newcar) != 481 && GetVehicleModel(newcar) != 510) {
		}
		else
		{
			if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 481 && GetVehicleModel(GetPlayerVehicleID(playerid)) != 509 && GetVehicleModel(GetPlayerVehicleID(playerid)) != 510)
			{
				SetPVarInt(playerid, "fuelonoff", 1);
	 			FuelBar[playerid] = CreateProgressBar(548.00, 26.00, 57.50, 3.20, 866792447, 100.0);
	 			textdrawscount++;
	  			SetProgressBarValue(FuelBar[playerid], VehicleFuel[GetPlayerVehicleID(playerid)]);
				ShowProgressBarForPlayer(playerid, FuelBar[playerid]);
			}
		}
	}
	if((newstate == 2 || newstate == 3 || newstate == 7 || newstate == 9) && pTazer[playerid] == 1)
	{
		GivePlayerValidWeapon(playerid, pTazerReplace[playerid], 60000);
		pTazer[playerid] = 0;
	}
	if(newstate == PLAYER_STATE_SPAWNED)
	{
		if(ConnectedToPC[playerid] == 1337)//mdc
	    {
	        ConnectedToPC[playerid] = 0;
		}
		TelePos[playerid][0] = 0.0;
		TelePos[playerid][1] = 0.0;
		gPlayerSpawned[playerid] = 1;
		SafeTime[playerid] = 60;
	}
	if(newstate == PLAYER_STATE_PASSENGER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 519)
	{
	    new vehicleid = GetPlayerVehicleID(playerid);
	    if(VehicleStatus{vehicleid} == 1) return SendClientMessageEx(playerid, COLOR_WHITE, "You are not allowed to enter this Shamal as it's been damaged!");
	    new string[47 + MAX_PLAYER_NAME];
   		format(string, sizeof(string), "* %s enters the Shamal airplane as a passenger.", GetPlayerNameEx(playerid));
		ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
     	SetPlayerPos(playerid, 2.509036, 23.118730, 1199.593750);
     	SetPlayerFacingAngle(playerid, 82.14);
        SetCameraBehindPlayer(playerid);
		PlayerInfo[playerid][pVW] = vehicleid;
		SetPlayerVirtualWorld(playerid, vehicleid);
		PlayerInfo[playerid][pInt] = 1;
        SetPlayerInterior(playerid, 1);
		InsideShamal[playerid] = vehicleid;
		SendClientMessageEx(playerid, COLOR_WHITE, "Type /exit near the door to exit the vehicle, or /window to look outside.");
	}
	IsPlayerSteppingInVehicle[playerid] = -1;

	//vGPS
	if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER)
	{
   		DisablePlayerCheckpoint(playerid);
   		DestroyObject(GPSObject[playerid]);
   		SetPVarInt(playerid,"YEAH",0);
   		DeletePVar(playerid,"Spongebob");
   		DeletePVar(playerid,"Mario");
   		DeletePVar(playerid,"SpiderPig");
   		DeletePVar(playerid,"FAIL");
   		#if defined UseTd
   			TextDrawHideForPlayer(playerid, GPSTD);
   		#endif
	}

	return 1;
}
How To Fix It? Thank You


Re: OnPlayerStateChange Bug! - cessil - 17.12.2013

somewhere in that script you're accessing an invalid index of an array, the array size is 500
you could try printing a message under each "if(newstate ==" line, that should narrow it down quite a bit