KiriX
Members-
Posts
120 -
Joined
-
Last visited
Never -
Donations
0.00 GBP
Content Type
Profiles
Bug Tracker
Wiki
Release Notes
Forums
Downloads
Blogs
Events
Everything posted by KiriX
-
Any problem? Please review this and comment if patch contain errors...
-
This sould fix DK pet and very usefull for a future (for impliment vehicle). Why dev don't commetns this?
-
This patch fix target select for spell effect EffectQuestComplete. So spell as http://www.wowhead.com/spell=31336 should work correctly. Now for MaNGOS all spells with EffectQuestComplete should be cast by player: if(m_caster->GetTypeId() != TYPEID_PLAYER) return; and effects would be apply at caster: Player *_player = (Player*)m_caster; _player->AreaExploredOrEventHappens(quest_id); ignoring all spell's targets from DBC. But spell 31336 has EffectQuestComplete and target for this effect - (TARGET_CASTER_COORDINATES, TARGET_ALL_ENEMY_IN_AREA) and effect will never be apply at player. Also this spell should be cast by NPC http://www.wowhead.com/npc=17664, but with current Spell::EffectQuestComplete implemention will never be apply at player. Patch fix this. diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 096dae3..70ea439 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -7182,10 +7182,10 @@ void Spell::EffectReputation(SpellEffectIndex eff_idx) void Spell::EffectQuestComplete(SpellEffectIndex eff_idx) { - if(m_caster->GetTypeId() != TYPEID_PLAYER) + if(unitTarget->GetTypeId() != TYPEID_PLAYER) return; - Player *_player = (Player*)m_caster; + Player *_player = (Player*)unitTarget; uint32 quest_id = m_spellInfo->EffectMiscValue[eff_idx]; _player->AreaExploredOrEventHappens(quest_id); Author: me
-
Thanks! Realy great patch. Need add to git!
-
[PATCH] Horde & Alliance grouping/trade
KiriX replied to Auntie Mangos's topic in OldCore modifications
I don't know why you have error... Ok, try this. This patchfile wich use I'm. For r.10399 -
[PATCH] Horde & Alliance grouping/trade
KiriX replied to Auntie Mangos's topic in OldCore modifications
No, this is does not mean that I simply removed the check of totems. I just correct this part like it should be in latest mangos revision... -
[PATCH] Horde & Alliance grouping/trade
KiriX replied to Auntie Mangos's topic in OldCore modifications
Рatch from 86 post work - 100% For example: patch from 86 post don't contain Unit::m_TotemSlot -
At youtube video npc return to spawnpoint with using pathfinding. I think that you will add pathfinding into HomeMovementGenerator soon (then it's done ). And big thanks for the realy great work!!!
-
Is need re-extract maps and vmaps? Work well =) One bug - npc correct found path if I attacked them, but then I turn on GM - they return to their spawnpoint without any pathfind =(
-
Drop this patch... This is dirty hack and very-very old...
-
Thx! If I understand you correctly it should be this: // now start building mmtiles for each tile printf("We have %i tiles. \\n", tiles->size()); for(set<uint32>::iterator it = tiles->begin(); it != tiles->end(); ++it) { allVerts.fastClear(); allTris.fastClear(); MeshData meshData; allVerts.fastClear(); is not need - it already in loop...
-
Without key [--hiResHeightmaps true] mmaps was extracted fully without any errors. What makes this key?
-
Yes, I can understand it, but didn't think that's it is true... 3Gb is not enough??? It's terrible... Map 000 exstracted normally. Maybe is clean as a memory? I'll try again without [--hiResHeightmaps true] key.
-
Tried to extract mmaps with key [--hiResHeightmaps true --skipContinents false] Got error: Application Log Start: Mon Aug 23 04:59:07 2010 ************************** Critical Error - MoveMapGen.exe Memory manager returned NULL: out of memory? Expression: data e:\\test\\rsa-10392\\dep\\include\\g3dlite\\G3D/Array.h:154 3Gb DDR2 Error then extract map 001.
-
Thx =) How I should extract mmaps (that key?) if I want get npc move like in youtube move from first post? =) And it will be usefull if you point how many Gb full mmaps and how many files it's contain...
-
One more question. How many Gb mmaps? I get mmaps folder - 242Mb - it's normal too? I think that it's should be more... And need I a special config tune for work mmaps?
-
I have some errors like this when try to build MoveMapsGen: Building map 035: We have 4 tiles. ERROR:StaticMapTree::UnloadMapTile(): Trying to unload non-loaded tile. Map:35 X :31 Y:31 ERROR:StaticMapTree::UnloadMapTile(): Trying to unload non-loaded tile. Map:35 X :31 Y:32 ERROR:StaticMapTree::UnloadMapTile(): Trying to unload non-loaded tile. Map:35 X :32 Y:31 ERROR:StaticMapTree::UnloadMapTile(): Trying to unload non-loaded tile. Map:35 X :32 Y:32 Complete! It's normal?
-
[PATCH] Horde & Alliance grouping/trade
KiriX replied to Auntie Mangos's topic in OldCore modifications
Try this: diff --git a/src/game/Group.cpp b/src/game/Group.cpp index 14d683b..ca85467 100644 --- a/src/game/Group.cpp +++ b/src/game/Group.cpp @@ -347,6 +347,10 @@ bool Group::AddMember(ObjectGuid guid, const char* name) uint32 Group::RemoveMember(ObjectGuid guid, uint8 method) { + // Frozen Mod + BroadcastGroupUpdate(); + // Frozen Mod + // remove member and change leader (if need) only if strong more 2 members _before_ member remove if (GetMembersCount() > uint32(isBGGroup() ? 1 : 2)) // in BG group case allow 1 members group { @@ -1821,6 +1825,36 @@ void Group::_homebindIfInstance(Player *player) } } } +//Frozen Mod +void Group::BroadcastGroupUpdate(void) +{ + for(member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr) + { + Player *pp = sObjectMgr.GetPlayer(citr->guid); + if(pp && pp->IsInWorld()) + { + pp->ForceValuesUpdateAtIndex(UNIT_FIELD_BYTES_2); + pp->ForceValuesUpdateAtIndex(UNIT_FIELD_FACTIONTEMPLATE); + DEBUG_LOG("-- Forced group value update for '%s'", pp->GetName()); + if(pp->GetPet()) + { + pp->GetPet()->ForceValuesUpdateAtIndex(UNIT_FIELD_BYTES_2); + pp->GetPet()->ForceValuesUpdateAtIndex(UNIT_FIELD_FACTIONTEMPLATE); + DEBUG_LOG("-- Forced group value update for '%s' pet '%s'", pp->GetName(), pp->GetPet()->GetName()); + } + for(uint32 i = 0; i < MAX_TOTEM_SLOT; ++i) + { + if(Unit *totem = pp->GetMap()->GetUnit(pp->m_TotemSlot[i])) + { + totem->ForceValuesUpdateAtIndex(UNIT_FIELD_BYTES_2); + totem->ForceValuesUpdateAtIndex(UNIT_FIELD_FACTIONTEMPLATE); + DEBUG_LOG("-- Forced group value update for '%s' totem #%u", pp->GetName(), i); + } + } + } + } +} +// Frozen Mod static void RewardGroupAtKill_helper(Player* pGroupGuy, Unit* pVictim, uint32 count, bool PvP, float group_rate, uint32 sum_level, bool is_dungeon, Player* not_gray_member_with_max_level, Player* member_with_max_level, uint32 xp ) { diff --git a/src/game/Group.h b/src/game/Group.h index 2582cae..b34d404 100644 --- a/src/game/Group.h +++ b/src/game/Group.h @@ -353,6 +353,10 @@ class MANGOS_DLL_SPEC Group InstanceGroupBind* GetBoundInstance(uint32 mapId, Player* player); InstanceGroupBind* GetBoundInstance(Map* aMap, Difficulty difficulty); BoundInstancesMap& GetBoundInstances(Difficulty difficulty) { return m_boundInstances[difficulty]; } + + // Frozen Mod + void BroadcastGroupUpdate(void); + // Frozen Mod protected: bool _addMember(ObjectGuid guid, const char* name, bool isAssistant=false); diff --git a/src/game/GroupHandler.cpp b/src/game/GroupHandler.cpp index 04da05c..d161448 100644 --- a/src/game/GroupHandler.cpp +++ b/src/game/GroupHandler.cpp @@ -208,6 +208,10 @@ void WorldSession::HandleGroupAcceptOpcode( WorldPacket & recv_data ) // everything is fine, do it, PLAYER'S GROUP IS SET IN ADDMEMBER!!! if(!group->AddMember(GetPlayer()->GetObjectGuid(), GetPlayer()->GetName())) return; + + // Frozen Mod + group->BroadcastGroupUpdate(); + // Frozen Mod } void WorldSession::HandleGroupDeclineOpcode( WorldPacket & /*recv_data*/ ) diff --git a/src/game/Object.cpp b/src/game/Object.cpp index f4a8fa7..20ab8e8 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -662,6 +662,54 @@ void Object::BuildValuesUpdate(uint8 updatetype, ByteBuffer * data, UpdateMask * else *data << (m_uint32Values[ index ] & ~UNIT_DYNFLAG_TAPPED); } + + // Frozen Mod + else if(index == UNIT_FIELD_BYTES_2 || index == UNIT_FIELD_FACTIONTEMPLATE) + { + bool ch = false; + + if((GetTypeId() == TYPEID_PLAYER || GetTypeId() == TYPEID_UNIT) && target != this) + { + bool forcefriendly = false; // bool for pets/totems to offload more code from the big if below + + if(GetTypeId() == TYPEID_UNIT) + { + forcefriendly = (((Creature*)this)->isTotem() || ((Creature*)this)->isPet()) + && ((Creature*)this)->GetOwner()->GetTypeId() == TYPEID_PLAYER + && ((Creature*)this)->GetOwner()->IsFriendlyTo(target) // pet owner must be friendly to target + && ((Creature*)this)->GetOwner() != target // no need to send hackfix to pet owner + && (target->IsInSameGroupWith((Player*)((Creature*)this)->GetOwner()) || target->IsInSameRaidWith((Player*)((Creature*)this)->GetOwner())); + } + + if(((Unit*)this)->IsSpoofSamePlayerFaction() || forcefriendly || (target->GetTypeId() == TYPEID_PLAYER && GetTypeId() == TYPEID_PLAYER && (target->IsInSameGroupWith((Player*)this) || target->IsInSameRaidWith((Player*)this)))) + { + if(index == UNIT_FIELD_BYTES_2) + { + DEBUG_LOG("-- VALUES_UPDATE: Sending '%s' the blue-group-fix from '%s' (flag)", target->GetName(), ((Unit*)this)->GetName()); + *data << ( m_uint32Values[ index ] & (UNIT_BYTE2_FLAG_SANCTUARY << 8) ); // this flag is at uint8 offset 1 !! + ch = true; + } + else if(index == UNIT_FIELD_FACTIONTEMPLATE) + { + FactionTemplateEntry const *ft1, *ft2; + ft1 = ((Unit*)this)->getFactionTemplateEntry(); + ft2 = ((Unit*)target)->getFactionTemplateEntry(); + + if(ft1 && ft2 && (!ft1->IsFriendlyTo(*ft2) || ((Unit*)this)->IsSpoofSamePlayerFaction())) + { + uint32 faction = ((Player*)target)->getFaction(); // pretend that all other HOSTILE players have own faction, to allow follow, heal, rezz (trade wont work) + DEBUG_LOG("-- VALUES_UPDATE: Sending '%s' the blue-group-fix from '%s' (faction %u)", target->GetName(), ((Unit*)this)->GetName(), faction); + *data << uint32(faction); + ch = true; + } + } + } + } + + if(!ch) + *data << m_uint32Values[ index ]; + } + // Frozen Mod else { // send in current format (float as float, uint32 as uint32) @@ -1664,6 +1712,21 @@ Creature* WorldObject::SummonCreature(uint32 id, float x, float y, float z, floa return pCreature; } +// Frozen Mod +void Object::ForceValuesUpdateAtIndex(uint32 i) +{ + m_uint32Values_mirror[i] = GetUInt32Value(i) + 1; // makes server think the field changed + if(m_inWorld) + { + if(!m_objectUpdated) + { + AddToClientUpdateList(); + m_objectUpdated = true; + } + } +} +// Frozen Mod + namespace MaNGOS { class NearUsedPosDo diff --git a/src/game/Object.h b/src/game/Object.h index c900e4d..4e8063a 100644 --- a/src/game/Object.h +++ b/src/game/Object.h @@ -288,6 +288,11 @@ class MANGOS_DLL_SPEC Object virtual bool hasQuest(uint32 /* quest_id */) const { return false; } virtual bool hasInvolvedQuest(uint32 /* quest_id */) const { return false; } + + // Frozen Mod + void ForceValuesUpdateAtIndex(uint32); + // Frozen Mod + protected: Object ( ); diff --git a/src/game/TradeHandler.cpp b/src/game/TradeHandler.cpp index 6abb061..8fb7f64 100644 --- a/src/game/TradeHandler.cpp +++ b/src/game/TradeHandler.cpp @@ -604,11 +604,13 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket) return; } - if (pOther->GetTeam() !=_player->GetTeam() ) + // Frozen Mod + /* if (pOther->GetTeam() !=_player->GetTeam() ) { SendTradeStatus(TRADE_STATUS_WRONG_FACTION); return; - } + } */ + // Frozen Mod if (!pOther->IsWithinDistInMap(_player,10.0f,false)) { diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 8e71766..24648dd 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -243,6 +243,10 @@ Unit::Unit() // remove aurastates allowing special moves for(int i=0; i < MAX_REACTIVE; ++i) m_reactiveTimer[i] = 0; + + // Frozen Mod + m_spoofSamePlayerFaction = false; + // Frozen Mod } Unit::~Unit() diff --git a/src/game/Unit.h b/src/game/Unit.h index 4fda849..cc8fb8b 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1884,6 +1884,11 @@ class MANGOS_DLL_SPEC Unit : public WorldObject PetAuraSet m_petAuras; void AddPetAura(PetAura const* petSpell); void RemovePetAura(PetAura const* petSpell); + + // Frozen Mod + inline void SetSpoofSamePlayerFaction(bool b) { m_spoofSamePlayerFaction = b; } + inline bool IsSpoofSamePlayerFaction(void) {return m_spoofSamePlayerFaction; } + // Frozen Mod // Movement info MovementInfo m_movementInfo; @@ -1936,8 +1941,12 @@ class MANGOS_DLL_SPEC Unit : public WorldObject uint32 m_reactiveTimer[MAX_REACTIVE]; uint32 m_regenTimer; uint32 m_lastManaUseTimer; + + // Frozen Mod + bool m_spoofSamePlayerFaction : 1; + // Frozen Mod - private: + public: void CleanupDeletedAuras(); // player or player's pet -
[PATCH] Horde & Alliance grouping/trade
KiriX replied to Auntie Mangos's topic in OldCore modifications
For other. You can use this: Horde & Alliance grouping/trade This work - 100% =) -
Do you realy can't change this in code manualy??? It should work... diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index d8aa6be..ab31c99 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -2971,7 +2971,7 @@ SpellCastResult SpellMgr::GetSpellAllowedInLocationError(SpellEntry const *spell { uint32 v_map = GetVirtualMapForMapAndZone(map_id, zone_id); MapEntry const* mapEntry = sMapStore.LookupEntry(v_map); - if (!mapEntry || mapEntry->addon < 1 || !mapEntry->IsContinent()) + if (!mapEntry || !mapEntry->IsContinent()) return SPELL_FAILED_INCORRECT_AREA; }
-
[10289] Creature models, using cache data directly. Att. DB devs!
KiriX replied to a topic in OldCore modifications
Thanks, Now I fully understand you. -
[10289] Creature models, using cache data directly. Att. DB devs!
KiriX replied to a topic in OldCore modifications
Hm... We can get four random model from DB right now. Use modelid_A and modelid_A2 (for Aliance) - this 2 model (random). And for each model use modelid_other_gender in creature_model_info. 1 model - modelid_A 2 model - modelid_other_gender from creature_model_info for modelid_A 3 model - modelid_A2 4 model - modelid_other_gender from creature_model_info for modelid_A2 May be I'm wrong? -
[PATCH] Horde & Alliance grouping/trade
KiriX replied to Auntie Mangos's topic in OldCore modifications
Not need update for 10246... I have not any problem with this patch and 10274. -
Hm... What about users who dont use UDB? They can use YTDB for example... I think that Event AI OPvP should not be drop...
-
It is not yet fully done (I talked with zergtmn on ru-mangos.ru forum).
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®