OfflineShop

  • Autor subiect EnZiiK
  • Dată creare
  • Răspunsuri: Răspunsuri 0
  • Vizualizări: Vizualizări 2K
Stare
Nu este deschis pentru răspunsuri viitoare.

EnZiiK

New member
15 Sep 2019
13
1
3
20
Slovakia
Monede Dragon
0
Hi.. I have a little problem with OfflineShop.. Sometimes when I create offlineshop, items which I selected to sell stays in invetory and when I teleport then its kick me out of game.. and when I login back items finally disappear from inventory...

GIF
Infomanii - Din pasiune pentru jocuri !

I have this is SYSSER:
Cod:
SYSERR: Oct  6 18:22:23.578664 :: DestroyItem: WTH! Invalid item owner. owner pointer : 0x446f2000
SYSERR: Oct  6 18:22:23.578801 :: DestroyItem: WTH! Invalid item owner. owner pointer : 0x446f2000
SYSERR: Oct  6 18:22:23.578921 :: DestroyItem: WTH! Invalid item owner. owner pointer : 0x446f2000


item_manager.cpp
Cod:
#ifndef DEBUG_ALLOC
void ITEM_MANAGER::DestroyItem(LPITEM item)
#else
void ITEM_MANAGER::DestroyItem(LPITEM item, const char* file, size_t line)
#endif
{
    if (item->GetSectree())
        item->RemoveFromGround();

    if (item->GetOwner())
    {
        if (CHARACTER_MANAGER::instance().Find(item->GetOwner()->GetPlayerID()) != NULL)
        {
            sys_err("DestroyItem: GetOwner %s %s!!", item->GetName(), item->GetOwner()->GetName());
            item->RemoveFromCharacter();
        }
        else
        {
            sys_err ("WTH! Invalid item owner. owner pointer : %p", item->GetOwner());
        }
    }

    TR1_NS::unordered_set<LPITEM>::iterator it = m_set_pkItemForDelayedSave.find(item);

    if (it != m_set_pkItemForDelayedSave.end())
        m_set_pkItemForDelayedSave.erase(it);

    DWORD dwID = item->GetID();
    sys_log(2, "ITEM_DESTROY %s:%u", item->GetName(), dwID);

    if (!item->GetSkipSave() && dwID)
    {
        DWORD dwOwnerID = item->GetLastOwnerPID();

        db_clientdesc->DBPacketHeader(HEADER_GD_ITEM_DESTROY, 0, sizeof(DWORD) + sizeof(DWORD));
        db_clientdesc->Packet(&dwID, sizeof(DWORD));
        db_clientdesc->Packet(&dwOwnerID, sizeof(DWORD));
    }
    else
    {
        sys_log(2, "ITEM_DESTROY_SKIP %s:%u (skip=%d)", item->GetName(), dwID, item->GetSkipSave());
    }

    if (dwID)
        m_map_pkItemByID.erase(dwID);

    m_VIDMap.erase(item->GetVID());

#ifdef M2_USE_POOL
    pool_.Destroy(item);
#else
#ifndef DEBUG_ALLOC
    M2_DELETE(item);
#else
    M2_DELETE_EX(item, file, line);
#endif
#endif
}



char_item.cpp
Cod:
#ifdef ENABLE_DELETE_ITEMS_SYSTEM
bool CHARACTER::DestroyItem(TItemPos Cell)
{
    LPITEM item = NULL;

    if (!CanHandleItem())
        return false;

    if (IsDead() || IsStun())
        return false;

    if (!IsValidItemPosition(Cell) || !(item = GetItem(Cell)))
        return false;

    if (true == item->isLocked() || item->IsExchanging())
        return false;

    if (quest::CQuestManager::instance().GetPCForce(GetPlayerID())->IsRunning() == true)
        return false;

    if (item->IsBind() || item->IsUntilBind())
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("RUHA_BAGLI_NESNELER_SILINEMEZ"));
        return false;
    }

    // EXTRA_CHECK
    int iPulse = thecore_pulse();

    if (iPulse        - GetSafeboxLoadTime()        < PASSES_PER_SEC(g_nPortalLimitTime)
        || iPulse    - GetRefineTime()            < PASSES_PER_SEC(g_nPortalLimitTime)
        || iPulse    - GetMyShopTime()            < PASSES_PER_SEC(g_nPortalLimitTime))
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Please wait a second."));
        return false;
    }

    if (GetOfflineShopOwner() || GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen() || IsAttrTransferOpen())
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("거래창,창고 등을 연 상태에서는 귀환부,귀환기억부 를 사용할수 없습니다."));
        return false;
    }
    // EXTRA_CHECK
   
    #ifdef ENABLE_NEW_PET_SYSTEM
    if (GetNewPetSystem()->IsActivePet())

    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("pett-yolla"));
        return false;
    }
    #endif

    #ifdef ENABLE_SUPPORT_SYSTEM
    if (GetSupportSystem()->IsActiveSupport())
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("saman-yolla"));
        return false;
    }
    #endif

    if (item->GetVnum() >= 71220 && item->GetVnum() <= 71239)
    {
        return false;
    }

#ifdef ENABLE_NEW_PET_SYSTEM
    if (item->GetVnum() >= 55701 && item->GetVnum() <= 55710)
        DBManager::instance().DirectQuery("DELETE FROM new_petsystem WHERE id = %d", item->GetID());
#endif
#ifdef ENABLE_SUPPORT_SYSTEM
    if (item->GetVnum() >= 8383 && item->GetVnum() <= 8384)
        DBManager::instance().DirectQuery("DELETE FROM new_support WHERE id = %d", item->GetID());
#endif
    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s has been deleted successfully."), item->GetName());
    ITEM_MANAGER::instance().RemoveItem(item);
    return true;
}
#endif

I'm willing to pay for fix Upload 2019 10 7 12 6 43:)

Someone know where is a problem?
 
Stare
Nu este deschis pentru răspunsuri viitoare.