Jump to content

darkstalker

Members
  • Posts

    717
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by darkstalker

  1. Effect0 6 SPELL_EFFECT_APPLY_AURA Effect1 6 SPELL_EFFECT_APPLY_AURA Effect2 6 SPELL_EFFECT_APPLY_AURA EffectImplicitTargetA0 22 TARGET_CASTER_COORDINATES EffectImplicitTargetA1 22 TARGET_CASTER_COORDINATES EffectImplicitTargetA2 22 TARGET_CASTER_COORDINATES EffectImplicitTargetB0 7 TARGET_AREAEFFECT_INSTANT EffectImplicitTargetB1 7 TARGET_AREAEFFECT_INSTANT EffectImplicitTargetB2 7 TARGET_AREAEFFECT_INSTANT EffectRadiusIndex0 27 Radius: 50, Radius2: 50 EffectRadiusIndex1 27 Radius: 50, Radius2: 50 EffectRadiusIndex2 27 Radius: 50, Radius2: 50 EffectApplyAuraName0 79 SPELL_AURA_MOD_DAMAGE_PERCENT_DONE EffectApplyAuraName1 61 SPELL_AURA_MOD_SCALE EffectApplyAuraName2 133 SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT looks like an AoE spell for me
  2. someday they'll become normal data fields instead of text..
  3. really good idea, it could be extended to creature spawns too. other thing that could be done is setting spawnMask = 0 instead of deleting creatures/GOs, this way prevents destroying DB data
  4. Thanks for the info, i don't have retail access so everything i did is guessed. edit: there is the collected data, first block for feral charge and second for death grip seems to be a lineal relation between travel time and distance, but couldn't find one for speedZ doesn't look like stuff matching DBC data, maybe values are result of calculating parabolic movement
  5. achievement points rank (assuming you have Achievement.dbc dumped into database 'dbc_335') SELECT c.name, (SELECT SUM(at.points) FROM character_achievement AS ca INNER JOIN dbc_335.Achievement AS at ON ca.achievement = at.id WHERE ca.guid = c.guid) AS points FROM characters AS c ORDER BY points DESC LIMIT 10;
  6. comment out parts like here: uint32 Player::CalculateTalentsPoints() const { uint32 base_talent = getLevel() < 10 ? 0 : getLevel()-9; //if(getClass() != CLASS_DEATH_KNIGHT) return uint32(base_talent * sWorld.getConfig(CONFIG_FLOAT_RATE_TALENT)); /* uint32 talentPointsForLevel = getLevel() < 56 ? 0 : getLevel() - 55; talentPointsForLevel += m_questRewardTalentCount; if(talentPointsForLevel > base_talent) talentPointsForLevel = base_talent; return uint32(talentPointsForLevel * sWorld.getConfig(CONFIG_FLOAT_RATE_TALENT)); */ }
  7. At first sight seems to send some kind of "pet not found" response to client, so it tries to get correct one. Not sending this might break an asynchronous query/response chain client side, and as result you get an "unknown" pet.
  8. arena rank: SELECT s.rating, a.name, s.wins2, s.played FROM arena_team_stats AS s LEFT JOIN arena_team AS a ON s.arenateamid = a.arenateamid WHERE a.type = 2 ORDER BY s.rating DESC LIMIT 10; if you want 3v3 or 5v5 rankings just change there where clause to 3 or 5 -- i'm interested in a way to get a ranking of achievement points, is that possible?
  9. Yea, but don't know how to do that. I just copied nearby function (MonsterMove) that seems to be working fine atm for similar purpose. Maybe should make something in movement generators but still i don't understand that part of the code. Just giving default values when dbc data is missing. If you got something better for that then contribute it (visually comparing with retail). I don't have any reference, just made it "look ok" knockback effects are actually a SMSG_MOVE_KNOCK_BACK, has nothing to do with this.
  10. * What bug does the patch fix? What features does the patch add? Implements packet structure for sending monster move with SPLINEFLAG_TRAJECTORY and its usage on Spell:EffectJump. This is used for effect of spells like http://www.wowhead.com/spell=49376 and http://www.wowhead.com/spell=49575. * For which repository revision was the patch created? 10567 * Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. i think there was one, but can't find it. * Who has been writing this patch? Please include either forum user names or email addresses. darkstalker diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 823966a..76869a5 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -2877,7 +2877,14 @@ void Spell::EffectJump(SpellEffectIndex eff_idx) return; } - m_caster->NearTeleportTo(x, y, z, o, true); + uint32 speed_z = m_spellInfo->EffectMiscValue[eff_idx]; + if (!speed_z) + speed_z = 10; + uint32 time = m_spellInfo->EffectMiscValueB[eff_idx]; + if (!time) + time = speed_z * 10; + + m_caster->MonsterJump(x, y, z, o, time, speed_z); } void Spell::EffectTeleportUnits(SpellEffectIndex eff_idx) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 3448163..ba3f8d8 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -401,6 +401,11 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, SplineTy data << uint32(flags); // splineflags data << uint32(moveTime); // Time in between points + if (flags & SPLINEFLAG_TRAJECTORY) + { + data << float(va_arg(vargs, double)); // Z jump speed + data << uint32(0); // walk time after jump + } data << uint32(1); // 1 single waypoint data << NewPosX << NewPosY << NewPosZ; // the single waypoint Point B @@ -10435,6 +10440,28 @@ void Unit::MonsterMoveWithSpeed(float x, float y, float z, uint32 transitTime) } } +void Unit::MonsterJump(float x, float y, float z, float o, uint32 transitTime, uint32 verticalSpeed) +{ + SendMonsterMove(x, y, z, SPLINETYPE_NORMAL, SplineFlags(SPLINEFLAG_TRAJECTORY | SPLINEFLAG_WALKMODE), transitTime, NULL, double(verticalSpeed)); + + if (GetTypeId() != TYPEID_PLAYER) + { + Creature* c = (Creature*)this; + // Creature relocation acts like instant movement generator, so current generator expects interrupt/reset calls to react properly + if (!c->GetMotionMaster()->empty()) + if (MovementGenerator *movgen = c->GetMotionMaster()->top()) + movgen->Interrupt(*c); + + GetMap()->CreatureRelocation((Creature*)this, x, y, z, o); + + // finished relocation, movegen can different from top before creature relocation, + // but apply Reset expected to be safe in any case + if (!c->GetMotionMaster()->empty()) + if (MovementGenerator *movgen = c->GetMotionMaster()->top()) + movgen->Reset(*c); + } +} + struct SetPvPHelper { explicit SetPvPHelper(bool _state) : state(_state) {} diff --git a/src/game/Unit.h b/src/game/Unit.h index 5efc783..332b6d4 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1450,6 +1450,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject void MonsterMove(float x, float y, float z, uint32 transitTime); void MonsterMoveWithSpeed(float x, float y, float z, uint32 transitTime = 0); + void MonsterJump(float x, float y, float z, float o, uint32 transitTime, uint32 verticalSpeed); // recommend use MonsterMove/MonsterMoveWithSpeed for most case that correctly work with movegens // if used additional args in ... part then floats must explicitly casted to double
  11. need to check if wmo's are transparent?
  12. seems to be related with pet deaths -> despawn
  13. const char *res[3] = { fields[0].GetString(), fields[1].GetString(), fields[2].GetString() }; return res[3]; you can't do that, seems you trying to do vectorial assignations like php/perl, that syntax isn't supported, besides you usingthe wrong types this looks better for me: bool GetLatestNews(std::string& user, std::string& title, std::string& msg) { // 0 1 2 QueryResult *result = SiteDatabase.PQuery("SELECT user, title, message FROM news ORDER BY date DESC LIMIT 1"); if (!result) return false; Field *fields = result->Fetch(); user = fields[0].GetCppString(); title = fields[1].GetCppString(); msg = fields[2].GetCppString(); return true; }
  14. something like this? http://www.wowhead.com/spell=57353
  15. maybe you Spell.dbc is corrupted, try re-extracting it
  16. LoS and height caused by gameobjects still has to be implemented
  17. check combat log while doing autoshots, you might get a "Wild Quiver failed: not recovered yet" message, if that the case might be a non-triggered cast being blocked by the gcd check
  18. will do more testing with hunters later, about http://www.wowhead.com/spell=3045 its a "ranged haste" aura that maybe its not related to unit cast speed and not being put in calculation (i'm not hunter player so didnt really care lol)
  19. i used to like the ajax stuff of vbulletin, doesnt lag me at all
  20. REPLACE INTO spell_proc_event (entry, Cooldown) VALUES (71519, 105), (71562, 105);
  21. Bad: seems i lost all my thanks count again ;<
  22. spell 75 (auto-shot) has no gcd (StartRecoveryCategory = 0, StartRecoveryTime = 0) spell 53209 (chimera shot) has the standard gcd (StartRecoveryCategory = 133, StartRecoveryTime = 1500) spell 34490 (silencing shot) is again with no gcd (both values 0), so shouldn't interfere with chimera That "another thing" you say must be a spell with no gcd or in a different category to be able to cast it succefully on a single gcd. So maybe you should say "MM burst exploit is dead"?
×
×
  • 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