Biyolog Sistemi

  • Konuyu açan Konuyu açan TheAdmin33
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 18
  • Gösterim Gösterim 667

TheAdmin33

Ah, bu şarkıların gözü kör olsun
Geliştirici
Yardımsever Üye
Usta Üye
Editör
Mesaj
1.130
Çözümler
61
Beğeni
3.300
Puan
1.859
Ticaret Puanı
0
Ekran Alıntısı4.webp


İndir;
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.


Vt;
Linkleri görebilmek için giriş yap veya kayıt ol.


Eğer ui.py dosyasında CheckBox yoksa aşağıdakileri ekleyin yoksa hata alırsınız.(etc.rar dakileride ekleyin)

ui.py:
Genişlet Daralt Kopyala
#Arat;

class Button(Window):


#Üstüne ekle;

class CheckBox(Window):
    def __init__(self):
        Window.__init__(self)
       
        self.backgroundImage = None
        self.checkImage = None

        self.eventFunc = { "ON_CHECK" : None, "ON_UNCKECK" : None, }
        self.eventArgs = { "ON_CHECK" : None, "ON_UNCKECK" : None, }
   
        self.CreateElements()
       
    def __del__(self):
        Window.__del__(self)
       
        self.backgroundImage = None
        self.checkImage = None
       
        self.eventFunc = { "ON_CHECK" : None, "ON_UNCKECK" : None, }
        self.eventArgs = { "ON_CHECK" : None, "ON_UNCKECK" : None, }
       
    def CreateElements(self):
        self.backgroundImage = ImageBox()
        self.backgroundImage.SetParent(self)
        self.backgroundImage.AddFlag("not_pick")
        self.backgroundImage.SetPosition(0, -2)
        self.backgroundImage.LoadImage("d:/ymir work/ui/game/checkbox/checkbox.tga")
        self.backgroundImage.Show()
       
        self.checkImage = ImageBox()
        self.checkImage.SetParent(self)
        self.checkImage.AddFlag("not_pick")
        self.checkImage.SetPosition(0, -2)
        self.checkImage.LoadImage("d:/ymir work/ui/game/checkbox/checked.tga")
        self.checkImage.Hide()
       
        self.textInfo = TextLine()
        self.textInfo.SetParent(self)
        self.textInfo.SetPosition(20, -2)
        self.textInfo.Show()
       
        self.SetSize(self.backgroundImage.GetWidth() + self.textInfo.GetTextSize()[0], self.backgroundImage.GetHeight() + self.textInfo.GetTextSize()[1])
       
    def SetTextInfo(self, info):
        if self.textInfo:
            self.textInfo.SetText(info)
           
        self.SetSize(self.backgroundImage.GetWidth() + self.textInfo.GetTextSize()[0], self.backgroundImage.GetHeight() + self.textInfo.GetTextSize()[1])
       
    def SetCheckStatus(self, flag):
        if flag:
            self.checkImage.Show()
        else:
            self.checkImage.Hide()
   
    def GetCheckStatus(self):
        if self.checkImage:
            return self.checkImage.IsShow()
           
        return False
       
    def SetEvent(self, func, *args) :
        result = self.eventFunc.has_key(args[0])      
        if result :
            self.eventFunc[args[0]] = func
            self.eventArgs[args[0]] = args
        else :
            print "[ERROR] ui.py SetEvent, Can`t Find has_key : %s" % args[0]
       
    def OnMouseLeftButtonUp(self):
        if self.checkImage:
            if self.checkImage.IsShow():
                self.checkImage.Hide()

                if self.eventFunc["ON_UNCKECK"]:
                    apply(self.eventFunc["ON_UNCKECK"], self.eventArgs["ON_UNCKECK"])
            else:
                self.checkImage.Show()

                if self.eventFunc["ON_CHECK"]:
                    apply(self.eventFunc["ON_CHECK"], self.eventArgs["ON_CHECK"])


#Arat;

            elif Type == "listboxex":
                parent.Children[Index] = ListBoxEx()
                parent.Children[Index].SetParent(parent)
                self.LoadElementListBoxEx(parent.Children[Index], ElementValue, parent)


#Altına ekle;

            elif Type == "checkbox":
                parent.Children[Index] = CheckBox()
                parent.Children[Index].SetParent(parent)
                self.LoadElementCheckBox(parent.Children[Index], ElementValue, parent)


#Arat;

    def LoadElementListBoxEx(self, window, value, parentWindow):


#Üstüne ekle;

    def LoadElementCheckBox(self, window, value, parentWindow):

        if value.has_key("text"):
            window.SetText(value["text"])

        if value.has_key("checked") and value["checked"] == True:
            window.SetCheckStatus(window.STATE_SELECTED)

        if value.has_key("disabled") and value["disabled"] == True:
            window.Disable()

        self.LoadDefaultData(window, value, parentWindow)
 

Dosya Eklentileri

Son düzenleme:
uinewbiolog.py dosyası eksik
 
'NoneType' object has no attribute 'GetAffectString'
 
Son düzenleme:
'NoneType' object has no attribute 'GetAffectString'
tooltip.py ye bnu ekledinmi?
uitooltip.py:
Genişlet Daralt Kopyala
    if app.ENABLE_NEW_BIOLOG:
        def GetAffectString(self, affectType, affectValue):
            if 0 == affectType:
                return None

            if 0 == affectValue:
                return None

            try:
                return self.AFFECT_DICT[affectType](affectValue)
            except TypeError:
                return "UNKNOWN_VALUE[%s] %s" % (affectType, affectValue)
            except KeyError:
                return "UNKNOWN_TYPE[%s] %s" % (affectType, affectValue)
 
uinewbiolog.py

def Initialize(self): içinde
self.ToolTip = None

self.ToolTip = uiToolTip.ItemToolTip() değiştirerek çözdüm ben
 
uinewbiolog.py

def Initialize(self): içinde
self.ToolTip = None

self.ToolTip = uiToolTip.ItemToolTip() değiştirerek çözdüm ben
oyunun dosyalarında senin yaptığın şekilde kullanılmış ama bu haliyle bende bir sorun çıkartmadı da sende niye çıkarttı acaba :alala:
 
Paylaşım İçin Teşekkür Fakat Bio Görevleri Bitince Pencere Kendini Direk Kapatıyor Ve Eğer Süre Bitince Pm Atmayı Açtıysan Görev Sonunda Pencere Kapandığı İçin Durmadan Pm Atıyor Bunu Nasıl Engellerim Yada Pencerenin Kapanmamısın Nasıl Sağlarım.
 
Paylaşım İçin Teşekkür Fakat Bio Görevleri Bitince Pencere Kendini Direk Kapatıyor Ve Eğer Süre Bitince Pm Atmayı Açtıysan Görev Sonunda Pencere Kapandığı İçin Durmadan Pm Atıyor Bunu Nasıl Engellerim Yada Pencerenin Kapanmamısın Nasıl Sağlarım.
Sistemi indirip bi bakayım.
 
Son düzenleme:
Teşekkür Ederim Bir Gelişme Varmı
Şimdi indirdim baktım. Event içinde

2.webp


GetBioNtf mysql'da tutuluyor sanırım dosyaların hepsine bakmadım sadece char.h ile kendi dosyasına baktım. Eğer senin dediğini yanlış anlamadıysam tüm görevleri bitirmişsek ve penceredeki bildirim aktif ise pencerede bir daha açılmadığı için sürekl pm geliyor diyorsun. Eğer öyleyse görevleri teslim etme yerinde son görevi teslim ediyorsan GetBioNtf'yi 0 yap ve şunu çağır.

3.webp


zaten bildirim gittiğinde return 0 ile sonlandırıyor bu bir daha çalıştırmaz. Ama tekrar tekrar bildirim gitmesinin sebebinde başka birşey olabilir.

Ayrıca görevler tamamen bittiğinde herşeyi sıfırlamak daha mantıklı olur. Sadece mesela biolog_complete 1 olarak kalır.
 
Paylaşım İçin Teşekkür Fakat Bio Görevleri Bitince Pencere Kendini Direk Kapatıyor Ve Eğer Süre Bitince Pm Atmayı Açtıysan Görev Sonunda Pencere Kapandığı İçin Durmadan Pm Atıyor Bunu Nasıl Engellerim Yada Pencerenin Kapanmamısın Nasıl Sağlarım.
1211_210933.webp


biyolog görevlerini bitirdikten sonra panel açılmıyormu sende ?
 
Şimdi indirdim baktım. Event içinde

20537 eklentisini görüntüle

GetBioNtf mysql'da tutuluyor sanırım dosyaların hepsine bakmadım sadece char.h ile kendi dosyasına baktım. Eğer senin dediğini yanlış anlamadıysam tüm görevleri bitirmişsek ve penceredeki bildirim aktif ise pencerede bir daha açılmadığı için sürekl pm geliyor diyorsun. Eğer öyleyse görevleri teslim etme yerinde son görevi teslim ediyorsan GetBioNtf'yi 0 yap ve şunu çağır.

20538 eklentisini görüntüle

zaten bildirim gittiğinde return 0 ile sonlandırıyor bu bir daha çalıştırmaz. Ama tekrar tekrar bildirim gitmesinin sebebinde başka birşey olabilir.

Ayrıca görevler tamamen bittiğinde herşeyi sıfırlamak daha mantıklı olur. Sadece mesela biolog_complete 1 olarak kalır.
En basitinden söyle bir şey yapsak iş görür mü ? :D

NewBiolog.cpp:
Genişlet Daralt Kopyala
    if (ch->GetBioNtf() == 1 && ch->GetBioTime() <= get_global_time())
    {
        char buf[52];
        int len = snprintf(buf, sizeof(buf), LC_TEXT("Biyo geldi kanka versene"));

        TPacketGCWhisper pack;
        pack.bHeader = HEADER_GC_WHISPER;
        pack.bType = WHISPER_TYPE_SYSTEM;
        pack.wSize = sizeof(TPacketGCWhisper) + len;
        strlcpy(pack.szNameFrom, "[Biyolog Bildirim]", sizeof(pack.szNameFrom));
        ch->GetDesc()->BufferedPacket(&pack, sizeof(pack));
        ch->GetDesc()->Packet(buf, len);
        if (ch->GetBioLevel() >= 10)
        {
            ch->SetBioNtf(0);
            ch->CloseBiologNtf();
        }
        return 0;
    }
 
En basitinden söyle bir şey yapsak iş görür mü ? :D

NewBiolog.cpp:
Genişlet Daralt Kopyala
    if (ch->GetBioNtf() == 1 && ch->GetBioTime() <= get_global_time())
    {
        char buf[52];
        int len = snprintf(buf, sizeof(buf), LC_TEXT("Biyo geldi kanka versene"));

        TPacketGCWhisper pack;
        pack.bHeader = HEADER_GC_WHISPER;
        pack.bType = WHISPER_TYPE_SYSTEM;
        pack.wSize = sizeof(TPacketGCWhisper) + len;
        strlcpy(pack.szNameFrom, "[Biyolog Bildirim]", sizeof(pack.szNameFrom));
        ch->GetDesc()->BufferedPacket(&pack, sizeof(pack));
        ch->GetDesc()->Packet(buf, len);
        if (ch->GetBioLevel() >= 10)
        {
            ch->SetBioNtf(0);
            ch->CloseBiologNtf();
        }
        return 0;
    }
O event sadece mesaj göndermeye hizmet etsin içine extra birşeyler ekleme. Eğer ntf açıksa mesaj gönderme eventini yeni görev süresi ile belleğe ekle. Böylelikle o event sadece ntf açık olunca çalışacak. Mesaj gittiğinde bellekten temizle. Böylelikle ntf açıksa o event her zaman yeni görev süresi ile çalışacak. ntf kapalıysa çalışmayacak. Görevi verme fonksiyonun başında görevi bitirmiş mi engeli yap. Tekrar görevi verme fonksiyonu içinde eğer en son görevi veriyorsan son kez bir paket daha gönder pencereyi temizle ve bio süresi, ntfyi sıfırla. Ama son görevi verirken ntf açık olsa bile eventi buna dahil etme.
 
bio sürelerini nasıl ayarlarım örnek (ork dişi) veriyorum fakat süresi dolmasa bile üst üste verebiliyorum mesela şöyle yapmak istiyorum (ork dişi) verdim 2 tane 3dk beklemem lazım falan?

benim filesle mi alakalı yoksa sistemle mi bilmiyorum bu yüzden soruyorum. öğrenmek için :)

not:nesne geçip yanma olayı normal düzeyde.
 
bio sürelerini nasıl ayarlarım örnek (ork dişi) veriyorum fakat süresi dolmasa bile üst üste verebiliyorum mesela şöyle yapmak istiyorum (ork dişi) verdim 2 tane 3dk beklemem lazım falan?

benim filesle mi alakalı yoksa sistemle mi bilmiyorum bu yüzden soruyorum. öğrenmek için :)

not:nesne geçip yanma olayı normal düzeyde.
tam denemedim ama biolog_info var mysql da orda cool_time var orayı degiştirip deneye bilirsin
 
Geri
Üst