InfernoShade 1
InfernoShade
Fethi Polat 1
Fethi Polat
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
shrpnl 1
shrpnl
YusufŞimşek14 1
YusufŞimşek14
berzahx 2
berzahx
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Casro2 Poison Gauge Sistemi

Whistlee

Level 2
TC Kimlik Numarası Doğrulanmış Üye
Üye
Katılım
5 Nis 2019
Konular
2
Mesajlar
52
Çözüm
1
Reaksiyon Skoru
76
Altın Konu
0
Başarım Puanı
73
MmoLira
910
DevLira
3
Ticaret - 0%
0   0   0

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!

Konuya başlamadan önce;
Bu sistemi baya bi bir zamandır bir arkadaşım isteği üzerine kodluyordum. Sistemin son halini de çarşamba gecesi de kendi sitemden paylaştım lakin sitemdeki bana gelen bildirimde izinsiz bir şekilde sistemin paylaşıldığı bilgisini aldım. Arkadaşlar ben her zaman özgür yazılıma inanan birisiyim ama bir şey paylaşıyorsanız en azından kimin tarafından yapıldığını belirtmek zorundasınız. Bu hususta bu linkte yapılan paylaşımı https://forum.turkmmo.com/konu/3689867-poison-gauge-system/ forum yetkililerine bildirdim. Ve bir daha böyle bi terbiyesizlik olmasın diye bu sitede de paylaşma kararı aldım.

Sistem kısaca şöyle;
casro2-poison-gauge-jpg.1621


geliştirilme aşamasındaki video;


Son aşamadaki video;


Konu içinden de anlatımını yapacağım lakin ekteki dosyayı indirerek anlatımları içinde bulabilirsiniz.

Github üzerinden kodlara erişmek için:

Not: İşlemleri yapmadan önce yedek almanızı öneririm. Bu sistemi kodlarken bulabildiğim sorunları çözdüm. Bilinmeyen bir sorun oluştuğu zaman konu altından belirtirseniz seve seve düzenlerim.

Not2: Sistem sadece Python üzerinden yapıldığı için Source dosyalarına ihtiyacınız yok!

Sırasıyla şu işlemleri uygulayınız;
Root/game.py
dosyasını açın ve şu kodları aratın;
Python:
    def BINARY_NEW_AddAffect(self, type, pointIdx, value, duration):
        self.affectShower.BINARY_NEW_AddAffect(type, pointIdx, value, duration)
        if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
            self.interface.DragonSoulActivate(type - chr.NEW_AFFECT_DRAGON_SOUL_DECK1)
        elif chr.NEW_AFFECT_DRAGON_SOUL_QUALIFIED == type:
            self.BINARY_DragonSoulGiveQuilification()

Altına şu kodları ekleyin;
Python:
        elif chr.AFFECT_POISON == type or 209 == type:
            self.playerGauge.RefreshGuageColor("lime")
            self.interface.HPPoisonEffectShow()
            self.interface.PartyPoisonGuageShow()


Aynı dosyada şu kodu aratın;
Python:
    def BINARY_NEW_RemoveAffect(self, type, pointIdx):
        self.affectShower.BINARY_NEW_RemoveAffect(type, pointIdx)
        if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
            self.interface.DragonSoulDeactivate()

Altına şu kodları ekleyin;
Python:
        elif chr.AFFECT_POISON == type or 209 == type:
            self.playerGauge.RefreshGuageColor("red")
            self.interface.HPPoisonEffectHide()
            self.interface.PartyPoisonGuageHide()


Root/interfaceModule.py dosyasını açın ve şu kodları aratın;
Python:
    def RefreshStamina(self):
        self.wndTaskBar.RefreshStamina()

Altına şu kodları ekleyin;
Python:
    def HPPoisonEffectShow(self):
        self.wndTaskBar.HPPoisonEffectShow()

    def HPPoisonEffectHide(self):
        self.wndTaskBar.HPPoisonEffectHide()


Aynı dosyada şu kodları aratın;
Python:
    def ChangePartyParameter(self, distributionMode):
        self.wndParty.ChangePartyParameter(distributionMode)

Altına şu kodları ekleyin;
Python:
    def PartyPoisonGuageShow(self):
        self.wndParty.PartyPoisonGuageShow()

    def PartyPoisonGuageHide(self):
        self.wndParty.PartyPoisonGuageHide()


Root/uiParty.py dosyasını açın ve PartyMemberInfoBoard sınıfı içindeki şu kodları aratın;
Python:
    def __init__(self):
        ui.ScriptWindow.__init__(self)

        self.pid = None
        self.vid = None

Altına şu kodu ekleyin;
Python:
        self.poison = 0


Aynı dosyada şu kodu aratın;
Python:
            self.gauge = self.GetChild("Gauge")

Altına şu kodu ekleyin;
Python:
            self.poisonGauge = self.GetChild("PoisonGauge")


Aynı dosyada PartyMemberInfoBoard sınıfı içindeki __LoadBoard() fonksiyonu içindeki şu kodları aratın;
Python:
        self.__SetAffectsMouseEvent()
        self.__HideAllAffects()

Altına şu kodu ekleyin;
Python:
        self.poisonGauge.Hide()


Aynı dosyada şu kodları aratın;
Python:
    def SetCharacterHP(self, hpPercentage):
        hpPercentage = max(0, hpPercentage)
        self.gauge.SetPercentage(hpPercentage, 100)

Altına şu kodları ekleyin;
Python:
        self.poisonGauge.SetPercentage(hpPercentage, 100)

    def UpdatePoisonGauge(self, arg):
        self.poison = arg
        if self.poison == 1:
            if self.gauge.IsShow():
                self.gauge.Hide()
            self.poisonGauge.Show()
        else:
            if self.poisonGauge.IsShow():
                self.poisonGauge.Hide()
            self.gauge.Show()


Aynı dosyada şu kodları aratın;
Python:
    def Unlink(self):
        self.vid = None
        self.nameTextLine.SetPackedFontColor(self.UNLINK_COLOR)
        self.gauge.Hide()

Altına şu kodları ekleyin;
Python:
        self.poisonGauge.Hide()


Aynı dosyada şu kodları aratın;
Python:
    def __FindPartyMemberInfoBoardByPID(self, pid):
        for board in self.partyMemberInfoBoardList:
            if pid == board.GetCharacterPID():
                return board

        return None

Altına şu kodları ekleyin;
Python:
    def __FindPartyMemberInfoBoardByName(self, name):
        for board in self.partyMemberInfoBoardList:
            if name == board.GetCharacterName():
                return board

        return None


Aynı dosyada şu kodları aratın;
Python:
    def ChangePartyParameter(self, distributionMode):
        self.partyMenu.ChangePartyParameter(distributionMode)

Altına şu kodları ekleyin;
Python:
    def PartyPoisonGuageShow(self):
        board = self.__FindPartyMemberInfoBoardByName(player.GetName())
        board.UpdatePoisonGauge(1)

    def PartyPoisonGuageHide(self):
        board = self.__FindPartyMemberInfoBoardByName(player.GetName())
        board.UpdatePoisonGauge(0)


Root/uiPlayerGauge.py dosyasını açın ve şu kodları aratın;
Python:
    def DisableShowAlways(self):
        self.showAlways = False
        self.RefreshGauge()

Altına şu kodları ekleyin;
Python:
    def RefreshGuageColor(self, color):
        self.MakeGauge(100, color)


Root/uiTaskbar.py dosyasını açın ve şu kodları aratın;
Python:
        self.mouseModeButtonList = [ ui.ScriptWindow("TOP_MOST"), ui.ScriptWindow("TOP_MOST") ]

Altına şu kodu ekleyin;
Python:
        self.poisonEffect = 0


Aynı dosyada şu kodu aratın;
Python:
        self.spRecoveryGaugeBar = self.GetChild("SPRecoveryGaugeBar")

Altına şu kodları ekleyin;
Python:
        self.hpPoisonGauge = self.GetChild("HPPoisonGauge")
        self.hpPoisonRecoveryGaugeBar = self.GetChild("HPPoisonRecoveryGaugeBar")

        self.hpPoisonGauge.Hide()
        self.hpPoisonRecoveryGaugeBar.Hide()


Aynı dosyada şu kodu aratın;
Python:
        self.spRecoveryGaugeBar = None

Altına şu kodları ekleyin;
Python:
        self.hpPoisonGauge = None
        self.hpPoisonRecoveryGaugeBar = None
        self.poisonEffect = 0


Aynı dosyada şu kodları aratın;
Python:
    def RefreshSkill(self):
        self.curSkillButton.RefreshSkill()
        for button in self.selectSkillButtonList:
            button.RefreshSkill()

Altına şu kodları ekleyin;
Python:
    def HPPoisonEffectShow(self):
        self.poisonEffect = 1
        self.hpGauge.Hide()
        self.hpPoisonGauge.Show()

    def HPPoisonEffectHide(self):
        self.poisonEffect = 0
        self.hpPoisonGauge.Hide()
        self.hpGauge.Show()


Aynı dosyada şu kodları aratın;
Python:
    def SetHP(self, curPoint, recoveryPoint, maxPoint):
        curPoint = min(curPoint, maxPoint)
        if maxPoint > 0:
            self.hpGauge.SetPercentage(curPoint, maxPoint)
            self.tooltipHP.SetText("%s : %d / %d" % (localeInfo.TASKBAR_HP, curPoint, maxPoint))

            if 0 == recoveryPoint:
                self.hpRecoveryGaugeBar.Hide()
            else:
                destPoint = min(maxPoint, curPoint + recoveryPoint)
                newWidth = int(self.GAUGE_WIDTH * (float(destPoint) / float(maxPoint)))
                self.hpRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
                self.hpRecoveryGaugeBar.Show()

Aşağıdaki kodlarla değiştiriniz;
Python:
    def SetHP(self, curPoint, recoveryPoint, maxPoint):
        curPoint = min(curPoint, maxPoint)
        if maxPoint > 0:
            self.hpGauge.SetPercentage(curPoint, maxPoint)
            self.hpPoisonGauge.SetPercentage(curPoint, maxPoint)
            self.tooltipHP.SetText("%s : %d / %d" % (localeInfo.TASKBAR_HP, curPoint, maxPoint))

            if 0 == recoveryPoint:
                self.hpRecoveryGaugeBar.Hide()
                self.hpPoisonRecoveryGaugeBar.Hide()
            else:
                destPoint = min(maxPoint, curPoint + recoveryPoint)
                newWidth = int(self.GAUGE_WIDTH * (float(destPoint) / float(maxPoint)))

                if self.poisonEffect == 0:
                    if self.hpPoisonRecoveryGaugeBar.IsShow():
                        self.hpPoisonRecoveryGaugeBar.Hide()
                    self.hpRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
                    self.hpRecoveryGaugeBar.Show()
                else:
                    if self.hpRecoveryGaugeBar.IsShow():
                        self.hpRecoveryGaugeBar.Hide()
                    self.hpPoisonRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
                    self.hpPoisonRecoveryGaugeBar.Show()


Evet arkadaşlar root kısmı bu kadar.
Şimdi uiscript kısmına geçelim.

Not: Lakin burada önemli bir nokta var. uiTasbar.py dosyasında taskbar.py dosyasını locale dosyası üzerinden çektiği için uiscript içindeki taskbar.py yerine locale/tr/ui içindekini düzenlemelisiniz eğer sizin uiTaskbar.py dosyanızda uiscript packından çekiyorsa oradaki dosyayı düzenleyin.

UIScript/taskbar.py veya locale/xx/ui/taskbar.py dosyasını açın ve en alta şu kodları ekleyin;
Python:
window["children"][1]["children"][2]["children"] = window["children"][1]["children"][2]["children"] + (
                {
                    "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",
                    ),
                },)

@sau feng tarafından bildirilen bir sorunun çözümü. Çözüm için teşekkürler.
Not: Yukarıdaki uiscript kodu bazı filesler uyumsuz olduğu için şu hatayı alıyorsanız;
Kod:
0404 20:35:20028 ::   File "game.py", line 766, in BINARY_NEW_AddAffect
0404 20:35:20028 ::   File "interfaceModule.py", line 729, in PartyPoisonGuageShow
0404 20:35:20028 ::   File "uiParty.py", line 758, in PartyPoisonGuageShow
0404 20:35:20029 :: AttributeError
0404 20:35:20029 :: :
0404 20:35:20029 :: 'NoneType' object has no attribute 'UpdatePoisonGauge'
0404 20:35:20029 ::

Şu kodları aratın;
Python:
                        {
                            "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",
                            ),
                        },

Altına ekleyin;
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",
                            ),
                        },

Sistem güncellemesi;
Kod:
0510 12:58:36544 ::   File "game.py", line 772, in BINARY_NEW_RemoveAffect

0510 12:58:36545 ::   File "interfaceModule.py", line 746, in PartyPoisonGuageHide

0510 12:58:36545 ::   File "uiParty.py", line 763, in PartyPoisonGuageHide

0510 12:58:36546 :: AttributeError
0510 12:58:36546 :: :
0510 12:58:36547 :: 'NoneType' object has no attribute 'UpdatePoisonGauge'
0510 12:58:36548 ::

Yukarıdaki gibi syserr hatası alanlar şu düzenlemeleri yaparsa sorunu çözülecektir;

Root/uiParty.py dosyasını açın ve şu kodları aratın;
Python:
    def PartyPoisonGuageShow(self):
        board = self.__FindPartyMemberInfoBoardByName(player.GetName())
        board.UpdatePoisonGauge(1)
  
    def PartyPoisonGuageHide(self):
        board = self.__FindPartyMemberInfoBoardByName(player.GetName())
        board.UpdatePoisonGauge(0)

Aşağıdaki kodlarla değiştirin;
Python:
    def PartyPoisonGuageShow(self):
        board = self.__FindPartyMemberInfoBoardByName(player.GetName())
        if None == board:
            return

        board.UpdatePoisonGauge(1)
  
    def PartyPoisonGuageHide(self):
        board = self.__FindPartyMemberInfoBoardByName(player.GetName())
        if None == board:
            return

        board.UpdatePoisonGauge(0)
Geri bildirim için teşekkür ederim. Söylediklerinizi kontrol ettikten sonra böyle bi sorunun olduğunu doğrulayabildim;
yetenekler-sonucu-sistemde-olusan-bug-jpg.1632

Çözümü için şunları uygulayın;
Root/game.py dosyasını açın ve aşağıdaki kodları aratın;
Python:
        elif chr.AFFECT_POISON == type or 209 == type:
            self.playerGauge.RefreshGuageColor("lime")
            self.interface.HPPoisonEffectShow()
            self.interface.PartyPoisonGuageShow()

Yukarıdaki kodları şu kodlarla değiştiriniz;
Python:
        elif 209 == type:
            self.playerGauge.RefreshGuageColor("lime")
            self.interface.HPPoisonEffectShow()
            self.interface.PartyPoisonGuageShow()

Aynı dosyada şu kodları aratın;
Python:
        elif chr.AFFECT_POISON == type or 209 == type:
            self.playerGauge.RefreshGuageColor("red")
            self.interface.HPPoisonEffectHide()
            self.interface.PartyPoisonGuageHide()

Yukarıdaki kodları şu kodlarla değiştiriniz;
Python:
        elif 209 == type:
            self.playerGauge.RefreshGuageColor("red")
            self.interface.HPPoisonEffectHide()
            self.interface.PartyPoisonGuageHide()

Çözüldüğü ile ilgili kanıt;
yetenekler-sonucu-olusan-sorunu-cozum-kaniti-jpg.1634


Evet arkadaşlar sistem bu şekildedir. Anlayabilmeniz için hazır kod vermiyorum.
Sistem için gerekli görseller ekteki dosyayı indirerek edinebilirsiniz.
Bu yüzden ekten verdiğim dosyayı indirip Client/ETC içindeki ymir work klasörünü oyununuzun ETC içine atın.

Not: Ekteki dosyanın içinde de anlatım mevcuttur. Konuda kodları eklerken tab ayarlarını filan düzgün yaptım. Gene de emin olmak için ekteki dosyanın anlatımını da kullanabilirsiniz.

Şimdiden herkese hayırlı olsun. :)

Burada diğer forum sitelerin bağlantısının paylaşılması yasak olduğu için dosyayı şuraya yükledim;

Virüs total:
 
Son düzenleme:

En Çok Reaksiyon Alan Mesajlar

Teşekkürler.
 
Eline sağlık. Mantıklı olmuş.
 
Konuya başlamadan önce;
Bu sistemi baya bi bir zamandır bir arkadaşım isteği üzerine kodluyordum. Sistemin son halini de çarşamba gecesi de kendi sitemden paylaştım lakin sitemdeki bana gelen bildirimde izinsiz bir şekilde sistemin paylaşıldığı bilgisini aldım. Arkadaşlar ben her zaman özgür yazılıma inanan birisiyim ama bir şey paylaşıyorsanız en azından kimin tarafından yapıldığını belirtmek zorundasınız. Bu hususta bu linkte yapılan paylaşımı https://forum.turkmmo.com/konu/3689867-poison-gauge-system/ forum yetkililerine bildirdim. Ve bir daha böyle bi terbiyesizlik olmasın diye bu sitede de paylaşma kararı aldım.

Sistem kısaca şöyle;
casro2-poison-gauge-jpg.1621




Konu içinden de anlatımını yapacağım lakin ekteki dosyayı indirerek anlatımları içinde bulabilirsiniz.

Github üzerinden kodlara erişmek için:

Not: İşlemleri yapmadan önce yedek almanızı öneririm. Bu sistemi kodlarken bulabildiğim sorunları çözdüm. Bilinmeyen bir sorun oluştuğu zaman konu altından belirtirseniz seve seve düzenlerim.

Not2: Sistem sadece Python üzerinden yapıldığı için Source dosyalarına ihtiyacınız yok!

Sırasıyla şu işlemleri uygulayınız;
Root/game.py
dosyasını açın ve şu kodları aratın;
Python:
    def BINARY_NEW_AddAffect(self, type, pointIdx, value, duration):
        self.affectShower.BINARY_NEW_AddAffect(type, pointIdx, value, duration)
        if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
            self.interface.DragonSoulActivate(type - chr.NEW_AFFECT_DRAGON_SOUL_DECK1)
        elif chr.NEW_AFFECT_DRAGON_SOUL_QUALIFIED == type:
            self.BINARY_DragonSoulGiveQuilification()

Altına şu kodları ekleyin;
Python:
        elif chr.AFFECT_POISON == type or 209 == type:
            self.playerGauge.RefreshGuageColor("lime")
            self.interface.HPPoisonEffectShow()
            self.interface.PartyPoisonGuageShow()


Aynı dosyada şu kodu aratın;
Python:
    def BINARY_NEW_RemoveAffect(self, type, pointIdx):
        self.affectShower.BINARY_NEW_RemoveAffect(type, pointIdx)
        if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
            self.interface.DragonSoulDeactivate()

Altına şu kodları ekleyin;
Python:
        elif chr.AFFECT_POISON == type or 209 == type:
            self.playerGauge.RefreshGuageColor("red")
            self.interface.HPPoisonEffectHide()
            self.interface.PartyPoisonGuageHide()


Root/interfaceModule.py dosyasını açın ve şu kodları aratın;
Python:
    def RefreshStamina(self):
        self.wndTaskBar.RefreshStamina()

Altına şu kodları ekleyin;
Python:
    def HPPoisonEffectShow(self):
        self.wndTaskBar.HPPoisonEffectShow()

    def HPPoisonEffectHide(self):
        self.wndTaskBar.HPPoisonEffectHide()


Aynı dosyada şu kodları aratın;
Python:
    def ChangePartyParameter(self, distributionMode):
        self.wndParty.ChangePartyParameter(distributionMode)

Altına şu kodları ekleyin;
Python:
    def PartyPoisonGuageShow(self):
        self.wndParty.PartyPoisonGuageShow()

    def PartyPoisonGuageHide(self):
        self.wndParty.PartyPoisonGuageHide()


Root/uiParty.py dosyasını açın ve PartyMemberInfoBoard sınıfı içindeki şu kodları aratın;
Python:
    def __init__(self):
        ui.ScriptWindow.__init__(self)

        self.pid = None
        self.vid = None

Altına şu kodu ekleyin;
Python:
        self.poison = 0


Aynı dosyada şu kodu aratın;
Python:
            self.gauge = self.GetChild("Gauge")

Altına şu kodu ekleyin;
Python:
            self.poisonGauge = self.GetChild("PoisonGauge")


Aynı dosyada PartyMemberInfoBoard sınıfı içindeki __LoadBoard() fonksiyonu içindeki şu kodları aratın;
Python:
        self.__SetAffectsMouseEvent()
        self.__HideAllAffects()

Altına şu kodu ekleyin;
Python:
        self.poisonGauge.Hide()


Aynı dosyada şu kodları aratın;
Python:
    def SetCharacterHP(self, hpPercentage):
        hpPercentage = max(0, hpPercentage)
        self.gauge.SetPercentage(hpPercentage, 100)

Altına şu kodları ekleyin;
Python:
        self.poisonGauge.SetPercentage(hpPercentage, 100)

    def UpdatePoisonGauge(self, arg):
        self.poison = arg
        if self.poison == 1:
            if self.gauge.IsShow():
                self.gauge.Hide()
            self.poisonGauge.Show()
        else:
            if self.poisonGauge.IsShow():
                self.poisonGauge.Hide()
            self.gauge.Show()


Aynı dosyada şu kodları aratın;
Python:
    def Unlink(self):
        self.vid = None
        self.nameTextLine.SetPackedFontColor(self.UNLINK_COLOR)
        self.gauge.Hide()

Altına şu kodları ekleyin;
Python:
        self.poisonGauge.Hide()


Aynı dosyada şu kodları aratın;
Python:
    def __FindPartyMemberInfoBoardByPID(self, pid):
        for board in self.partyMemberInfoBoardList:
            if pid == board.GetCharacterPID():
                return board

        return None

Altına şu kodları ekleyin;
Python:
    def __FindPartyMemberInfoBoardByName(self, name):
        for board in self.partyMemberInfoBoardList:
            if name == board.GetCharacterName():
                return board

        return None


Aynı dosyada şu kodları aratın;
Python:
    def ChangePartyParameter(self, distributionMode):
        self.partyMenu.ChangePartyParameter(distributionMode)

Altına şu kodları ekleyin;
Python:
    def PartyPoisonGuageShow(self):
        board = self.__FindPartyMemberInfoBoardByName(player.GetName())
        board.UpdatePoisonGauge(1)

    def PartyPoisonGuageHide(self):
        board = self.__FindPartyMemberInfoBoardByName(player.GetName())
        board.UpdatePoisonGauge(0)


Root/uiPlayerGauge.py dosyasını açın ve şu kodları aratın;
Python:
    def DisableShowAlways(self):
        self.showAlways = False
        self.RefreshGauge()

Altına şu kodları ekleyin;
Python:
    def RefreshGuageColor(self, color):
        self.MakeGauge(100, color)


Root/uiTaskbar.py dosyasını açın ve şu kodları aratın;
Python:
        self.mouseModeButtonList = [ ui.ScriptWindow("TOP_MOST"), ui.ScriptWindow("TOP_MOST") ]

Altına şu kodu ekleyin;
Python:
        self.poisonEffect = 0


Aynı dosyada şu kodu aratın;
Python:
        self.spRecoveryGaugeBar = self.GetChild("SPRecoveryGaugeBar")

Altına şu kodları ekleyin;
Python:
        self.hpPoisonGauge = self.GetChild("HPPoisonGauge")
        self.hpPoisonRecoveryGaugeBar = self.GetChild("HPPoisonRecoveryGaugeBar")

        self.hpPoisonGauge.Hide()
        self.hpPoisonRecoveryGaugeBar.Hide()


Aynı dosyada şu kodu aratın;
Python:
        self.spRecoveryGaugeBar = None

Altına şu kodları ekleyin;
Python:
        self.hpPoisonGauge = None
        self.hpPoisonRecoveryGaugeBar = None
        self.poisonEffect = 0


Aynı dosyada şu kodları aratın;
Python:
    def RefreshSkill(self):
        self.curSkillButton.RefreshSkill()
        for button in self.selectSkillButtonList:
            button.RefreshSkill()

Altına şu kodları ekleyin;
Python:
    def HPPoisonEffectShow(self):
        self.poisonEffect = 1
        self.hpGauge.Hide()
        self.hpPoisonGauge.Show()

    def HPPoisonEffectHide(self):
        self.poisonEffect = 0
        self.hpPoisonGauge.Hide()
        self.hpGauge.Show()


Aynı dosyada şu kodları aratın;
Python:
    def SetHP(self, curPoint, recoveryPoint, maxPoint):
        curPoint = min(curPoint, maxPoint)
        if maxPoint > 0:
            self.hpGauge.SetPercentage(curPoint, maxPoint)
            self.tooltipHP.SetText("%s : %d / %d" % (localeInfo.TASKBAR_HP, curPoint, maxPoint))

            if 0 == recoveryPoint:
                self.hpRecoveryGaugeBar.Hide()
            else:
                destPoint = min(maxPoint, curPoint + recoveryPoint)
                newWidth = int(self.GAUGE_WIDTH * (float(destPoint) / float(maxPoint)))
                self.hpRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
                self.hpRecoveryGaugeBar.Show()

Aşağıdaki kodlarla değiştiriniz;
Python:
    def SetHP(self, curPoint, recoveryPoint, maxPoint):
        curPoint = min(curPoint, maxPoint)
        if maxPoint > 0:
            self.hpGauge.SetPercentage(curPoint, maxPoint)
            self.hpPoisonGauge.SetPercentage(curPoint, maxPoint)
            self.tooltipHP.SetText("%s : %d / %d" % (localeInfo.TASKBAR_HP, curPoint, maxPoint))

            if 0 == recoveryPoint:
                self.hpRecoveryGaugeBar.Hide()
                self.hpPoisonRecoveryGaugeBar.Hide()
            else:
                destPoint = min(maxPoint, curPoint + recoveryPoint)
                newWidth = int(self.GAUGE_WIDTH * (float(destPoint) / float(maxPoint)))

                if self.poisonEffect == 0:
                    if self.hpPoisonRecoveryGaugeBar.IsShow():
                        self.hpPoisonRecoveryGaugeBar.Hide()
                    self.hpRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
                    self.hpRecoveryGaugeBar.Show()
                else:
                    if self.hpRecoveryGaugeBar.IsShow():
                        self.hpRecoveryGaugeBar.Hide()
                    self.hpPoisonRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
                    self.hpPoisonRecoveryGaugeBar.Show()


Evet arkadaşlar root kısmı bu kadar.
Şimdi uiscript kısmına geçelim.

Not: Lakin burada önemli bir nokta var. uiTasbar.py dosyasında taskbar.py dosyasını locale dosyası üzerinden çektiği için uiscript içindeki taskbar.py yerine locale/tr/ui içindekini düzenlemelisiniz eğer sizin uiTaskbar.py dosyanızda uiscript packından çekiyorsa oradaki dosyayı düzenleyin.

UIScript/taskbar.py veya locale/xx/ui/taskbar.py dosyasını açın ve en alta şu kodları ekleyin;
Python:
window["children"][1]["children"][2]["children"] = window["children"][1]["children"][2]["children"] + (
                {
                    "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",
                    ),
                },)


Evet arkadaşlar sistem bu şekildedir. Anlayabilmeniz için hazır kod vermiyorum.
Sistem için gerekli görseller ekteki dosyayı indirerek edinebilirsiniz.
Bu yüzden ekten verdiğim dosyayı indirip Client/ETC içindeki ymir work klasörünü oyununuzun ETC içine atın.

Not: Ekteki dosyanın içinde de anlatım mevcuttur. Konuda kodları eklerken tab ayarlarını filan düzgün yaptım. Gene de emin olmak için ekteki dosyanın anlatımını da kullanabilirsiniz.

Şimdiden herkese hayırlı olsun. :)

Burada diğer forum sitelerin bağlantısının paylaşılması yasak olduğu için dosyayı şuraya yükledim;

Teşekkürler
 

Paylaşım için teşekkürler.
terbiyesizlerin kusuruna bakmayınız hayırlı forumlar.
 

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

Geri
Üst