Sosyal açıldı! Bir göz at → Hemen gir →

YARDIM Collection Race Reward Sorunu

bluemansiiz

KY Saygın Üye
Yardımsever
KAYIT
13 May 2022
Mesajlar
425
Çözümler
4
Tepki puanı
219
Merhabalar Arkadaşlar;

Collection Race ödüllerinin 10'a ve Random item ödülüne geçirdikten sonra karakterin üstü dolu olduktan sonra bazı ödülleri bankaya atıyor bazılarını atmıyor buna anlam veremedim :) daha önce bu tarz sorun yaşayan mevcut mu acaba ?



C:
void CUser::GiveRandomItem(uint32& nItemID, uint32& nCount, uint8 bySession)
{
    std::map <uint16, _RANDOM_ITEM*> nRandom;
    int say = 0;

    foreach(itr, g_pMain->m_RandomItemArray)
    {

        _RANDOM_ITEM* pRandom = *itr;
        if (pRandom->SessionID != bySession)
            continue;
        nRandom.insert(std::make_pair(say, pRandom));
        say++;
    }
    int thisrand = static_cast<int>(nRandom.size());
    if (thisrand == 0)
        return;
    thisrand -= 1;
    int rand = myrand(0, thisrand);

    auto it = nRandom.find(rand);
    if (it != nRandom.end())
    {
        _RANDOM_ITEM* pRandom = it->second;

        nItemID = pRandom->ItemID;
        nCount = pRandom->ItemCount;
        // 10.05.2024 düzenlemesi
        m_randomItem = pRandom->ItemID;
        GiveItem("Collection Random Item", nItemID, nCount, true);
        // 10.05.2024 düzenlemesi end

    }
    //printf("bySession Item ID %d %d \n", nItemID, bySession);


}
void CUser::CollectionRaceFinish()
{
    _CR_USER_LIST* ptest = g_pMain->pCollectionRaceEvent.m_userlit.GetData(GetName());
    if (ptest != nullptr) {
        ptest->isFinish = CollectionRace.CheckFinish;
    }
    uint32 tmp_RewardItemID[10]{};
    uint32 tmp_RewardItemCount[10]{};
    for (int i = 0; i < 3; i++)
    {
        CollectionRace.KillCount[i] = 0;
    }
    for (int i = 0; i < 10; i++)
    {
        tmp_RewardItemID[i] = 0;
        tmp_RewardItemCount[i] = 0;
    }

    bool isCind = pCindWar.isEventUser() && g_pMain->isCindirellaZone(GetZoneID());

    bool lettercheck = false;
    for (int i = 0; i < 10; i++)
    {
        if (g_pMain->pCollectionRaceEvent.RewardItemID[i] > 0)
        {
            if (isCind)
            {
                if (g_pMain->pCollectionRaceEvent.RewardItemID[i] == ITEM_GOLD)
                {
                    pCindWar.gainnoah += g_pMain->pCollectionRaceEvent.RewardItemCount[i];
                    continue;
                }

                if (g_pMain->pCollectionRaceEvent.RewardItemID[i] == ITEM_EXP)
                {
                    pCindWar.gainexp += g_pMain->pCollectionRaceEvent.RewardItemCount[i];
                    continue;
                }
            }
            else
            {
                if (g_pMain->pCollectionRaceEvent.RewardItemID[i] == ITEM_GOLD)
                {
                    GoldGain(g_pMain->pCollectionRaceEvent.RewardItemCount[i]);
                    continue;
                }

                if (g_pMain->pCollectionRaceEvent.RewardItemID[i] == ITEM_EXP)
                {
                    ExpChange("collection race", g_pMain->pCollectionRaceEvent.RewardItemCount[i], true);
                    continue;
                }
            }

            if (g_pMain->pCollectionRaceEvent.RewardItemID[i] == ITEM_COUNT)
            {
                SendLoyaltyChange("collection race", g_pMain->pCollectionRaceEvent.RewardItemCount[i]);
                continue;
            }

            uint32 xItemID = g_pMain->pCollectionRaceEvent.RewardItemID[i];
            uint32 xItemTime = g_pMain->pCollectionRaceEvent.RewardItemTime[i];
            uint32 xCount = g_pMain->pCollectionRaceEvent.RewardItemCount[i];
            uint32 xRand = g_pMain->pCollectionRaceEvent.RewardItemRate[i];

            //if (g_pMain->pCollectionRaceEvent.RewardItemID[i] == 900004000)
            //    GiveRandomItem(xItemID, xCount, g_pMain->pCollectionRaceEvent.RewardSession[i]);

            tmp_RewardItemID[i] = xItemID;
            tmp_RewardItemCount[i] = xCount;

            _ITEM_TABLE pTable = g_pMain->GetItemPtr(xItemID);
            if (!pTable.isnull()) {

                int nRate = 0;
                if (xRand > 100) xRand = 100;
                if (xRand) nRate = myrand(0, 10000);

                if (nRate && static_cast<int>(xRand * 100) < nRate) {
                    tmp_RewardItemID[i] = 0;
                    tmp_RewardItemCount[i] = 0;
                    continue;
                }

                int8 pos = FindSlotForItem(xItemID, xCount);
                if ((pCindWar.isEventUser() && g_pMain->isCindirellaZone(GetZoneID())) || pos < 0)
                {
                    if (g_pMain->pCollectionRaceEvent.RewardItemID[i] == 900004000)
                    {
                        GiveRandomItem(xItemID, xCount, g_pMain->pCollectionRaceEvent.RewardSession[i]);
                        tmp_RewardItemID[i] = m_randomItem;
                        m_randomItem = 0; // 10.05.2024 düzenlemesi
                    }
                    else
                    {
                        Packet newpkt(WIZ_DB_SAVE_USER, uint8(ProcDbType::CollectionRaceReward));
                        newpkt << xItemID << xCount;
                        g_pMain->AddDatabaseRequest(newpkt, this);
                    }
                }
                else
                {
                    if (g_pMain->pCollectionRaceEvent.RewardItemID[i] == 900004000)
                    {
                        GiveRandomItem(xItemID, xCount, g_pMain->pCollectionRaceEvent.RewardSession[i]);
                        tmp_RewardItemID[i] = m_randomItem;
                        m_randomItem = 0; // 10.05.2024 düzenlemesi
                    }
                    else
                        GiveItem("Collection Race", xItemID, xCount, true, xItemTime);
                }
                //if ((pCindWar.isEventUser() && g_pMain->isCindirellaZone(GetZoneID())) || pos < 0)
                //{
                //    Packet newpkt(WIZ_DB_SAVE_USER, uint8(ProcDbType::CollectionRaceReward));
                //    newpkt << xItemID << xCount;
                //    g_pMain->AddDatabaseRequest(newpkt, this);
                //}
                //else
                //    GiveItem("Collection Race", xItemID, xCount, true, xItemTime);
            }
        }
    }
    Packet result(WIZ_QUEST);
    result << uint8(10);
    for (int i = 0; i < 10; i++)// cr ödül arttýrmasý  06.05.20204 end
    {
        if (tmp_RewardItemID[i] && tmp_RewardItemCount[i])
            result << tmp_RewardItemID[i] << tmp_RewardItemCount[i];
    }
    //Packet result(WIZ_QUEST);
    //result << uint8(0x0A);
    //for (int i = 0; i < 3; i++)
    //    result << tmp_RewardItemID[i] << tmp_RewardItemCount[i];
    //   
    //result << uint32_t(0x00) << uint32_t(0x00) << uint32_t(0x00) << uint32_t(0x00);
    Send(&result);
}

Saygılarımla.
 
Son düzenleme:
Anasayfa Kayıt ol Giriş yap
Üst Alt