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
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);
Estou fazendo um sistema de airdrop em dialog, porem não sei atualizar a dialog de um jeito que fique bem limpo o sistema, existe alguma include ou sistema que se faz para verificar se tem ou n e tirar da dialog?
Alguém sabe porque isso acontece com alguns mapas de interiores?
porque tipo, as vezes tem mapas muito maiores que esse, e não some, e as vezes um mapa pequeno some.
mesmo eu sentando o STREAMDISTANCE e DREAWDISTANCE em 1000.0
Este mapa por exemplo é pequeno e ta sumindo as paredes, já tem um mapa maior que esse que não some.