[Ajuda] Inventбrio Text Draw
#1

Galera o seguinte, estou tentando criar um sistema de inventбrio em text draw para meu gamemode, pois antes eu usava um sistema em dialog que eu editei, decidi atualizar e tentar criar eu mesmo o meu sistema de inventбrio em text draw, porйm estou encontrando alguns problemas, tal como objetos de repetindo em todos os slots e nгo detectando o click no slot, vou tentar resumir o meu sistema de inventбrio, eu quero que quando clique no slot ele retorne o valor do numero do item, o restante nгo preciso explicar pois ele funciona com o outro modulo do gm, sу preciso mesmo que quando quando clique no slot ele retornar o numero do item, tipo 1, 2, 3 etc.... o -1 й o valor do item vazio, aqui estб o meu codigo, espero que consigam entender

PHP код:
// # Definiзхes #
#define MAX_INVENTORY_SLOTS     (48)
// # Forwards #
forward INV_OnPlayerClickPlayerTextDraw(playeridPlayerText:playertextid);
forward INV_OnDialogResponse(playeriddialogidresponselistiteminputtext[]);
// # Enumerators #
enum InventoryInfo
{
    
pItemID[MAX_INVENTORY_SLOTS],
    
pItemSelected,
};
// # Variaveis #
new invInfo[MAX_PLAYERS][InventoryInfo];
// # Callbacks #
public INV_OnPlayerClickPlayerTextDraw(playeridPlayerText:playertextid)
{
    for(new 
iMAX_INVENTORY_SLOTSi++)
    {
        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(playeridD_UsarDroparDIALOG_STYLE_LIST"# Item Menu #""Use Item\nDrop item""Select""Back");
            }
            break;
        }
    }
    return 
1;
}
public 
INV_OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    switch(
dialogid)
    {
        case 
D_UsarDropar:
        {
            if(
response)
            {
                switch(
listitem)
                {
                    case 
0:
                    {
                        
CallLocalFunction("OnPlayerUseItem","is",playeridItemInfo[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",playeridItemInfo[invInfo[playerid][pItemSelected]][Item_Name]);
                    }
                }
            }
        }
    }
    return 
1;
}
stock AddItem(playeriditemid)
{
    
pInfo[playerid][pSlots] ++;
    for(new 
slotidslotid MAX_INVENTORY_SLOTSslotid++)
    {
        if(
invInfo[playerid][pItemID][slotid] == -1// checa se o slot possui o slot vazio
        
{
            
invInfo[playerid][pItemID][slotid] = itemid;
        }
    }
    return 
1;
}
stock RemoveItem(playeriditemid)
{
    
pInfo[playerid][pSlots] --;
    for(new 
slotidslotid MAX_INVENTORY_SLOTSslotid++)
    {
        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(playerid0x28DE3DFF), TogglePlayerControllable(playerid,1), SetCameraBehindPlayer(playerid);
    for(new 
isizeof(InVTEXTD); i++) PlayerTextDrawShow(playeridInVTEXTD[playerid][i]);
    for(new 
isizeof(InvSlotTextD); i++) PlayerTextDrawShow(playeridInvSlotTextD[playerid][i]);
    for(new 
slotidslotid MAX_INVENTORY_SLOTSslotid++)
    {
        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(playeridInvSlotTextD[playerid][slotid], ItemInfo[invInfo[playerid][pItemID][slotid]][Item_Obj]);
        }
        
PlayerTextDrawSetPreviewModel(playeridInvSlotTextD[playerid][slotid], 1239);
    }
    return 
1;
}
stock HideInventory(playerid)
{
    for(new 
isizeof(InVTEXTD); i++) PlayerTextDrawHide(playeridInVTEXTD[playerid][i]);
    for(new 
isizeof(InvSlotTextD); i++) PlayerTextDrawHide(playeridInvSlotTextD[playerid][i]);
    
CancelSelectTextDraw(playerid), TogglePlayerControllable(playerid,0);
    return 
1;

Reply


Messages In This Thread
Inventбrio Text Draw - by Hayzer - 06.09.2016, 01:20
Re: Inventбrio Text Draw - by Hayzer - 06.09.2016, 02:05
Re: Inventбrio Text Draw - by Gguiz - 06.09.2016, 02:33
Re: Inventбrio Text Draw - by Carlos001 - 06.09.2016, 02:50
Re: Inventбrio Text Draw - by Hayzer - 06.09.2016, 11:53
Re: Inventбrio Text Draw - by Carlos001 - 06.09.2016, 13:20
Re: Inventбrio Text Draw - by Hayzer - 06.09.2016, 13:34

Forum Jump:


Users browsing this thread: 1 Guest(s)