GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects

Kayıtlı Üye
Katılım
15 Temmuz 2015
Mesajlar
40
Merhabalar,



Çoğu oyunda hala bilinmeyen bir açıktır ve yararlanan kişiler çoktur. Yine kendi projemiz için uyguladığımız fonksiyonu sizlerle paylaşıyorum. Örneğin; eslanttaki bir bossu towna doğru çekip guardlara kestirerek. Hiç bir attak yapmadan kutu oyunculara açılıyordu.



[HIDE-REPLY]AI Server -> Npc.cpp içindeki SendExpToUserList fonksiyonu aşağıdaki ile değişin.



Kod:
{

if (GetMap() == nullptr)            return;









        std::string strMaxDamageUser;

        uint32 nMaxDamage = 0;









        Guard lock(m_damageListLock);

        std::map<Unit *, uint32> filteredDamageList;

        std::map<uint16, CUser *> partyIndex;









        foreach(itr, m_DamagedUserList)

        {

            CUser * pUser = g_pMain->GetUserPtr(itr->first);

            Unit * pNpc = g_pMain->GetUnitPtr(itr->first);

            if (!pNpc->isPlayer()) {

                filteredDamageList[pNpc] = itr->second;

                continue;

            }

            if (pUser == nullptr

                || !isInRangeSlow(pUser, NPC_EXP_RANGE))

                continue;









            // Not in a party, we can add them to the list as a solo attacker.

            if (!pUser->isInParty())

            {

                filteredDamageList[pUser] = itr->second;

                continue;

            }









            // In a party, so check if another party member is already in the list first.

            auto partyItr = partyIndex.find(pUser->GetPartyID());









            

            if (partyItr == partyIndex.end())

            {

                filteredDamageList[pUser] = itr->second;

                partyIndex.insert(std::make_pair(pUser->GetPartyID(), pUser));

            }

            // There is another pf pir party members in the damage list already, so just add 

            // to their damage total.

            else

            {

                filteredDamageList[partyItr->second] += itr->second;

            }

        }





        foreach(itr, filteredDamageList)

        {

            if (itr->first->isPlayer()) {

                CUser * pUser = TO_USER(itr->first);









                Packet result(AG_USER_EXP);

                result << pUser->GetID()

                    << GetID()

                    // target's damage vs total damage dealt to the NPC

                    << itr->second << m_TotalDamage

                    << m_proto->m_iExp << m_proto->m_iLoyalty;

                g_pMain->Send(&result);









                if (itr->second > nMaxDamage)

                {

                    m_sMaxDamageUserid = pUser->GetID();

                    strMaxDamageUser = pUser->GetName();

                    nMaxDamage = itr->second;

                }

            }

            else

            {

                if (itr->second > nMaxDamage)

                {

                    m_sMaxDamageUserid = TO_NPC(itr->first)->GetID();

                    strMaxDamageUser = TO_NPC(itr->first)->GetName();

                    nMaxDamage = itr->second;

                }

            }

        }









        if (g_pMain->m_byBattleEvent == BATTLEZONE_OPEN

            && !strMaxDamageUser.empty()

            && m_bySpecialType >= NpcSpecialTypeKarusWarder1 && m_bySpecialType <= NpcSpecialTypeElmoradKeeper)

        {

            Packet result(AG_BATTLE_EVENT, uint8(BATTLE_EVENT_MAX_USER));









            switch (m_bySpecialType)

            {

            case NpcSpecialTypeKarusWarder1:    result << uint8(3); g_pMain->m_sKillKarusNpc++; break;

            case NpcSpecialTypeKarusWarder2:    result << uint8(4); g_pMain->m_sKillKarusNpc++; break;

            case NpcSpecialTypeElmoradWarder1:    result << uint8(5);    g_pMain->m_sKillElmoNpc++; break;

            case NpcSpecialTypeElmoradWarder2:    result << uint8(6); g_pMain->m_sKillElmoNpc++; break;

            case NpcSpecialTypeKarusKeeper:        result << uint8(7); g_pMain->m_sKillKarusNpc++; break;

            case NpcSpecialTypeElmoradKeeper:    result << uint8(8); g_pMain->m_sKillElmoNpc++; break;

            }









            result.SByte();

            result << strMaxDamageUser;

            g_pMain->Send(&result);









            bool    bKarusComplete = (g_pMain->m_sKillKarusNpc == GetMap()->m_sKarusRoom),

                bElMoradComplete = (g_pMain->m_sKillElmoNpc == GetMap()->m_sElmoradRoom);









            if (bKarusComplete || bElMoradComplete)

            {

                result.clear();

                result << uint8(BATTLE_EVENT_RESULT)

                    << uint8(bKarusComplete ? KARUS : ELMORAD)

                    << strMaxDamageUser;

                g_pMain->Send(&result);

            }

        }

		}



Sorun ortadan kalkacaktır.[/HIDE-REPLY]



İyi çalışmalar...
 
Kayıtlı Üye
Katılım
12 Ocak 2013
Mesajlar
503
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



saol
 
Kayıtlı Üye
Katılım
31 Ekim 2015
Mesajlar
552
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



soalsın kardeşim
 
Kayıtlı Üye
Katılım
26 Ekim 2014
Mesajlar
646
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



Teşekkürler bakmak lazım
 
Kayıtlı Üye
Katılım
7 Eylül 2012
Mesajlar
434
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



tyyyyyyyyyyyyyyyyyyyy
 
Kayıtlı Üye
Katılım
13 Mayıs 2012
Mesajlar
441
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



teşekkürler
 
Kayıtlı Üye
Katılım
6 Mayıs 2015
Mesajlar
214
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



tyyyy
 
Kayıtlı Üye
Katılım
7 Temmuz 2013
Mesajlar
396
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



teşekkürler
 
Kayıtlı Üye
Katılım
18 Nisan 2013
Mesajlar
320
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



Teşekkürler
 
Kayıtlı Üye
Katılım
17 Nisan 2016
Mesajlar
43
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



asdasdasdasd
 
Kayıtlı Üye
Katılım
5 Haziran 2013
Mesajlar
845
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



teşekürlerr
 
Kayıtlı Üye
Katılım
6 Temmuz 2015
Mesajlar
197
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



teşekkürler
 
Kayıtlı Üye
Katılım
14 Nisan 2012
Mesajlar
785
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



bi bakayım tşkler.
 
Üst Alt
Reklam
Reklam