Mt2Hizmet 1
Mt2Hizmet
Sevdamsın 1
Sevdamsın
Nedved35 1
Nedved35
Bvural41 1
Bvural41
-TuRKuaZ- 1
-TuRKuaZ-
farkmt2official 1
farkmt2official
Hikaye Ekle

Krallık Koruyucu NPC (GuardNPC)

  • Konuyu başlatan Konuyu başlatan Rien
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 6
  • Görüntüleme Görüntüleme 402

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

GuardNPC olan npcler kendi krallığından olmayan oyunculara saldırıp anında öldürüyor.

1.gif


[CODE lang="cpp" title="char.cpp" highlight="3"]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.[/CODE]

[CODE lang="cpp" title="char_state.cpp"]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);
}
}
}
}[/CODE]
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst