romegames 1
romegames
Bvural41 1
Bvural41
Best Studio 1
Best Studio
BlackFullMoon 1
BlackFullMoon
NovaLst 1
NovaLst
SLyFeLLowTR 1
SLyFeLLowTR
xranzei 1
xranzei
InfernoShade 1
InfernoShade
shrpnl 1
shrpnl
D 1
delimuratt
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Efekt Kontrol Eklentisi | Effect Control Plug-in

*Alperen Sönmez*

Alperen Sönmez
Telefon Numarası Onaylanmış Üye
Fahri Üye
TM Üye
Katılım
25 Ocak 2019
Konular
134
Mesajlar
2,442
Çözüm
42
Online süresi
3mo 17h
Reaksiyon Skoru
1,572
Altın Konu
6
TM Yaşı
7 Yıl 4 Ay 16 Gün
Başarım Puanı
249
MmoLira
6,732
DevLira
-6
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ 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

Yararlı, teşekkürler.
 

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

Geri
Üst