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:
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:
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
Eline sağlık paylaşım için teşekkürler
Rica Ederim iyi kullanımlarEline sağlık paylaşım için teşekkürler
Rica Ederim iyi kullanımlarEline sağlık paylaşım için teşekkürler
Ben teşekkür ederim <3eline sağlık paylasim için teşekkürler
Şu an konuyu görüntüleyenler (Toplam : 4, Üye: 1, Misafir: 3)
Benzer konular
- Cevaplar
- 12
- Görüntüleme
- 4K