Comando não funciona e gera erro no CrashDetect - diggao - 25/10/2023
Olá, pessoal estou com o seguinte erro na profissão de lixeiro, ao dar o comando /procurarlixos ele não funciona " como se não existisse no servidor " e o crashdetect avisa que deu erro na funçao:
Crash Detect:
[debug] Run time error 4: "Array index out of bounds"
[debug] Attempted to read/write array element at index 27497914 in array of size 100
[debug] AMX backtrace:
Código PHP: CMD:procurarlixos(playerid, params[]) { new sss[200]; if(EmpregoPlayer(playerid) != 2) return erro(playerid, "Apenas os Lixeiros podem usar este comando"); if(!EmVeiculoEmprego(playerid)) return erro(playerid, "Voce nao esta em um carro do Lixo"); if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return erro(playerid, "Voce precisa ser o motorista para procurar os lixos");
for(new i; i<MAX_PICKUP; i++) { if(Pickup[i][piExiste] == 0) continue; if(Pickup[i][piTipo] != LIXO) continue; if(lixos[GetPlayerVehicleID(playerid)] > 99) { SetarCheckPoint(playerid, Pickup[i][piX],Pickup[i][piY],Pickup[i][piZ],3.0); chekcaminhao[playerid] = 1; info_(playerid, "Este caminhao esta cheio de Lixo, siga ate a marca vermelha no mapa para descarregar"); return 1; } }
new Float:dist; new cuu; new cu[100]; for(new i; i<MAX_LIXOS; i++) { if(Lixo[i][lixoExiste] == 1) { cu[cuu] = i,cuu++; if(cuu == 100) break; } } new randcu = random(cuu); new ii = cu[randcu];
new Float:p[3]; GetPlayerPos(playerid, p[0],p[1],p[2]);
GetDistance(dist, Lixo[ii][lixoX],Lixo[ii][lixoY],Lixo[ii][lixoZ], p[0],p[1],p[2]);
info(playerid, "Um checkpoint vermelho acabou de ser marcado no mapa com a localizacao do Lixo"); format(sss, 200, "Distancia aproximada: %.0f Metros de sua localizacao", dist ); info_(playerid, sss); SetarCheckPoint(playerid, Lixo[ii][lixoX],Lixo[ii][lixoY],Lixo[ii][lixoZ],3.0); checklixo[playerid] = 1; return 1; }
Quem puder me ajudar fico grato, tentei usar o Chat Gpt pra me ajudar mas não consegui muita coisa.
RE: Comando não funciona e gera erro no CrashDetect - White_Blue - 25/10/2023
Se possível compartilhar o enumerador "Lixos" aqui.
Tente o código abaixo (Não fiz nenhuma mudança exceto tirar o "return 1" do loop e indentar o código):
Código PHP: CMD:procurarlixos(playerid, params[]) { new sss[200]; if(EmpregoPlayer(playerid) != 2) return erro(playerid, "Apenas os Lixeiros podem usar este comando"); else if(!EmVeiculoEmprego(playerid)) return erro(playerid, "Voce nao esta em um carro do Lixo"); else if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return erro(playerid, "Voce precisa ser o motorista para procurar os lixos");
for(new i = 0; i < MAX_PICKUP; i++) { if(Pickup[i][piExiste] == 0) continue; else if(Pickup[i][piTipo] != LIXO) continue; else if(lixos[GetPlayerVehicleID(playerid)] > 99) { SetarCheckPoint(playerid, Pickup[i][piX], Pickup[i][piY], Pickup[i][piZ], 3.0); chekcaminhao[playerid] = 1; info_(playerid, "Este caminhao esta cheio de Lixo, siga ate a marca vermelha no mapa para descarregar"); } }
new Float:dist; new cuu; new cu[100]; for(new i; i < MAX_LIXOS; i++) { if(Lixo[i][lixoExiste] == 1) { cu[cuu] = i, cuu++; if(cuu == 100) break; } } new randcu = random(cuu); new ii = cu[randcu];
new Float:p[3]; GetPlayerPos(playerid, p[0], p[1], p[2]);
GetDistance(dist, Lixo[ii][lixoX], Lixo[ii][lixoY], Lixo[ii][lixoZ], p[0], p[1], p[2]);
info(playerid, "Um checkpoint vermelho acabou de ser marcado no mapa com a localizacao do Lixo"); format(sss, 200, "Distancia aproximada: %.0f Metros de sua localizacao", dist); info_(playerid, sss); SetarCheckPoint(playerid, Lixo[ii][lixoX], Lixo[ii][lixoY], Lixo[ii][lixoZ], 3.0); checklixo[playerid] = 1; return 1; }
Seu código está extremamente confuso e sem sentido em diversas partes, sempre mantenha seu código organizado, bem documentado e com nomenclatura correta de variáveis e funções.
RE: Comando não funciona e gera erro no CrashDetect - diggao - 26/10/2023
Obrigado por responder, o problema não estava no código e sim nos lixos que ele busca, coloquei o nome errado, consegui arrumar!
Irei me organizar melhor, muito obrigado White_Blue!!!
|