[Ajuda] Erro de index
#1

O erro й esse:
Код:
[debug] AMX backtrace:
[16:16:20] [debug] #0 000afe5c in public OnViewFicha (1, 3115580 from slrp.amx
[16:16:48] [debug] Run time error 4: "Array index out of bounds"
[16:16:48] [debug]  Accessing element at negative index -1
Nesse cуdigo:

Код:
forward OnViewFicha(extraid, name[]);
public OnViewFicha(extraid, name[])
{
	if (GetFactionType(extraid) != FACTION_POLICE)
	    return 0;

	static
	    rows,
	    fields;

	cache_get_data(rows, fields, g_iHandle);

	if (!rows)
	    return SendErrorMessage(extraid, "Nenhum registro encontrato para \"%s\".", name);

	static
	    string[1024],
		desc[256],
		nome[24],
		telefone,
  		dinheiro,
  		nascimento[12],
  		origem[32],
		altura,
		frank,
		olhos,
		cabelo,
		faction,
		etnia,
		peso,
		a1[32],
  		e1[32],
  		c1[32],
  		rank1[32],
  		rank2[32],
		o1[32],
		p1[32],
  		nivel;
  		
	string[0] = 0;

	for (new i = 0; i < rows; i ++) {
 	cache_get_field_content(i, "Character", nome, g_iHandle);
  	telefone = cache_get_field_int(i, "Phone");
  	altura = cache_get_field_int(i, "Altura");
  	peso = cache_get_field_int(i, "Peso");
  	olhos = cache_get_field_int(i, "Olhos");
   	cabelo = cache_get_field_int(i, "Cabelo");
   	etnia = cache_get_field_int(i, "Etnia");
   	frank = cache_get_field_int(i, "FactionRank");
  	dinheiro = cache_get_field_int(i, "BankMoney");
	cache_get_field_content(i, "Birthdate", nascimento, g_iHandle);
 	cache_get_field_content(i, "Origin", origem, g_iHandle);
 	nivel = cache_get_field_int(i, "Warrants");
 	faction = cache_get_field_int(i, "Faction");


    format(rank1, 32, FactionRanks[faction][frank-1]);
    format(rank2, 32, FactionData[faction][factionName]);
	switch (altura)
 	{
 	    case 0: { a1 = "N/A";}
		case 1: { a1 = "1,10m";}
		case 2: { a1 = "1,20m";}
		case 3: { a1 = "1,25m";}
		case 4: { a1 = "1,30m";}
		case 5: { a1 = "1,35m";}
		case 6: { a1 = "1,40m";}
		case 7: { a1 = "1,45m";}
		case 8: { a1 = "1,50m";}
		case 9: { a1 = "1,55m";}
		case 10: { a1 = "1,60m";}
		case 11: { a1 = "1,65m";}
		case 12: { a1 = "1,70m";}
		case 13: { a1 = "1,75m";}
		case 14: { a1 = "1,80m";}
		case 15: { a1 = "1,85m";}
		case 16: { a1 = "1,90m";}
		case 17: { a1 = "1,95m";}
		case 18: { a1 = "2,00m";}
		case 19: { a1 = "2,10m";}
 	}
 	switch (peso)
 	{
 	    case 0: { p1 = "N/A";}
		case 1: { p1 = "50kg";}
		case 2: { p1 = "60kg";}
		case 3: { p1 = "70kg";}
		case 4: { p1 = "90kg";}
		case 5: { p1 = "100kg";}
		case 6: { p1 = "110kg";}
		case 7: { p1 = "120kg";}
		case 8: { p1 = "130kg";}
		case 9: { p1 = "140kg";}
		case 10: { p1 = "150kg";}
 	}
 	switch (etnia)
 	{
 	    case 0: { e1 = "N/A";}
		case 1: { e1 = "Caucasiano";}
		case 2: { e1 = "Negro";}
		case 3: { e1 = "Asiбtico";}
		case 4: { e1 = "Hispвnico";}
		case 5: { e1 = "Mediterrвneo";}
		case 6: { e1 = "Desconhecida";}
 	}
 	switch (olhos)
 	{
 	    case 0: { o1 = "N/A";}
		case 1: { o1 = "Castanhos-claro";}
		case 2: { o1 = "Castanhos-escuro";}
		case 3: { o1 = "Azuis";}
		case 4: { o1 = "Verdes";}
 	}
	switch (cabelo)
 	{
 	    case 0: { c1 = "N/A";}
		case 1: { c1 = "Preto";}
		case 2: { c1 = "Branco";}
		case 3: { c1 = "Grisalho";}
		case 4: { c1 = "Loiro";}
		case 5: { c1 = "Afro";}
		case 6: { c1 = "Careca";}
 	}
  	format(string, sizeof(string), "Dados Pessoais:\n\n%sNome: %s\nData de Nascimento: %s\nOrigem: %s\nDinheiro: %s\nNъmero Telefonico: %d\nPrisхes: %d\nTrabalho: %s\nCargo: %s \n\nAparкncia:\n\nAltura: %s\nPeso: %s\nOlhos: %s\nCabelo: %s\nEtnia: %s:",string, nome, nascimento, origem, FormatNumber(dinheiro), telefone, nivel, rank2,rank1,a1,p1,o1,c1,e1);
	}
	format(desc, sizeof(desc), "Ficha de %s", name);
	Dialog_Show(extraid, ChargeList, DIALOG_STYLE_MSGBOX, desc, string, "Fechar", "");
	return 1;
}
Alguйm me ajuda?
Reply
#2

Bom, vocк estб tentando acessar uma array usando o нndice -1, o que й impossнvel.
Suponho que seja a variбvel rows, troca o if(!rows) por if(rows < 1) pra ver se vai. Se nгo for ela, comeзa a printar (printf) todos os indexes de arrays que vocк estб acessando.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)