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

N Çevrimdışı

Nogitsun

Kayıtlı Üye
15 Temmuz 2015
43
0
6
28
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...
 
K Çevrimdışı

kosp51

Kayıtlı Üye
12 Ocak 2013
551
0
16
31
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



saol
 
J Çevrimdışı

Jeroo

Kayıtlı Üye
31 Ekim 2015
583
0
16
32
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



soalsın kardeşim
 
K Çevrimdışı

KiraAmora61

Kayıtlı Üye
26 Ekim 2014
717
0
16
27
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



Teşekkürler bakmak lazım
 
V Çevrimdışı

vecan17

Kayıtlı Üye
7 Eylül 2012
485
0
16
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



tyyyyyyyyyyyyyyyyyyyy
 
M Çevrimdışı

Mountain

Kayıtlı Üye
13 Mayıs 2012
471
0
16
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



teşekkürler
 
S Çevrimdışı

sapka

Kayıtlı Üye
6 Mayıs 2015
240
0
16
31
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



tyyyy
 
C Çevrimdışı

Ceronimo

Kayıtlı Üye
7 Temmuz 2013
439
0
16
30
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



teşekkürler
 
X Çevrimdışı
10 Ekim 2013
1,129
0
36
29
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



gracias
 
H Çevrimdışı

huber98741

Kayıtlı Üye
24 Haziran 2014
440
0
16
29
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



thnxxxxx
 
E Çevrimdışı

ErronBlack

Kayıtlı Üye
18 Nisan 2013
342
9
18
32
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



Teşekkürler
 
S Çevrimdışı

SadeceE

Kayıtlı Üye
17 Nisan 2016
44
0
6
38
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



asdasdasdasd
 
K Çevrimdışı

kopukum21

Kayıtlı Üye
25 Haziran 2013
519
0
16
28
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



saol
 
M Çevrimdışı

moonstars

Kayıtlı Üye
21 Aralık 2015
205
0
16
29
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



saol
 
R Çevrimdışı

rainboy

Kayıtlı Üye
5 Haziran 2013
915
0
16
39
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



teşekürlerr
 
C Çevrimdışı

Christian

Kayıtlı Üye
22 Ekim 2012
728
0
16
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



thankss
 
J Çevrimdışı

juberti

Kayıtlı Üye
2 Eylül 2012
98
0
6
25
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



tskkrlr
 
M Çevrimdışı

mayko

Kayıtlı Üye
6 Temmuz 2015
225
0
16
24
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



teşekkürler
 
C Çevrimdışı

coldrose

Kayıtlı Üye
14 Nisan 2012
829
0
16
Cevap: GUARD'A BOSS KESTİREREK KUTU ALMA BUGUNU FİXLEME | ROK Projects



bi bakayım tşkler.
 
Üst