KiriX
-
Posts
120 -
Joined
-
Last visited
Never -
Donations
0.00 GBP
Content Type
Profiles
Bug Tracker
Wiki
Release Notes
Forums
Downloads
Blogs
Events
Posts posted by KiriX
-
-
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!
-
-
Does this mean that you simply removed the check of totems?
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...
-
hmm weird i used this one:D
Рatch from 86 post work - 100%
For example: patch from 86 post don't contain Unit::m_TotemSlot
-
That's not a bug, I just haven't put pathfinding into HomeMovementGenerator.
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?
-
It would appear you don't have enough memory. Try with --hiResHeightmaps false.
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...
-
Yes, that's normal. I should ask Lynx3d to change that to a debug message
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?
-
../../../src/game/Group.cpp: In member function ‘void Group::BroadcastGroupUpdate()’: ../../../src/game/Group.cpp:1847: error: ‘GetUnit’ is not a member of ‘Unit’ make[3]: *** [Group.o] Error 1 make[3]: *** Waiting for unfinished jobs.... mv -f .deps/GuardAI.Tpo .deps/GuardAI.Po mv -f .deps/HostileRefManager.Tpo .deps/HostileRefManager.Po mv -f .deps/GroupHandler.Tpo .deps/GroupHandler.Po mv -f .deps/HomeMovementGenerator.Tpo .deps/HomeMovementGenerator.Po mv -f .deps/GuildHandler.Tpo .deps/GuildHandler.Po mv -f .deps/DBCStores.Tpo .deps/DBCStores.Po mv -f .deps/Guild.Tpo .deps/Guild.Po make[3]: Leaving directory `/root/mangos/objdir/src/game' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/root/mangos/objdir/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/root/mangos/objdir' make: *** [all] Error 2
KiriX's Patch does not compile on mangos r. 10397.
Anyone here who has a working patch for latest rev? Thx
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
-
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; }
-
Edit: @ Kirix: it's nothing wrong with the current system per definition, it works if you know what data to put where. This is however the main reason to change the system, it's too hard to maintain and it's too dependent on customized and hand made data for every creature.
Thanks, Now I fully understand you.
-
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?
-
Not need update for 10246...
I have not any problem with this patch and 10274.
-
Firebomb script (Event AI OPvP) has been dropped. UDB has had this data since at least 0.10, with an update in 0.12. You do not need the Firebomb script if you're database is at least current with UDB 0.12 rev. 388.
Hm... What about users who dont use UDB? They can use YTDB for example...
I think that Event AI OPvP should not be drop...
-
i am holding off for a bit on vehicle upgrades to see what zergtmn produces in the new vehicle branch..
It is not yet fully done (I talked with zergtmn on ru-mangos.ru forum).
[fix] Spell::EffectQuestComplete
in ... rejectedOld
Posted
Any problem? Please review this and comment if patch contain errors...