Casro2 Poison Gauge Sistemi - Python

Whistle

Ruhsuz Filozof
Kurucu
Kurumsal Üye
Geliştirici
Yardımsever Üye
Mesaj
11.495
Çözümler
546
Beğeni
12.045
Puan
5.864
Merhaba arkadaşlar,
Metin2 serverim için kodladığım poison gauge sistemini paylaşmak istiyorum.
Bu sistemi daha önce yapan kişi var lakin kendisi sadece ekran resmi paylaşmış ve bizim forumdan bir kullanıcının sistem hoşuna gittiği için kendisi yapmaya çalışmış ama ne yazık ki sonuca ulaşamadığı için benimle iletişime geçti bende verdiği linkteki ekran görüntüsüne baktım ve sistem hoşuma gitti diyebilirim. En iyisi bu sistemi kodliyim hem paylaşırım hemde kendi serverimde kullanırım dedim.
Giriş kısmını bıraktıysak artık anlatıma geçelim.

Sistem kısaca şöyle;
Casro2 Poison Gauge.jpg


v1;


v2;


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:
Linkleri görebilmek için giriş yap veya kayıt ol.


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 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 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())
        if None == board:
            return

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

        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",
                    ),
                },)

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",
                            ),
                        },


UIScript/PartyMemberInfoBoard.py açın ve en alta şu kodları ekleyin;
Python:
window["children"] = window["children"] + (
        {
            "name" : "PoisonGauge",
            "type" : "gauge",
            "style" : ("not_pick",),

            "x" : 22,
            "y" : 17,
            "width" : 84,
            "color" : "lime",
        },)

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. :)
 

Dosya Eklentileri

  • Poison Gauge Sistemi.zip
    28,9 KB · Gösterim: 191
Son düzenleme:
Bu syserri veriyor

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 ::
 
En son bir moderatör tarafından düzenlenmiş:
uiParty.py dosyasının içindeki yönergeleri düzgün takip ediniz. UpdatePoisonGauge fonksiyonunu uiParty.py içine eklemediğiniz için sistem bulamamış. Konudaki ekteki dosyayı indirerek içindeki anlatımı uygulayabilirsiniz. Orada daha detaylı açıklaması var. ;)
 
uiParty.py dosyasının içindeki yönergeleri düzgün takip ediniz. UpdatePoisonGauge fonksiyonunu uiParty.py içine eklemediğiniz için sistem bulamamış. Konudaki ekteki dosyayı indirerek içindeki anlatımı uygulayabilirsiniz. Orada daha detaylı açıklaması var. ;)
UiParty.py 'ye ekledim ekli olmasına rağmen o hatayı alıyorum :(
 
@Whistle Sistemi sıfırdan mı oluşturdun yoksa alıntı/düzenleme mi ? Eline sağlık bu arada her şekilde emek isteyen bir şey.

Sistem için gerekli olan görsellere kadar sıfırdan kendim yaptım.
Sadece nasıl yapacabileceğimi araştırmak için oyunun dosyalarını biraz kurcaladım.
Zehir efekti bilgisi nereden geliyor, taskbardaki sağlık sistemi nasıl işliyor gibi.
Metin2’ye sıfırdan sistem yazmak için oyunun dosyalarına hakim olmak gerekiyor.

Zaten konu girişinde de kendim yaptığımı bahsettim. ;)

Serverim için daha önce sıfırdan sistemler yazdığım oldu.
Engel sistemi, grup fısıltı, hızlı menü vs. Zamanla tecrübe kazandığım için zor olmadı yapması. :)

Kısacası fikri bana ait değil ama %100 yerli yapım. :D
 
Son düzenleme:
Sistem için gerekli olan görsellere kadar sıfırdan kendim yaptım.
Sadece nasıl yapacabileceğimi araştırmak için oyunun dosyalarını biraz kurcaladım.
Zehir efekti bilgisi nereden geliyor, taskbardaki sağlık sistemi nasıl işliyor gibi.
Metin2’ye sıfırdan sistem yazmak için oyunun dosyalarına hakim olmak gerekiyor.

Zaten konu girişinde de kendim yaptığımı bahsettim. ;)

Serverim için daha önce sıfırdan sistemler yazdığım oldu.
Engel sistemi, grup fısıltı, hızlı menü vs. Zamanla tecrübe kazandığım için zor olmadı yapması. :)

Kısacası fikri bana ait değil ama %100 yerli yapım. :D
Whistle diye yazılır ADAM DİYE OKUNUR :)
 
Sistem için gerekli olan görsellere kadar sıfırdan kendim yaptım.
Sadece nasıl yapacabileceğimi araştırmak için oyunun dosyalarını biraz kurcaladım.
Zehir efekti bilgisi nereden geliyor, taskbardaki sağlık sistemi nasıl işliyor gibi.
Metin2’ye sıfırdan sistem yazmak için oyunun dosyalarına hakim olmak gerekiyor.

Zaten konu girişinde de kendim yaptığımı bahsettim. ;)

Serverim için daha önce sıfırdan sistemler yazdığım oldu.
Engel sistemi, grup fısıltı, hızlı menü vs. Zamanla tecrübe kazandığım için zor olmadı yapması. :)

Kısacası fikri bana ait değil ama %100 yerli yapım. :D
Çok faydalı olmuş sonuçta emek isteyen bir şey. Şunun için sordum senden sonra başka foruma paylaşmışlar alıntı bile demeden insanlar tuhaf :) Diğer sistemlerini biliyordum buda bir o kadar güzel olmuş :) Eline sağlık tekrardan.
 
Çok faydalı olmuş sonuçta emek isteyen bir şey. Şunun için sordum senden sonra başka foruma paylaşmışlar alıntı bile demeden insanlar tuhaf :) Diğer sistemlerini biliyordum buda bir o kadar güzel olmuş :) Eline sağlık tekrardan.

Şimdi baktım paylaşılmış mı diye dediğiniz siteyi buldum. Paylaşmalarında sakınca yok tabiki de ama alıntı dememeleri ve dosya içinde sistemin kimin tarafından yazıldığı bilgileri bile silerek paylaşılması terbiyesizlikten başka bir şey değil.
Başkalarının emeği üzerinden prim kasan kişilere saygım hiçbir zaman olmaz. Neyse ki yaptığım bir şeyin bu kadar kısa sürede yayılıp beğenilmesi hoşuma gitti.
Zaten sistem ufak bir sistem. Python ile haşır neşir olan herkes yapabilir.

UiParty.py 'ye ekledim ekli olmasına rağmen o hatayı alıyorum :(
Atladığınız yerler var. Sırasıyla ekleyiniz. :) Tab ayalarına da dikkat ediniz. Tab hatası da olmuş olabilir.

Konu güncellemesi;
Github bağlantısı ve youtube videosu konuya eklenmiştir.
İleride sistemde yapılan güncellemelerde nelerin değiştiğini github üzerinden kolaylıkla tespit edebilirsiniz.
 
Son düzenleme:
Şimdi baktım paylaşılmış mı diye dediğiniz siteyi buldum. Paylaşmalarında sakınca yok tabiki de ama alıntı dememeleri ve dosya içinde sistemin kimin tarafından yazıldığı bilgileri bile silerek paylaşılması terbiyesizlikten başka bir şey değil.
Başkalarının emeği üzerinden prim kasan kişilere saygım hiçbir zaman olmaz. Neyse ki yaptığım bir şeyin bu kadar kısa sürede yayılıp beğenilmesi hoşuma gitti.
Zaten sistem ufak bir sistem. Python ile haşır neşir olan herkes yapabilir.


Atladığınız yerler var. Sırasıyla ekleyiniz. :) Tab ayalarına da dikkat ediniz. Tab hatası da olmuş olabilir.

Konu güncellemesi;
Github bağlantısı ve youtube videosu konuya eklenmiştir.
İleride sistemde yapılan güncellemelerde nelerin değiştiğini github üzerinden kolaylıkla tespit edebilirsiniz.
Bende buna istinaden şüphe duydum sana bildirmek istedim teyit ederek tabi ki. :)
 
UiParty.py 'ye ekledim ekli olmasına rağmen o hatayı alıyorum :(
konuda locale/tr/ui/taskbar.py için verdiğim kodları silip aşağıdaki yönergeleri uygular mısın?

tasbar.py dosyasında arat;
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 ekle;
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",
                            ),
                        },
 
Son düzenleme:
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 ::

Karakter partide olmadığı zaman yukarıdaki gibi syserr girdisi veriyor bunun sebebi aşağıda vereceğim iki fonksiyon içinde board değişkenine tanımlanan şeyin kontrolünü yapmadığım için bu sorun meydana geliyor. Düzeltmek için;

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)
 
Sistem Güncellemesi 2;
Yetenekler sonucu sistemde olusan bug.jpg

Geri bildirimlerde böyle bi sorun olduğu bildirilmişti bende kontrol ettiğimde böyle bi sorunun gerçek olduğunu tespit ettim ve bu sorunu çözmek içinde şunları yapmalısınız;

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()

Bunları uyguladıktan sonra artık yetenekler sonucu barların yeşile dönme sorunu çözülmüş olacaktır.

Çözüldüğü ile ilgili kanıt;
Yetenekler sonucu olusan sorunu cozum kanıtı.jpg


Sistemin sorunlarını bildiren herkese teşekkür ederim. Gördüğünüz sorunlar olursa bildirmekten çekinmeyin. :)
 
Kod:
0519 17:15:13868 :: CMapOutdoor::Load - LoadMonsterAreaInfo ERROR

0519 17:16:19435 ::

uiParty.py(line:105) __LoadBoard

ui.py(line:2708) GetChild


PartyMemberInfoBoard.__LoadBoard.BindObject - <type 'exceptions.KeyError'>:'PoisonGauge'


0519 17:16:19435 :: ============================================================================================================

0519 17:16:19435 :: Abort!!!!


Grup kurarken bu syserr veriyor.


Kod:
self.poisonGauge = self.GetChild("PoisonGauge")


Bunu Silince oyun açılıyor fakat can barı hem yeşil hem grup kurulmuyor.
 
Kod:
0519 17:15:13868 :: CMapOutdoor::Load - LoadMonsterAreaInfo ERROR

0519 17:16:19435 ::

uiParty.py(line:105) __LoadBoard

ui.py(line:2708) GetChild


PartyMemberInfoBoard.__LoadBoard.BindObject - <type 'exceptions.KeyError'>:'PoisonGauge'


0519 17:16:19435 :: ============================================================================================================

0519 17:16:19435 :: Abort!!!!


Grup kurarken bu syserr veriyor.


Kod:
self.poisonGauge = self.GetChild("PoisonGauge")


Bunu Silince oyun açılıyor fakat can barı hem yeşil hem grup kurulmuyor.
locale_tr/tr/ui/taskbar.py dosyasına uiscript kodlarını eklediniz mi? Hataya göre böyle bi script kodunu bulamıyor. Lütfen sistemi tekrardan kontrol ederek kodları ekleyiniz. :)
 
Sistem Güncellemesi 2;
1632 eklentisini görüntüle
Geri bildirimlerde böyle bi sorun olduğu bildirilmişti bende kontrol ettiğimde böyle bi sorunun gerçek olduğunu tespit ettim ve bu sorunu çözmek içinde şunları yapmalısınız;

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()

Bunları uyguladıktan sonra artık yetenekler sonucu barların yeşile dönme sorunu çözülmüş olacaktır.

Çözüldüğü ile ilgili kanıt;
1634 eklentisini görüntüle

Sistemin sorunlarını bildiren herkese teşekkür ederim. Gördüğünüz sorunlar olursa bildirmekten çekinmeyin. :)

My friend
I have this problem now
I do not know what the solution is
I tried hard to do it but I could not
 
Geri
Üst