Günlük Ödül Sistemi

  • Konuyu açan Konuyu açan Battle2
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 1
  • Gösterim Gösterim 205

Battle2

Üye
Üye
Mesaj
34
Çözümler
3
Beğeni
29
Puan
329
Ticaret Puanı
0
Günlük ödül sistemi her pazartesi sıfırlanır belki değiştirip kullanırsınız :)
pack/root ayarlamaları:
Genişlet Daralt Kopyala
//pack root interfacemodule.py açalım en altına 1 boşluk olacak gibi

class DailyRewardManager(ui.Window):
    def __init__(self):
        ui.Window.__init__(self)
        self.__BuildWindow()

    def __del__(self):
        ui.Window.__del__(self)

    def __BuildWindow(self):
        import ui
        # Butonunuzun boyutuna göre burayı ayarlayabilirsiniz (Genelde 32x32 veya 35x35 idealdir)
        self.SetSize(35, 35)
        self.SetWindowHorizontalAlignRight()
        self.SetPosition(180, 30) # Mini haritanın solundaki konumu
        self.Show()

        # ui.Button yerine elinizdeki tekil .tga görselini hatasız çalıştıracak ImageBox kullanıyoruz
        self.rewardButton = ui.ImageBox()
        self.rewardButton.SetParent(self)
        self.rewardButton.SetPosition(0, 0)
  
        # Sizin elinizdeki özel .tga görselinin yolu
        self.rewardButton.LoadImage("d:/ymir work/ui/daily_reward_icon.tga")
  
        # Görselin sol tıklandığında doğrudan fonksiyonu tetiklemesini sağlıyoruz
        self.rewardButton.OnMouseLeftButtonDown = self.__ClickButton
        self.rewardButton.Show()

        # --- FARE ÜZERİNE GELİNCE AÇILAN BİLGİ KUTUSU ---
        self.toolTip = ui.TextLine()
        self.toolTip.SetParent(self)
        self.toolTip.SetFontName("Arial:12")
        self.toolTip.SetPackedFontColor(0xffFDD017) # Şık Altın Sarısı Renk
        self.toolTip.SetText("Günlük Ödül")
        self.toolTip.SetPosition(-15, -15) # Görselin hemen üstü
        self.toolTip.Hide()

        # Fare hareketlerine duyarlı yazı tetikleyicileri
        self.rewardButton.OnMouseOverIn = self.__ShowToolTip
        self.rewardButton.OnMouseOverOut = self.__HideToolTip

    def __ShowToolTip(self):
        if self.toolTip:
            self.toolTip.Show()

    def __HideToolTip(self):
        if self.toolTip:
            self.toolTip.Hide()

    def __ClickButton(self):
        import constInfo
        import event
        if constInfo.DAILY_REWARD_QUEST_INDEX != 0:
            event.QuestButtonClick(constInfo.DAILY_REWARD_QUEST_INDEX)
        return True # Event akışını tamamlamak için True döndürüyoruz

    def RewardSuccess(self, current_day):
        import chat
        try:
            day_num = int(current_day)
          
            # Matematiksel adet hesaplamaları (Quest ile birebir aynı)
            reward_count1 = day_num * 2   # 80007 adeti
            reward_count2 = day_num * 25  # 30178 (Oyma Taşı) adeti
          
            # Chat ekranına düşecek dinamik mesaj
            chat.AppendChat(chat.CHAT_TYPE_INFO, "[Sistem] {}. Gun odulunuz olan: {} adet 2M Bar ve {} adet Oyma Tasi verildi!".format(day_num, reward_count1, reward_count2))
        except:
            chat.AppendChat(chat.CHAT_TYPE_INFO, "[Sistem] Gunluk giris odulleriniz envanterinize eklendi!")

    def RewardClaimed(self):
        import chat
        chat.AppendChat(chat.CHAT_TYPE_INFO, "[Sistem] Bugunluk odulunuzu zaten aldiniz.")
      

//aynı dosya içinde  def MakeInterface aratalım en altına bir boşluk olacak gibi bunu yapıştıralım

        try:
            self.wndDailyReward = DailyRewardManager()
            if self.wndDailyReward:
                self.wndDailyReward.SetTop()
        except Exception as e:
            import chat
            chat.AppendChat(chat.CHAT_TYPE_INFO, "Modul Yukleme Hatasi: " + str(e))     
      
//constinfo.py açalım ve müsait yere bunu ekliyelim
            DAILY_REWARD_QUEST_INDEX = 0
      
//game.py açalım serverCommandList = { aratalım müsait yere
            # Gunluk Odul
            "daily_reward_index"    : self.__DailyRewardIndexEvent,
            "daily_reward_success"    : self.__DailyRewardSuccessEvent,
            "daily_reward_claimed"    : self.__DailyRewardClaimedEvent,
            #Gunluk Odul Bıtıs
//yapıştıralım ve aynı dosyaiçinde en alta  bir boşluk olacak gibi bu kodları koyalım

    def __DailyRewardSuccessEvent(self, day):
        if self.interface and hasattr(self.interface, 'wndDailyReward'):
            self.interface.wndDailyReward.RewardSuccess(day)

    def __DailyRewardClaimedEvent(self):
        if self.interface and hasattr(self.interface, 'wndDailyReward'):
            self.interface.wndDailyReward.RewardClaimed()

    def __DailyRewardIndexEvent(self, qid):
        import constInfo
        constInfo.DAILY_REWARD_QUEST_INDEX = int(qid)
      
//game.py içinde  
//class GameWindow(ui.ScriptWindow):
   // def __init__(self, stream):  aratalım ve müsait yere

        self.dailyRewardButton = None

//yapıştıralım

//questimizi tanıtalım reload q çekelim ve ödül sistemimiz aktif siz ödülleri değiştirebilirsiniz
//24 saatte bir ödülleri x2 katlayıp verir aynı gün ödül vermez
//mouse ile üzerine geldiğiniz zaman iconun Gunluk Odul yazacaktır


 

Dosya Eklentileri

  • günlüködül.webp
    günlüködül.webp
    123,4 KB · Gösterim: 141
  • Pack Dosyası ve Quest.rar
    Pack Dosyası ve Quest.rar
    3 KB · Gösterim: 5
Son düzenleme:
Günlük ödül sistemini biraz daha geliştirdim belki bu versiyonunuda paylaşırım bu versiyonu sanki daha tatlı oldu :)

Butona tıklayınca harici panel açılıyor ve ödülünü tıklayıp alıyorsunuz 24 saat sonra tekrar alınabilir hangi günde olduğunuz yeşil renkte belirgin bekleme süreside ekledim

ilkte yeşil renk alınabilir yazar ödülü alınca sarı renge süre başlar altada bir dahaki sürenin bitişini yazan log geçer
 

Dosya Eklentileri

  • gelisimpanel.webp
    gelisimpanel.webp
    107,2 KB · Gösterim: 47
Son düzenleme:
Geri
Üst