Agora Metin2 1
Agora Metin2
PrimeAC 1
PrimeAC
ShadowFon 1
ShadowFon
noisiv 1
noisiv
Manwe Work 1
Manwe Work
romegames 1
romegames
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Bvural41 1
Bvural41
NovaLst 1
NovaLst
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

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 399

Rien

Yönetici
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye
Yönetici
Dergi Editörü
Yönetici
Turnuva
Admin
Yarışma
VIP Üye
Paylaşım
Katılım
19 Kas 2009
Konular
1,188
Mesajlar
4,211
Çözüm
11
Online süresi
26d 23h
Reaksiyon Skoru
2,742
Altın Konu
32
Başarım Puanı
344
MmoLira
19,002
DevLira
90
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ 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]
 
Eline sağlık
 
Paylaşım için Teşekkürler
 
paylaşım için teşekkürler
 
Paylaşım için teşekkürler.
 

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

Geri
Üst