romegames 1
romegames
VictoryasHD 1
VictoryasHD
berzahx 1
berzahx
Bodyguardd 1
Bodyguardd
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Best Studio 1
Best Studio
BySadoTR60 1
BySadoTR60
Reklam vermek için turkmmo@gmail.com

Yang Change Effect v1.0

Türkiye'nin ilk Cross-Platform OldSchool MOBİL & PC 1-99 Sunucusu Lamira2 6 Kasım'da Açılıyor! Büyük Açılışı Kaçırma HEMEN TIKLA!

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:
​

6UTU2wOREl.gif
ur5K0PPStw.gif


Sistemi eklemek için gereken kodları aşağıda paylaşıyorum.
C++:
UserInterface/Locale_inc.h

Müsait bir yere ekle:
#define ENABLE_YANG_CHANGE_EFFECT

C++:
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

C++:
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

C++:
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
C++:
root/uiInventory.py
ARAT:
    def Hide(self):

ALTINA EKLE:
        if app.ENABLE_YANG_CHANGE_EFFECT:
            self.__ClearYangDeltaEffects()

C++:
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

C++:
root/uiInventory.py
ARAT:
    def OnUpdate(self):

ALTINA EKLE:
        if app.ENABLE_YANG_CHANGE_EFFECT:
            self.__ProcessYangDeltaQueue()
            self.__UpdateYangDeltaEffects()

C++:
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

Takıldığınız bir yer olursa sorabilirsiniz iyi kullanımlar :)
​
Eğer filesinizde
C++:
SİZDE BU KOD YOKSA
localeInfo.NumberToMoneyStringNEW(delta)
localeInfo.NumberToMoneyStringNEW(-delta)
    
DEĞİŞTİR:
localeInfo.NumberToString(delta)
localeInfo.NumberToString(-delta)
 
Son düzenleme:

En Çok Reaksiyon Alan Mesajlar

Şu an konuyu görüntüleyenler (Toplam : 4, Üye: 1, Misafir: 3)

Geri
Üst