Jump to content

[C++/Python] Target information system + FIX


Recommended Posts

  • 1 year later...
  • 2 months later...
  • 2 weeks later...
On 9/24/2021 at 10:09 PM, ScriptMan said:

Hidden Content

    Give reaction to this post to see the hidden content.


Fix:
 

Hidden Content

  • Give reaction to this post to see the hidden content.


Download:
 

Hidden Content

  • Give reaction to this post to see the hidden content.

 

Thanks mannn

  • Like 3
  • Thanks 3
  • Haha 2
  • Confused 1
  • Sad 1
Link to post
Share on other sites

Szia ki keresem ezt a funciót

bool ITEM_MANAGER::GetDropPct(LPCHARACTER pkChr, LPCHARACTER pkKiller, OUT int& iDeltaPercent, OUT int& iRandRange)

Meg is van alá be rakom ezt és errorozik fordításnál item_manager.cpp-ben

#ifdef __SEND_TARGET_INFO__
bool ITEM_MANAGER::CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM> & vec_item)
{
    if (pkChr->IsPolymorphed() || pkChr->IsPC())
    {
        return false;
    }

    int iLevel = pkKiller->GetLevel();

    BYTE bRank = pkChr->GetMobRank();
    LPITEM item = NULL;

    std::vector<CItemDropInfo>::iterator it = g_vec_pkCommonDropItem[bRank].begin();

    while (it != g_vec_pkCommonDropItem[bRank].end())
    {
        const CItemDropInfo & c_rInfo = *(it++);

        if (iLevel < c_rInfo.m_iLevelStart || iLevel > c_rInfo.m_iLevelEnd)
            continue;

        TItemTable * table = GetTable(c_rInfo.m_dwVnum);

        if (!table)
            continue;

        item = NULL;

        if (table->bType == ITEM_POLYMORPH)
        {
            if (c_rInfo.m_dwVnum == pkChr->GetPolymorphItemVnum())
            {
                item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);

                if (item)
                    item->SetSocket(0, pkChr->GetRaceNum());
            }
        }
        else
            item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);

        if (item) vec_item.push_back(item);
    }

    // Drop Item Group
    {
        itertype(m_map_pkDropItemGroup) it;
        it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum());

        if (it != m_map_pkDropItemGroup.end())
        {
            typeof(it->second->GetVector()) v = it->second->GetVector();

            for (DWORD i = 0; i < v.size(); ++i)
            {
                item = CreateItem(v[i].dwVnum, v[i].iCount, 0, true);

                if (item)
                {
                    if (item->GetType() == ITEM_POLYMORPH)
                    {
                        if (item->GetVnum() == pkChr->GetPolymorphItemVnum())
                        {
                            item->SetSocket(0, pkChr->GetRaceNum());
                        }
                    }

                    vec_item.push_back(item);
                }
            }
        }
    }

    // MobDropItem Group
    {
        itertype(m_map_pkMobItemGroup) it;
        it = m_map_pkMobItemGroup.find(pkChr->GetRaceNum());

        if ( it != m_map_pkMobItemGroup.end() )
        {
            CMobItemGroup* pGroup = it->second;

            // MOB_DROP_ITEM_BUG_FIX
            // 20050805.myevan.MobDropItem ? ???? ?? ?? CMobItemGroup::GetOne() ??? ?? ?? ??
            if (pGroup && !pGroup->IsEmpty())
            {
                const CMobItemGroup::SMobItemGroupInfo& info = pGroup->GetOne();
                item = CreateItem(info.dwItemVnum, info.iCount, 0, true, info.iRarePct);

                if (item) vec_item.push_back(item);
            }
            // END_OF_MOB_DROP_ITEM_BUG_FIX
        }
    }

    // Level Item Group
    {
        itertype(m_map_pkLevelItemGroup) it;
        it = m_map_pkLevelItemGroup.find(pkChr->GetRaceNum());

        if ( it != m_map_pkLevelItemGroup.end() )
        {
            if ( it->second->GetLevelLimit() <= (DWORD)iLevel )
            {
                typeof(it->second->GetVector()) v = it->second->GetVector();

                for ( DWORD i=0; i < v.size(); i++ )
                {
                    DWORD dwVnum = v[i].dwVNum;
                    item = CreateItem(dwVnum, v[i].iCount, 0, true);
                    if ( item ) vec_item.push_back(item);
                }
            }
        }
    }

    // BuyerTheitGloves Item Group
    {
        // by mhh ?? ??? ??? ?? drop ? ???? ??
        if (pkKiller->GetPremiumRemainSeconds(PREMIUM_ITEM) > 0 ||
                pkKiller->IsEquipUniqueGroup(UNIQUE_GROUP_DOUBLE_ITEM))
        {
            itertype(m_map_pkGloveItemGroup) it;
            it = m_map_pkGloveItemGroup.find(pkChr->GetRaceNum());

            if (it != m_map_pkGloveItemGroup.end())
            {
                typeof(it->second->GetVector()) v = it->second->GetVector();

                for (DWORD i = 0; i < v.size(); ++i)
                {
                    
                    DWORD dwVnum = v[i].dwVnum;
                    item = CreateItem(dwVnum, v[i].iCount, 0, true);
                    if (item) vec_item.push_back(item);
                }
            }
        }
    }

    // ??
    if (pkChr->GetMobDropItemVnum())
    {
        itertype(m_map_dwEtcItemDropProb) it = m_map_dwEtcItemDropProb.find(pkChr->GetMobDropItemVnum());

        if (it != m_map_dwEtcItemDropProb.end())
        {        
            item = CreateItem(pkChr->GetMobDropItemVnum(), 1, 0, true);
            if (item) vec_item.push_back(item);
        }
    }

    if (pkChr->IsStone())
    {
        if (pkChr->GetDropMetinStoneVnum())
        {
            item = CreateItem(pkChr->GetDropMetinStoneVnum(), 1, 0, true);
            if (item) vec_item.push_back(item);
        }
    }

    return vec_item.size();
}
#endif

Megoldás rá?

Indítót gyönyörűen lefordította egy hiba nélkül!

 

Link to post
Share on other sites
  • 2 weeks later...

Keresd:

    iRandRange = 4000000;
    iRandRange = iRandRange * 100 / 
        (100 + 
         CPrivManager::instance().GetPriv(pkKiller, PRIV_ITEM_DROP) + 
         pkKiller->IsEquipUniqueItem(UNIQUE_ITEM_DOUBLE_ITEM)?100:0);

    if (elosztási_tesztszerver) iRandRange /= 3;

    return true;
}

ALÁ:

#ifdef __SEND_TARGET_INFO__
bool ITEM_MANAGER::CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM> & vec_item)
{
    if (pkChr->IsPolymorphed()->IsPolymorphed(false) ||s
    pkPChr
        ;
    }

    int iLevel = pkKiller->GetLevel();

    BYTE bRank = pkChr->GetMobRank();
    LPITEM elem = NULL;

    std::vector<CItemDropInfo>::iterator it = g_vec_pkCommonDropItem[bRank].begin();

    while (it != g_vec_pkCommonDropItem[bRank].end())
    {
        const CItemDropInfo & c_rInfo = *(it++);

        if (iLevel < c_rInfo.m_iLevelStart || iLevel > c_rInfo.m_iLevelEnd)
            folytatódik;

        TItemTable * table = GetTable(c_rInfo.m_dwVnum);

        if (!tábla)
            folytatás;

        item = NULL;

        if (table->bType == ITEM_POLYMORPH)
        {
            if (c_rInfo.m_dwVnum == pkChr->GetPolymorphItemVnum())
            {
                item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);

                if (elem)
                    item->SetSocket(0, pkChr->GetRaceNum());
            }
        }
        else
            item = CreateElem(c_rInfo.m_dwVnum, 1, 0, true);

        if (elem) vec_item.push_back(elem);
    }

    // Elemcsoport eldobása
    {
        itertype(m_map_pkDropItemGroup) it;
        it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum());

        if (it != m_map_pkDropItemGroup.end())
        {
            typeof(it->second->GetVector()) v = it->second->GetVector();

            for (DWORD i = 0; i < v.size(); ++i)
            {
                item = CreateItem(v[i].dwVnum, v[i].iCount, 0, true);

                if (item)
                {
                    if (item->GetType() == ITEM_POLYMORPH)
                    {
                        if (item->GetVnum() == pkChr->GetPolymorphItemVnum())
                        {
                            item->SetSocket(0, pkChr->GetRaceNum()) ;
                        }
                    }

                    vec_item.push_back(elem);
                }
            }
        }
    }

    // MobDropItem Group
    {
        itertype(m_map_pkMobItemGroup) it;
        it = m_map_pkMobItemGroup.find(pkChr->GetRaceNum());

        if ( it != m_map_pkMobItemGroup.end() )
        {
            CMobItemGroup* pGroup = it->second;

            // MOB_DROP_ITEM_BUG_FIX
            // 20050805.myevan.MobDropItem ? ???? ?? ?? CMobItemGroup::GetOne() ??? ?? ?? ??
            if (pGroup && !pGroup->IsEmpty())
            {
                const CMobItemGroup::SMobItemGroupInfo& info = pGroup->GetOne();
                item = CreateItem(info.dwItemVnum, info.iCount, 0, true, info.iRarePct);

                if (elem) vec_item.push_back(elem);
            }
            // END_OF_MOB_DROP_ITEM_BUG_FIX
        }
    }

    // Level Item Group
    {
        itertype(m_map_pkLevelItemGroup) it;
        it = m_map_pkLevelItemGroup.find(pkChr->GetRaceNum());

        if ( it != m_map_pkLevelItemGroup.end() )
        {
            if ( it->second->GetLevelLimit() <= (DWORD)iLevel )
            {
                typeof(it->second->GetVector()) v = it->second- >GetVector();

                for ( DWORD i=0; i < v.size(); i++ )
                {
                    DWORD dwVnum = v[i].dwVNum;
                    item = Elem létrehozása(dwVnum, v[i].iCount, 0, true);
                    if ( item ) vec_item.push_back(elem);
                }
            }
        }
    }

    // BuyerTheitGloves cikkcsoport
    {
        // szerző: mhh ?? ??? ??? ?? csepp ? ???? ??
        if (pkKiller->GetPremiumRemainSeconds(PREMIUM_ITEM) > 0 ||
                pkKiller->IsEquipUniqueGroup(UNIQUE_GROUP_DOUBLE_ITEM))
        {
            itertype(m_map_pkGloveItemGroup) it;
            it = m_map_pkGloveItemGroup.find(pkChr->GetRaceNum());

            if (it != m_map_pkGloveItemGroup.end())
            {
                typeof(it->second->GetVector()) v = it->second->GetVector();

                for (DWORD i = 0; i < v.size(); ++i)
                {
                    
                    DWORD dwVnum = v[i].dwVnum;
                    item = Elem létrehozása(dwVnum, v[i].iCount, 0, true);
                    if (elem) vec_item.push_back(elem);
                }
            }
        }
    }

    // ??
    if (pkChr->GetMobDropItemVnum())
    {
        itertype(m_map_dwEtcItemDropProb) it = m_map_dwEtcItemDropProb.find(pkChr->GetMobDropItemVnum());

        if (it != m_map_dwEtcItemDropProb.end())
        {        
            item = CreateItem(pkChr->GetMobDropItemVnum(), 1, 0, true);
            if (elem) vec_item.push_back(elem);
        }
    }

    if (pkChr->IsStone())
    {
        if (pkChr->GetDropMetinStoneVnum())
        {
            item = CreateItem(pkChr->GetDropMetinStoneVnum(), 1, 0, true);
            if (elem) vec_item.push_back(elem);
        }
    }

    return vec_item.size();
}
#endif

image.thumb.png.2be1b40fa0112772abf7dd37f1ba638b.png

Képeket csatoltam ha esetleg így sem érted. Sok sikert🙂

Így nézzen kiimage.thumb.png.3931eecd81b3e5e42786d8cbc0722590.png

 

Link to post
Share on other sites
  • 1 month later...
  • 2 weeks later...

Item_manager.cpp fordításnál hibát ír ki. (typeof részt át kell írni __typeof-ra és gördülékenyen lefordul a game, ha esetleg más is ilyen jellegű problémával küzdene).
 

Hidden Content

    Give reaction to this post to see the hidden content.

 

  • Like 15
  • Confused 1
Link to post
Share on other sites
  • 10 months later...
  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...