Run time error 4


Započeo ShomY071, Februar 08, 2018, 09:10:01 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Detaljan opis problema: Dodao sam salone na SG by Nelson modu, tj auto salon, i sada kad kupim vozilo znaci posle kupovine vozila meni ne radi /v,izbacuje mi u server logu ovo ispod.Bez dela kojeg cu ostaviti ispod sve radi..Tj dela de se igracu setuje vozilo na odredjenom slotu.
SERVER LOG
[08:49:56] [debug] Run time error 4: "Array index out of bounds"
[08:49:56] [debug]  Accessing element at negative index -400
[08:49:56] [debug] AMX backtrace:
[08:49:56] [debug] #0 002ca3a8 in public @_yCv (0, 29389744, 0) from Nelson-SG.amx
[08:49:56] [debug] #1 002c9b10 in public @yC_v (0, 29389744, 0, 0) from Nelson-SG.amx
[08:49:56] [debug] #2 native CallRemoteFunction () from samp-server.exe
[08:49:56] [debug] #3 0001d0dc in ?? (0, 29389732, 0) from Nelson-SG.amx
[08:49:56] [debug] #4 0001c920 in ?? (0, 29389732) from Nelson-SG.amx
[08:49:56] [debug] #5 00008734 in public OnPlayerCommandText (0, 29389732) from Nelson-SG.amx

DEO POSLE KUPOVINE
    if(dialogid == AUDI_KUPOVINA)
	{
	    if(response)
	    {
	        g_NovacMinus(playerid, 5);
	        new b = IzabraoVozilo[playerid];
   			new idveha = SledeceVozilo();
			new vfiles[80];
   			if(idveha >= MAX_AUTA) return Error(playerid, "Trenutno nemamo vozila na prodaju,probajte kasnije!");
			format(vfiles, sizeof(vfiles), AUTO_FILE, idveha);
			VoziloInfo[idveha][vModel] = IzabraoVozilo[playerid];
			VoziloInfo[idveha][vPozX] = 1575.0807;
			VoziloInfo[idveha][vPozY] = -1242.2964;
			VoziloInfo[idveha][vPozZ] = 17.2003;
			VoziloInfo[idveha][vPozA] = -181.3199;
			VoziloInfo[idveha][vBoja1] = 1;
			VoziloInfo[idveha][vBoja2] = 1;
			VoziloInfo[idveha][vImaVlasnika] = 1;
			VoziloInfo[idveha][vZakljucan] = 0;
			VoziloInfo[idveha][vCannabis] = 0;
			VoziloInfo[idveha][vKokain] = 0;
			VoziloInfo[idveha][vMats] = 0;
			VoziloInfo[idveha][vRadio] = 0;
			VoziloInfo[idveha][vComponent0] = 0;
			VoziloInfo[idveha][vComponent1] = 0;
			VoziloInfo[idveha][vComponent2] = 0;
			VoziloInfo[idveha][vComponent3] = 0;
			VoziloInfo[idveha][vComponent4] = 0;
			VoziloInfo[idveha][vComponent5] = 0;
			VoziloInfo[idveha][vComponent6] = 0;
			VoziloInfo[idveha][vComponent7] = 0;
			VoziloInfo[idveha][vComponent8] = 0;
			VoziloInfo[idveha][vComponent9] = 0;
			VoziloInfo[idveha][vComponent10] = 0;
			VoziloInfo[idveha][vComponent11] = 0;
			VoziloInfo[idveha][vComponent12] = 0;
			VoziloInfo[idveha][vComponent13] = 0;
			VoziloInfo[idveha][vPaintJob] = 999;
			VoziloInfo[idveha][vOruzije1] = -1;
			VoziloInfo[idveha][vOruzije2] = -1;
			VoziloInfo[idveha][vOruzije3] = -1;
			VoziloInfo[idveha][vMunicija1] = 0;
			VoziloInfo[idveha][vMunicija2] = 0;
			VoziloInfo[idveha][vMunicija3] = 0;
			VoziloInfo[idveha][vPrtljaznik] = 0;
			VoziloInfo[idveha][vCena] = 5;
			VoziloInfo[idveha][vProdaja] = 0;
			VoziloInfo[idveha][vNeaktivnost] = 0;
			strmid(VoziloInfo[idveha][vVlasnik], ImeIgraca(playerid), 0, strlen(ImeIgraca(playerid)), 999);
			VoziloInfo[idveha][vID] = CreateVehicle(VoziloInfo[idveha][vModel], VoziloInfo[idveha][vPozX],VoziloInfo[idveha][vPozY],VoziloInfo[idveha][vPozZ],VoziloInfo[idveha][vPozA], VoziloInfo[idveha][vBoja1], VoziloInfo[idveha][vBoja2], 30000);
			SacuvajVozilo(idveha);
			SavePlayer(playerid);
   			if(PI[playerid][Vozilo1] == -1) { PI[playerid][Vozilo1] = b; } // BEZ OVOGA DELA SVE RADI
          	else if(PI[playerid][Vozilo2] == -1) { PI[playerid][Vozilo2] = b; }
          	else if(PI[playerid][Vozilo3] == -1) { PI[playerid][Vozilo3] = b; }
          	else if(PI[playerid][Vozilo4] == -1) { PI[playerid][Vozilo4] = b; }
          	else if(PI[playerid][Vozilo5] == -1) { PI[playerid][Vozilo5] = b; }
          	else if(PI[playerid][Vozilo6] == -1) { PI[playerid][Vozilo6] = b; }
          	else{ return 1; } /// KRAJ DELA
			IzabraoVozilo[playerid] = -1;
   			SCM(playerid, -1, ""SERVERPLAVA"#AUDI | "C_BELA"Uspesno ste kupili svoje vozilo,da vidite komande koristite /v!");
	        SCM(playerid, -1, ""SERVERPLAVA"#AUDI | "C_BELA"U obavezi ste da sklonite(parkirate na drugom mestu) vozilo sa parkinga AUDI Salona!");
			for(new i = 0; i < 20; i++) { TextDrawShowForPlayer(playerid, InGameTD[i]); }
			for(new i = 0; i < 8;  i++) { TextDrawShowForPlayer(playerid, Gornji_TD[i]); }
			for(new i = 0; i < 10; i++) { TextDrawShowForPlayer(playerid, MiniInfoTD[i]); }
			for(new i = 0; i < 3; i++) { PlayerTextDrawShow(playerid, GamesTD[playerid][i]); }
		}
		else if(!response)
		{
		    SCM(playerid, -1, "Odustali ste od kupovine vozila!");
			for(new i = 0; i < 20; i++) { TextDrawShowForPlayer(playerid, InGameTD[i]); }
			for(new i = 0; i < 8;  i++) { TextDrawShowForPlayer(playerid, Gornji_TD[i]); }
			for(new i = 0; i < 10; i++) { TextDrawShowForPlayer(playerid, MiniInfoTD[i]); }
			for(new i = 0; i < 3; i++) { PlayerTextDrawShow(playerid, GamesTD[playerid][i]); }
			IzabraoVozilo[playerid] = -1;
		}
	}

Dio skripte:
Neke slike/video za lakse dobivanje pomoci(neobavezno): //


Ja burazeru mislam da ti je zbog MySQL

Kolika ti je velicina MAX_VEHICLES
heroin rap - Moskri u kuci, od sledece lajne glava ce mi puci

#define MAX_VOZILA  			2000

#define MAX_AUTA        1000
#define AUTO_FILE    	"Vozila/Vozilo_%d.ini"

Mislim da nije do toga,zato sto sa cmd /napravivozilo radi sve lepo

Zasta ti sluzi dva define za max vozila?
Verovatno je do toga posto je limit vozila 2k.
Poslednja Izmena: Februar 08, 2018, 11:00:33 PRE PODNE od Raptorâ„¢
Oduvek sam se pitao:
"Zbog cega se ljudi toliko brinu jedni za druge?",
"Zasto ljudi daju sve od sebe da usrece neku osobu?"

Najjednostavnije receno brinu se jer vole tu osobu celim svojim srcem,
daju sve od sebe da je usrece zbog toga sto ne zele da je ikada vide tuznom ili rasplakanom.
#xsarnaaparatima..

Citat: Raptorâ,,¢ poslato Februar 08, 2018, 10:59:15 PRE PODNE
Zasta ti sluzi dva define za max vozila?
max_auta vjerojatno da se ne moze kupiti vise od 1000 a max_vozila 2000 zato sto ima i org auta itd pa i ovako i onako nece preci 2000 limit
heroin rap - Moskri u kuci, od sledece lajne glava ce mi puci

Bas tako @Łuk@  :D,nego ima li neko da zna kako da fixam ovo?  :'(


YCMD:v(playerid, params[],help)
{
	new ImaAuto = 0;
	if(PI[playerid][Vozilo1] != -1) { ImaAuto = ImaAuto+1; }
	if(PI[playerid][Vozilo2] != -1) { ImaAuto = ImaAuto+1; }
	if(PI[playerid][Vozilo3] != -1) { ImaAuto = ImaAuto+1; }
	if(PI[playerid][Vozilo4] != -1) { ImaAuto = ImaAuto+1; }
	if(PI[playerid][Vozilo5] != -1) { ImaAuto = ImaAuto+1; }
	if(PI[playerid][Vozilo6] != -1) { ImaAuto = ImaAuto+1; }
	if(ImaAuto == 0)
	{
		return Error(playerid, "Ne posedujete nijedno vozilo.");
	}
	new stringg[128],str[128],text1[128],text2[128],text3[128],text4[128],text5[128],text6[128];
	if(PI[playerid][Vozilo1] != -1 && strcmp(Ime_Igraca(playerid), VoziloInfo[PI[playerid][Vozilo1]][vVlasnik], true) == 0)
	{
		format(str,sizeof(str),"[1] %s (%d)",ImenaVozila[VoziloInfo[PI[playerid][Vozilo1]][vModel] - 400], VoziloInfo[PI[playerid][Vozilo1]][vID]);
    	text1 = str;
	}
	else
	{
		text1 = "[1] "C_CRVENA"Prazno";
	}
	if(PI[playerid][Vozilo2] != -1 && strcmp(Ime_Igraca(playerid), VoziloInfo[PI[playerid][Vozilo2]][vVlasnik], true) == 0)
	{
		format(str,sizeof(str),"[2] %s (%d)",ImenaVozila[VoziloInfo[PI[playerid][Vozilo2]][vModel] - 400], VoziloInfo[PI[playerid][Vozilo2]][vID]);
    	text2 = str;
	}
	else
	{
		text2 = "[2] "C_CRVENA"Prazno";
	}
	if(PI[playerid][Vozilo3] != -1 && strcmp(Ime_Igraca(playerid), VoziloInfo[PI[playerid][Vozilo3]][vVlasnik], true) == 0)
	{
		format(str,sizeof(str),"[3] %s (%d)",ImenaVozila[VoziloInfo[PI[playerid][Vozilo3]][vModel] - 400], VoziloInfo[PI[playerid][Vozilo3]][vID]);
    	text3 = str;
	}
	else
	{
		text3 = "[3] "C_CRVENA"Prazno";
	}
	if(PI[playerid][Vozilo4] != -1 && strcmp(Ime_Igraca(playerid), VoziloInfo[PI[playerid][Vozilo4]][vVlasnik], true) == 0)
	{
		format(str,sizeof(str),"[4] %s (%d)",ImenaVozila[VoziloInfo[PI[playerid][Vozilo4]][vModel] - 400], VoziloInfo[PI[playerid][Vozilo4]][vID]);
    	text4 = str;
	}
	else
	{
		text4 = "[4] "C_CRVENA"Prazno";
	}
	if(PI[playerid][Vozilo5] != -1 && strcmp(Ime_Igraca(playerid), VoziloInfo[PI[playerid][Vozilo5]][vVlasnik], true) == 0)
	{
		format(str,sizeof(str),"[5] %s (%d)",ImenaVozila[VoziloInfo[PI[playerid][Vozilo5]][vModel] - 400], VoziloInfo[PI[playerid][Vozilo5]][vID]);
    	text5 = str;
	}
	else
	{
		text5 = "[5] "C_CRVENA"Prazno";
	}
	if(PI[playerid][Vozilo6] != -1 && strcmp(Ime_Igraca(playerid), VoziloInfo[PI[playerid][Vozilo6]][vVlasnik], true) == 0)
	{
		format(str,sizeof(str),"[6] %s (%d)",ImenaVozila[VoziloInfo[PI[playerid][Vozilo6]][vModel] - 400], VoziloInfo[PI[playerid][Vozilo6]][vID]);
    	text6 = str;
	}
	else
	{
		text6 = "[6] "C_CRVENA"Prazno";
	}
	format(stringg,sizeof(stringg),"%s\n%s\n%s\n%s\n%s\n%s", text1, text2, text3,text4,text5,text6);
	ShowPlayerDialog(playerid,DIALOG_VOZILOMENI,DIALOG_STYLE_LIST,"{00C0FF}Odaberite vozilom kojim ce te upravljati:",stringg,"Potvrdi","Odustani");
	return 1;
}

Komanda /v kao sto sam i rekao radi normalno kad kupis vozilo koje je napravljeno sa /napravivozilo ili bez onog dela

koliko los kod lol, probaj taj prvi dio zamijeniti sa ovim
new ImaAuto[MAX_PLAYERS] = 0;
	if(PI[playerid][Vozilo1] != -1) { ImaAuto[playerid] = ImaAuto[playerid]+1; }
	if(PI[playerid][Vozilo2] != -1) { ImaAuto[playerid] = ImaAuto[playerid]+1; }
	if(PI[playerid][Vozilo3] != -1) { ImaAuto[playerid] = ImaAuto[playerid]+1; }
	if(PI[playerid][Vozilo4] != -1) { ImaAuto[playerid] = ImaAuto[playerid]+1; }
	if(PI[playerid][Vozilo5] != -1) { ImaAuto[playerid] = ImaAuto[playerid]+1; }
	if(PI[playerid][Vozilo6] != -1) { ImaAuto[playerid] = ImaAuto[playerid]+1; }
heroin rap - Moskri u kuci, od sledece lajne glava ce mi puci


Obicno ti je to do imena vozila jer obicno getas to iz arraya ex.

veh_name[modelid - 400]

ako se desi da je modelid = 0 pa 0 - 400 = -400 desi se da array iskace iz bounda...

Citat: .ксундер poslato Februar 08, 2018, 22:33:47 POSLE PODNE
Obicno ti je to do imena vozila jer obicno getas to iz arraya ex.

veh_name[modelid - 400]

ako se desi da je modelid = 0 pa 0 - 400 = -400 desi se da array iskace iz bounda...
Pa razmisljam nesto al opet nikako da shvatim, stavio sam nesto opet nista,mozda lose radim al nzm stvarno
Mozes da mi pojasnis malo detaljnije.

Ubaci debug... Fix sam ti malo kod ovako se nmgu snaci
YCMD:v(playerid, params[],help)
{
	if (
        PI[playerid][Vozilo1] != -1 &&
        PI[playerid][Vozilo2] != -1 &&
        PI[playerid][Vozilo3] != -1 &&
        PI[playerid][Vozilo4] != -1 &&
        PI[playerid][Vozilo5] != -1 &&
        PI[playerid][Vozilo6] != -1
	)
		return Error(playerid, "Ne posedujete nijedno vozilo.");
		
	new string[128],
		vehicleid = PI[playerid][Vozilo1];
	
	if (vehicleid != -1 && strcmp(Ime_Igraca(playerid), VoziloInfo[vehicleid][vVlasnik], true) == 0) {
		printf("[1] Model id: %d | vID: %d", VoziloInfo[vehicleid][vModel], VoziloInfo[vehicleid][vID]);
		format(string, sizeof(string),"[1] %s (%d)", ImenaVozila[VoziloInfo[vehicleid][vModel] - 400], VoziloInfo[vehicleid][vID]);
	}
	else strmid(string, "[1] "C_CRVENA"Prazno", 0, 20);
	
	vehicleid = PI[playerid][Vozilo2];
	if(vehicleid != -1 && strcmp(Ime_Igraca(playerid), VoziloInfo[vehicleid][vVlasnik], true) == 0) {
		printf("[2] Model id: %d | vID: %d", VoziloInfo[vehicleid][vModel], VoziloInfo[vehicleid][vID]);
		format(string,sizeof(string),"%s[2] %s (%d)",string, ImenaVozila[VoziloInfo[vehicleid][vModel] - 400], VoziloInfo[vehicleid][vID]);
	}
	else strcat(string, "[2] "C_CRVENA"Prazno");
	
	vehicleid = PI[playerid][Vozilo3];
	if(vehicleid != -1 && strcmp(Ime_Igraca(playerid), VoziloInfo[vehicleid][vVlasnik], true) == 0) {
		printf("[3] Model id: %d | vID: %d", VoziloInfo[vehicleid][vModel], VoziloInfo[vehicleid][vID]);
		format(string,sizeof(string),"%s[2] %s (%d)",string, ImenaVozila[VoziloInfo[vehicleid][vModel] - 400], VoziloInfo[vehicleid][vID]);
	}
	else strcat(string, "[3] "C_CRVENA"Prazno");
	
	vehicleid = PI[playerid][Vozilo4];
	if(vehicleid != -1 && strcmp(Ime_Igraca(playerid), VoziloInfo[vehicleid][vVlasnik], true) == 0) {
		printf("[4] Model id: %d | vID: %d", VoziloInfo[vehicleid][vModel], VoziloInfo[vehicleid][vID]);
		format(string,sizeof(string),"%s[2] %s (%d)",string, ImenaVozila[VoziloInfo[vehicleid][vModel] - 400], VoziloInfo[vehicleid][vID]);
	}
	else strcat(string, "[4] "C_CRVENA"Prazno");
	
	vehicleid = PI[playerid][Vozilo5];
	if(vehicleid != -1 && strcmp(Ime_Igraca(playerid), VoziloInfo[vehicleid][vVlasnik], true) == 0) {
		printf("[5] Model id: %d | vID: %d", VoziloInfo[vehicleid][vModel], VoziloInfo[vehicleid][vID]);
		format(string,sizeof(string),"%s[2] %s (%d)",string, ImenaVozila[VoziloInfo[vehicleid][vModel] - 400], VoziloInfo[vehicleid][vID]);
	}
	else strcat(string, "[5] "C_CRVENA"Prazno");
	
	vehicleid = PI[playerid][Vozilo6];
	if(vehicleid != -1 && strcmp(Ime_Igraca(playerid), VoziloInfo[vehicleid][vVlasnik], true) == 0) {
	    printf("[6] Model id: %d | vID: %d", VoziloInfo[vehicleid][vModel], VoziloInfo[vehicleid][vID]);
		format(string,sizeof(string),"%s[2] %s (%d)",string, ImenaVozila[VoziloInfo[vehicleid][vModel] - 400], VoziloInfo[vehicleid][vID]);
	}
	else strcat(string, "[6] "C_CRVENA"Prazno");
	
	ShowPlayerDialog(playerid,DIALOG_VOZILOMENI,DIALOG_STYLE_LIST,"{00C0FF}Odaberite vozilom kojim ce te upravljati:",string,"Potvrdi","Odustani");
	return 1;
}


Vidi sta ti izbaci model id, takodje napravi pawn.cfg u pawno folderu i upisi -d3 pa compilaj skriptu.

Jedino sto pawno izbaci jeste ovo...
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase

Header size:          40492 bytes
Code size:          5300676 bytes
Data size:         29390288 bytes
Stack/heap size:      16384 bytes; estimated max. usage: unknown, due to recursion
Total requirements:34747840 bytes