28/07/2021 19:06
bom criei sistema de lixeira para os players add itens no lixo e quando player usa para descartar item na lixeira aparece esse bug no log_serve
e codigo scripters
Código PHP:
[16:55:40] [debug] Run time error 4: "Array index out of bounds"
[16:55:40] [debug] AMX backtrace:
[16:55:40] [debug] #0 001503c4 in public DR_OnDialogResponse (0, 384, 1, 4, 55632640) from Projeto.amx
[16:55:40] [debug] #1 0006e734 in public OnDialogResponse (0, 384, 1, 4, 55632640) from Projeto.amx
e codigo scripters
Código PHP:
case DIALOG_LIXO:
{
if(response)
{
switch(listitem)
{
case 0:
{
foreach(new id: Lixeiras)
{
if(IsPlayerInRangeOfPoint(playerid, 1.5, LixeiraInfo[id][lixeira_pos][0], LixeiraInfo[id][lixeira_pos][1], LixeiraInfo[id][lixeira_pos][2]))
{
SetPlayerLixeira(playerid, id);
}
}
}
case 1:
{
new str[1000], linha[20];
format(linha,sizeof(linha), "Item\tQuantidade\n");
strcat(str, linha);
for(new i; i < MAX_SLOTS_INV; i ++)
{
if(Inventory[playerid][I_SLOT][i] != -1)
strcat(str, fmat_return("\n%s\t%i\n", Itens[Inventory[playerid][I_SLOT][i]][item_nome], Inventory[playerid][I_UNITY][i]));
}
ShowPlayerDialog(playerid, DIALOG_ADD_LIXO, 5, "Inventario", str, "Jogar", "Voltar");
}
case 2:
{
new str[1000], linha[20];
format(linha,sizeof(linha), "Item\tQuantidade\n");
strcat(str, linha);
foreach(new id: Lixeiras)
{
if(IsPlayerInRangeOfPoint(playerid, 1.5, LixeiraInfo[id][lixeira_pos][0], LixeiraInfo[id][lixeira_pos][1], LixeiraInfo[id][lixeira_pos][2]))
{
for(new i; i < MAX_LIXEIRAS_SLOT; i ++)
strcat(str, fmat_return("\n%s\t%i\n", Itens[LixeiraInfo[id][Lixos][i]][item_nome], LixeiraInfo[id][UniLixos][i]));
}
}
ShowPlayerDialog(playerid, DIALOG_PEGAR_LIXO, 5, "Itens nessa lixeira", str, "Pegar", "Voltar");
}
case 3:
{
if(GetPlayerProf(playerid, Emprego_Lixeiro))
{
if(LixoMissao[playerid])
{
if(!SegurandoLixo[playerid])
{
new Float:X, Float:Y, Float:Z;
GetVehicleBoot(CaminhaoLixo[playerid], X, Y, Z);
if(GetPlayerDistanceFromPoint(playerid, X, Y, Z) >= 30)
return SendClientMessage(playerid, COLOR_ERRO, "Você não está próximo do caminhão que você iniciou a missão.");
for(new x = 0; x != MAX_LIXEIRAS_SLOT; x++)
{
foreach(new id: Lixeiras)
{
LixeiraInfo[id][Lixos][x] = 0;
LixeiraInfo[id][UniLixos][x] = 0;
Atualizar3DLixeiras(id);
//SalvarLixeira(id);
}
}
ApplyAnimation(playerid, "CARRY", "liftup105", 4.1, 0, 0, 0, 0, 0);
SetPlayerAttachedObject(playerid, 9, 1264, 6, 0.222, 0.024, 0.128, 1.90, -90.0, 0.0, 0.5,0.5, 0.5);
SegurandoLixo[playerid] = true;
showBalao(playerid, "Coloque o saco de lixo dentro do caminhao.", 4000);
SacosDeLixo[playerid]--;
SetPlayerCheckpoint(playerid, X, Y, Z, 1.5);
CP[playerid] = MarcandoCaminhao;
}
}
}
return SendClientMessage(playerid, COLOR_ERRO, "Você não é um lixeiro.");
}
}
}
}
Código PHP:
case DIALOG_PEGAR_LIXO:
{
if(!response)
{
ShowPlayerDialog(playerid, DIALOG_LIXO, DIALOG_STYLE_LIST, "Escolhe uma opcao", "Se esconder Voce se esconde na lixeira\nDescartar item Jogar item do inventario no lixo\nRevirar lixo Area disponivel para mendigos\nEnsacar lixos Area disponivel para lixeiros", "Confirmar", "Cancelar");
return true;
}
for(new x = 0; x != MAX_LIXEIRAS_SLOT; x++)
{
if(listitem == x)
{
foreach(new id: Lixeiras)
{
if(IsPlayerInRangeOfPoint(playerid, 1.5, LixeiraInfo[id][lixeira_pos][0], LixeiraInfo[id][lixeira_pos][1], LixeiraInfo[id][lixeira_pos][2]))
{
if(LixeiraInfo[id][Lixos][x] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "slot da lixeira vazia.");
if(LixeiraInfo[id][Lixos][x] == 116)SendClientMessageToAll(0x19EA65AA, fmat_return("[LIXEIRA]:{FFFFFF} %s encontrou presente {19EA65}SACOLA DE PREVISÕES{FFFFFF} na Lixeiras %i.", PlayerGetName(playerid), id));
AddItem(playerid, LixeiraInfo[id][Lixos][x], LixeiraInfo[id][UniLixos][x]);
ProxDetector(30.0, playerid, fmat_return("* %s pegou item %s da lixeira.", PlayerGetName(playerid), Itens[LixeiraInfo[id][Lixos][x]][item_nome]), COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
LixeiraInfo[id][Lixos][x] = 0;
LixeiraInfo[id][UniLixos][x] = 0;
Atualizar3DLixeiras(id);
//SalvarLixeira(id);
}
}
}
}
}
case DIALOG_ADD_LIXO:
{
if(!response)
{
ShowPlayerDialog(playerid, DIALOG_LIXO, DIALOG_STYLE_LIST, "Escolhe uma opcao", "Se esconder Voce se esconde na lixeira\nDescartar item Jogar item do inventario no lixo\nRevirar lixo Area disponivel para mendigos\nEnsacar lixos Area disponivel para lixeiros", "Confirmar", "Cancelar");
return true;
}
for(new x = 0; x != MAX_SLOTS_INV; x++)
{
if(listitem == x)
{
foreach(new id: Lixeiras)
{
if(IsPlayerInRangeOfPoint(playerid, 1.5, LixeiraInfo[id][lixeira_pos][0], LixeiraInfo[id][lixeira_pos][1], LixeiraInfo[id][lixeira_pos][2]))
{
AddItemLixo(id, Inventory[playerid][I_SLOT][x], Inventory[playerid][I_UNITY][x]);
ProxDetector(30.0, playerid, fmat_return("* %s jogou item %s na lixeira.", PlayerGetName(playerid), Itens[Inventory[playerid][I_SLOT][x]][item_nome]), COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
Inventory[playerid][I_SLOT][x] = 0;
Inventory[playerid][I_UNITY][x]= 0;
AtualizarSlot(playerid, x);
Atualizar3DLixeiras(id);
}
}
}
}
}