Inventario em dialog nao abre - MagnatuS - 23/03/2022
bom eu criei um sistema de inventario em dialog mais quando o player digite comando para abrir ele nao abre.
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;
}
fica aparecendo assim no serve.log
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
RE: Inventario em dialog nao abre - xbruno1000x - 23/03/2022
Como está o trecho de abrir inventário na OnPlayerKeyStateChange?
RE: Inventario em dialog nao abre - MagnatuS - 23/03/2022
(23/03/2022 23:02)xbruno1000x Escreveu: Como está o trecho de abrir inventário na OnPlayerKeyStateChange?
Código: if(newkeys & 131072)
{
if(RespSequestro[playerid] != INVALID_PLAYER_ID)
{
if(TimerCancelarSequestro[playerid] != -1)
KillTimer(TimerCancelarSequestro[playerid]), TimerCancelarSequestro[playerid] = -1;
if(TimerResetSequestro[playerid] != -1)
KillTimer(TimerResetSequestro[playerid]), TimerResetSequestro[playerid] = -1;
CancelarSequestro(playerid);
return 1;
}
if(SendoAbordado[playerid])
{
CancelarAbordagem(playerid);
return 1;
}
//Quanto o COP apertar 'N'
if(IsACop(playerid) && COP_Abordando[playerid] != -1)
{
new giveid = COP_Abordando[playerid];
if(EmAbordagemAceita[giveid])
{
SendoAbordado[giveid] = false;
EmAbordagemAceita[giveid] = false;
PLAYER_SendoAbordado[giveid] = -1;
COP_Abordando[playerid] = -1;
TogglePlayerControllable(giveid, true);
ClearAnimations(giveid, 1);
SetCameraBehindPlayer(playerid);
SendClientMessage(playerid, COLOR_LIGHTRED, "* Abordagem finalizada.");
SendClientMessage(giveid, COLOR_LIGHTRED, "* Abordagem finalizada.");
for(new i; i < sizeof(TDAbordar); i ++)
TextDrawHideForPlayer(playerid, TDAbordar[i]);
for(new i; i < sizeof(TDAbordar_COP); i ++)
TextDrawHideForPlayer(playerid, TDAbordar_COP[i]);
return 1;
}
}
if(UserInfo[playerid][pEvento])
{
if(EventoInfo[evento_carregado] == evento_Battleground && EventoInfo[eventobattle_iniciado])
{
ShowBattleInv(playerid);
}
else
return SendClientMessage(playerid, 0xB22222FF, "* Você não pode abrir o inventário em um evento.");
}
if(PlayerGinasio[playerid] != ginasio_invalido)
return SendClientMessage(playerid, COLOR_ERRO, "Você não pode abrir seu inventário dentro do ginásio.");
else
{
ReturnCommand(inventario);
}
}
RE: Inventario em dialog nao abre - xbruno1000x - 24/03/2022
Não vi nada de errado nas public's e stock's. Será que a strtotal[4000] não está sendo superada? Testa o código com um looping menor, talvez a variável tenha que armazenar valor maior que 4000 e está bugando.
RE: Inventario em dialog nao abre - MagnatuS - 24/03/2022
(24/03/2022 01:39)xbruno1000x Escreveu: Não vi nada de errado nas public's e stock's. Será que a strtotal[4000] não está sendo superada? Testa o código com um looping menor, talvez a variável tenha que armazenar valor maior que 4000 e está bugando.
já tentei de tudo e nada não aparece continua so mostrando mensagem que abriu inventario e nao abre dialog
RE: Inventario em dialog nao abre - k2bi_YT - 24/03/2022
Teste assim
Código PHP: 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)); strcat(strtotal, "Slot\tItem\tQuantidade\n"); for(new i = 0; i < 72; i++) { if(Inventory[playerid][I_SLOT][i] == -1) continue; format(str, sizeof(str), "{ffffff}%d\t{ffff00}%s\t{ffffff}%d\n", GetInvName(Inventory[playerid][I_SLOT][i], Inventory[playerid][I_UNITY][i]), Inventory[playerid][I_UNITY][i]); strcat(strtotal, str); } 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; }
Caso ainda persista o erro, mostra o comando de abrir o inventario e o GetInvName
|