Yardım Yeni sistem için yardım

  • Konuyu açan Konuyu açan layers
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 11
  • Gösterim Gösterim 271
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

layers

MT Üye
MT Üye
Mesaj
356
Çözümler
27
Beğeni
261
Puan
829
Ticaret Puanı
0
Hepinize merhaba arkadaşlar farm koruma nesnesi sistemini yaptım nesneyi kullanan oyunculara belirlediğim haritalarda saldırı yapılamıyor attack fonksiyonundan hasarı engelledim ama yine karaktere vuruluyor vuramadan uyarı çıkması için nasıl bi yol izlemeliyim

 
Güvenli alanda saldıramama olayı yol gösterici olabilir.

4 yıl önce rubinum bunu oyununa eklediğinde 1/3 online kaybetmişti, bence ekleyecekseniz biraz debuff vermeniz lazım örnek Drop şansı %20 azalır.
 
C++:
Genişlet Daralt Kopyala
bool CInstanceBase::IsAttackableInstance(CInstanceBase& rkInstVictim)
{   
    if (__IsMainInstance())
    {       
        CPythonPlayer& rkPlayer=CPythonPlayer::Instance();
        if(rkPlayer.IsObserverMode())
            return false;
    }

    if (GetVirtualID() == rkInstVictim.GetVirtualID())
        return false;

    if (IsStone())
    {
        if (rkInstVictim.IsPC())
            return true;
    }
    else if (IsPC())
    {
        if (rkInstVictim.IsStone())
            return true;

        if (rkInstVictim.IsPC())
        {
            // Buraya ekleyeceksin >>
            if(rkInstVictim.IsFarm()) // IsFarm örnektir. Burayı kendine göre uyarla
            {
                CPythonChat::Instance().AppendChat(CHAT_TYPE_INFO,
                "Farm yapan karaktere saldiramazsin.");
                return false;
            }
            // Son >>
 
C++:
Genişlet Daralt Kopyala
bool CInstanceBase::IsAttackableInstance(CInstanceBase& rkInstVictim)
{  
    if (__IsMainInstance())
    {      
        CPythonPlayer& rkPlayer=CPythonPlayer::Instance();
        if(rkPlayer.IsObserverMode())
            return false;
    }

    if (GetVirtualID() == rkInstVictim.GetVirtualID())
        return false;

    if (IsStone())
    {
        if (rkInstVictim.IsPC())
            return true;
    }
    else if (IsPC())
    {
        if (rkInstVictim.IsStone())
            return true;

        if (rkInstVictim.IsPC())
        {
            // Buraya ekleyeceksin >>
            if(rkInstVictim.IsFarm()) // IsFarm örnektir. Burayı kendine göre uyarla
            {
                CPythonChat::Instance().AppendChat(CHAT_TYPE_INFO,
                "Farm yapan karaktere saldiramazsin.");
                return false;
            }
            // Son >>
IsAffect ile denedim ama olmadı
 
IsAffect ile denedim ama olmadı
O zaman sisteminin affect yönetimiyle alakalı bir sorun vardır.
Şimdi bizzat denedim:
C++:
Genişlet Daralt Kopyala
if (rkInstVictim.IsAffect(AFFECT_YMIR))
{
    CPythonChat::Instance().AppendChat(CHAT_TYPE_INFO,
        "Farm yapan karaktere saldiramazsin.");
    return false;
}

İki karakteri de serbeste aldım ve saldıramıyor.
Ekran görüntüsü 2025-10-01 180813.webp
 
O zaman sisteminin affect yönetimiyle alakalı bir sorun vardır.
Şimdi bizzat denedim:
C++:
Genişlet Daralt Kopyala
if (rkInstVictim.IsAffect(AFFECT_YMIR))
{
    CPythonChat::Instance().AppendChat(CHAT_TYPE_INFO,
        "Farm yapan karaktere saldiramazsin.");
    return false;
}

İki karakteri de serbeste aldım ve saldıramıyor.
25923 eklentisini görüntüle
Ekran görüntüsü 2025-10-01 210418.webp


bu şekilde değil mi
 
ben bu sistemde paket kullanmadım dediğinize göre kullanmam gerekli
Affect için pakete gerek yok, sadece affectin aktarım işlemi düzgün olmalı. Client src içinde test için başka bir yerde aynı şekilde IsAffect ile farm sorgusu yapmayı deneyebilirsin. Eğer testin sonucu başarısız olursa affect cliente gelmiyor demektir.
 
Affect için pakete gerek yok, sadece affectin aktarım işlemi düzgün olmalı. Client src içinde test için başka bir yerde aynı şekilde IsAffect ile farm sorgusu yapmayı deneyebilirsin. Eğer testin sonucu başarısız olursa affect cliente gelmiyor demektir.
affect ikon olarak eklemiştim cliente gelmese onuda göstermez değil mi?
 
Geri
Üst