Hikayeler

Reklam vermek için turkmmo@gmail.com

Official AI Flag Reflect

Reached

Level 7
Telefon Numarası Onaylanmış Üye
Fahri Üye
Katılım
13 Haz 2013
Konular
181
Mesajlar
2,492
Online süresi
3ay 19g
Reaksiyon Skoru
1,647
Altın Konu
2
Başarım Puanı
284
Yaş
28
TM Yaşı
12 Yıl 10 Ay 13 Gün
MmoLira
8,240
DevLira
81

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

Offical oyunun protolarında bulunan reflect aiflag'ı sayesinde mobun %x canı altında vurulan hasarın %y'sini yansıtmasını sağlar.​
char_state.cpp
C++:
// Arat
bool CHARACTER::IsStoneSkinner() const

// Üstüne ekle
bool CHARACTER::IsReflector() const
{
    return IS_SET(m_pointsInstant.dwAIFlag, AIFLAG_REFLECT);
}

// CHARACTER::__StateIdle_Monster() fonksiyonunun içinde arat

    if (IsGodSpeeder())
        if (IsGodSpeed())
            SetGodSpeed(false);

// Altına ekle
    if (IsReflector())
        if (IsReflect())
            SetReflect(false);

// CHARACTER::StateBattle() fonksiyonunun içinde arat
    if (IsGodSpeeder() == true)
        if (GetHPPct() < m_pkMobData->m_table.bGodSpeedPoint)
            if (IsGodSpeed() != true)
                SetGodSpeed(true);

// Üstüne ekle
    if (IsReflector() == true)
        if (GetHPPct() < 25)
            if (IsReflect() != true)
                SetReflect(true);

char_battle.cpp
C++:
// ::Damage fonksiyonu içinde arat
SendDamagePacket(pAttacker, dam, damageFlag);

// Üstüne ekle
    if (pAttacker && pAttacker->IsPC() && IsNPC() && IsReflect())
        pAttacker->SendDamagePacket(this, dam/100*5, damageFlag);

char.h
C++:
//arat
    bool IsBerserker() const;
    bool IsBerserk() const;
    void SetBerserk(bool mode);

//altına ekle
    bool IsReflector() const;
    bool IsReflect() const;
    void SetReflect(bool mode);

char.cpp
C++:
//arat
bool CHARACTER::IsGodSpeed() const

//üstüne ekle
bool CHARACTER::IsReflect() const
{
    if (m_pkMobInst != nullptr)
        return m_pkMobInst->m_IsReflect;
    else
        return false;
}
void CHARACTER::SetReflect(bool mode)
{
    if (m_pkMobInst != nullptr)
        m_pkMobInst->m_IsReflect = mode;
}

mob_manager.cpp
C++:
//arat
CMobInstance::CMobInstance()
    : m_IsBerserk(false), m_IsGodSpeed(false), m_IsRevive(false),
//ekle
, m_IsReflect(false)

mob_manager.h
C++:
//arat
    bool m_IsRevive;

//Altına ekle
    bool m_IsReflect;

+ olarak buraya dahil etmedim fakat
length.h'da
C++:
enum EAIFlags
içerisine sıraya uygun bir şekilde AIFLAG_REFLECT

ve protoreader dosyanıza
get_Mob_AIFlag_Value
fonksiyonunda bulunan array'in içerisine "REFLECT" olarak dahil ettikten sonra mob_proto'da aiflag olarak REFLECT verdiğiniz mobların %25'den az canı olduğunda vurduğunuz hasarın %5'ini size geri yansıtır. Bu kısımları sabit yapmayı tercih ettim, dilerseniz mob proto'ya berserk, stoneskin gibi column açıp dinamik bir şekilde % kaç canda reflect'e gireceğini ve % kaç hasarı geri yansıtacağını ayarlayabilirsiniz.

 
Teşekkür ederim gayet güzel bir konu olmuş elinize sağlık hocam.
 
Paylaşım için teşekkürler.
 
Teşekkürler eline sağlık :)
 
Merhabalar,

Paylaşımınız için teşekkür ederim.

İyi forumlar.
 

Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)

Geri
Üst