byxox 67 #1 Oluşturuldu: Kasım 14, 2017 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 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
goto566 39 #2 Kasım 14, 2017 tarihinde gönderildi 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 1 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
byxox 67 #3 Konu Sahibi Kasım 14, 2017 tarihinde gönderildi 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 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
goto566 39 #4 Kasım 14, 2017 tarihinde gönderildi 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 1 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
byxox 67 #5 Konu Sahibi Kasım 18, 2017 tarihinde gönderildi 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 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
goto566 39 #6 Kasım 19, 2017 tarihinde gönderildi 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 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
PENTAGRAM 926 #7 Kasım 19, 2017 tarihinde gönderildi 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. 1 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
PENTAGRAM 926 #8 Kasım 19, 2017 tarihinde gönderildi 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. } 1 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
byxox 67 #9 Konu Sahibi Kasım 19, 2017 tarihinde gönderildi 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. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
PENTAGRAM 926 #10 Kasım 19, 2017 tarihinde gönderildi 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; 1 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
byxox 67 #11 Konu Sahibi Kasım 20, 2017 tarihinde gönderildi 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ş Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
donz05 30 #12 Kasım 21, 2017 tarihinde gönderildi kaul sorunun çözüldümü hocam Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
byxox 67 #13 Konu Sahibi Kasım 21, 2017 tarihinde gönderildi Alıntıkaul sorunun çözüldümü hocam hayır hocam cozulmedı kaul normale donmuyor o sekılde kalıyor Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
donz05 30 #14 Kasım 22, 2017 tarihinde gönderildi bizde uğraşıyoruz saatlerdir çözersek burda paylaşırız inşallah kardeşim... Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
byxox 67 #15 Konu Sahibi Kasım 23, 2017 tarihinde gönderildi Alıntıbizde uğraşıyoruz saatlerdir çözersek burda paylaşırız inşallah kardeşim... hadı ınsallah kardes Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş