[Ajuda] Um bug estranho
#1

Estou criando um sistema com actors e eu estou dando alguns atributos para cada ator:

Code:
new
	actor[MAX_ACTORS],
	cAC = 1 //  CreatedActorCount
;

enum e_ActorData{

	actorName[24],
	actorSkin,
	Float:actorX,
	Float:actorY,
	Float:actorZ,
	Float:actorR,
	actorMoney,
	bool:actorIsAimmed = false
}; new actorData[MAX_ACTORS][e_ActorData];

new
	mascStartSkins[] = {3, 7, 15, 20, 21, 23, 37, 47, 60, 73, 98, 111, 133, 147, 170, 184, 223, 240, 250, 289},
	femStartSkins[] = {12, 40, 55, 56, 69, 76, 90, 91, 93, 131, 141, 148, 150, 157, 169, 192, 193, 198, 216, 219, 226}
;

new 
	actorMascN[] = {"Alessando", "Pedro", "Gabriel", "Leonardo", "Luan"},
	actorFemN[] = {"Sabrina", "Ana", "Silvia", "Leticia", "Gabriela"}
;

public OnGameModeInit(){
    
    actorCreate();

    return 1;
}

forward actorCreate(); public actorCreate(){

	if(cAC > 0){
		
		new aid = cAC - 1;
		actor[aid] = CreateActor(DEFAULT_SKIN, DEFAULT_X, DEFAULT_Z, DEFAULT_Z, DEFAULT_R); SetActorVirtualWorld(actor[aid], 999);
		new gender = random(2);

		actorData[aid][actorSkin] = 0; //(gender == 0) ? mascStartSkins[random(sizeof mascStartSkins)] : femStartSkins[random(sizeof femStartSkins)]; //Aqui й a linha do erro pra quem nгo entendeu...
		actorData[aid][actorName] = (gender == 0) ? actorMascN[random(sizeof actorMascN)] : actorFemN[random(sizeof actorFemN)];
	}

	return 1;
}
Quando eu vou atribuir um valor a actorSkin, retorna este erro:
Code:
error 032: array index out of bounds (variable "actorData")
Mas na linha seguinte eu atribuo um valor a actorName e nгo da erro.
Alguйm ta vendo algum erro que eu nгo estou vendo?
Reply
#2

Como vocк definiu a MAX_ACTORS ?

**
Normalmente esse erro "error 032: array index out of bounds (variable "actorData")" й por que vocк tentou acessar uma index maior do que a array.
Por exemplo:

vc define a: #define MAX_ACTORS 4

e tenta acessar a: actorData[6][actorName];

Vc tenta acessar a Index 6, sendo q sу existem 4. Lembrando que, a contagem comeзa a partir do 0.
Logo, se vc define como 4 o valor, vocк pode acessar a 0, 1, 2 e 3 apenas.
Reply
#3

Code:
#define MAX_ACTORS 10
@EDIT

Eu acabei resolvendo o erro dando um valor padrгo para a variбvel

Code:
enum e_ActorData{

	actorName[24],
	actorSkin = 0,
	Float:actorX,
	Float:actorY,
	Float:actorZ,
	Float:actorR,
	actorMoney = 0,
	bool:actorIsAimmed = false
}; new actorData[MAX_ACTORS][e_ActorData];

actorData[aid][actorSkin] = (gender == 0) ? mascStartSkins[random(sizeof mascStartSkins)] : femStartSkins[random(sizeof femStartSkins)];
actorData[aid][actorMoney] = randomValue(30, 50);
Mas acho que isto й um bug do enum, pois se eu fizer uma variбvel fora do enum nгo da erro.

Enfim, obrigado mesmo assim.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)