Erro ao atribuir um valor -
Ermanhaut - 07.05.2018
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?
Re: Um bug estranho -
Felipe_Freeze - 07.05.2018
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.
Re: Um bug estranho -
Ermanhaut - 07.05.2018
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.