eggxp
Members-
Posts
24 -
Joined
-
Last visited
Never -
Donations
0.00 GBP
About eggxp
- Birthday 01/01/1
eggxp's Achievements
Member (2/3)
0
Reputation
-
[FIX] packet size error in ServerPktHeader if isLargePacket
eggxp replied to eggxp's topic in ... rejectedOld
If you guys are totally on your own, I admire you, as a god..... :cool: -
[FIX] packet size error in ServerPktHeader if isLargePacket
eggxp replied to eggxp's topic in ... rejectedOld
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? -
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
-
cool, Thank you!
-
no, you can rejecte it. emsy is right:)
-
cool, you're right
-
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
-
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
-
The Patch is tested, please review
-
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
-
Ok
-
maybe..... strange field @_@
-
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?
-
OK, Thanks! I'll study your code
Contact Us
To contact us
click here
You can also email us at [email protected]
Privacy Policy | Terms & Conditions
You can also email us at [email protected]
Privacy Policy | Terms & Conditions
Copyright © getMaNGOS. All rights Reserved.
This website is in no way associated with or endorsed by Blizzard Entertainment®
This website is in no way associated with or endorsed by Blizzard Entertainment®