Çözüldü Ninja Okçu çoklu hedefte yaşanılan hata.

  • Konuyu açan Konuyu açan 1b1b
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 16
  • Gösterim Gösterim 474
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

1b1b

Çaylak Üye
Üye
Mesaj
13
Çözümler
1
Beğeni
4
Puan
13
Ticaret Puanı
0
Merhaba,

Belki instagram üzerinden göreniniz mutlaka olmuştur bir sunucu geliştirme projesiyle ilgileniyorum.(instagram : 1b1b.dev)
10-11 Gündür bu sistemle uğraştığım ve artık fazlaca tıkandığım için Metin2 geliştirme üzerine daha yüksek tecrübesi olan sizlerede danışmak istedim.
Neler neler yaptım, geldim burada patladım. Günlerdir kodları okuyorum geziyorum ama ancak buraya kadar gelebildim.

Linkleri görebilmek için giriş yap veya kayıt ol.


Amaç : Okçunun 3-4 hedefe aynı anda 1 saldırı yapmasını sağlamak.
Sorun : Ana hedef harici diğer hedeflere 3-4x veya daha fazla hasar vurması.

Yukarıdaki görselde aşağı yukarı anlatmak istediğim durum belli, eğer yardımcı olabileceğini düşünen varsa fikirleşirsek çok mutlu olurum.

- PlayerInput ve EventMotion + flyevent ile bağlantılı oluştuğunu düşünüyorum sorunun, sistemi kendim yazdığım için direkt olarak paylaşamıyorum ancak gördüğünde anlayan biri olursa ücretli/ücretsiz yardım eli uzatırsa kodları parça parça paslaşabiliriz.

Discord : 1b1b.
Instagram : 1b1b.dev

Çok teşekkürler şimdiden
Sevgiler,
 
Server tarafında yaptığın düzenlemeleri gözden geçirmeni öneririm
 
Server tarafında yaptığın düzenlemeleri gözden geçirmeni öneririm
Server taraflı değil tamamen client taraflı yaptım, bir çok geliştiricide bu sistemi benzer şekilde client taraflı olarak yapmış hatta bir kaç yabancı geliştiriciye gösterdiğimde 30-40dk içerisinde clientside olarak sistemi yaptılar. Serverside'a hiç dokunulmadı yani belkide dokunmak mı gerekiyordu..
 
lByBzOx.jpeg


gördüğüm kadarıyla hasarlarda 3x-4x gibi bir durum yok ancak 3x-4x defa aynı hedeflere tekrar tekrar saldırıyorsa bundan kaynaklı olabilir, herhangi bir kod olmadan ne olup bittiğini söylemek güç ancak diğer hedeflere saldırı yollarken muhtemelen bir loop gibi bir şey var ve bu nested loop olarak çalışıyor dolayısıyla aynı hedefleri tekrar seçip tekrar hasar gönderiyor gibi geldi
 
Nasıl bir kodlama yaptığını bilmediğimden net bir şey diyemem. Ancak videoya bakılırsa:

Ana hedef için aşağıdaki fotoğraflara göz atıldığında:
Ekran görüntüsü 2025-04-15 153937.webp
Ekran görüntüsü 2025-04-15 153537.webp

Burada her şey normal görünüyor.

Ancak şöyle bir şey var:
Ekran görüntüsü 2025-04-15 154449.webp

Burada aynı kurda (arkadakilerden bir tanesi) üst üste birden kez damage atılıyor. Zaten görsel efektten de anlaşılıyor. Damage efekti üst üste binmiş yoğun bir şekilde görünüyor. Aynı şey çevredeki diğer hayvanlara da oluyor bu yüzden hepsi ölüyor.
Server taraflı hiçbir şey yapmadığını söylediğine göre, büyük ihtimalle client src de yaptığın düzenlemelerde çevredeki düşmanların hasar alması için yaptığın düzenlemelerde sorun var. Belki karakterin saldırı motionu ve eventi onların üzerinde defalarca kez etki gösteriyordur. Bu noktalara dikkat edersen sorunun nereden kaynaklandığını bulabilirsin.

@pasha37 kalbimiz bir
 
Nasıl bir kodlama yaptığını bilmediğimden net bir şey diyemem. Ancak videoya bakılırsa:

Ana hedef için aşağıdaki fotoğraflara göz atıldığında:
22929 eklentisini görüntüle22930 eklentisini görüntüle
Burada her şey normal görünüyor.

Ancak şöyle bir şey var:
22931 eklentisini görüntüle
Burada aynı kurda (arkadakilerden bir tanesi) üst üste birden kez damage atılıyor. Zaten görsel efektten de anlaşılıyor. Damage efekti üst üste binmiş yoğun bir şekilde görünüyor. Aynı şey çevredeki diğer hayvanlara da oluyor bu yüzden hepsi ölüyor.
Server taraflı hiçbir şey yapmadığını söylediğine göre, büyük ihtimalle client src de yaptığın düzenlemelerde çevredeki düşmanların hasar alması için yaptığın düzenlemelerde sorun var. Belki karakterin saldırı motionu ve eventi onların üzerinde defalarca kez etki gösteriyordur. Bu noktalara dikkat edersen sorunun nereden kaynaklandığını bulabilirsin.

@pasha37 kalbimiz bir
Evet zaten anlatmak istediğim buydu pek iyi ifade edemedim artık o kadar beynim yandı ki..

Yaptığım testlerde gözlemlenen debuglarla beraber ana hedef harici diğer hedefleri koddan bul seç hepsine +++ flyevent ve saldırı gönder dediğim için -> ana hedef harici bu tekrarlama sorunu ortaya çıkıyor gibi duruyor ancak baktığımda yazdığım şeyde bir türlü mantık hatası bulamıyorum AI'larda aynı şekilde bir hata ayıklayamadılar o yüzden aşağı yukarı flyeventleri ve saldırı sistemlerinden anlıyorum diyen biri olursa kodları gönderebilirim paslaşmak adına dedim, isterseniz sizede mesaj atabilirim, (@pasha37 sizede)
 
aşağıdaki sistem için ok kullanımını biraz kurcalamıştım, oto hedef seçme için birşeyler yapmıştım belki işine yarar, yaptığın ile karşılaştırabilirsin.



QGNiTcD.png


Kod:
Genişlet Daralt Kopyala
void CPythonPlayer::ProcessBowAttack(CInstanceBase& rkInstMain)
{
    float fAttackRange = rkInstMain.GetBowRange();

    // Find potential victims in trajectory
    CInstanceBase* pkInstTarget = nullptr;
    if (rkInstMain.NEW_GetFrontInstance(&pkInstTarget, fAttackRange))
    {
        // Set target as victim
        SetTarget(pkInstTarget->GetVirtualID(), true);
    }
    else
    {
        // No target found, Set target position based on trajectory
        __ClearTarget();

        TPixelPosition kPPosDst;
        rkInstMain.NEW_GetBowTargetPosition(&kPPosDst);

        kPPosDst.x = kPPosDst.x;
        kPPosDst.y = -kPPosDst.y;

        // Register the target position for flying
        rkInstMain.AddFlyTargetPosition(kPPosDst);
    }

    // Perform attack
    rkInstMain.NEW_Attack();

    // Clear victim after attack
    __ClearTarget();
}

yapman gereken tek şey burada NEW_GetFrontInstance'da yaptığım yerine bir yerine kaç hedefe vurulacaksa o hedefleri alıp her biri için NEW_Attack çağırmak
 
ben client tarafında motion kontrolleri falan olduğu için server taraflı yazmıştım bi ara :aman:
 
aşağıdaki sistem için ok kullanımını biraz kurcalamıştım, oto hedef seçme için birşeyler yapmıştım belki işine yarar, yaptığın ile karşılaştırabilirsin.



QGNiTcD.png


Kod:
Genişlet Daralt Kopyala
void CPythonPlayer::ProcessBowAttack(CInstanceBase& rkInstMain)
{
    float fAttackRange = rkInstMain.GetBowRange();

    // Find potential victims in trajectory
    CInstanceBase* pkInstTarget = nullptr;
    if (rkInstMain.NEW_GetFrontInstance(&pkInstTarget, fAttackRange))
    {
        // Set target as victim
        SetTarget(pkInstTarget->GetVirtualID(), true);
    }
    else
    {
        // No target found, Set target position based on trajectory
        __ClearTarget();

        TPixelPosition kPPosDst;
        rkInstMain.NEW_GetBowTargetPosition(&kPPosDst);

        kPPosDst.x = kPPosDst.x;
        kPPosDst.y = -kPPosDst.y;

        // Register the target position for flying
        rkInstMain.AddFlyTargetPosition(kPPosDst);
    }

    // Perform attack
    rkInstMain.NEW_Attack();

    // Clear victim after attack
    __ClearTarget();
}

yapman gereken tek şey burada NEW_GetFrontInstance'da yaptığım yerine bir yerine kaç hedefe vurulacaksa o hedefleri alıp her biri için NEW_Attack çağırmak

Bu baya farklı benim ilerlemeden, benim eklemek istediğim bir kaç ek özellik var o yüzden her şey new attack üzerinde ve onpress tabii ama buna ek olarak flyevent gerektiği için ekstra onlarıda çağırmak için değişiklikler yaptım. O yüzden aslında olan kod üzerinde baksam anlarım diyen biriyle kafa kafaya vermek istiyorum :D

ben client tarafında motion kontrolleri falan olduğu için server taraflı yazmıştım bi ara :aman:
flyeventleri çağırmıyor ama clientside olmazsa
 
ninjayı lonca savaşında çok öne çıkarabilir genelde sura ve şaman oynanuyordu heralde alan vurdukları için sürekli
 
- PvP'de çalışmıyor
- Ninja okçu sınıfı seçili değilse çalışmıyor
heee ozaman tamam. metinlere de çoklu vuruyor mu yoksa sadece canavarlara mı ayarlı? bir kaç metine aynı anda vuruyosa belki orada da öne çıkabilir
 
heee ozaman tamam. metinlere de çoklu vuruyor mu yoksa sadece canavarlara mı ayarlı? bir kaç metine aynı anda vuruyosa belki orada da öne çıkabilir
Çoklu metin bende bulunmadığı için denk gelmesi düşük bir ihtimal ancak yazdığım sistemde olası bir durumda type type'da tanıtılabilir ancak bende zaten haritada 8 metin var yok
 
  • Beğen
Tepkiler: Ken
svside bunu beğenmedi şaka bir yana sunucu taraflı validasyonları bir tık zorlaştırır gibi
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst