23/03/2022 11:10
bom eu criei um sistema de inventario em dialog mais quando o player digite comando para abrir ele nao abre.
fica aparecendo assim no serve.log
Código:
AbrirInventarioDialog(playerid)
{
InventarioAberto[playerid] = true;
ProxDetector(30.0, playerid, fmat_return("* %s abriu o inventário.", PlayerGetName(playerid)), COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
MostrarInventarioDialog(playerid);
return 1;
}
MostrarInventarioDialog(playerid)
{
new str[100], strtitulo[70], strtotal[4000];
format(strtitulo, sizeof(strtitulo), "Inventario de: %s", PlayerGetName(playerid));
format(str, sizeof(str), "Slot\tItem\tQuantidade\n");
strcat(strtotal, str);
for(new i = 0; i < 72; i++)
{
if(Inventory[playerid][I_SLOT][i] != -1) continue;
strcat(strtotal, fmat_return("{ffffff}%d\t{ffff00}%s\t{ffffff}%d\n", i, GetInvName(Inventory[playerid][I_SLOT][i], Inventory[playerid][I_UNITY][i]), Inventory[playerid][I_UNITY][i]));
}
ShowPlayerDialog(playerid, DIALOG_INVENTARIO, DIALOG_STYLE_TABLIST_HEADERS, strtitulo, strtotal, "Ir", "Fechar");
return 1;
}
stock FecharInventarioDialog(playerid)
{
new gstring[50];
format(gstring, sizeof(gstring), "* %s Fechou seu inventário.", PlayerGetName(playerid));
ProxDetector(30.0, playerid, gstring, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
InventarioAberto[playerid] = false;
CancelSelectTextDraw(playerid);
return 1;
}
Código:
[11:05:36] [debug] Run time error 4: "Array index out of bounds"
[11:05:36] [debug] AMX backtrace:
[11:05:36] [debug] #0 00503aa4 in ?? (-1, 0) from GM.amx
[11:05:36] [debug] #1 0057bc3c in ?? (0) from GM.amx
[11:05:36] [debug] #2 0057b90c in ?? (0) from GM.amx
[11:05:36] [debug] #3 004545e4 in public pc_cmd_inventario (0, 37353184) from GM.amx
[11:05:36] [debug] #4 0042e5a0 in public OnPlayerKeyStateChangeAS (0, 131072, 0) from GM.amx
[11:05:36] [debug] #5 0006ebf8 in public OnPlayerKeyStateChange (0, 131072, 0) from GM.amx