Neler yeni
XenForo Bannerlar
Modern AdBlock Uyarısı

Foruma hoş geldin, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Effects Yang Change Effect

Fatih Bulut

Süper Üye
Katılım
6 Kas 2021
Mesajlar
4,667
Tepkime puanı
5,886
Puanları
113
Yaş
32
Konum
Türkiye
Dc
fatihbulut
Merhaba Arkadaşlar bi pvp'de görmüştüm aynısını yapmak istedim forum halkına paylaşıyorum.
Gelen ve Giden yangları effectli bi şekilde anlık sıralıyor gözüme güzel geldiği için kullanmak istedim.
Moblardan,metinlerden herhangi bi yerden gelen yang'ı yeşil effect ile saydırıyor.
Giden yang'ı da kırmızı effect ile - gösteriyor.
Sistemden Görsel:
326281_b67c375851add63a0b8722474351091f.gif
326284_d4ede9d124ed95eb39cc55c3a0e93820.gif
​

Sistemi eklemek için gereken kodları aşağıda paylaşıyorum.

Kod:
UserInterface/Locale_inc.h

Müsait bir yere ekle:
#define ENABLE_YANG_CHANGE_EFFECT
Kod:
UserInterface/PythonApplicationModule.cpp

Müsait bir yere ekle:
#ifdef ENABLE_YANG_CHANGE_EFFECT
    PyModule_AddIntConstant(poModule, "ENABLE_YANG_CHANGE_EFFECT", 1);
#else
    PyModule_AddIntConstant(poModule, "ENABLE_YANG_CHANGE_EFFECT", 0);
#endif
Kod:
root/uiInventory.py

İMPORTLARIN BİRAZ ALTINA EKLE:

if app.ENABLE_YANG_CHANGE_EFFECT:
    YANG_DELTA_DURATION = 1.10
    YANG_DELTA_RISE = 26
    YANG_DELTA_MAX_VISIBLE = 7
    YANG_DELTA_SPAWN_INTERVAL = 0.11
    YANG_DELTA_GAIN_COLOR = 0x0044FF44 //Yeşil effect
    YANG_DELTA_LOSS_COLOR = 0x00FF4444 //Kırmızı effect
Kod:
root/uiInventory.py

ARAT:
    def __init__(self):
        ui.ScriptWindow.__init__(self)

ALTINA EKLE:
        if app.ENABLE_YANG_CHANGE_EFFECT:
            self.lastYang = None
            self.yangDeltaEffects = []
            self.yangDeltaQueue = []
            self.yangDeltaNextSpawnAt = 0.0
Kod:
root/uiInventory.py
ARAT:
    def Destroy(self):
  
ALTINA EKLE:
        if app.ENABLE_YANG_CHANGE_EFFECT:
            self.__ClearYangDeltaEffects()
            self.lastYang = None
Kod:
root/uiInventory.py
ARAT:
    def Hide(self):

ALTINA EKLE:
        if app.ENABLE_YANG_CHANGE_EFFECT:
            self.__ClearYangDeltaEffects()
Kod:
root/uiInventory.py
ARAT:
    def RefreshStatus(self):
        money = player.GetElk()
        self.wndMoney.SetText(localeInfo.NumberToMoneyString(money))
          
ALTINA EKLE:
        if app.ENABLE_YANG_CHANGE_EFFECT:
            if self.lastYang is not None and money != self.lastYang:
                self.__ShowYangDelta(money - self.lastYang)

            self.lastYang = money
          
ÖRNEK:
    def RefreshStatus(self):
        money = player.GetElk()
        self.wndMoney.SetText(localeInfo.NumberToMoneyString(money))

        if app.ENABLE_YANG_CHANGE_EFFECT:
            if self.lastYang is not None and money != self.lastYang:
                self.__ShowYangDelta(money - self.lastYang)
        self.lastYang = money
Kod:
root/uiInventory.py
ARAT:
    def OnUpdate(self):

ALTINA EKLE:
        if app.ENABLE_YANG_CHANGE_EFFECT:
            self.__ProcessYangDeltaQueue()
            self.__UpdateYangDeltaEffects()
Kod:
root/uiInventory.py
DOSYANIN ALTINA MÜSAİT BİR YERE EKLE:

    if app.ENABLE_YANG_CHANGE_EFFECT:
        def __ShowYangDelta(self, delta):
            if not self.IsShow() or not self.wndMoneySlot:
                return

            if len(self.yangDeltaEffects) + len(self.yangDeltaQueue) >= YANG_DELTA_MAX_VISIBLE:
                if self.yangDeltaQueue:
                    self.yangDeltaQueue.pop(0)
                else:
                    oldestEffect = self.yangDeltaEffects.pop(0)
                    oldestEffect["text"].Hide()

            self.yangDeltaQueue.append(delta)

        def __ProcessYangDeltaQueue(self):
            if not self.yangDeltaQueue:
                return

            now = app.GetTime()
            if now < self.yangDeltaNextSpawnAt:
                return

            delta = self.yangDeltaQueue.pop(0)
            self.__CreateYangDelta(delta)
            self.yangDeltaNextSpawnAt = now + YANG_DELTA_SPAWN_INTERVAL

        def __CreateYangDelta(self, delta):
            if len(self.yangDeltaEffects) >= YANG_DELTA_MAX_VISIBLE:
                oldestEffect = self.yangDeltaEffects.pop(0)
                oldestEffect["text"].Hide()

            if delta > 0:
                text = "+" + localeInfo.NumberToMoneyStringNEW(delta)
                color = YANG_DELTA_GAIN_COLOR
            else:
                text = "-" + localeInfo.NumberToMoneyStringNEW(-delta)
                color = YANG_DELTA_LOSS_COLOR

            moneyX, moneyY = self.wndMoneySlot.GetGlobalPosition()
            windowX, windowY = self.GetGlobalPosition()
            stackIndex = len(self.yangDeltaEffects)

            startX = moneyX - windowX + self.wndMoneySlot.GetWidth() / 2 + 20 + (stackIndex % 2) * 4
            startY = moneyY - windowY - 22 + stackIndex * 4

            textLine = ui.TextLine()
            textLine.SetParent(self)
            textLine.SetHorizontalAlignCenter()
            textLine.SetPosition(startX, startY)
            textLine.SetOutline()
            textLine.SetFeather()
            textLine.SetPackedFontColor(0xFF000000 | color)
            textLine.SetText(text)
            textLine.Show()

            self.yangDeltaEffects.append({
                "text": textLine,
                "startX": startX,
                "startY": startY,
                "startTime": app.GetTime(),
                "color": color,
            })

        def __UpdateYangDeltaEffects(self):
            if not self.yangDeltaEffects:
                return

            now = app.GetTime()
            activeEffects = []

            for effect in self.yangDeltaEffects:
                elapsed = now - effect["startTime"]

                if elapsed >= YANG_DELTA_DURATION:
                    effect["text"].Hide()
                    continue

                progress = elapsed / YANG_DELTA_DURATION
                riseProgress = 1.0 - (1.0 - progress) * (1.0 - progress)
                fadeProgress = max(0.0, (progress - 0.35) / 0.65)
                alpha = int(255 * (1.0 - fadeProgress))

                effect["text"].SetPosition(
                    effect["startX"],
                    effect["startY"] - int(YANG_DELTA_RISE * riseProgress)
                )
                effect["text"].SetPackedFontColor((alpha << 24) | effect["color"])
                activeEffects.append(effect)

            self.yangDeltaEffects = activeEffects

        def __ClearYangDeltaEffects(self):
            for effect in getattr(self, "yangDeltaEffects", []):
                effect["text"].Hide()

            self.yangDeltaEffects = []
            self.yangDeltaQueue = []
            self.yangDeltaNextSpawnAt = 0.0

Kod:
Eğer filesinizde
C++:Panoya kopyala
SİZDE BU KOD YOKSA
localeInfo.NumberToMoneyStringNEW(delta)
localeInfo.NumberToMoneyStringNEW(-delta)
    
DEĞİŞTİR:
localeInfo.NumberToString(delta)
localeInfo.NumberToString(-delta)
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap

Tema düzenleyici

Tema özelletirmeleri

Grafik arka planlar

Granit arka planlar