// # Definiзхes #
#define MAX_INVENTORY_SLOTS (48)
// # Forwards #
forward INV_OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid);
forward INV_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
// # Enumerators #
enum InventoryInfo
{
pItemID[MAX_INVENTORY_SLOTS],
pItemSelected,
};
// # Variaveis #
new invInfo[MAX_PLAYERS][InventoryInfo];
// # Callbacks #
public INV_OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
for(new i; i < MAX_INVENTORY_SLOTS; i++)
{
if(playertextid == InvSlotTextD[playerid][i])
{
HideInventory(playerid);
if(invInfo[playerid][pItemID][i] != -1)
{
invInfo[playerid][pItemSelected] = invInfo[playerid][pItemID][i]; // vai setar a variavel pitemselected com o valor do item do slot que foi clicado
ShowPlayerDialog(playerid, D_UsarDropar, DIALOG_STYLE_LIST, "# Item Menu #", "Use Item\nDrop item", "Select", "Back");
}
break;
}
}
return 1;
}
public INV_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case D_UsarDropar:
{
if(response)
{
switch(listitem)
{
case 0:
{
CallLocalFunction("OnPlayerUseItem","is",playerid, ItemInfo[invInfo[playerid][pItemSelected]][Item_Name]); // o valor que pegamos acima para a variavel pitemselected serб usado para retornar a string que foi setada na array do outro modulo
}
case 1:
{
CallLocalFunction("OnPlayerDropItem","is",playerid, ItemInfo[invInfo[playerid][pItemSelected]][Item_Name]);
}
}
}
}
}
return 1;
}
stock AddItem(playerid, itemid)
{
pInfo[playerid][pSlots] ++;
for(new slotid; slotid < MAX_INVENTORY_SLOTS; slotid++)
{
if(invInfo[playerid][pItemID][slotid] == -1) // checa se o slot possui o slot vazio
{
invInfo[playerid][pItemID][slotid] = itemid;
}
}
return 1;
}
stock RemoveItem(playerid, itemid)
{
pInfo[playerid][pSlots] --;
for(new slotid; slotid < MAX_INVENTORY_SLOTS; slotid++)
{
if(invInfo[playerid][pItemID][slotid] == itemid) // checa o slot que estб o item e depois seta para -1 = item vazio
{
invInfo[playerid][pItemID][slotid] = -1;
}
}
return 1;
}
stock ShowInventory(playerid)
{
SelectTextDraw(playerid, 0x28DE3DFF), TogglePlayerControllable(playerid,1), SetCameraBehindPlayer(playerid);
for(new i; i < sizeof(InVTEXTD); i++) PlayerTextDrawShow(playerid, InVTEXTD[playerid][i]);
for(new i; i < sizeof(InvSlotTextD); i++) PlayerTextDrawShow(playerid, InvSlotTextD[playerid][i]);
for(new slotid; slotid < MAX_INVENTORY_SLOTS; slotid++)
{
if(invInfo[playerid][pItemID][slotid] != -1) // Checa se for diferente do item -1, caso seja diferene do -1 = item vazio, irб setar o preview model dos items existentes
{
PlayerTextDrawSetPreviewModel(playerid, InvSlotTextD[playerid][slotid], ItemInfo[invInfo[playerid][pItemID][slotid]][Item_Obj]);
}
PlayerTextDrawSetPreviewModel(playerid, InvSlotTextD[playerid][slotid], 1239);
}
return 1;
}
stock HideInventory(playerid)
{
for(new i; i < sizeof(InVTEXTD); i++) PlayerTextDrawHide(playerid, InVTEXTD[playerid][i]);
for(new i; i < sizeof(InvSlotTextD); i++) PlayerTextDrawHide(playerid, InvSlotTextD[playerid][i]);
CancelSelectTextDraw(playerid), TogglePlayerControllable(playerid,0);
return 1;
}
Como colocou para aparecer o Item no inventario?, percebi que esta usando a base do Inventario por dialogs do Joe_Staff...
|
Mano, se nгo for vim para ajudar nem comente
![]() Sim, eu usava o sistema de inventбrio do Joe Staff, sу que ele dava muito problemas e tals, do sistema dele sу mantive a callback OnPlayerUseItem, o resto foi eu que fiz Serб que alguem ai pode me ajudar? |
coloquei para adicionar um item qualquer quando loga no servidor |
stock ShowInventory(playerid)
{
SelectTextDraw(playerid, 0x28DE3DFF), TogglePlayerControllable(playerid,1), SetCameraBehindPlayer(playerid);
for(new i; i < sizeof(InVTEXTD); i++) PlayerTextDrawShow(playerid, InVTEXTD[playerid][i]);
for(new i; i < sizeof(InvSlotTextD); i++) PlayerTextDrawShow(playerid, InvSlotTextD[playerid][i]);
for(new slotid; slotid < MAX_INVENTORY_SLOTS; slotid++)
{
if(invInfo[playerid][pItemID][slotid] != -1) // Checa se for diferente do item -1, caso seja diferene do -1 = item vazio, irб setar o preview model dos items existentes
{
// o valor do pItemID vai pegar o numero do objeto na Array ItemInfo, ItemInfo[invInfo[playerid][pItemID][slotid]][Item_Obj]
PlayerTextDrawSetPreviewModel(playerid, InvSlotTextD[playerid][slotid], ItemInfo[invInfo[playerid][pItemID][slotid]][Item_Obj]);
}
PlayerTextDrawSetPreviewModel(playerid, InvSlotTextD[playerid][slotid], 1239);
}
return 1;
}