Hikayeler

Reklam vermek için turkmmo@gmail.com
Kaynak ikonu

[C++&PY] HP Barında Zehirlenme Efekti 1.0

indirmek için izniniz yok

Kanıt Resim ;


Ttj78Sy.png



Ne işe Yarar ?

Oyuncu veya bir Mob zehirlendiği zaman can barı yeşil renge bürünür.


Fikirin Kaynağı ;

Bu fikir bir Türk olan Whistlee'ye aittir.Whistlee'nin orijinal paylaşımı Moblarda çalışmamaktadır ve SRC kaynaklı olmadığı için sadece bizim tarafımızdan görülebilmektedir.

Bu versiyonda ise ufak eklemelerle Moblara da aynı efekt eklenmiştir ayrıca efektli kişi yada mob tüm oyuncular tarafından görülebilir olacaktır.

Kod yazımında yardımcı olan Intern,VegaS™ ve HITRON'a teşekkürler.

Ayrıca Metin2 Dev'den konu sahibi Tatsumaru'ya teşekkürler.


Nasıl Ekleyeceğiz ?


Aşağıdaki adımları takip edin.


///// PACK TARAFI ; ( TAB ayarlarına dikkat ! )

01. taskbar.py açılır (root/locale/?????/ui) aşağıdaki bölüm bulunur:

Python:
{
                            "name" : "HPRecoveryGaugeBar",
                            "type" : "bar",

                            "x" : 0,
                            "y" : 0,
                            "width" : 95,
                            "height" : 13,
                            "color" : 0x55ff0000,
                        },
                        {
                            "name" : "HPGauge",
                            "type" : "ani_image",

                            "x" : 0,
                            "y" : 0,

                            "delay" : 6,

                            "images" :
                            (
                                "D:/Ymir Work/UI/Pattern/HPGauge/01.tga",
                                "D:/Ymir Work/UI/Pattern/HPGauge/02.tga",
                                "D:/Ymir Work/UI/Pattern/HPGauge/03.tga",
                                "D:/Ymir Work/UI/Pattern/HPGauge/04.tga",
                                "D:/Ymir Work/UI/Pattern/HPGauge/05.tga",
                                "D:/Ymir Work/UI/Pattern/HPGauge/06.tga",
                                "D:/Ymir Work/UI/Pattern/HPGauge/07.tga",
                            ),
                        },


ALTINA EKLENİR ;


Python:
{
                            "name" : "HPPoisonRecoveryGaugeBar",
                            "type" : "bar",

                            "x" : 0,
                            "y" : 0,
                            "width" : 95,
                            "height" : 13,
                            "color" : 0x55008000,
                        },
                        {
                            "name" : "HPPoisonGauge",
                            "type" : "ani_image",

                            "x" : 0,
                            "y" : 0,

                            "delay" : 6,

                            "images" :
                            (
                                "D:/Ymir Work/UI/Pattern/HPPoisonGauge/01.tga",
                                "D:/Ymir Work/UI/Pattern/HPPoisonGauge/02.tga",
                                "D:/Ymir Work/UI/Pattern/HPPoisonGauge/03.tga",
                                "D:/Ymir Work/UI/Pattern/HPPoisonGauge/04.tga",
                                "D:/Ymir Work/UI/Pattern/HPPoisonGauge/05.tga",
                                "D:/Ymir Work/UI/Pattern/HPPoisonGauge/06.tga",
                                "D:/Ymir Work/UI/Pattern/HPPoisonGauge/07.tga",
                            ),
                        },


02. ui.py açılır (root/) ve bu class'ın sonuna : class Gauge(Window): aşağıdaki bölüm eklenir:


Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
        def SetGaugeColor(self, color):
            if self.imgGauge:
                self.imgGauge.LoadImage("d:/ymir work/ui/pattern/gauge_" + color + ".tga")


03. uiparty.py açılır (root/) ve dosyanın en başına eklenir:

DİKKAT! Eğer hali hazırda dosyada mevcutsa import app'ı eklemeyin !



Python:
import app

if app.ENABLE_POISON_GAUGE_EFFECT:
    import chr
    import chrmgr



AŞAĞIDAKİ KOD BULUNUR ;


Kod:
hpPercentage = max(0, hpPercentage)



ÜSTÜNE EKLENİR ;



Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
            if chrmgr.HasAffectByVID(self.GetCharacterVID(), chr.AFFECT_POISON):
                self.gauge.SetGaugeColor("lime")
            else:
                self.gauge.SetGaugeColor("red")


04. uiplayergauge.py açılır (root/) ve dosyanın en başına eklenir:

DİKKAT! Eğer hali hazırda dosyada mevcutsa import app'ı eklemeyin !



Python:
import app

if app.ENABLE_POISON_GAUGE_EFFECT:
    import chrmgr


AŞAĞIDAKİ KOD BULUNUR ;


Python:
self.SetPercentage(self.curHP, self.maxHP)


ÜSTÜNE EKLENİR ;


Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
            if chrmgr.HasAffectByVID(player.GetMainCharacterIndex(), chr.AFFECT_POISON):
                self.SetGaugeColor("lime")
            else:
                self.SetGaugeColor("red")



05. uitarget.py açılır (root/) ve dosyanın en başına eklenir:

DİKKAT! Eğer hali hazırda dosyada mevcutsa import app'ı eklemeyin !



Python:
import app

if app.ENABLE_POISON_GAUGE_EFFECT:
    import chrmgr



AŞAĞIDAKİ KODU BULUN ;


Python:
hpGauge = ui.Gauge()
        hpGauge.SetParent(self)
        hpGauge.MakeGauge(130, "red")
        hpGauge.Hide()



ALTINA EKLEYİN ;


Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
            hpPoisonGauge = ui.Gauge()
            hpPoisonGauge.SetParent(self)
            hpPoisonGauge.MakeGauge(130, "lime")
            hpPoisonGauge.SetPosition(175, 17)
            hpPoisonGauge.SetWindowHorizontalAlignRight()
            hpPoisonGauge.Hide()


AŞAĞIDAKİ KODU BULUN ;


Python:
self.hpGauge = None



ALTINA EKLEYİN ;

DİKKAT! self.hpGauge = None Kodundan bu dosyada birden fazla yerde olabilir. Eğer öyleyse hepsinin altına aşağıdaki kodu ekleyin.




Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
            self.hpPoisonGauge = None



AŞAĞIDAKİ KODU BULUN ;



Python:
self.hpGauge = hpGauge



ALTINA EKLEYİN ;



Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
            self.hpPoisonGauge = hpPoisonGauge



AŞAĞIDAKİ KODU BULUN ;


Python:
self.hpGauge.Hide()



ALTINA EKLEYİN ;



Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
            self.hpPoisonGauge.Hide()



AŞAĞIDAKİ KODU BULUN ;



Python:
self.hpGauge.SetPercentage(hpPercentage, 100)



ALTINA EKLEYİN ;


Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
            self.hpPoisonGauge.SetPercentage(hpPercentage, 100)



AŞAĞIDAKİ KODU BULUN ;


Python:
def OnUpdate(self):



ALTINA EKLEYİN ;


Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
            if self.hpGauge and self.hpGauge.IsShow():
                if chrmgr.HasAffectByVID(self.GetTargetVID(), chr.AFFECT_POISON):
                    self.hpPoisonGauge.Show()
                else:
                    self.hpPoisonGauge.Hide()



06. uitaskbar.py açılır (root/) ve dosyanın en başına eklenir:

DİKKAT! Eğer hali hazırda dosyada mevcutsa import app'ı eklemeyin !



Python:
import app

if app.ENABLE_POISON_GAUGE_EFFECT:
    import chr
    import chrmgr



AŞAĞIDAKİ KODU BULUN ;




Python:
self.spRecoveryGaugeBar = self.GetChild("SPRecoveryGaugeBar")



ALTINA EKLEYİN ;



Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
            self.hpPoisonGauge = self.GetChild("HPPoisonGauge")
            self.hpPoisonRecoveryGaugeBar = self.GetChild("HPPoisonRecoveryGaugeBar")
            self.hpPoisonGauge.Hide()
            self.hpPoisonRecoveryGaugeBar.Hide()



AŞAĞIDAKİ KODU BULUN ;



Python:
self.spRecoveryGaugeBar = None



ALTINA EKLEYİN ;



Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
            self.hpPoisonGauge = None
            self.hpPoisonRecoveryGaugeBar = None



AŞAĞIDAKİ KODU BULUN ;


Python:
self.SetHP(curHP, recoveryHP, maxHP)



ALTINA EKLEYİN ;



Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
            if chrmgr.HasAffectByVID(player.GetMainCharacterIndex(), chr.AFFECT_POISON):
                self.hpGauge.Hide()
                self.hpPoisonGauge.Show()
            else:
                self.hpPoisonGauge.Hide()
                self.hpGauge.Show()



AŞAĞIDAKİ KODU BULUN ;



Python:
self.hpGauge.SetPercentage(curPoint, maxPoint)



ALTINA EKLEYİN ;



Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
                self.hpPoisonGauge.SetPercentage(curPoint, maxPoint)



BU FONKSİYONUN İÇİNDE ;



Python:
def SetHP(self, curPoint, recoveryPoint, maxPoint):



BUNU BULUN ;



Python:
if 0 == recoveryPoint:



ALTINA EKLEYİN ;



Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
                        self.hpPoisonRecoveryGaugeBar.Hide()



AŞAĞIDAKİ KODU BULUN ;



Python:
self.hpRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
                self.hpRecoveryGaugeBar.Show()



ÜSTÜNE EKLEYİN ;



Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
                    if chrmgr.HasAffectByVID(player.GetMainCharacterIndex(), chr.AFFECT_POISON):
                        if self.hpRecoveryGaugeBar.IsShow():
                            self.hpRecoveryGaugeBar.Hide()
                        self.hpPoisonRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
                        self.hpPoisonRecoveryGaugeBar.Show()
                        return
                    else:
                        if self.hpPoisonRecoveryGaugeBar.IsShow():
                            self.hpPoisonRecoveryGaugeBar.Hide()



07. GEREKLİ DDS DOSYALARI ; DosyaUpload - VirüsTotal

///// SRC TARAFI

01. locale_inc.h açılır (client\UserInterface) define bölümüne eklenir:



C++:
#define ENABLE_POISON_GAUGE_EFFECT



02. PythonApplicationModule.cpp açılır (client\UserInterface) aşağıdaki kod bulunur:



C++:
#ifdef USE_OPENID
    PyModule_AddIntConstant(poModule, "USE_OPENID",    1);



ÜSTÜNE EKLEYİN ;



C++:
#ifdef ENABLE_POISON_GAUGE_EFFECT
    PyModule_AddIntConstant(poModule, "ENABLE_POISON_GAUGE_EFFECT",    1);
#else
    PyModule_AddIntConstant(poModule, "ENABLE_POISON_GAUGE_EFFECT",    0);
#endif



03. PythonCharacterManagerModule.cpp açılır (client\UserInterface) aşağıdaki kod bulunur:



C++:
void initchrmgr()



ÜSTÜNE EKLEYİN ;



C++:
#ifdef ENABLE_POISON_GAUGE_EFFECT
PyObject * chrmgrHasAffectByVID(PyObject * poSelf, PyObject * poArgs)
{
    int iVID, iAffect;

    if (!PyTuple_GetInteger(poArgs, 0, &iVID))
        return Py_BadArgument();

    if (!PyTuple_GetInteger(poArgs, 1, &iAffect))
        return Py_BadArgument();

    CPythonCharacterManager & rkChrMgr = CPythonCharacterManager::Instance();

    CInstanceBase * p = rkChrMgr.CPythonCharacterManager::GetInstancePtr(iVID);

    if (p)
        return Py_BuildValue("i", p->IsAffect(iAffect));

    return Py_BuildNone();
}
#endif



AŞAĞIDAKİ KODU BULUN ;



C++:
        { NULL,                            NULL,                                    NULL },



ÜSTÜNE EKLEYİN ;



C++:
#ifdef ENABLE_POISON_GAUGE_EFFECT
        { "HasAffectByVID",                chrmgrHasAffectByVID,                    METH_VARARGS },
#endif

Metin2Dev'den Alıntıdır, Anlatım tarafımca Türkçeleştirilmiştir.
Yazar
MT2Dev
Kaynak İndirilme
95
Görüntüleme
614
İlk yayınlama
Son Güncelleme
Değerlendirme
0.00 yıldız(lar) 0 rating

MT2Dev - Kaynakları

Geri
Üst