Ir para conteúdo
Faça parte da equipe! (2024) ×
  • 0

resolvido w2pp - fazer NPC Guarda Real agrupar nas trocas


querotop
 Compartilhar

Pergunta

Dessa maneira consigo agrupar todos os itens até mesmo se fosse trajes na troca e ñ é bem assim q é pra funfar.
queria que só agrupasse os itens agrupáveis (ou que checasse uma lista dos itens agrupáveis igual o da fada) e que conseguisse enviar com a quantidade certas do efeito 61 para o inventário, tipo, o resto de Ori tem 3 unidades na troca, mas quando vai pra o inventário só vai 1 unidade com o efeito 61. 

 

Ajudando aqui, ficará um código funcional para todos que precisarem usar. ;)

 

 

{
        int ItemReq = 475;

        int i = 0;
        for (i = 0; i < pMob[conn].MaxCarry; i++)
        {
            if (pMob[conn].MOB.Carry.sIndex != ItemReq)
                continue;

            break;
        }

        int x = 0;
        int invfree = 0;

        for (x = 0; x < pMob[conn].MaxCarry; x++)
        {
            if (pMob[conn].MOB.Carry[x].sIndex == 0)
                invfree++;
        }

        if (invfree <= 0)
        {
            SendClientMessage(conn, "Falta espaço no inventário.");
            return;
        }

        if (i != pMob[conn].MaxCarry)
        {
            int amount = BASE_GetItemAmount(&pMob[conn].MOB.Carry);

            if (amount > 1)
                BASE_SetItemAmount(&pMob[conn].MOB.Carry, amount - 1);
            else

                BASE_ClearItem(&pMob[conn].MOB.Carry);
            SendItem(conn, ITEM_PLACE_CARRY, i, &pMob[conn].MOB.Carry);

            STRUCT_ITEM Item;
            memset(&Item, 0, sizeof(STRUCT_ITEM));

            int _rd = rand() % 100;

            if (_rd < 20)
                Item.sIndex = 419;
                Item.stEffect[0].cEffect = 61; //amount
                Item.stEffect[0].cValue = 3; //quantidade
            }
            else if (_rd < 40)
            {
                Item.sIndex = 420;
                Item.stEffect[0].cEffect = 61; //amount
                Item.stEffect[0].cValue = 2; //quantidade
            }
            else if (_rd < 60)
            {
                Item.sIndex = 4026; 
            }
            else if (_rd < 80)
            {
                Item.sIndex = 697;
            }
            else //20%
            {
                Item.sIndex = 476;
            }
            
            SendItemagrupar(conn, Item.sIndex);

            //PutItem(conn, &Item);

            sprintf(temp, g_pMessageStringTable[_SN_Item_Arrived], g_pItemList[Item.sIndex].Name);
            SendClientMessage(conn, temp);
            break;
        }

        sprintf(temp, g_pMessageStringTable[_SN_BRINGITEM], g_pItemList[ItemReq].Name);
        SendSay(npcIndex, temp);
    } break;

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

{
        int ItemReq = 475;

        int i = 0;
        for (i = 0; i < pMob[conn].MaxCarry; i++)
        {
            if (pMob[conn].MOB.Carry.sIndex != ItemReq)
                continue;

            break;
        }

        int x = 0;
        int invfree = 0;

        for (x = 0; x < pMob[conn].MaxCarry; x++)
        {
            if (pMob[conn].MOB.Carry[x].sIndex == 0)
                invfree++;
        }

        if (invfree <= 0)
        {
            SendClientMessage(conn, "Falta espaço no inventário.");
            return;
        }

        if (i != pMob[conn].MaxCarry)
        {
            int amount = BASE_GetItemAmount(&pMob[conn].MOB.Carry);

            if (amount > 1)
                BASE_SetItemAmount(&pMob[conn].MOB.Carry, amount - 1);
            else

                BASE_ClearItem(&pMob[conn].MOB.Carry);
            SendItem(conn, ITEM_PLACE_CARRY, i, &pMob[conn].MOB.Carry);

            STRUCT_ITEM Item;
            memset(&Item, 0, sizeof(STRUCT_ITEM));

            int _rd = rand() % 100;

            if (_rd < 20)
                Item.sIndex = 419;
                Item.stEffect[0].cEffect = 61; //amount
                Item.stEffect[0].cValue = 3; //quantidade
            }
            else if (_rd < 40)
            {
                Item.sIndex = 420;
                Item.stEffect[0].cEffect = 61; //amount
                Item.stEffect[0].cValue = 2; //quantidade
            }
            else if (_rd < 60)
            {
                Item.sIndex = 4026; 
            }
            else if (_rd < 80)
            {
                Item.sIndex = 697;
            }
            else //20%
            {
                Item.sIndex = 476;
            }
                      

            sprintf(temp, g_pMessageStringTable[_SN_Item_Arrived], g_pItemList[Item.sIndex].Name);
            SendClientMessage(conn, temp);

 

 SendItemagrupar(conn, Item.sIndex);
return;


            PutItem(conn, &Item);
            break;
        }

        sprintf(temp, g_pMessageStringTable[_SN_BRINGITEM], g_pItemList[ItemReq].Name);
        SendSay(npcIndex, temp);
    } break;

Link para o comentário
Compartilhar em outros sites

  • 0
Agora, lord320 disse:

{
        int ItemReq = 475;

        int i = 0;
        for (i = 0; i < pMob[conn].MaxCarry; i++)
        {
            if (pMob[conn].MOB.Carry.sIndex != ItemReq)
                continue;

            break;
        }

        int x = 0;
        int invfree = 0;

        for (x = 0; x < pMob[conn].MaxCarry; x++)
        {
            if (pMob[conn].MOB.Carry[x].sIndex == 0)
                invfree++;
        }

        if (invfree <= 0)
        {
            SendClientMessage(conn, "Falta espaço no inventário.");
            return;
        }

        if (i != pMob[conn].MaxCarry)
        {
            int amount = BASE_GetItemAmount(&pMob[conn].MOB.Carry);

            if (amount > 1)
                BASE_SetItemAmount(&pMob[conn].MOB.Carry, amount - 1);
            else

                BASE_ClearItem(&pMob[conn].MOB.Carry);
            SendItem(conn, ITEM_PLACE_CARRY, i, &pMob[conn].MOB.Carry);

            STRUCT_ITEM Item;
            memset(&Item, 0, sizeof(STRUCT_ITEM));

            int _rd = rand() % 100;

            if (_rd < 20)
                Item.sIndex = 419;
                Item.stEffect[0].cEffect = 61; //amount
                Item.stEffect[0].cValue = 3; //quantidade
            }
            else if (_rd < 40)
            {
                Item.sIndex = 420;
                Item.stEffect[0].cEffect = 61; //amount
                Item.stEffect[0].cValue = 2; //quantidade
            }
            else if (_rd < 60)
            {
                Item.sIndex = 4026; 
            }
            else if (_rd < 80)
            {
                Item.sIndex = 697;
            }
            else //20%
            {
                Item.sIndex = 476;
            }
                      

            sprintf(temp, g_pMessageStringTable[_SN_Item_Arrived], g_pItemList[Item.sIndex].Name);
            SendClientMessage(conn, temp);

 

 SendItemagrupar(conn, Item.sIndex);
return;


            PutItem(conn, &Item);
            break;
        }

        sprintf(temp, g_pMessageStringTable[_SN_BRINGITEM], g_pItemList[ItemReq].Name);
        SendSay(npcIndex, temp);
    } break;

sequência errada 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Velha Guarda

Tópico Resolvido!

 

Ficamos felizes que seu tópico tenha sido resolvido!

Devido a esse estaremos fechando-o para evitar posts desnecessários e movendo para o local correto.

 

Essa é uma mensagem automática

Atenciosamente

WebCheats

119Hb0l.png

 

 

Use e abuse:
o6L4gAm.gif
Tem meu respeito:

ezgif-4-08b402fc19.webp

 

_______________________TIME LINE______________________

gc.png mod.png.76d6a2d07d78720a94c62761e27496c7.pngcoord.png

guardian.png.6084103acc94042060d6c6059edwByjCgU.png

 

 

 

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.