Scarlet 1
Scarlet
Bvural41 1
Bvural41
mavzermete 1
mavzermete
Fethi Polat 1
Fethi Polat
xranzei 1
xranzei
Hikaye Ekle

Efekt Kontrol Eklentisi | Effect Control Plug-in

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Selam arkadaşlar yakın zamanda benim çok işime yarayan sizlerinde işinize yarayacağını düşündüğüm bir eklentiyi sizinle paylaşmak istiyorum.

Bu eklenti ile kolayca python üzerinden efektlerinizi kontrol ettirip koşul sunabilirsiniz.

Kodlar bana ait değildir. Sorunsuzca kullanıyorum.

Yapılabilecek şeylerin sınırı yok x efekt üstünde yoksa y itemini kullanamazsın yada bu yolla premium market arama vb itemler yapabilirsiniz

C++:
Locale_inc.h -> ekle

#define ENABLE_AFFECT_CHECK
--------------------------------------------------------
PythonApplicationModule.cpp -> Arat

    PyModule_AddIntConstant(poModule, "CAMERA_STOP",            CPythonApplication::CAMERA_STOP);

--> Altına ekle

#ifdef ENABLE_AFFECT_CHECK
    PyModule_AddIntConstant(poModule, "ENABLE_AFFECT_CHECK", 1);
#else
    PyModule_AddIntConstant(poModule, "ENABLE_AFFECT_CHECK", 0);
#endif

--------------------------------------------------------
PythonNetworkStreamPhaseGame.cpp -> Arat

PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_NEW_AddAffect"

ÜSTÜNE ekle ->

#ifdef ENABLE_AFFECT_CHECK
    CPythonPlayer::instance().AddAffect(rkElement.dwType, kAffectAdd.elem);
#endif

--> tekrar arat
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_NEW_RemoveAffect"

--> Üstüne Ekle

#ifdef ENABLE_AFFECT_CHECK
    CPythonPlayer::instance().RemoveAffect(kAffectRemove.dwType, kAffectRemove.bApplyOn);
#endif

--------------------------------------------------------

PythonPlayer.cpp --> arat
void CPythonPlayer::ClearSkillDict()

--> ÜSTÜNE EKLE

#ifdef ENABLE_AFFECT_CHECK
void CPythonPlayer::AddAffect(DWORD dwType, TPacketAffectElement kElem)
{
    int iAffIndex = GetAffectDataIndex(dwType, kElem.bPointIdxApplyOn);
    if (iAffIndex != -1)
    {
        m_mapAffectData.at(iAffIndex) = kElem;
    }
    else
    {
        m_mapAffectData.push_back(kElem);
    }
}

void CPythonPlayer::RemoveAffect(DWORD dwType, BYTE bApplyOn)
{
    for (TAffectDataVector::iterator it = m_mapAffectData.begin(); it != m_mapAffectData.end(); ++it)
    {
        TPacketAffectElement elem = *it;
        if (elem.dwType == dwType && (bApplyOn == 0 || bApplyOn == elem.bPointIdxApplyOn))
        {
            m_mapAffectData.erase(it);
            break;
        }
    }
}

int CPythonPlayer::GetAffectDataIndex(DWORD dwType, BYTE bApplyOn)
{
    int ret = -1, i = 0;
    for (TAffectDataVector::iterator it = m_mapAffectData.begin(); it != m_mapAffectData.end(); ++it, ++i)
    {
        TPacketAffectElement elem = *it;
        if (elem.dwType == dwType && (bApplyOn == 0 || bApplyOn == elem.bPointIdxApplyOn))
        {
            ret = i;
            break;
        }
    }
    return ret;
}

TPacketAffectElement CPythonPlayer::GetAffectData(DWORD dwType, BYTE bApplyOn)
{
    TPacketAffectElement ret;
    memset(&ret, 0, sizeof(TPacketAffectElement));
    for (TAffectDataVector::iterator it = m_mapAffectData.begin(); it != m_mapAffectData.end(); ++it)
    {
        TPacketAffectElement elem = *it;
        if (elem.dwType == dwType && (bApplyOn == 0 || bApplyOn == elem.bPointIdxApplyOn))
        {
            ret = elem;
            break;
        }
    }
    return ret;
}
#endif

--> Tekrar Arat
void CPythonPlayer::ClearSkillDict()
--> Altında Bul
__ClearAutoAttackTargetActorID();

--> Üstüne Ekle

#ifdef ENABLE_AFFECT_CHECK
    m_mapAffectData.clear();
#endif

--------------------------------------------------------
PythonPlayer.h --> Arat

DWORD    GetTargetVID();

--> Altına Ekle

#ifdef ENABLE_AFFECT_CHECK
    protected:
        typedef std::vector<TPacketAffectElement> TAffectDataVector;
        TAffectDataVector    m_mapAffectData;
    public:
        void    AddAffect(DWORD dwType, TPacketAffectElement kElem);
        void    RemoveAffect(DWORD dwType, BYTE bApplyOn);
        int        GetAffectDataIndex(DWORD dwType, BYTE bApplyOn);
        TPacketAffectElement GetAffectData(DWORD dwType, BYTE bApplyOn);
#endif
--------------------------------------------------------

PythonPlayerModule --> Arat

void initPlayer()

--> Üstüne ekle


#ifdef ENABLE_AFFECT_CHECK
PyObject * playerCheckAffect(PyObject* poSelf, PyObject* poArgs)
{
    DWORD dwType;
    if (!PyTuple_GetUnsignedLong(poArgs, 0, &dwType))
        return Py_BadArgument();

    BYTE bApplyOn;
    if (!PyTuple_GetByte(poArgs, 1, &bApplyOn))
        return Py_BadArgument();

    int iAffIndex = CPythonPlayer::Instance().GetAffectDataIndex(dwType, bApplyOn);
    return Py_BuildValue("b", iAffIndex != -1);
}
#endif

--> Arat
        { "GetPKMode",                    playerGetPKMode,                    METH_VARARGS },

--> Altına Ekle

#ifdef ENABLE_AFFECT_CHECK
        { "CheckAffect",                            playerCheckAffect,                            METH_VARARGS },
#endif

[CODE lang="python" title="Örnek Kullanım Blok"] if app.ENABLE_AFFECT_CHECK and player.CheckAffect(long(chr.NEW_AFFECT_SAVAS), 0) == False:
self.PopupMessage(localeInfo.SAVAS_ITEM_NULL) ## Siz buraya chat de koyabilirsiniz. Bu efekt üzerinde yoksa demektir bu kod.
return[/CODE]
 
Son düzenleme:

En Çok Reaksiyon Alan Mesajlar

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

Geri
Üst