Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem z ekwipunkiem po dodaniu 4 stron w EQ


Gigoss07

Rekomendowane odpowiedzi

Opublikowano

Cześć! Dodawałem 4 strony w ekwipunku, no i coś popsułem. Miał ktoś kiedyś taki lub podobny problem i go rozwiązał ? Lub wie ktoś może jak to rozwiązać ? Podsyłam screena. Chodzi mi o to, że ekwipunek zakłada się na trzeciej karcie + na trzeciej i czwartej stronie nie da sie nic kłaść.

 

@Svope Wiesz coś może na ten temat ? :)

@ Lajk™ ?

@ρσєτα Może ty wiesz gdzie mogłem popełnić błąd ?

post-1489165-0-32782000-1492152916.png

=========================================================================

Pomogłem?! Daj + ;D

 

Opublikowano

@Gigoss07 Źle dodałeś po stronie serwera ;)

To wiem. Ale czy jest jakiś określony plik który za to odpowiada.

=========================================================================

Pomogłem?! Daj + ;D

 

Opublikowano

Też to miałem, 100% błąd po stronie serwera. Nie wiem dokładnie który plik ale musiałeś coś schrzanić :D

Opublikowano

100% plik exchange.cpp

 

a dokładniej 

 

 

for (i = 0; i < INVENTORY_MAX_NUM / 2; ++i)
{
    if (!(item = victim->GetInventoryItem(i)))
        continue;

    s_grid1.Put(i, 1, item->GetSize());
}
for (i = INVENTORY_MAX_NUM / 2; i < INVENTORY_MAX_NUM; ++i)
{
    if (!(item = victim->GetInventoryItem(i)))
        continue;

    s_grid2.Put(i - INVENTORY_MAX_NUM / 2, 1, item->GetSize());
}

 

 

 

 

for (i = 0; i < EXCHANGE_ITEM_MAX_NUM; ++i)
{
    if (!(item = m_apItems[i]))
        continue;

    if (item->IsDragonSoul())
    {
        if (!victim->DragonSoul_IsQualified())
        {
            return false;
        }

        if (!bDSInitialized)
        {
            bDSInitialized = true;
            victim->CopyDragonSoulItemGrid(s_vDSGrid);
        }

        bool bExistEmptySpace = false;
        WORD wBasePos = DSManager::instance().GetBasePosition(item);
        if (wBasePos >= DRAGON_SOUL_INVENTORY_MAX_NUM)
            return false;

        for (int i = 0; i < DRAGON_SOUL_BOX_SIZE; i++)
        {
            WORD wPos = wBasePos + i;
            if (0 == s_vDSGrid[wBasePos])
            {
                bool bEmpty = true;
                for (int j = 1; j < item->GetSize(); j++)
                {
                    if (s_vDSGrid[wPos + j * DRAGON_SOUL_BOX_COLUMN_NUM])
                    {
                        bEmpty = false;
                        break;
                    }
                }
                if (bEmpty)
                {
                    for (int j = 0; j < item->GetSize(); j++)
                    {
                        s_vDSGrid[wPos + j * DRAGON_SOUL_BOX_COLUMN_NUM] = wPos + 1;
                    }
                    bExistEmptySpace = true;
                    break;
                }
            }
            if (bExistEmptySpace)
                break;
        }
        if (!bExistEmptySpace)
            return false;
    }
    else
    {
        int iPos = s_grid1.FindBlank(1, item->GetSize());

        if (iPos >= 0)
        {
            s_grid1.Put(iPos, 1, item->GetSize());
        }
        else
        {
            iPos = s_grid2.FindBlank(1, item->GetSize());

            if (iPos >= 0)
            {
                s_grid2.Put(iPos, 1, item->GetSize());
            }
            else
            {
                return false;
            }
        }
    }
}

 

 

 

Musisz wkleić dobrze zamieniony kod i  dać razem 1 Tab do każdego z tych dwóch kodów.

Też tak miałem i wina była tutaj.

tumblr_me3px1cAsX1rll4sdo1_500.gif                                                             

 

                                                              

 

 

Opublikowano

100% plik exchange.cpp

 

a dokładniej 

 

 

for (i = 0; i < INVENTORY_MAX_NUM / 2; ++i)
{
    if (!(item = victim->GetInventoryItem(i)))
        continue;

    s_grid1.Put(i, 1, item->GetSize());
}
for (i = INVENTORY_MAX_NUM / 2; i < INVENTORY_MAX_NUM; ++i)
{
    if (!(item = victim->GetInventoryItem(i)))
        continue;

    s_grid2.Put(i - INVENTORY_MAX_NUM / 2, 1, item->GetSize());
}

 

 

 

 

for (i = 0; i < EXCHANGE_ITEM_MAX_NUM; ++i)
{
    if (!(item = m_apItems[i]))
        continue;

    if (item->IsDragonSoul())
    {
        if (!victim->DragonSoul_IsQualified())
        {
            return false;
        }

        if (!bDSInitialized)
        {
            bDSInitialized = true;
            victim->CopyDragonSoulItemGrid(s_vDSGrid);
        }

        bool bExistEmptySpace = false;
        WORD wBasePos = DSManager::instance().GetBasePosition(item);
        if (wBasePos >= DRAGON_SOUL_INVENTORY_MAX_NUM)
            return false;

        for (int i = 0; i < DRAGON_SOUL_BOX_SIZE; i++)
        {
            WORD wPos = wBasePos + i;
            if (0 == s_vDSGrid[wBasePos])
            {
                bool bEmpty = true;
                for (int j = 1; j < item->GetSize(); j++)
                {
                    if (s_vDSGrid[wPos + j * DRAGON_SOUL_BOX_COLUMN_NUM])
                    {
                        bEmpty = false;
                        break;
                    }
                }
                if (bEmpty)
                {
                    for (int j = 0; j < item->GetSize(); j++)
                    {
                        s_vDSGrid[wPos + j * DRAGON_SOUL_BOX_COLUMN_NUM] = wPos + 1;
                    }
                    bExistEmptySpace = true;
                    break;
                }
            }
            if (bExistEmptySpace)
                break;
        }
        if (!bExistEmptySpace)
            return false;
    }
    else
    {
        int iPos = s_grid1.FindBlank(1, item->GetSize());

        if (iPos >= 0)
        {
            s_grid1.Put(iPos, 1, item->GetSize());
        }
        else
        {
            iPos = s_grid2.FindBlank(1, item->GetSize());

            if (iPos >= 0)
            {
                s_grid2.Put(iPos, 1, item->GetSize());
            }
            else
            {
                return false;
            }
        }
    }
}

 

 

 

Musisz wkleić dobrze zamieniony kod i  dać razem 1 Tab do każdego z tych dwóch kodów.

Też tak miałem i wina była tutaj.

Tego kodu nawet nie trzeba wklejać aby te strony działały. ;)

Jak chcesz normalny poradnik to napisz PW.

Opublikowano

 

100% plik exchange.cpp

 

a dokładniej 

 

 

for (i = 0; i < INVENTORY_MAX_NUM / 2; ++i)
{
    if (!(item = victim->GetInventoryItem(i)))
        continue;

    s_grid1.Put(i, 1, item->GetSize());
}
for (i = INVENTORY_MAX_NUM / 2; i < INVENTORY_MAX_NUM; ++i)
{
    if (!(item = victim->GetInventoryItem(i)))
        continue;

    s_grid2.Put(i - INVENTORY_MAX_NUM / 2, 1, item->GetSize());
}

 

 

 

 

for (i = 0; i < EXCHANGE_ITEM_MAX_NUM; ++i)
{
    if (!(item = m_apItems[i]))
        continue;

    if (item->IsDragonSoul())
    {
        if (!victim->DragonSoul_IsQualified())
        {
            return false;
        }

        if (!bDSInitialized)
        {
            bDSInitialized = true;
            victim->CopyDragonSoulItemGrid(s_vDSGrid);
        }

        bool bExistEmptySpace = false;
        WORD wBasePos = DSManager::instance().GetBasePosition(item);
        if (wBasePos >= DRAGON_SOUL_INVENTORY_MAX_NUM)
            return false;

        for (int i = 0; i < DRAGON_SOUL_BOX_SIZE; i++)
        {
            WORD wPos = wBasePos + i;
            if (0 == s_vDSGrid[wBasePos])
            {
                bool bEmpty = true;
                for (int j = 1; j < item->GetSize(); j++)
                {
                    if (s_vDSGrid[wPos + j * DRAGON_SOUL_BOX_COLUMN_NUM])
                    {
                        bEmpty = false;
                        break;
                    }
                }
                if (bEmpty)
                {
                    for (int j = 0; j < item->GetSize(); j++)
                    {
                        s_vDSGrid[wPos + j * DRAGON_SOUL_BOX_COLUMN_NUM] = wPos + 1;
                    }
                    bExistEmptySpace = true;
                    break;
                }
            }
            if (bExistEmptySpace)
                break;
        }
        if (!bExistEmptySpace)
            return false;
    }
    else
    {
        int iPos = s_grid1.FindBlank(1, item->GetSize());

        if (iPos >= 0)
        {
            s_grid1.Put(iPos, 1, item->GetSize());
        }
        else
        {
            iPos = s_grid2.FindBlank(1, item->GetSize());

            if (iPos >= 0)
            {
                s_grid2.Put(iPos, 1, item->GetSize());
            }
            else
            {
                return false;
            }
        }
    }
}

 

 

 

Musisz wkleić dobrze zamieniony kod i  dać razem 1 Tab do każdego z tych dwóch kodów.

Też tak miałem i wina była tutaj.

Tego kodu nawet nie trzeba wklejać aby te strony działały. ;)

Jak chcesz normalny poradnik to napisz PW.

 

Na forum jest normalny poradnik tylko, że ludzie nie umieją dobrze dodać to nie nasza wina.

@Topic, rozwiązałeś owy problem?, posprawdzaj jeszcze raz czy gdzieś źle nie dodałeś, bądź czegoś nie zapomniałeś.

Opublikowano

Tak problem rozwiązany. Dzięki za pomoc :)

=========================================================================

Pomogłem?! Daj + ;D

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...