- 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:
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.
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)
