Array index out of bounds - L10motos - 01/12/2023
Estou com um problema no timer que crei e dentro do timer de um segundo aparece essa mensagem:
Citar:[2023-12-01T21:06:44-0200] [Error] SetTimer(Ex): There was a problem in calling SetTimerUmSegundo: Array index out of bounds
Código PHP: if(InvasionBox[playerid] >= 1) { new f = Invasion[gTeam[playerid]]; if(PlayerToPoint(2.0, playerid, Org_X[f], Org_Y[f], Org_Z[f])) { if(GetPlayerVirtualWorld(playerid) == Org_W[f]) { if(CofreInfo[f][cfMats] >= ARMAZEM_CRATE_VALUE && holding_crate[playerid] == 0) { PickBox(playerid); CofreInfo[f][cfMats] -= ARMAZEM_CRATE_VALUE; } else if(CofreInfo[f][cfMats] < ARMAZEM_CRATE_VALUE) InvasionBox[playerid] = 0; } } }
RE: Array index out of bounds - White_Blue - 01/12/2023
Mostre o código que você usa para chamar esse timer.
RE: Array index out of bounds - L10motos - 01/12/2023
(01/12/2023 21:10)White_Blue Escreveu: Mostre o código que você usa para chamar esse timer.
Código PHP: public OnGameModeInit() { SetTimer("SetTimerUmSegundo", 1000, true); }
forward [color=#333333][size=small][font=Tahoma, Verdana, Arial, sans-serif]SetTimerUmSegundo()[/font][/size][/color] public [color=#333333][size=small][font=Tahoma, Verdana, Arial, sans-serif]SetTimerUmSegundo()[/font][/size][/color] [color=#333333][size=small][font=Tahoma, Verdana, Arial, sans-serif]{[/font][/size][/color] if(InvasionBox[playerid] >= 1) { new f = Invasion[gTeam[playerid]]; if(PlayerToPoint(2.0, playerid, Org_X[f], Org_Y[f], Org_Z[f])) { if(GetPlayerVirtualWorld(playerid) == Org_W[f]) { if(CofreInfo[f][cfMats] >= ARMAZEM_CRATE_VALUE && holding_crate[playerid] == 0) { PickBox(playerid); CofreInfo[f][cfMats] -= ARMAZEM_CRATE_VALUE; } else if(CofreInfo[f][cfMats] < ARMAZEM_CRATE_VALUE) InvasionBox[playerid] = 0; } } }
Acho que vou precisar deletar o topico White, por que não esta aparecendo mais o erro no console e o codigo existe muitas funções que existe no gamemode que não tem fora do mesmo. Acho que foi resolvido. Se você quiser me ajudar a melhorar esse codigo vou te passar.
De couquer forma obrigado, vou te reputar.
RE: Array index out of bounds - White_Blue - 01/12/2023
(01/12/2023 21:31)L10motos Escreveu: (01/12/2023 21:10)White_Blue Escreveu: Mostre o código que você usa para chamar esse timer.
Código PHP: public OnGameModeInit() { SetTimer("SetTimerUmSegundo", 1000, true); }
forward [color=#333333][size=small][font=Tahoma, Verdana, Arial, sans-serif]SetTimerUmSegundo()[/font][/size][/color] public [color=#333333][size=small][font=Tahoma, Verdana, Arial, sans-serif]SetTimerUmSegundo()[/font][/size][/color] [color=#333333][size=small][font=Tahoma, Verdana, Arial, sans-serif]{[/font][/size][/color] if(InvasionBox[playerid] >= 1) { new f = Invasion[gTeam[playerid]]; if(PlayerToPoint(2.0, playerid, Org_X[f], Org_Y[f], Org_Z[f])) { if(GetPlayerVirtualWorld(playerid) == Org_W[f]) { if(CofreInfo[f][cfMats] >= ARMAZEM_CRATE_VALUE && holding_crate[playerid] == 0) { PickBox(playerid); CofreInfo[f][cfMats] -= ARMAZEM_CRATE_VALUE; } else if(CofreInfo[f][cfMats] < ARMAZEM_CRATE_VALUE) InvasionBox[playerid] = 0; } } }
Acho que vou precisar deletar o topico White, por que não esta aparecendo mais o erro no console e o codigo existe muitas funções que existe no gamemode que não tem fora do mesmo. Acho que foi resolvido. Se você quiser me ajudar a melhorar esse codigo vou te passar.
De couquer forma obrigado, vou te reputar.
Bem, no código que você mostrou, a única coisa errada que vi é o uso de PlayerToPoint, uma função que foi substituída pela função IsPlayerInRangeOfPoint há algum tempo. E também sobre a nomenclatura da função.
Código PHP: forward TimerInvasion(playerid); public TimerInvasion(playerid) { if(InvasionBox[playerid] >= 1) { new f = Invasion[gTeam[playerid]]; if(IsPlayerInRangeOfPoint(playerid, 2.0, Org_X[f], Org_Y[f], Org_Z[f])) { if(GetPlayerVirtualWorld(playerid) == Org_W[f]) { if(CofreInfo[f][cfMats] >= ARMAZEM_CRATE_VALUE && holding_crate[playerid] == 0) { PickBox(playerid); CofreInfo[f][cfMats] -= ARMAZEM_CRATE_VALUE; } else if(CofreInfo[f][cfMats] < ARMAZEM_CRATE_VALUE) { InvasionBox[playerid] = 0; } } } }
return 1; }
RE: Array index out of bounds - Carlos Victor - 02/12/2023
O erro Array index out of bounds (Índice de array fora dos limites) significa que você está tentando acessar um índice de um array que está fora do valor definido limite, isto é:
Se eu definir um array com 100 índices eu não consigo acessar o índice 101.
Código PHP: new array[100];
printf("Valor: %d", array[101]); > (error) array index out of bounds (variable "array")
O problema pode estar no que você está atribuindo a essa variável: new f que é Invasion e também gTeam[playerid], já que ela que manipula o índice do array das variáveis.
|