Jump to content

eggxp

Members
  • Posts

    24
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

About eggxp

  • Birthday 01/01/1

eggxp's Achievements

Member

Member (2/3)

0

Reputation

  1. If you guys are totally on your own, I admire you, as a god..... :cool:
  2. you are right Thank you I found such a packet when I login in dalaran in pub wow. SMSG_COMPRESSED_UPDATE_OBJECT , header is 80 A6 0C F6 01 size is 42511 BTW: how do you guys figer out such things, with help of blizz or just IDA wow.exe?
  3. Patch: 10775 Bug: packet size error in ServerPktHeader if isLargePacket Ticket: https://mangos.lighthouseapp.com/projects/18208-mangos/tickets/658-packet-size-error-in-serverpktheader-if-islargepacket Code: From 1dc248db7504b7f9b3d84b88c9ec9769f7cd7471 Mon Sep 17 00:00:00 2001 From: eggxp <[email protected]> Date: Mon, 22 Nov 2010 08:56:54 +0800 Subject: [PATCH] [Fix] packet size error for LargePacket --- src/game/WorldSocket.cpp | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/src/game/WorldSocket.cpp b/src/game/WorldSocket.cpp index 413bd4c..8383125 100644 --- a/src/game/WorldSocket.cpp +++ b/src/game/WorldSocket.cpp @@ -167,7 +167,8 @@ int WorldSocket::SendPacket (const WorldPacket& pct) // Dump outgoing packet. sLog.outWorldPacketDump(uint32(get_handle()), pct.GetOpcode(), LookupOpcodeName(pct.GetOpcode()), &pct, false); - ServerPktHeader header(pct.size()+2, pct.GetOpcode()); + int pctSize = pct.size()+2 > 0x7FFF ? pct.size()+3:pct.size()+2; + ServerPktHeader header(pctSize, pct.GetOpcode()); m_Crypt.EncryptSend ((uint8*)header.header, header.getHeaderLength()); if (m_OutBuffer->space () >= pct.size () + header.getHeaderLength() && msg_queue()->is_empty()) -- 1.7.3.1.msysgit.0 in pub wow in dalaran, when player login, the SMSG_COMPRESSED_UPDATE_OBJECT packet size will be > 50000 bytes, and it's a large packet. totalsize = packetSize + 3
  4. eggxp

    Macros

    It's useful, cooooooooooooool!
  5. Base On Patch: 10695 Ticket : https://mangos.lighthouseapp.com/projects/18208-mangos/tickets/656-rollmeleeoutcomeagainst-order-error [FIX]RollMeleeOutcomeAgainst order error. our order is Miss / Dodge / Parry / Block / Critical hit / Glancing Blow / Crushing Blow / Ordinary hit but http://www.wowwiki.com/Attack_table this article say Miss / Dodge / Parry / Glancing Blow / Block / Critical hit / Crushing Blow / Ordinary hit and i believe it's true From 24aeef7839c96eb511d19f65892ae7aedb619ebc Mon Sep 17 00:00:00 2001 From: eggxp <[email protected]> Date: Mon, 8 Nov 2010 08:33:50 +0800 Subject: [PATCH] [FIX] roll chance table order --- src/game/Unit.cpp | 76 +++++++++++++++++++++++++++++----------------------- 1 files changed, 42 insertions(+), 34 deletions(-) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index ad97f4b..527354a 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -2607,8 +2607,7 @@ MeleeHitOutcome Unit::RollMeleeOutcomeAgainst (const Unit *pVictim, WeaponAttack } } - // parry & block chances - + // parry chances // check if attack comes from behind, nobody can parry or block if attacker is behind if (!pVictim->HasInArc(M_PI_F,this)) { @@ -2633,20 +2632,49 @@ MeleeHitOutcome Unit::RollMeleeOutcomeAgainst (const Unit *pVictim, WeaponAttack return MELEE_HIT_PARRY; } } - - if(pVictim->GetTypeId()==TYPEID_PLAYER || !(((Creature*)pVictim)->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_NO_BLOCK) ) - { - tmp = block_chance; - if ( (tmp > 0) // check if unit _can_ block - && ((tmp -= skillBonus) > 0) - && (roll < (sum += tmp))) - { - DEBUG_FILTER_LOG(LOG_FILTER_COMBAT, "RollMeleeOutcomeAgainst: BLOCK <%d, %d)", sum-tmp, sum); - return MELEE_HIT_BLOCK; - } - } } + // Max 40% chance to score a glancing blow against mobs that are higher level (can do only players and pets and not with ranged weapon) + if( attType != RANGED_ATTACK && + (GetTypeId() == TYPEID_PLAYER || ((Creature*)this)->IsPet()) && + pVictim->GetTypeId() != TYPEID_PLAYER && !((Creature*)pVictim)->IsPet() && + getLevel() < pVictim->GetLevelForTarget(this) ) + { + // cap possible value (with bonuses > max skill) + int32 skill = attackerWeaponSkill; + int32 maxskill = attackerMaxSkillValueForLevel; + skill = (skill > maxskill) ? maxskill : skill; + + tmp = (10 + (victimDefenseSkill - skill)) * 100; + tmp = tmp > 4000 ? 4000 : tmp; + if (roll < (sum += tmp)) + { + DEBUG_FILTER_LOG(LOG_FILTER_COMBAT, "RollMeleeOutcomeAgainst: GLANCING <%d, %d)", sum-4000, sum); + return MELEE_HIT_GLANCING; + } + } + + // block chances + // check if attack comes from behind, nobody can parry or block if attacker is behind + if (!pVictim->HasInArc(M_PI_F,this)) + { + DEBUG_FILTER_LOG(LOG_FILTER_COMBAT, "RollMeleeOutcomeAgainst: attack came from behind."); + } + else + { + if(pVictim->GetTypeId()==TYPEID_PLAYER || !(((Creature*)pVictim)->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_NO_BLOCK) ) + { + tmp = block_chance; + if ( (tmp > 0) // check if unit _can_ block + && ((tmp -= skillBonus) > 0) + && (roll < (sum += tmp))) + { + DEBUG_FILTER_LOG(LOG_FILTER_COMBAT, "RollMeleeOutcomeAgainst: BLOCK <%d, %d)", sum-tmp, sum); + return MELEE_HIT_BLOCK; + } + } + } + // Critical chance tmp = crit_chance; @@ -2656,26 +2684,6 @@ MeleeHitOutcome Unit::RollMeleeOutcomeAgainst (const Unit *pVictim, WeaponAttack return MELEE_HIT_CRIT; } - // Max 40% chance to score a glancing blow against mobs that are higher level (can do only players and pets and not with ranged weapon) - if( attType != RANGED_ATTACK && - (GetTypeId() == TYPEID_PLAYER || ((Creature*)this)->IsPet()) && - pVictim->GetTypeId() != TYPEID_PLAYER && !((Creature*)pVictim)->IsPet() && - getLevel() < pVictim->GetLevelForTarget(this) ) - { - // cap possible value (with bonuses > max skill) - int32 skill = attackerWeaponSkill; - int32 maxskill = attackerMaxSkillValueForLevel; - skill = (skill > maxskill) ? maxskill : skill; - - tmp = (10 + (victimDefenseSkill - skill)) * 100; - tmp = tmp > 4000 ? 4000 : tmp; - if (roll < (sum += tmp)) - { - DEBUG_FILTER_LOG(LOG_FILTER_COMBAT, "RollMeleeOutcomeAgainst: GLANCING <%d, %d)", sum-4000, sum); - return MELEE_HIT_GLANCING; - } - } - // mobs can score crushing blows if they're 4 or more levels above victim if (GetLevelForTarget(pVictim) >= pVictim->GetLevelForTarget(this) + 4 && // can be from by creature (if can) or from controlled player that considered as creature -- 1.7.3.1.msysgit.0
  6. thank you for reply when can we add the other part patch? [FIX] shaman in team HORDE summon totem display_id error it looks strange now
  7. TICKET: 648 https://mangos.lighthouseapp.com/projects/18208-mangos/tickets/648-shaman-in-team-horde-summon-totem-display_id-error Patch : [10654] [FIX] shaman in team HORDE summon totem display_id error. TAUREN summon totem display_id is same as DRAENEI for example. the bug is made by [10296] Move ChooseDisplayId to Creature class for access from script side [FIX] totem still can't have anim when destroyed. because it's not DEAD From f4077e62a1a4c8c4e0bf0bd16148061c483aa23f Mon Sep 17 00:00:00 2001 From: eggxp <[email protected]> Date: Fri, 29 Oct 2010 08:45:54 +0800 Subject: [PATCH] [FIX] shaman in team HORDE summon totem display_id error. [FIX] totem still can't have anim when destroyed. because it's not DEAD --- src/game/Creature.cpp | 6 ++++++ src/game/Totem.cpp | 1 + 2 files changed, 7 insertions(+), 0 deletions(-) diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index 1a1ba8b..91f4193 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -250,6 +250,12 @@ bool Creature::InitEntry(uint32 Entry, uint32 team, const CreatureData *data ) return false; } + // for totem(ALLIANCE and HORDE have different totem) + if (team == HORDE && (cinfo->ModelId[2] || cinfo->ModelId[3])) + { + display_id = cinfo->ModelId[2] ? cinfo->ModelId[2] : cinfo->ModelId[3]; + } + CreatureModelInfo const *minfo = sObjectMgr.GetCreatureModelRandomGender(display_id); if (!minfo) // Cancel load if no model defined { diff --git a/src/game/Totem.cpp b/src/game/Totem.cpp index 87cb0d5..53600d1 100644 --- a/src/game/Totem.cpp +++ b/src/game/Totem.cpp @@ -106,6 +106,7 @@ void Totem::UnSummon() ((Creature*)owner)->AI()->SummonedCreatureDespawn((Creature*)this); } + SetDeathState(DEAD); AddObjectToRemoveList(); } -- 1.7.3.1.msysgit.0
  8. in SMSG_UPDATE_OBJECT, the field: ITEM_FIELD_ENCHANTMENT_1_1 + slot*MAX_ENCHANTMENT_OFFSET + ENCHANTMENT_DURATION_OFFSET is not meaning duration, Client seems don't use the value. if ENCHANTMENT_DURATION_OFFSET == 0, client will not display aura time in other case, client have no reaction to the value. do any body know what it really means?
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use