Günlük Ödül Sistemi

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

Battle2

Üye
Üye
Mesaj
33
Çözümler
3
Beğeni
26
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)
       

//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: 24
  • Pack Dosyası ve Quest.rar
    Pack Dosyası ve Quest.rar
    3 KB · Gösterim: 0
Son düzenleme:
Geri
Üst