[Error] Array index out of bounds - Ryzen_ - 30/04/2024
Olá, boa noite a todos. Notei que sempre ao adentrar em algum veículo, seja entrando em um que já está criado pelo mapa, ou então usando algum criado pelo próprio jogador (/cv, /veh), aparece a seguinte mensagem no terminal: [Error] Array index out of bounds. Até o momento não consegui encontrar o que esteja causando o erro em destaque. Deixarei abaixo o código responsável por verificar se o player entrou em algum veículo, onde para isso estou usando o OnPlayerStateChange, e não o OnPlayerEnterVehicle. Desde já, agradeço a todos os que contribuírem com suas respostas, muito obrigado!
Código PHP: public OnPlayerStateChange(playerid, PLAYER_STATE:newstate, PLAYER_STATE:oldstate) { static vehicleid; vehicleid = GetPlayerVehicleID(playerid); // modelid = GetVehicleModel(vehicleid); new vvid = ConceID[vehicleid]; format(File, sizeof(File), PASTA_CONCE, vvid);
if(newstate == PLAYER_STATE_DRIVER) { TimerGasolina[playerid] = SetTimerEx("GastarGasolina", 60000, true, "i", playerid); }
if(newstate == PLAYER_STATE_DRIVER && IsABike(vehicleid) && !PlayerInfo[playerid][CNHA] && !AcInfo[playerid][ANaAuto]) { GivePlayerWanted(playerid, 1); SendClientMessage(playerid, Laranja, "| INFO | Você não tem habilitação para dirigir este veículo, portanto está sendo %s pela polícia", PlayerInfo[playerid][pSexo] ? "procurado" : "procurada"); } else if(newstate == PLAYER_STATE_DRIVER && IsACar(vehicleid) && !PlayerInfo[playerid][CNHB] && !AcInfo[playerid][ANaAuto]) { GivePlayerWanted(playerid, 1); SendClientMessage(playerid, Laranja, "| INFO | Você não tem habilitação para dirigir este veículo, portanto está sendo %s pela polícia", PlayerInfo[playerid][pSexo] ? "procurado" : "procurada"); } else if(newstate == PLAYER_STATE_DRIVER && IsATruck(vehicleid) && !PlayerInfo[playerid][CNHC] && !AcInfo[playerid][ANaAuto]) { GivePlayerWanted(playerid, 1); SendClientMessage(playerid, Laranja, "| INFO | Você não tem habilitação para dirigir este veículo, portanto está sendo %s pela polícia", PlayerInfo[playerid][pSexo] ? "procurado" : "procurada"); }
if(newstate == PLAYER_STATE_ONFOOT) { if (GetPVarInt(playerid, "InVehicleTrabalho")) { SendClientMessage(playerid, Vermelho, "Você tem 1 minuto para retornar ao seu veículo de trabalho, ou sua tarefa será cancelada!"); TimerOutTrabalho[playerid] = SetTimerEx("OutTrabalho", 60000, false, "i", playerid); DeletePVar(playerid, "InVehicleTrabalho"); }
if(GetPVarInt(playerid, "criouv")) { DeletePVar(playerid, "criouv"); DestroyVehicle(GetPVarInt(playerid, "cvehid")); DeletePVar(playerid, "cvehid"); }
KillTimer(TimerCar[playerid]); KillTimer(TimerGasolina[playerid]); HidePlayerVelocimetro(playerid); }
if (newstate == PLAYER_STATE_DRIVER) { if (vehicleid >= KyoseiCar[0] && vehicleid <= KyoseiCar[7] && GetPlayerClan(playerid) != 0) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, KYOSEI_COR, "Você não faz parte do clan Kyosei-Kai!");
return 1; }
else if (vehicleid >= MedellinCar[0] && vehicleid <= MedellinCar[7] && GetPlayerClan(playerid) != 1) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, MEDELLIN_COR, "Você não faz parte do clan Cartel Medellín!");
return 1; }
else if (vehicleid >= YamaguchiCar[0] && vehicleid <= YamaguchiCar[7] && GetPlayerClan(playerid) != 2) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, YAMAGUCHI_COR, "Você não faz parte do clan Yamaguchi Gumi!");
return 1; }
else if (vehicleid >= SinaloaCar[0] && vehicleid <= SinaloaCar[7] && GetPlayerClan(playerid) != 3) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, SINALOA_COR, "Você não faz parte do clan Cartel de Sinaloa!");
return 1; }
else if (vehicleid >= ZetasCar[0] && vehicleid <= ZetasCar[7] && GetPlayerClan(playerid) != 4) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, ZETAS_COR, "Você não faz parte do clan Los Zetas!");
return 1; }
else if (vehicleid >= BOPECar[0] && vehicleid <= BOPECar[9] && GetPlayerClan(playerid) != 5) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, BOPE_COR, "Você não faz parte do clan BOPE!");
return 1; }
else if (vehicleid >= PMCar[0] && vehicleid <= PMCar[9] && GetPlayerClan(playerid) != 6) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, PM_COR, "Você não faz parte do clan Polícia Militar!");
return 1; }
else if (vehicleid >= ExercitoCar[0] && vehicleid <= ExercitoCar[9] && GetPlayerClan(playerid) != 7) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, EXERCITO_COR, "Você não faz parte do clan Exército!");
return 1; }
// else if (GetVehicleModel(vehicleid) == 510 && GetPVarInt(playerid, "JornalEntregando")) { // SetPVarInt(playerid, "InVehicleTrabalho", 1); // SendClientMessage(playerid, Verde, "Você voltou para o seu veículo de trabalho. Continua seu trajeto!"); // KillTimer(TimerOutTrabalho[playerid]);
// return 1; // }
for (new i = 0; i < sizeof(CaminhoneiroCar); i++) { if (vehicleid == CaminhoneiroCar[i] && GetPlayerJob(playerid) != PROF_CAMINHONEIRO) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, Vermelho, "Você não é um caminhoneiro(a)!");
return 1; } else if (vehicleid == CaminhoneiroCar[i] && CaminhoneiroEntregando[playerid]) { SetPVarInt(playerid, "InVehicleTrabalho", 1); SendClientMessage(playerid, Verde, "Você voltou para o seu veículo de trabalho. Continue seu trajeto!"); KillTimer(TimerOutTrabalho[playerid]);
return 1; } }
}
if(newstate == PLAYER_STATE_DRIVER && DOF2_GetBool(File, "Trancado") && strcmp(GetPlayerNameEx(playerid), DOF2_GetString(File, "Dono"))) { RemovePlayerFromVehicle(playerid); GameTextForPlayer(playerid, "~r~VEICULO TRANCADO!", 2000, 3); SendClientMessage(playerid, Vermelho, "| ERRO | Veículo trancado");
new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); SetPlayerPos(playerid, X - 2.0, Y, Z); }
if(newstate == PLAYER_STATE_DRIVER && !GetPVarInt(playerid, "criouv")) { SendClientMessage(playerid, Verde, "| INFO | Digite /motor ou aperte 'Y' para ligar/desligar o veículo"); }
if(newstate == PLAYER_STATE_DRIVER) { TimerCar[playerid] = SetTimerEx("UpdateCar", 300, true, "i", playerid); ShowPlayerVelocimetro(playerid); PutPlayerInVehicle(playerid, vehicleid, 0); }
if(newstate == PLAYER_STATE_DRIVER) { new id = ConceID[GetPlayerVehicleID(playerid)]; format(File, sizeof(File), PASTA_CONCE, id);
if(DOF2_FileExists(File) && !GetPVarInt(playerid, "criouv")) { format(STRX, sizeof(STRX), "GASOLINA: ~w~%dl", DOF2_GetInt(File, "Gasolina")); PlayerTextDrawSetString(playerid, VelocimetroPlayer[playerid][41], STRX); } else { format(STRX, sizeof(STRX), "GASOLINA: ~w~N/A"); PlayerTextDrawSetString(playerid, VelocimetroPlayer[playerid][41], STRX); } }
if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER && AcInfo[playerid][ANaAuto]) { SendClientMessage(playerid, Vermelho, "| INFO | Você saiu do seu veículo, portanto o teste foi cancelado"); EndAC(playerid); }
// CallLocalFunction("OnPlayerHopOnVehicle", "iiiii", playerid, vehicleid, modelid, newstate, oldstate); return 1; }
RE: [Error] Array index out of bounds - xbruno1000x - 01/05/2024
Cara, impossível saber qual array está com problemas.
São 16 arrays:
- KyoseiCar
- MedellinCar
- YamaguchiCar
- SinaloaCar
- ZetasCar
- BOPECar
- PMCar
- ExercitoCar
- CaminhoneiroCar
- ConceID
- PlayerInfo
- AcInfo
- TimerGasolina
- TimerOutTrabalho
- TimerCar
- VelocimetroPlayer
Pode ser qualquer um desses.
Esse problema ocorre quando você tenta acessar um índice inválido, esse pode ser um ínicio para você procurar. Tente verificar as entradas e saídas de dados com printf.
RE: [Error] Array index out of bounds - Ryzen_ - 01/05/2024
(01/05/2024 01:32)xbruno1000x Escreveu: Cara, impossível saber qual array está com problemas.
São 16 arrays:
- KyoseiCar
- MedellinCar
- YamaguchiCar
- SinaloaCar
- ZetasCar
- BOPECar
- PMCar
- ExercitoCar
- CaminhoneiroCar
- ConceID
- PlayerInfo
- AcInfo
- TimerGasolina
- TimerOutTrabalho
- TimerCar
- VelocimetroPlayer
Pode ser qualquer um desses.
Esse problema ocorre quando você tenta acessar um índice inválido, esse pode ser um ínicio para você procurar. Tente verificar as entradas e saídas de dados com printf.
Obrigado, consegui corrigir. O erro está no velocímetro que era setado para o player.
RE: [Error] Array index out of bounds - pushline - 02/05/2024
(01/05/2024 21:42)Ryzen_ Escreveu: (01/05/2024 01:32)xbruno1000x Escreveu: Cara, impossível saber qual array está com problemas.
São 16 arrays:
- KyoseiCar
- MedellinCar
- YamaguchiCar
- SinaloaCar
- ZetasCar
- BOPECar
- PMCar
- ExercitoCar
- CaminhoneiroCar
- ConceID
- PlayerInfo
- AcInfo
- TimerGasolina
- TimerOutTrabalho
- TimerCar
- VelocimetroPlayer
Pode ser qualquer um desses.
Esse problema ocorre quando você tenta acessar um índice inválido, esse pode ser um ínicio para você procurar. Tente verificar as entradas e saídas de dados com printf.
Obrigado, consegui corrigir. O erro está no velocímetro que era setado para o player.
Se quiseres saber a linha exata da proxima vez, use crashdetect e compile com a flag -d3 no compilador.
RE: [Error] Array index out of bounds - Maycon_Felipe - 02/05/2024
Se fosse para chutar, eu diria que está na variável ConceID[vehicleid].
Mostra como você está criando ela..
E faça o que os demais falaram acima, sem debug não da para saber a linha..
RE: [Error] Array index out of bounds - Carlos Victor - 02/05/2024
Ele já corrigiu:
(01/05/2024 21:42)Ryzen_ Escreveu: Obrigado, consegui corrigir. O erro está no velocímetro que era setado para o player.
RE: [Error] Array index out of bounds - Ryzen_ - 02/05/2024
(02/05/2024 10:27)pushline Escreveu: (01/05/2024 21:42)Ryzen_ Escreveu: (01/05/2024 01:32)xbruno1000x Escreveu: Cara, impossível saber qual array está com problemas.
São 16 arrays:
- KyoseiCar
- MedellinCar
- YamaguchiCar
- SinaloaCar
- ZetasCar
- BOPECar
- PMCar
- ExercitoCar
- CaminhoneiroCar
- ConceID
- PlayerInfo
- AcInfo
- TimerGasolina
- TimerOutTrabalho
- TimerCar
- VelocimetroPlayer
Pode ser qualquer um desses.
Esse problema ocorre quando você tenta acessar um índice inválido, esse pode ser um ínicio para você procurar. Tente verificar as entradas e saídas de dados com printf.
Obrigado, consegui corrigir. O erro está no velocímetro que era setado para o player.
Se quiseres saber a linha exata da proxima vez, use crashdetect e compile com a flag -d3 no compilador.
Poderia me explicar um pouco melhor sobre isso?
RE: [Error] Array index out of bounds - BitSain - 02/05/2024
(02/05/2024 18:42)Ryzen_ Escreveu: (02/05/2024 10:27)pushline Escreveu: (01/05/2024 21:42)Ryzen_ Escreveu: (01/05/2024 01:32)xbruno1000x Escreveu: Cara, impossível saber qual array está com problemas.
São 16 arrays:
- KyoseiCar
- MedellinCar
- YamaguchiCar
- SinaloaCar
- ZetasCar
- BOPECar
- PMCar
- ExercitoCar
- CaminhoneiroCar
- ConceID
- PlayerInfo
- AcInfo
- TimerGasolina
- TimerOutTrabalho
- TimerCar
- VelocimetroPlayer
Pode ser qualquer um desses.
Esse problema ocorre quando você tenta acessar um índice inválido, esse pode ser um ínicio para você procurar. Tente verificar as entradas e saídas de dados com printf.
Obrigado, consegui corrigir. O erro está no velocímetro que era setado para o player.
Se quiseres saber a linha exata da proxima vez, use crashdetect e compile com a flag -d3 no compilador.
Poderia me explicar um pouco melhor sobre isso? O que o pushline quis dizer em minhas palavras:
Usando o Plugin CrashDetect em seu servidor, e compilar com a flag -d3, além de você ver os erros na execução do codigo (mesmo sem a Flag), você pode ver com mais detalhes: Diretório do arquivo onde está dando erro/problema + a linha (com a Flag).
A Flag ( -d3 ) é o nível de DEBUG máximo que pode ser configurado no compilador, essa Flag não é obrigatória para compilação, mas para ter os detalhes 'precisos' no CrashDetect, você precisa compilar o seu Código com essa Flag.
RE: [Error] Array index out of bounds - pushline - 04/05/2024
Complementando com o que o bitsain falou, o -d3 (Se compila via pawno.exe) é só adicionar no pawn.cfg, caso use o vscode, só adicionar "'-d3'" (com ambas as aspas) nos args.
Segue o meu tasks.json:
Código PHP: { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "${workspaceRoot}\\pawno\\pawncc.exe", "args": ["'${file}'", "'-D${fileDirname}'", "'-;+'", "'-(+'", "'-d3'"], "group": { "kind": "build", "isDefault": true }, "isBackground": false, "presentation": { "reveal": "always", "panel": "dedicated" }, "problemMatcher": { "base": "$pawncc", "fileLocation": ["autoDetect", "${workspaceFolder}\\gamemodes"] } } ] }
|