Casro2 Poison Gauge Sistemi - Python | MMO Tutkunları
  1. Bu site çerezler kullanır. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz. Daha Fazla Bilgi.
  2. Merhaba Ziyaretçi,
    Henüz sitemize üye girişi yapmadınız. Sitemizden tam anlamıyla yararlanabilmeniz için sitemize üye olmanız gerekmektedir. Eğer sitemize daha önceden üye olduysanız, buradan giriş yapabilirsiniz. Sitemize üye değilseniz buraya tıklayarak üye olabilirsiniz.

    Duyuruyu Kapat
  3. Merhaba Ziyaretçi, Usta üye alımında bazı maddeler değişti. Sizde güncel halini okumak istiyorsanız buraya tıklayabilirsiniz.
    Duyuruyu Kapat

Casro2 Poison Gauge Sistemi - Python

'C++ / C# / Python' forumunda Whistle tarafından 3 Nisan 2019 tarihinde açılan konu

  1. Whistle

    Whistle Sarhoş Filozof Site Yetkilisi Admin Casro2 (Metin2) GM Casro2 (Metin2) Destek

    4.995
    1.126
    1.971
    30 Ekim 2011
    Erkek
    Öğrenci
    Samsun
    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 İçin Üye Olmanız Gerekmektedir. Üye Olmak İçin Tıklayınız...

    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;
    Kod (Python):
    1.     def BINARY_NEW_AddAffect(self, type, pointIdx, value, duration):
    2.         self.affectShower.BINARY_NEW_AddAffect(type, pointIdx, value, duration)
    3.         if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
    4.             self.interface.DragonSoulActivate(type - chr.NEW_AFFECT_DRAGON_SOUL_DECK1)
    5.         elif chr.NEW_AFFECT_DRAGON_SOUL_QUALIFIED == type:
    6.             self.BINARY_DragonSoulGiveQuilification()
    Altına şu kodları ekleyin;
    Kod (Python):
    1.         elif 209 == type:
    2.             self.playerGauge.RefreshGuageColor("lime")
    3.             self.interface.HPPoisonEffectShow()
    4.             self.interface.PartyPoisonGuageShow()

    Aynı dosyada şu kodu aratın;
    Kod (Python):
    1.     def BINARY_NEW_RemoveAffect(self, type, pointIdx):
    2.         self.affectShower.BINARY_NEW_RemoveAffect(type, pointIdx)
    3.         if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
    4.             self.interface.DragonSoulDeactivate()
    Altına şu kodları ekleyin;
    Kod (Python):
    1.         elif 209 == type:
    2.             self.playerGauge.RefreshGuageColor("red")
    3.             self.interface.HPPoisonEffectHide()
    4.             self.interface.PartyPoisonGuageHide()

    Root/interfaceModule.py dosyasını açın ve şu kodları aratın;
    Kod (Python):
    1.     def RefreshStamina(self):
    2.         self.wndTaskBar.RefreshStamina()
    Altına şu kodları ekleyin;
    Kod (Python):
    1.     def HPPoisonEffectShow(self):
    2.         self.wndTaskBar.HPPoisonEffectShow()
    3.  
    4.     def HPPoisonEffectHide(self):
    5.         self.wndTaskBar.HPPoisonEffectHide()

    Aynı dosyada şu kodları aratın;
    Kod (Python):
    1.     def ChangePartyParameter(self, distributionMode):
    2.         self.wndParty.ChangePartyParameter(distributionMode)
    Altına şu kodları ekleyin;
    Kod (Python):
    1.     def PartyPoisonGuageShow(self):
    2.         self.wndParty.PartyPoisonGuageShow()
    3.  
    4.     def PartyPoisonGuageHide(self):
    5.         self.wndParty.PartyPoisonGuageHide()

    Root/uiParty.py dosyasını açın ve PartyMemberInfoBoard sınıfı içindeki şu kodları aratın;
    Kod (Python):
    1.     def __init__(self):
    2.         ui.ScriptWindow.__init__(self)
    3.  
    4.         self.pid = None
    5.         self.vid = None
    Altına şu kodu ekleyin;
    Kod (Python):
    1.         self.poison = 0

    Aynı dosyada şu kodu aratın;
    Kod (Python):
    1.             self.gauge = self.GetChild("Gauge")
    Altına şu kodu ekleyin;
    Kod (Python):
    1.             self.poisonGauge = self.GetChild("PoisonGauge")

    Aynı dosyada PartyMemberInfoBoard sınıfı içindeki __LoadBoard() fonksiyonu içindeki şu kodları aratın;
    Kod (Python):
    1.         self.__SetAffectsMouseEvent()
    2.         self.__HideAllAffects()
    Altına şu kodu ekleyin;
    Kod (Python):
    1.         self.poisonGauge.Hide()

    Aynı dosyada şu kodları aratın;
    Kod (Python):
    1.     def SetCharacterHP(self, hpPercentage):
    2.         hpPercentage = max(0, hpPercentage)
    3.         self.gauge.SetPercentage(hpPercentage, 100)
    Altına şu kodları ekleyin;
    Kod (Python):
    1.         self.poisonGauge.SetPercentage(hpPercentage, 100)
    2.  
    3.     def UpdatePoisonGauge(self, arg):
    4.         self.poison = arg
    5.         if self.poison == 1:
    6.             if self.gauge.IsShow():
    7.                 self.gauge.Hide()
    8.             self.poisonGauge.Show()
    9.         else:
    10.             if self.poisonGauge.IsShow():
    11.                 self.poisonGauge.Hide()
    12.             self.gauge.Show()

    Aynı dosyada şu kodları aratın;
    Kod (Python):
    1.     def Unlink(self):
    2.         self.vid = None
    3.         self.nameTextLine.SetPackedFontColor(self.UNLINK_COLOR)
    4.         self.gauge.Hide()
    Altına şu kodları ekleyin;
    Kod (Python):
    1.         self.poisonGauge.Hide()

    Aynı dosyada şu kodları aratın;
    Kod (Python):
    1.     def __FindPartyMemberInfoBoardByPID(self, pid):
    2.         for board in self.partyMemberInfoBoardList:
    3.             if pid == board.GetCharacterPID():
    4.                 return board
    5.  
    6.         return None
    Altına şu kodları ekleyin;
    Kod (Python):
    1.     def __FindPartyMemberInfoBoardByName(self, name):
    2.         for board in self.partyMemberInfoBoardList:
    3.             if name == board.GetCharacterName():
    4.                 return board
    5.  
    6.         return None

    Aynı dosyada şu kodları aratın;
    Kod (Python):
    1.     def ChangePartyParameter(self, distributionMode):
    2.         self.partyMenu.ChangePartyParameter(distributionMode)
    Altına şu kodları ekleyin;
    Kod (Python):
    1.     def PartyPoisonGuageShow(self):
    2.         board = self.__FindPartyMemberInfoBoardByName(player.GetName())
    3.         if None == board:
    4.             return
    5.  
    6.         board.UpdatePoisonGauge(1)
    7.  
    8.     def PartyPoisonGuageHide(self):
    9.         board = self.__FindPartyMemberInfoBoardByName(player.GetName())
    10.         if None == board:
    11.             return
    12.  
    13.         board.UpdatePoisonGauge(0)

    Root/uiPlayerGauge.py dosyasını açın ve şu kodları aratın;
    Kod (Python):
    1.     def DisableShowAlways(self):
    2.         self.showAlways = False
    3.         self.RefreshGauge()
    Altına şu kodları ekleyin;
    Kod (Python):
    1.     def RefreshGuageColor(self, color):
    2.         self.MakeGauge(100, color)

    Root/uiTaskbar.py dosyasını açın ve şu kodları aratın;
    Kod (Python):
    1.         self.mouseModeButtonList = [ ui.ScriptWindow("TOP_MOST"), ui.ScriptWindow("TOP_MOST") ]
    Altına şu kodu ekleyin;
    Kod (Python):
    1.         self.poisonEffect = 0

    Aynı dosyada şu kodu aratın;
    Kod (Python):
    1.         self.spRecoveryGaugeBar = self.GetChild("SPRecoveryGaugeBar")
    2.  
    Altına şu kodları ekleyin;
    Kod (Python):
    1.         self.hpPoisonGauge = self.GetChild("HPPoisonGauge")
    2.         self.hpPoisonRecoveryGaugeBar = self.GetChild("HPPoisonRecoveryGaugeBar")
    3.  
    4.         self.hpPoisonGauge.Hide()
    5.         self.hpPoisonRecoveryGaugeBar.Hide()

    Aynı dosyada şu kodu aratın;
    Kod (Python):
    1.         self.spRecoveryGaugeBar = None
    Altına şu kodları ekleyin;
    Kod (Python):
    1.         self.hpPoisonGauge = None
    2.         self.hpPoisonRecoveryGaugeBar = None
    3.         self.poisonEffect = 0

    Aynı dosyada şu kodları aratın;
    Kod (Python):
    1.     def RefreshSkill(self):
    2.         self.curSkillButton.RefreshSkill()
    3.         for button in self.selectSkillButtonList:
    4.             button.RefreshSkill()
    Altına şu kodları ekleyin;
    Kod (Python):
    1.     def HPPoisonEffectShow(self):
    2.         self.poisonEffect = 1
    3.         self.hpGauge.Hide()
    4.         self.hpPoisonGauge.Show()
    5.  
    6.     def HPPoisonEffectHide(self):
    7.         self.poisonEffect = 0
    8.         self.hpPoisonGauge.Hide()
    9.         self.hpGauge.Show()

    Aynı dosyada şu kodları aratın;
    Kod (Python):
    1.     def SetHP(self, curPoint, recoveryPoint, maxPoint):
    2.         curPoint = min(curPoint, maxPoint)
    3.         if maxPoint > 0:
    4.             self.hpGauge.SetPercentage(curPoint, maxPoint)
    5.             self.tooltipHP.SetText("%s : %d / %d" % (localeInfo.TASKBAR_HP, curPoint, maxPoint))
    6.  
    7.             if 0 == recoveryPoint:
    8.                 self.hpRecoveryGaugeBar.Hide()
    9.             else:
    10.                 destPoint = min(maxPoint, curPoint + recoveryPoint)
    11.                 newWidth = int(self.GAUGE_WIDTH * (float(destPoint) / float(maxPoint)))
    12.                 self.hpRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
    13.                 self.hpRecoveryGaugeBar.Show()
    Aşağıdaki kodlarla değiştiriniz;
    Kod (Python):
    1.     def SetHP(self, curPoint, recoveryPoint, maxPoint):
    2.         curPoint = min(curPoint, maxPoint)
    3.         if maxPoint > 0:
    4.             self.hpGauge.SetPercentage(curPoint, maxPoint)
    5.             self.hpPoisonGauge.SetPercentage(curPoint, maxPoint)
    6.             self.tooltipHP.SetText("%s : %d / %d" % (localeInfo.TASKBAR_HP, curPoint, maxPoint))
    7.  
    8.             if 0 == recoveryPoint:
    9.                 self.hpRecoveryGaugeBar.Hide()
    10.                 self.hpPoisonRecoveryGaugeBar.Hide()
    11.             else:
    12.                 destPoint = min(maxPoint, curPoint + recoveryPoint)
    13.                 newWidth = int(self.GAUGE_WIDTH * (float(destPoint) / float(maxPoint)))
    14.  
    15.                 if self.poisonEffect == 0:
    16.                     if self.hpPoisonRecoveryGaugeBar.IsShow():
    17.                         self.hpPoisonRecoveryGaugeBar.Hide()
    18.                     self.hpRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
    19.                     self.hpRecoveryGaugeBar.Show()
    20.                 else:
    21.                     if self.hpRecoveryGaugeBar.IsShow():
    22.                         self.hpRecoveryGaugeBar.Hide()
    23.                     self.hpPoisonRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
    24.                     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;
    Kod (Python):
    1. window["children"][1]["children"][2]["children"] = window["children"][1]["children"][2]["children"] + (
    2.                 {
    3.                     "name" : "HPPoisonRecoveryGaugeBar",
    4.                     "type" : "bar",
    5.  
    6.                     "x" : 0,
    7.                     "y" : 0,
    8.                     "width" : 95,
    9.                     "height" : 13,
    10.                     "color" : 0x55008000,
    11.                 },
    12.                 {
    13.                     "name" : "HPPoisonGauge",
    14.                     "type" : "ani_image",
    15.  
    16.                     "x" : 0,
    17.                     "y" : 0,
    18.  
    19.                     "delay" : 6,
    20.  
    21.                     "images" :
    22.                     (
    23.                         "D:/Ymir Work/UI/Pattern/HPPoisonGauge/01.tga",
    24.                         "D:/Ymir Work/UI/Pattern/HPPoisonGauge/02.tga",
    25.                         "D:/Ymir Work/UI/Pattern/HPPoisonGauge/03.tga",
    26.                         "D:/Ymir Work/UI/Pattern/HPPoisonGauge/04.tga",
    27.                         "D:/Ymir Work/UI/Pattern/HPPoisonGauge/05.tga",
    28.                         "D:/Ymir Work/UI/Pattern/HPPoisonGauge/06.tga",
    29.                         "D:/Ymir Work/UI/Pattern/HPPoisonGauge/07.tga",
    30.                     ),
    31.                 },)
    Not: Yukarıdaki uiscript kodu bazı filesler uyumsuz olduğu için şu hatayı alıyorsanız;
    Kod (Text):
    1. 0404 20:35:20028 ::   File "game.py", line 766, in BINARY_NEW_AddAffect
    2. 0404 20:35:20028 ::   File "interfaceModule.py", line 729, in PartyPoisonGuageShow
    3. 0404 20:35:20028 ::   File "uiParty.py", line 758, in PartyPoisonGuageShow
    4. 0404 20:35:20029 :: AttributeError
    5. 0404 20:35:20029 :: :
    6. 0404 20:35:20029 :: 'NoneType' object has no attribute 'UpdatePoisonGauge'
    7. 0404 20:35:20029 ::
    Şu kodları aratın;
    Kod (Python):
    1.                         {
    2.                             "name" : "HPGauge",
    3.                             "type" : "ani_image",
    4.  
    5.                             "x" : 0,
    6.                             "y" : 0,
    7.  
    8.                             "delay" : 6,
    9.  
    10.                             "images" :
    11.                             (
    12.                                 "D:/Ymir Work/UI/Pattern/HPGauge/01.tga",
    13.                                 "D:/Ymir Work/UI/Pattern/HPGauge/02.tga",
    14.                                 "D:/Ymir Work/UI/Pattern/HPGauge/03.tga",
    15.                                 "D:/Ymir Work/UI/Pattern/HPGauge/04.tga",
    16.                                 "D:/Ymir Work/UI/Pattern/HPGauge/05.tga",
    17.                                 "D:/Ymir Work/UI/Pattern/HPGauge/06.tga",
    18.                                 "D:/Ymir Work/UI/Pattern/HPGauge/07.tga",
    19.                             ),
    20.                         },
    Altına ekleyin;
    Kod (Python):
    1.                         {
    2.                             "name" : "HPPoisonRecoveryGaugeBar",
    3.                             "type" : "bar",
    4.  
    5.                             "x" : 0,
    6.                             "y" : 0,
    7.                             "width" : 95,
    8.                             "height" : 13,
    9.                             "color" : 0x55008000,
    10.                         },
    11.                         {
    12.                             "name" : "HPPoisonGauge",
    13.                             "type" : "ani_image",
    14.  
    15.                             "x" : 0,
    16.                             "y" : 0,
    17.  
    18.                             "delay" : 6,
    19.  
    20.                             "images" :
    21.                             (
    22.                                 "D:/Ymir Work/UI/Pattern/HPPoisonGauge/01.tga",
    23.                                 "D:/Ymir Work/UI/Pattern/HPPoisonGauge/02.tga",
    24.                                 "D:/Ymir Work/UI/Pattern/HPPoisonGauge/03.tga",
    25.                                 "D:/Ymir Work/UI/Pattern/HPPoisonGauge/04.tga",
    26.                                 "D:/Ymir Work/UI/Pattern/HPPoisonGauge/05.tga",
    27.                                 "D:/Ymir Work/UI/Pattern/HPPoisonGauge/06.tga",
    28.                                 "D:/Ymir Work/UI/Pattern/HPPoisonGauge/07.tga",
    29.                             ),
    30.                         },
    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. :)
     

    Ekli dosyalar:

    Son düzenleme: 10 Mayıs 2019
    nerotm bunu beğendi.
  2. aditus255

    aditus255 Normal Üye Üye

    69
    31
    51
    29 Temmuz 2018
    Erkek
    Manisa
    Paylaşım için teşekkürler <3
     
  3. Whistle

    Whistle Sarhoş Filozof Site Yetkilisi Admin Casro2 (Metin2) GM Casro2 (Metin2) Destek

    4.995
    1.126
    1.971
    30 Ekim 2011
    Erkek
    Öğrenci
    Samsun
    Bu tip mesajları konuya yazmak yerine beğeni tuşunu kullanarak teşekkürlerinizi iletebilirsiniz. :)
     
    aditus255 bunu beğendi.
  4. aditus255

    aditus255 Normal Üye Üye

    69
    31
    51
    29 Temmuz 2018
    Erkek
    Manisa
    Bu syserri veriyor

    Kod (Text):
    1. 0404 20:35:20028 ::   File "game.py", line 766, in BINARY_NEW_AddAffect
    2.  
    3. 0404 20:35:20028 ::   File "interfaceModule.py", line 729, in PartyPoisonGuageShow
    4.  
    5. 0404 20:35:20028 ::   File "uiParty.py", line 758, in PartyPoisonGuageShow
    6.  
    7. 0404 20:35:20029 :: AttributeError
    8. 0404 20:35:20029 :: :
    9. 0404 20:35:20029 :: 'NoneType' object has no attribute 'UpdatePoisonGauge'
    10. 0404 20:35:20029 ::
     
    En son bir moderatör tarafından düzenlenmiş: 4 Nisan 2019
  5. Whistle

    Whistle Sarhoş Filozof Site Yetkilisi Admin Casro2 (Metin2) GM Casro2 (Metin2) Destek

    4.995
    1.126
    1.971
    30 Ekim 2011
    Erkek
    Öğrenci
    Samsun
    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. ;)
     
  6. aditus255

    aditus255 Normal Üye Üye

    69
    31
    51
    29 Temmuz 2018
    Erkek
    Manisa
    UiParty.py 'ye ekledim ekli olmasına rağmen o hatayı alıyorum :(
     
  7. mcDynamic

    mcDynamic MT Üye MT Üye Üye

    254
    163
    706
    2 Kasım 2016
    Erkek
    Öğrenci
    İstanbul
    @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.
     
    Whistle bunu beğendi.
  8. Whistle

    Whistle Sarhoş Filozof Site Yetkilisi Admin Casro2 (Metin2) GM Casro2 (Metin2) Destek

    4.995
    1.126
    1.971
    30 Ekim 2011
    Erkek
    Öğrenci
    Samsun
    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: 5 Nisan 2019
    faruk07 bunu beğendi.
  9. aditus255

    aditus255 Normal Üye Üye

    69
    31
    51
    29 Temmuz 2018
    Erkek
    Manisa
    Whistle diye yazılır ADAM DİYE OKUNUR :)
     
  10. mcDynamic

    mcDynamic MT Üye MT Üye Üye

    254
    163
    706
    2 Kasım 2016
    Erkek
    Öğrenci
    İstanbul
    Ç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.
     
    Whistle bunu beğendi.
  11. Whistle

    Whistle Sarhoş Filozof Site Yetkilisi Admin Casro2 (Metin2) GM Casro2 (Metin2) Destek

    4.995
    1.126
    1.971
    30 Ekim 2011
    Erkek
    Öğrenci
    Samsun
    Ş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.
     
    Son düzenleme: 5 Nisan 2019
    mcDynamic bunu beğendi.
  12. mcDynamic

    mcDynamic MT Üye MT Üye Üye

    254
    163
    706
    2 Kasım 2016
    Erkek
    Öğrenci
    İstanbul
    Bende buna istinaden şüphe duydum sana bildirmek istedim teyit ederek tabi ki. :)
     
    Whistle bunu beğendi.
  13. Whistle

    Whistle Sarhoş Filozof Site Yetkilisi Admin Casro2 (Metin2) GM Casro2 (Metin2) Destek

    4.995
    1.126
    1.971
    30 Ekim 2011
    Erkek
    Öğrenci
    Samsun
    O kadar büyütülecek mesele değil cidden. Türk Metin2 gelişim sektörüne ufakta olsa katkım olduysa ne mutlu bana.
    Keşke herkeste bazı duyarlılıklara sahip olsa. :)
     
    mcDynamic bunu beğendi.
  14. mcDynamic

    mcDynamic MT Üye MT Üye Üye

    254
    163
    706
    2 Kasım 2016
    Erkek
    Öğrenci
    İstanbul
    Karar senin her zaman :) Ben faydalanıyorum açıkcası bilgi ve tecrübelerinden eline emeğine sağlık :)
     
    Whistle bunu beğendi.
  15. Whistle

    Whistle Sarhoş Filozof Site Yetkilisi Admin Casro2 (Metin2) GM Casro2 (Metin2) Destek

    4.995
    1.126
    1.971
    30 Ekim 2011
    Erkek
    Öğrenci
    Samsun
    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;
    Kod (Python):
    1.                         {
    2.                             "name" : "HPGauge",
    3.                             "type" : "ani_image",
    4.  
    5.                             "x" : 0,
    6.                             "y" : 0,
    7.  
    8.                             "delay" : 6,
    9.  
    10.                             "images" :
    11.                             (
    12.                                 "D:/Ymir Work/UI/Pattern/HPGauge/01.tga",
    13.                                 "D:/Ymir Work/UI/Pattern/HPGauge/02.tga",
    14.                                 "D:/Ymir Work/UI/Pattern/HPGauge/03.tga",
    15.                                 "D:/Ymir Work/UI/Pattern/HPGauge/04.tga",
    16.                                 "D:/Ymir Work/UI/Pattern/HPGauge/05.tga",
    17.                                 "D:/Ymir Work/UI/Pattern/HPGauge/06.tga",
    18.                                 "D:/Ymir Work/UI/Pattern/HPGauge/07.tga",
    19.                             ),
    20.                         },
    Altına ekle;
    Kod (Python):
    1.                         {
    2.                             "name" : "HPPoisonRecoveryGaugeBar",
    3.                             "type" : "bar",
    4.  
    5.                             "x" : 0,
    6.                             "y" : 0,
    7.                             "width" : 95,
    8.                             "height" : 13,
    9.                             "color" : 0x55008000,
    10.                         },
    11.                         {
    12.                             "name" : "HPPoisonGauge",
    13.                             "type" : "ani_image",
    14.  
    15.                             "x" : 0,
    16.                             "y" : 0,
    17.  
    18.                             "delay" : 6,
    19.  
    20.                             "images" :
    21.                             (
    22.                                 "D:/Ymir Work/UI/Pattern/HPPoisonGauge/01.tga",
    23.                                 "D:/Ymir Work/UI/Pattern/HPPoisonGauge/02.tga",
    24.                                 "D:/Ymir Work/UI/Pattern/HPPoisonGauge/03.tga",
    25.                                 "D:/Ymir Work/UI/Pattern/HPPoisonGauge/04.tga",
    26.                                 "D:/Ymir Work/UI/Pattern/HPPoisonGauge/05.tga",
    27.                                 "D:/Ymir Work/UI/Pattern/HPPoisonGauge/06.tga",
    28.                                 "D:/Ymir Work/UI/Pattern/HPPoisonGauge/07.tga",
    29.                             ),
    30.                         },
     
    Son düzenleme: 5 Nisan 2019
  16. Whistle

    Whistle Sarhoş Filozof Site Yetkilisi Admin Casro2 (Metin2) GM Casro2 (Metin2) Destek

    4.995
    1.126
    1.971
    30 Ekim 2011
    Erkek
    Öğrenci
    Samsun
    Sistem güncellemesi;
    Kod (Text):
    1. 0510 12:58:36544 ::   File "game.py", line 772, in BINARY_NEW_RemoveAffect
    2.  
    3. 0510 12:58:36545 ::   File "interfaceModule.py", line 746, in PartyPoisonGuageHide
    4.  
    5. 0510 12:58:36545 ::   File "uiParty.py", line 763, in PartyPoisonGuageHide
    6.  
    7. 0510 12:58:36546 :: AttributeError
    8. 0510 12:58:36546 :: :
    9. 0510 12:58:36547 :: 'NoneType' object has no attribute 'UpdatePoisonGauge'
    10. 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;
    Kod (Python):
    1.     def PartyPoisonGuageShow(self):
    2.         board = self.__FindPartyMemberInfoBoardByName(player.GetName())
    3.         board.UpdatePoisonGauge(1)
    4.    
    5.     def PartyPoisonGuageHide(self):
    6.         board = self.__FindPartyMemberInfoBoardByName(player.GetName())
    7.         board.UpdatePoisonGauge(0)
    Aşağıdaki kodlarla değiştirin;
    Kod (Python):
    1.     def PartyPoisonGuageShow(self):
    2.         board = self.__FindPartyMemberInfoBoardByName(player.GetName())
    3.         if None == board:
    4.             return
    5.  
    6.         board.UpdatePoisonGauge(1)
    7.    
    8.     def PartyPoisonGuageHide(self):
    9.         board = self.__FindPartyMemberInfoBoardByName(player.GetName())
    10.         if None == board:
    11.             return
    12.  
    13.         board.UpdatePoisonGauge(0)
     
  17. Whistle

    Whistle Sarhoş Filozof Site Yetkilisi Admin Casro2 (Metin2) GM Casro2 (Metin2) Destek

    4.995
    1.126
    1.971
    30 Ekim 2011
    Erkek
    Öğrenci
    Samsun
    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;
    Kod (Python):
    1.         elif chr.AFFECT_POISON == type or 209 == type:
    2.             self.playerGauge.RefreshGuageColor("lime")
    3.             self.interface.HPPoisonEffectShow()
    4.             self.interface.PartyPoisonGuageShow()
    5.  
    Yukarıdaki kodları şu kodlarla değiştiriniz;
    Kod (Python):
    1.         elif 209 == type:
    2.             self.playerGauge.RefreshGuageColor("lime")
    3.             self.interface.HPPoisonEffectShow()
    4.             self.interface.PartyPoisonGuageShow()

    Aynı dosyada şu kodları aratın;
    Kod (Python):
    1.         elif chr.AFFECT_POISON == type or 209 == type:
    2.             self.playerGauge.RefreshGuageColor("red")
    3.             self.interface.HPPoisonEffectHide()
    4.             self.interface.PartyPoisonGuageHide()
    Yukarıdaki kodları şu kodlarla değiştiriniz;
    Kod (Python):
    1.         elif 209 == type:
    2.             self.playerGauge.RefreshGuageColor("red")
    3.             self.interface.HPPoisonEffectHide()
    4.             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. :)
     
  18. alhyprn

    alhyprn Aktif Üye Üye

    1
    0
    413
    26 Şubat 2018
    Eskisehir
    Kod (Text):
    1. 0519 17:15:13868 :: CMapOutdoor::Load - LoadMonsterAreaInfo ERROR
    2.  
    3. 0519 17:16:19435 ::
    4.  
    5. uiParty.py(line:105) __LoadBoard
    6.  
    7. ui.py(line:2708) GetChild
    8.  
    9.  
    10. PartyMemberInfoBoard.__LoadBoard.BindObject - <type 'exceptions.KeyError'>:'PoisonGauge'
    11.  
    12.  
    13. 0519 17:16:19435 :: ============================================================================================================
    14.  
    15. 0519 17:16:19435 :: Abort!!!!
    16.  
    17.  
    18.  
    19.  

    Grup kurarken bu syserr veriyor.


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

    Bunu Silince oyun açılıyor fakat can barı hem yeşil hem grup kurulmuyor.
     
  19. Whistle

    Whistle Sarhoş Filozof Site Yetkilisi Admin Casro2 (Metin2) GM Casro2 (Metin2) Destek

    4.995
    1.126
    1.971
    30 Ekim 2011
    Erkek
    Öğrenci
    Samsun
    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. :)
     
  20. MIXTIX

    MIXTIX Aktif Üye Üye

    2
    1
    263
    7 Temmuz 2019
    Dezne
    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
     
Yükleniyor...

Bu Sayfayı Paylaş

XenForo Add-ons by Brivium ™ © 2012-2013 Brivium LLC.