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!
Petsystem.h Açılır ve aratılır
Altına Eklenir
Tekrar Aratılır
Altına Eklenir
Petsystem.h ile işimiz bitti Şimdi PetSystem.cpp Açalım Ve Aratalım.
Yukarıdaki Satırı Komple Aşağıdaki Gibi Değiştirin.
Şimdi Tekrar Aratalım
Altına Eklenir.
Aratalım
Üstüne Ekleyelim
PetSystem.cpp İle İşimiz Bitti Şimdi char_battle.cpp açalım
En Başına Ekleyelim
Sonra Aratalım:
Altına Eklenir
Şimdi char_battle.cpp ile işimiz bitti pvp.cpp açalım ve aratalım
Altına Eklenir:
Ve Pet Atak Sistemini Eklemiş Oluyoruz 1 Teşekkür Yeterlidir. İyi Forumlar.
Kod:
void Unmount();
Altına Eklenir
Kod:
bool Attack(LPCHARACTER pkVictim = NULL);
Tekrar Aratılır
Kod:
CPetActor* GetByVnum(DWORD vnum) const;
Altına Eklenir
Kod:
void LaunchAttack(LPCHARACTER pkVictim = NULL);
Petsystem.h ile işimiz bitti Şimdi PetSystem.cpp Açalım Ve Aratalım.
Kod:
bool CPetActor::Update(DWORD deltaTime)
Kod:
bool CPetActor::Update(DWORD deltaTime)
{
bool bResult = true;
// Æê ÁÖÀÎÀÌ Á×¾ú°Å³ª, ¼ÒȯµÈ ÆêÀÇ »óŰ¡ ÀÌ»óÇÏ´Ù¸é ÆêÀ» ¾ø¾Ú. (NOTE: °¡²û°¡´Ù ÀÌ·± Àú·± ÀÌÀ¯·Î ¼ÒȯµÈ ÆêÀÌ DEAD »óÅ¿¡ ºüÁö´Â °æ¿ì°¡ ÀÖÀ½-_-;)
// ÆêÀ» ¼ÒȯÇÑ ¾ÆÀÌÅÛÀÌ ¾ø°Å³ª, ³»°¡ °¡Áø »óŰ¡ ¾Æ´Ï¶ó¸é ÆêÀ» ¾ø¾Ú.
if (m_pkOwner->IsDead() || (IsSummoned() && m_pkChar->IsDead())
|| NULL == ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())
|| ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())->GetOwner() != this->GetOwner()
)
{
this->Unsummon();
return true;
}
if (this->IsSummoned() && HasOption(EPetOption_Followable))
bResult = bResult && this->_UpdateFollowAI();
return bResult;
}
Yukarıdaki Satırı Komple Aşağıdaki Gibi Değiştirin.
Kod:
bool CPetActor::Update(DWORD deltaTime)
{
bool bResult = false;
// Æê ÁÖÀÎÀÌ Á×¾ú°Å³ª, ¼ÒȯµÈ ÆêÀÇ »óŰ¡ ÀÌ»óÇÏ´Ù¸é ÆêÀ» ¾ø¾Ú. (NOTE: °¡²û°¡´Ù ÀÌ·± Àú·± ÀÌÀ¯·Î ¼ÒȯµÈ ÆêÀÌ DEAD »óÅ¿¡ ºüÁö´Â °æ¿ì°¡ ÀÖÀ½-_-;)
// ÆêÀ» ¼ÒȯÇÑ ¾ÆÀÌÅÛÀÌ ¾ø°Å³ª, ³»°¡ °¡Áø »óŰ¡ ¾Æ´Ï¶ó¸é ÆêÀ» ¾ø¾Ú.
if (m_pkOwner->IsDead() || (IsSummoned() && m_pkChar->IsDead())
|| NULL == ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())
|| ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())->GetOwner() != this->GetOwner()
)
{
this->Unsummon();
return true;
}
if (this->GetCharacter()->GetVictim())
{
bResult = this->Attack();
}
if (!bResult)
{
if (this->IsSummoned() && HasOption(EPetOption_Followable))
bResult = this->_UpdateFollowAI();
}
return bResult;
}
Şimdi Tekrar Aratalım
Kod:
void CPetActor::ClearBuff()
Kod:
void CPetActor::ClearBuff()
{
if (NULL == m_pkOwner)
return ;
TItemTable* item_proto = ITEM_MANAGER::instance().GetTable(m_dwSummonItemVnum);
if (NULL == item_proto)
return;
for (int i = 0; i < ITEM_APPLY_MAX_NUM; i++)
{
if (item_proto->aApplies[i].bType == APPLY_NONE)
continue;
m_pkOwner->ApplyPoint(item_proto->aApplies[i].bType, -item_proto->aApplies[i].lValue);
}
return ;
}
Altına Eklenir.
Kod:
bool CPetActor::Attack(LPCHARACTER pkVictim)
{
if (pkVictim)
{
if (!pkVictim->IsMonster() || pkVictim->IsDead())
return false;
if (m_pkChar->GetVictim())
return false;
}
else
{
pkVictim = m_pkChar->GetVictim();
if (!pkVictim)
return false;
}
m_pkChar->SetVictim(pkVictim);
const PIXEL_POSITION& rkPetPos = m_pkChar->GetXYZ();
const PIXEL_POSITION& rkVictimPos = pkVictim->GetXYZ();
int iDistance = DISTANCE_APPROX(rkPetPos.x - rkVictimPos.x, rkPetPos.y - rkVictimPos.y);
if (iDistance >= m_pkChar->GetMobAttackRange())
{
m_pkChar->Follow(pkVictim, m_pkChar->GetMobAttackRange());
}
else
{
if (get_dword_time() - m_pkChar->GetLastAttackTime() >= 3000)
{
if (m_pkChar->Attack(pkVictim))
{
m_pkChar->SendMovePacket(FUNC_ATTACK, 0, rkPetPos.x, rkPetPos.y, 0, get_dword_time());
m_pkChar->SetLastAttacked(get_dword_time());
}
}
}
return true;
}
Aratalım
Kod:
bool CPetSystem::Update(DWORD deltaTime)
Üstüne Ekleyelim
Kod:
void CPetSystem::LaunchAttack(LPCHARACTER pkVictim)
{
if (!pkVictim)
return;
for (itertype(m_petActorMap) it = m_petActorMap.begin(); it != m_petActorMap.end(); ++it)
{
CPetActor* pkPetActor = it->second;
if (pkPetActor->IsSummoned())
pkPetActor->Attack(pkVictim);
}
}
En Başına Ekleyelim
Kod:
#include "PetSystem.h"
Sonra Aratalım:
Kod:
if (BATTLE_DEAD == iRet && IsPC())
SetVictim(NULL);
Altına Eklenir
Kod:
if (BATTLE_DEAD != iRet && IsPC())
{
if (m_petSystem && m_petSystem->CountSummoned() > 0)
m_petSystem->LaunchAttack(pkVictim);
}
Şimdi char_battle.cpp ile işimiz bitti pvp.cpp açalım ve aratalım
Kod:
bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim)
Altına Eklenir:
Kod:
if (pkChr->IsPet() && pkVictim->IsMonster())
{
return true;
}
if (pkChr->IsMonster() && pkVictim->IsPet())
{
return true;
}
Ve Pet Atak Sistemini Eklemiş Oluyoruz 1 Teşekkür Yeterlidir. İyi Forumlar.
Son düzenleme:
En Çok Reaksiyon Alan Mesajlar
Bunu satan vardı bi ara teşekkürler :m08:
bunu satan vardı bi ara teşekkürler :m08:
s:adf:sadf:sadf:asdf:as:df
Bu pasha37 nin sattığı şeymi?
Onun Sattığı Sistem ama Bu Onun Değil.
- Durum
- Üzgünüz bu konu cevaplar için kapatılmıştır...
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 16
- Görüntüleme
- 1K
- Cevaplar
- 18
- Görüntüleme
- 5K
- Cevaplar
- 7
- Görüntüleme
- 1K
- Cevaplar
- 37
- Görüntüleme
- 2K
