Neler yeni

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

  • Merhaba Değerli Ziyaretçimiz, ForumaGel ailesi seni bekliyor! 🌟 Aramıza katılarak güçlü ve samimi topluluğumuzun bir parçası olabilirsin. Burada her üye değerli, her katkı kıymetli. Şimdi üye ol, bizimle birlikte gelişmenin ve keyifli sohbetlerin tadını çıkar! Sevgi ve Saygılarla, ForumaGel Yönetimi ❤️
Yan Yana Banner

Krallık Koruyucu NPC Yapmak (1 Görüntüleyici)

Yan Yana Banner
Katılım
7 Nis 2025
Konular
75
Mesajlar
485
Çözümler
1
Tepkime puanı
114
Puan
93
Konum
İstanbul
Web sitesi
forumagel.com
GuardNPC olan npcler kendi krallığından olmayan oyunculara saldırıp anında öldürüyor.

C++:
bool CHARACTER::IsGuardNPC() const
{
    return IsNPC() && (GetRaceNum() == 11000 || GetRaceNum() == 11001 || GetRaceNum() == 11002 || GetRaceNum() == 11003 || GetRaceNum() == 11004 || GetRaceNum() == 11005);
}

//GetRaceNum() == xxxx --> xxx alanı npc vnum'udur. İstediğiniz kadar npcyi || ile ayırıp ekleyebilirsiniz.

C++:
void CHARACTER::__StateIdle_NPC() üstüne ekle.

class FuncGuardFindVictim
{
public:
    FuncGuardFindVictim(LPCHARACTER pkChr) :
        m_pkChr(pkChr),
        m_pkVictim(nullptr),
        m_iMaxDistance(pkChr->GetMobAttackRange())
    {}

    void operator()(LPENTITY ent)
    {
        if (!ent->IsType(ENTITY_CHARACTER))
            return;

        LPCHARACTER pkChr = static_cast<LPCHARACTER>(ent);

        if (pkChr->IsPC() && pkChr->GetEmpire() != m_pkChr->GetEmpire())
        {
            int iDistance = DISTANCE_APPROX(m_pkChr->GetX() - pkChr->GetX(), m_pkChr->GetY() - pkChr->GetY());

            if (iDistance <= m_iMaxDistance)
            {
                m_pkVictim = pkChr;
            }
        }
    }

    LPCHARACTER GetVictim() const
    {
        return m_pkVictim;
    }

private:
    LPCHARACTER m_pkChr;
    LPCHARACTER m_pkVictim;
    int m_iMaxDistance;
};

else if (IsGuardNPC()) bu else ifi komple aşağıdaki ile değiştir.
    
    else if (IsGuardNPC())
    {
        if (!quest::CQuestManager::instance().GetEventFlag("noguard"))
        {
            FuncGuardFindVictim f(this);

            if (GetSectree())
            {
                GetSectree()->ForEachAround(f);
            }

            LPCHARACTER victim = f.GetVictim();

            if (victim)
            {
                m_dwStateDuration = passes_per_sec / 2;

                if (CanBeginFight())
                {
                    BeginFight(victim);
                }
            }
        }
    }
 

Şu an konuyu görüntüleyenler

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz

Zevkini yansıtan rengi seç

Geniş / Dar görünüm

Temanızı geniş yada dar olarak kullanmak için kullanabileceğiniz bir yapıyı kontrolünü sağlayabilirsiniz.

Izgara görünümlü forum listesi

Forum listesindeki düzeni ızgara yada sıradan listeleme tarzındaki yapının kontrolünü sağlayabilirsiniz.

Resimli ızgara modu

Izgara forum listesinde resimleri açıp/kapatabileceğiniz yapının kontrolünü sağlayabilirsiniz.

Kenar çubuğunu kapat

Kenar çubuğunu kapatarak forumdaki kalabalık görünümde kurtulabilirsiniz.

Sabit kenar çubuğu

Kenar çubuğunu sabitleyerek daha kullanışlı ve erişiminizi kolaylaştırabilirsiniz.

Köşe kıvrımlarını kapat

Blokların köşelerinde bulunan kıvrımları kapatıp/açarak zevkinize göre kullanabilirsiniz.

Geri