[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
#2

Alguem ?, coloquei para adicionar um item qualquer quando loga no servidor, mas ele nгo aparece no inventбrio

Reply
#3

Evite fazer double posts, edite o mesmo.
Reply
#4

Como colocou para aparecer o Item no inventario?, percebi que esta usando a base do Inventario por dialogs do Joe_Staff...
Reply
#5

Quote:
Originally Posted by Gguiz
Посмотреть сообщение
Evite fazer double posts, edite o mesmo.
Mano, se nгo for vim para ajudar nem comente

Quote:
Originally Posted by Carlos001
Посмотреть сообщение
Como colocou para aparecer o Item no inventario?, percebi que esta usando a base do Inventario por dialogs do Joe_Staff...
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?
Reply
#6

Quote:
Originally Posted by Hayzer
Посмотреть сообщение
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?
Cara mostra como voce ta fazendo pro Objeto aparecer....
@Edit:
Vocк disse:
Quote:

coloquei para adicionar um item qualquer quando loga no servidor

nos mostre como colocou mano, add skype fica melhor para conversarmos... blu.blu35
Reply
#7

Quote:
Originally Posted by Carlos001
Посмотреть сообщение
Cara mostra como voce ta fazendo pro Objeto aparecer....
PHP код:
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
        
{
             
// o valor do pItemID vai pegar o numero do objeto na Array ItemInfo, ItemInfo[invInfo[playerid][pItemID][slotid]][Item_Obj]
              
PlayerTextDrawSetPreviewModel(playeridInvSlotTextD[playerid][slotid], ItemInfo[invInfo[playerid][pItemID][slotid]][Item_Obj]);
        }
        
PlayerTextDrawSetPreviewModel(playeridInvSlotTextD[playerid][slotid], 1239);
    }
    return 
1;

Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)