Reklam
Hocam öncelikle cevabın için çok teşekkür ederim uif tarafında gizlesemde client tarafı loadı okuduğu için geçsede yansada sarı efekt çıkıyor client 2369 ıstırap olduğundan asm ile hook atmam lazım bakalım yanma anında ki offsetleri buldum olursa yanma kısmında load kısmını atlayıp kırmızı efekti göstermeye zorlicam olmadı düz load kullanıcam mecburHocam kod tarafında önce gizlemen gerekiyor uifin childlerini sonrasında upgrade anında gösterilecek kodu yazman gerekli.
enum class AnimationState : uint8_t
{
None, // Animasyon yok
Start, // Başlangıç
FlipFlop, // Yanıp sönme animasyonu (kırmızı/sarı)
Result, // Sonuç gösterimi
CoverOpening, // Kapak açılma animasyonu
Done // Tamamlandı
};
void CUIItemUpgrade::FlipFlopAnim()
{
if (m_bUpgradeSucceeded) // Başarılı ise
{
// Önceki frame'i gizle
if (m_iCurrentFrame > 0 && m_pImgSuccess[m_iCurrentFrame - 1] != nullptr)
m_pImgSuccess[m_iCurrentFrame - 1]->SetVisible(false);
// Şu anki frame'i göster (SARI - img_s_load_X)
if (m_pImgSuccess[m_iCurrentFrame] != nullptr)
{
m_pImgSuccess[m_iCurrentFrame]->SetVisible(true);
m_pImgSuccess[m_iCurrentFrame]->SetParent(this);
}
}
else // Başarısız ise
{
// Önceki frame'i gizle
if (m_iCurrentFrame > 0 && m_pImgFail[m_iCurrentFrame - 1] != nullptr)
m_pImgFail[m_iCurrentFrame - 1]->SetVisible(false);
// Şu anki frame'i göster (KIRMIZI - img_f_load_X)
if (m_pImgFail[m_iCurrentFrame] != nullptr)
{
m_pImgFail[m_iCurrentFrame]->SetVisible(true);
m_pImgFail[m_iCurrentFrame]->SetParent(this);
}
}
}
void CUIItemUpgrade::UpdateFlipFlopAnimation()
{
constexpr float FLIPFLOP_FRAME_DELAY = 0.1f; // Her frame 0.1 saniye
m_fAnimationTimer += CN3Base::s_fSecPerFrm;
if (m_fAnimationTimer >= FLIPFLOP_FRAME_DELAY)
{
m_fAnimationTimer -= FLIPFLOP_FRAME_DELAY;
++m_iCurrentFrame;
if (m_iCurrentFrame >= FLIPFLOP_MAX_FRAMES) // 19 frame
{
HideAllAnimationFrames();
m_eAnimationState = AnimationState::Result;
m_fAnimationTimer = 0.0f;
}
else
{
FlipFlopAnim(); // Bir sonraki frame'i göster
}
}
}
Çok teşekkür ederim hocam ISTIRAP a entegre etmeye çalışıcam inşaALLAH sağolun yardımınız içinSourcemden gösterdiğin uif ile çalışan animasyon kodunu alta bırakıyorum ama bunu hook ile nasıl eklersin ben bilmem
Animasyon Durumları (AnimationState enum):
C++:enum class AnimationState : uint8_t { None, // Animasyon yok Start, // Başlangıç FlipFlop, // Yanıp sönme animasyonu (kırmızı/sarı) Result, // Sonuç gösterimi CoverOpening, // Kapak açılma animasyonu Done // Tamamlandı };Ana Animasyon Fonksiyonları:
1. FlipFlopAnim() - Kırmızı/Sarı yanıp sönme animasyonu:
2. UpdateFlipFlopAnimation() - Frame zamanlayıcı:C++:void CUIItemUpgrade::FlipFlopAnim() { if (m_bUpgradeSucceeded) // Başarılı ise { // Önceki frame'i gizle if (m_iCurrentFrame > 0 && m_pImgSuccess[m_iCurrentFrame - 1] != nullptr) m_pImgSuccess[m_iCurrentFrame - 1]->SetVisible(false); // Şu anki frame'i göster (SARI - img_s_load_X) if (m_pImgSuccess[m_iCurrentFrame] != nullptr) { m_pImgSuccess[m_iCurrentFrame]->SetVisible(true); m_pImgSuccess[m_iCurrentFrame]->SetParent(this); } } else // Başarısız ise { // Önceki frame'i gizle if (m_iCurrentFrame > 0 && m_pImgFail[m_iCurrentFrame - 1] != nullptr) m_pImgFail[m_iCurrentFrame - 1]->SetVisible(false); // Şu anki frame'i göster (KIRMIZI - img_f_load_X) if (m_pImgFail[m_iCurrentFrame] != nullptr) { m_pImgFail[m_iCurrentFrame]->SetVisible(true); m_pImgFail[m_iCurrentFrame]->SetParent(this); } } }
C++:void CUIItemUpgrade::UpdateFlipFlopAnimation() { constexpr float FLIPFLOP_FRAME_DELAY = 0.1f; // Her frame 0.1 saniye m_fAnimationTimer += CN3Base::s_fSecPerFrm; if (m_fAnimationTimer >= FLIPFLOP_FRAME_DELAY) { m_fAnimationTimer -= FLIPFLOP_FRAME_DELAY; ++m_iCurrentFrame; if (m_iCurrentFrame >= FLIPFLOP_MAX_FRAMES) // 19 frame { HideAllAnimationFrames(); m_eAnimationState = AnimationState::Result; m_fAnimationTimer = 0.0f; } else { FlipFlopAnim(); // Bir sonraki frame'i göster } } }
Image Array'leri:
- m_pImgSuccess[19] → img_s_load_0 ... img_s_load_18 (SARI - başarılı)
- m_pImgFail[19] → img_f_load_0 ... img_f_load_18 (KIRMIZI - başarısız)
Animasyon Akışı:
Bu sayede item upgrade başarılı olursa sarı, başarısız olursa kırmızı yanıp sönen bir animasyon efekti oluşuyor.
- Start → Kapaklar kapanır, animasyon başlar
- FlipFlop → 19 frame boyunca 0.1 saniye aralıklarla kırmızı veya sarı image'lar sırayla gösterilir
- Result → Sonuç belirlenir
- CoverOpening → Kapaklar açılır, sonuç görünür
- Done → Animasyon tamamlanır