Jump to content
Araştır
  • Diğer seçenekler ...
Sonuçları bul ...
Sonuçları bul ...
byxox

Gab ve Faun Hk ufakbir soru

Önerilen Mesajlar

Arkadaşlar merhabalar

1- Aztec Faun staf ile karşıdakine vurduğumda kaul hale dönüyor vurduğum adam fakat tekrar normale dönmüyor src den tam olarak nereye bakmalıyım acaba

2- Gab Adamant taktığımda patlama olayı çalışmıyor tam olarak nereye bakmalıyım acaba

yardımcı olabılırsenız cok sevınırım

tesekkurler

İletiyi paylaş


Link to post
Sitelerde Paylaş

Db'deki ITEM_OP tablosu,
srclerdeki TriggerProcItem Fonksiyonu

Test etmek için ITEM_OP Tablosundaki patlama oranını yüksek tutup dene
tablodaki bTriggerType değerleri :
TriggerTypeAttack = 3,//Damage Attıgı zaman tetikler
TriggerTypeDefend = 13//Damage Yediği Zaman tetikler

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Db'deki ITEM_OP tablosu,
srclerdeki TriggerProcItem Fonksiyonu

Test etmek için ITEM_OP Tablosundaki patlama oranını yüksek tutup dene
tablodaki bTriggerType değerleri :
TriggerTypeAttack = 3,//Damage Attıgı zaman tetikler
TriggerTypeDefend = 13//Damage Yediği Zaman tetikler


kardeş selam

1- ITEM_OP tablosundan mesela gab adamantın kodunu buldum
2- Item kodunu defans kalkanı oldugu ıcın 13 olan kodu ekledım
3- rate oranını 100 ayarladım
4- 491068 skıll kodunu ayarladım ama hıc bısı yapmıyor

acaba adamantın patlaması ıcın skıll kodu nedır bulamadım

bendekı bu sekılde ayarlı :

http://prntscr.com/haepwv

İletiyi paylaş


Link to post
Sitelerde Paylaş

Skilld ID si doğru.
TriggerProcItem fonksiyonuna break point koyarak sorunu bulabilirsin.
MagicInstance o skili çalıştırmıyor olabilir o yüzden izleyerek nerede failed verdiğini vs bulup ona göre işlem yapman gerek

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Skilld ID si doğru.
TriggerProcItem fonksiyonuna break point koyarak sorunu bulabilirsin.
MagicInstance o skili çalıştırmıyor olabilir o yüzden izleyerek nerede failed verdiğini vs bulup ona göre işlem yapman gerek


selam dostum

bır turlu halledemedım magıc ınstance kontrol ettım

case MORAL_SELF:

if (nSkillID != 491067 || nSkillID != 491068 || nSkillID != 491069)// Gabs Patlaması düzeldi
if (pSkillCaster->isPlayer()
&& pSkillCaster != pSkillTarget) /// ????? why added on moral_self? i try old this code :D
goto fail_return;
break;


şeklınde ayarlanmıs raum / chaos vs kontrol ettım succesrate %100 yapınca sorunsuz patlıyor wındforce vs sorunsuz ama gab da problem var

İletiyi paylaş


Link to post
Sitelerde Paylaş

TriggerProcItem fonksiyonuna break point koyarak sorunu bulabilirsin.
MagicInstance o skili çalıştırmıyor olabilir o yüzden izleyerek nerede failed verdiğini vs bulup ona göre işlem yapman gerek

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Arkadaşlar merhabalar

1- Aztec Faun staf ile karşıdakine vurduğumda kaul hale dönüyor vurduğum adam fakat tekrar normale dönmüyor src den tam olarak nereye bakmalıyım acaba


tesekkurler


Aztec Gold Faun'un özelliği, hedefi 'Undead' yapmasıdır. Yani, tuttuğunda rakibin kullandığı pot ve aldığı heal, damage olarak işler. Eğer ki senin dosyalarında Aztec Gold Faun, Kaul'e dönüştürüyorsa zaten bir sıkıntı var demektir. Normalde Kaul Faun'un özelliğidir o.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
selam dostum

bır turlu halledemedım magıc ınstance kontrol ettım

case MORAL_SELF:

if (nSkillID != 491067 || nSkillID != 491068 || nSkillID != 491069)// Gabs Patlaması düzeldi
if (pSkillCaster->isPlayer()
&& pSkillCaster != pSkillTarget) /// ????? why added on moral_self? i try old this code :D
goto fail_return;
break;


şeklınde ayarlanmıs raum / chaos vs kontrol ettım succesrate %100 yapınca sorunsuz patlıyor wındforce vs sorunsuz ama gab da problem var


MORAL_SELF'te yapılan

if (nSkillID != 491067 || nSkillID != 491068 || nSkillID != 491069)


kontrolü anlamsız.

491067 - Unsight, Moral : 7 (MORAL_ENEMY)
491068 - Adamant, Moral : 1 (MORAL_SELF)
491069 - Divine Protection, Moral 1 (MORAL_SELF)

Adamant ve Divine Protection için pSkillCaster == pSkillTarget koşulu sağlanmak durumunda, çünkü bu skill'in moral değeri SELF olarak ayarlı.

Problemine dönecek olursak, örnek olması açısından kendi OnAttack, OnDefend ve TriggerProcItem fonksiyonlarımı veriyorum.


void CPlayer::OnAttack(Unit * pTarget, AttackType attackType)
{
if (!pTarget->isPlayer()
|| attackType == AttackTypeMagic)
return;

// Trigger weapon procs for the attacker on attack
static const uint8 itemSlots[] = { KOInventorySlots::HAND_RIGHT, KOInventorySlots::HAND_LEFT };
foreach_array (i, itemSlots)
{
// If we hit an applicable weapon, don't try proc'ing the other weapon.
// It is only ever meant to proc on the dominant weapon.
if (TriggerProcItem(itemSlots[i], pTarget, TriggerTypeAttack))
break;
}
}

void CPlayer::OnDefend(Unit * pAttacker, AttackType attackType)
{
if (!pAttacker->isPlayer())
return;

// Trigger defensive procs for the defender when being attacked
static const uint8 itemSlots[] = { KOInventorySlots::HAND_LEFT ,KOInventorySlots::EAR_RIGHT, KOInventorySlots::EAR_LEFT };
foreach_array (i, itemSlots)
TriggerProcItem(itemSlots[i], pAttacker, TriggerTypeDefend);
}

/**
* @brief Trigger item procs.
*
* @param bSlot Slot of item to attempt to proc.
* @param pTarget Target of the skill (attacker/defender depending on the proc type).
* @param triggerType Which type of item to proc (offensive/defensive).
*
* @return true if there's an applicable item to proc, false if not.
*/
bool CPlayer::TriggerProcItem(uint8 bSlot, Unit * pTarget, ItemTriggerType triggerType)
{
// Don't proc weapon skills if our weapon is disabled.
if (triggerType == TriggerTypeAttack && BuffManager.Type4().isWeaponsDisabled())
return false;

// Ensure there's an item in this slot,
_ITEM_DATA * pItem = GetItem(bSlot);
if (pItem == nullptr
// and that it doesn't need to be repaired.
|| pItem->sDurability == 0)
return false; // not an applicable item

// Ensure that this item has an attached proc skill in the table
const _ITEM_OP * pData = CDataPool::GetItemSkillTriggerData(pItem->nNum);
if (pData == nullptr // no skill to proc
|| pData->bTriggerType != triggerType) // don't use an offensive proc when we're defending (or vice versa)
return false; // not an applicable item

// At this point, we have determined there is an applicable item in the slot.
// Should it proc now? (note: CheckPercent() checks out of 1000)
if (!CheckPercent(pData->bTriggerRate * 10))
return true; // it is an applicable item, it just didn't proc. No need to proc subsequent items.

MagicInstance instance;

instance.bIsItemProc = true;
instance.sCasterID = GetID();
if(pData->nSkillID == 460006)
instance.sTargetID = GetID();
else
instance.sTargetID = pTarget->GetID();
instance.nSkillID = pData->nSkillID;

// For AOE skills such as "Splash", the AOE should be focus on the target.
instance.sData[0] = static_cast(pTarget->GetX());
instance.sData[2] = static_cast(pTarget->GetZ());
instance.slZoneInstanceID = GetInstanceID();
instance.bZoneSubID = GetSubZoneID();
instance.bZoneID = GetZoneID();
instance.Run();
return true; // it is an applicable item, and it proc'd. No need to proc subsequent items.
}

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Aztec Gold Faun'un özelliği, hedefi 'Undead' yapmasıdır. Yani, tuttuğunda rakibin kullandığı pot ve aldığı heal, damage olarak işler. Eğer ki senin dosyalarında Aztec Gold Faun, Kaul'e dönüştürüyorsa zaten bir sıkıntı var demektir. Normalde Kaul Faun'un özelliğidir o.


ben yanlış söylemişim kaul faun staf vurunca kaul oluyor normale dönmuyor.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
ben yanlış söylemişim kaul faun staf vurunca kaul oluyor normale dönmuyor.


Normale dönmüyor ise, RemoveType4Buff'ta bir sorun vardır. State change'nin gönderildiğinden emin ol.

case BUFF_TYPE_KAUL_TRANSFORMATION:	// Transforms the target into a Kaul (a pig thing), preventing you from /town'ing or attacking, but increases defense.

if (pTarget->isPlayer())
{
pTarget->m_bIsKaul = false;
pTarget->m_sACAmount -= 500;
pTarget->StateChangeServerDirect(3, TO_USER(pTarget)->m_nOldAbnormalType);
}
break;

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
MORAL_SELF'te yapılan

if (nSkillID != 491067 || nSkillID != 491068 || nSkillID != 491069)


kontrolü anlamsız.

491067 - Unsight, Moral : 7 (MORAL_ENEMY)
491068 - Adamant, Moral : 1 (MORAL_SELF)
491069 - Divine Protection, Moral 1 (MORAL_SELF)

Adamant ve Divine Protection için pSkillCaster == pSkillTarget koşulu sağlanmak durumunda, çünkü bu skill'in moral değeri SELF olarak ayarlı.

Problemine dönecek olursak, örnek olması açısından kendi OnAttack, OnDefend ve TriggerProcItem fonksiyonlarımı veriyorum.


void CPlayer::OnAttack(Unit * pTarget, AttackType attackType)
{
if (!pTarget->isPlayer()
|| attackType == AttackTypeMagic)
return;

// Trigger weapon procs for the attacker on attack
static const uint8 itemSlots[] = { KOInventorySlots::HAND_RIGHT, KOInventorySlots::HAND_LEFT };
foreach_array (i, itemSlots)
{
// If we hit an applicable weapon, don't try proc'ing the other weapon.
// It is only ever meant to proc on the dominant weapon.
if (TriggerProcItem(itemSlots[i], pTarget, TriggerTypeAttack))
break;
}
}

void CPlayer::OnDefend(Unit * pAttacker, AttackType attackType)
{
if (!pAttacker->isPlayer())
return;

// Trigger defensive procs for the defender when being attacked
static const uint8 itemSlots[] = { KOInventorySlots::HAND_LEFT ,KOInventorySlots::EAR_RIGHT, KOInventorySlots::EAR_LEFT };
foreach_array (i, itemSlots)
TriggerProcItem(itemSlots[i], pAttacker, TriggerTypeDefend);
}

/**
* @brief Trigger item procs.
*
* @param bSlot Slot of item to attempt to proc.
* @param pTarget Target of the skill (attacker/defender depending on the proc type).
* @param triggerType Which type of item to proc (offensive/defensive).
*
* @return true if there's an applicable item to proc, false if not.
*/
bool CPlayer::TriggerProcItem(uint8 bSlot, Unit * pTarget, ItemTriggerType triggerType)
{
// Don't proc weapon skills if our weapon is disabled.
if (triggerType == TriggerTypeAttack && BuffManager.Type4().isWeaponsDisabled())
return false;

// Ensure there's an item in this slot,
_ITEM_DATA * pItem = GetItem(bSlot);
if (pItem == nullptr
// and that it doesn't need to be repaired.
|| pItem->sDurability == 0)
return false; // not an applicable item

// Ensure that this item has an attached proc skill in the table
const _ITEM_OP * pData = CDataPool::GetItemSkillTriggerData(pItem->nNum);
if (pData == nullptr // no skill to proc
|| pData->bTriggerType != triggerType) // don't use an offensive proc when we're defending (or vice versa)
return false; // not an applicable item

// At this point, we have determined there is an applicable item in the slot.
// Should it proc now? (note: CheckPercent() checks out of 1000)
if (!CheckPercent(pData->bTriggerRate * 10))
return true; // it is an applicable item, it just didn't proc. No need to proc subsequent items.

MagicInstance instance;

instance.bIsItemProc = true;
instance.sCasterID = GetID();
if(pData->nSkillID == 460006)
instance.sTargetID = GetID();
else
instance.sTargetID = pTarget->GetID();
instance.nSkillID = pData->nSkillID;

// For AOE skills such as "Splash", the AOE should be focus on the target.
instance.sData[0] = static_cast(pTarget->GetX());
instance.sData[2] = static_cast(pTarget->GetZ());
instance.slZoneInstanceID = GetInstanceID();
instance.bZoneSubID = GetSubZoneID();
instance.bZoneID = GetZoneID();
instance.Run();
return true; // it is an applicable item, and it proc'd. No need to proc subsequent items.
}


evet dediğin gibi src ye item kontrolu koymak gereksizmiş. Cünkü tek problem magic tablosundaki moral sekmesının 1 olmasımış. 7 olunca kendıne 1 olunca karşı taraf olduğu için orası gözumden kaçmış gab problemı duzelmıstır tesekkurler.
-- mesaja ek olarak --
Alıntı
Normale dönmüyor ise, RemoveType4Buff'ta bir sorun vardır. State change'nin gönderildiğinden emin ol.

case BUFF_TYPE_KAUL_TRANSFORMATION:	// Transforms the target into a Kaul (a pig thing), preventing you from /town'ing or attacking, but increases defense.

if (pTarget->isPlayer())
{
pTarget->m_bIsKaul = false;
pTarget->m_sACAmount -= 500;
pTarget->StateChangeServerDirect(3, TO_USER(pTarget)->m_nOldAbnormalType);
}
break;


gunaydınlar

ben kontrol ettım

Grandtype4buffda

case BUFF_TYPE_KAUL_TRANSFORMATION:	// Transforms the target into a Kaul (a pig thing), preventing you from /town'ing or attacking, but increases defense.

if (pTarget->isPlayer())
{
pTarget->m_bIsKaul = true;
pTarget->m_sACAmount += 500;
pTarget->StateChangeServerDirect(3, pType->iNum);
}
break;


Removetype4buff da ise

case BUFF_TYPE_KAUL_TRANSFORMATION:	// Transforms the target into a Kaul (a pig thing), preventing you from /town'ing or attacking, but increases defense.

if (pTarget->isPlayer())
{
pTarget->m_bIsKaul = false;
pTarget->m_sACAmount -= 500;
pTarget->StateChangeServerDirect(3, TO_USER(pTarget)->m_nOldAbnormalType);
}
break;


şeklınde girilmiş

İletiyi paylaş


Link to post
Sitelerde Paylaş

×
×
  • Yeni Oluştur...