Jump to content

XTZGZoReX

Members
  • Posts

    240
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by XTZGZoReX

  1. Looks good to me - reloading this data should be safe. EDIT: Hmm, but why do you reload same table for both ".reload quest_poi" and ".reload quest_poi_points"?
  2. The DB data you posted is unreadable without first importing and then exporting in a readable manner, which I can't, as I do not have access to a MySQL database at the moment. Also, you need to actually use the index (entry_POI) in the packet, not just ++index;.
  3. Yes....there's not really much to report back on without actual DB data.
  4. OK, I will speak to him on freenode when I get home today.
  5. Posting here just so everyone knows: I suggest Lynx3d as new dev also. He seems to know how the vmap system works, and is currently working on the pool system. Maybe would be a good idea to invite him to #mangos first to get to know him.
  6. Not needed now.
  7. Hi, Please try this patch. diff --git a/src/game/Map.h b/src/game/Map.h index 6e68529..8ec98bf 100644 --- a/src/game/Map.h +++ b/src/game/Map.h @@ -357,7 +357,7 @@ class MANGOS_DLL_SPEC Map : public GridRefManager<NGridType>, public MaNGOS::Obj bool IsBattleGround() const { return i_mapEntry && i_mapEntry->IsBattleGround(); } bool IsBattleArena() const { return i_mapEntry && i_mapEntry->IsBattleArena(); } bool IsBattleGroundOrArena() const { return i_mapEntry && i_mapEntry->IsBattleGroundOrArena(); } - bool GetEntrancePos(int32 &mapid, float &x, float &y) + bool GetEntrancePos(int32 &mapid, float &x, float &y) const { if(!i_mapEntry) return false; diff --git a/src/game/QueryHandler.cpp b/src/game/QueryHandler.cpp index 6bc0baf..88d8ae8 100644 --- a/src/game/QueryHandler.cpp +++ b/src/game/QueryHandler.cpp @@ -465,9 +465,12 @@ void WorldSession::HandleCorpseMapPositionQuery( WorldPacket & recv_data ) WorldPacket data(CMSG_CORPSE_MAP_POSITION_QUERY_RESPONSE, 4+4+4+4); - Map* map = corpse->GetMap(); - float cx, cy, cz; + uint32 zoneId; + + const Map* map = corpse->GetMap(); + if (!map) + map = sMapMgr.CreateBaseMap(corpse->GetMapId()); if (map->IsDungeon()) { @@ -476,7 +479,7 @@ void WorldSession::HandleCorpseMapPositionQuery( WorldPacket & recv_data ) map->GetEntrancePos(mapId, mx, my); const Map* newMap = sMapMgr.CreateBaseMap(mapId); - uint32 zoneId = newMap->GetZoneId(mx, my, 0); + zoneId = newMap->GetZoneId(mx, my, 0); float _mx = mx; float _my = my; @@ -503,7 +506,7 @@ void WorldSession::HandleCorpseMapPositionQuery( WorldPacket & recv_data ) if (!ClosestGrave) return; - uint32 zoneId = corpse->GetZoneId(); + zoneId = map->GetZoneId(corpse->GetPositionX(), corpse->GetPositionY(), 0); float gx = ClosestGrave->x; float gy = ClosestGrave->y;
  8. This is partially correct.The commits in a repository are not necessarily a "part of" a project, which means they are not affected by the GPL (any version). As long as there's author info _somewhere_ (i.e. the THANKS file), the license is actually not broken. Of course, one could now argue that it's in bad taste not to include author info in commits, but the license doesn't care about that...
  9. No? I'm saying it one last time: No one is a team leader. And - take note, this is unrelated to what I just said - if someone works on two projects, then the work they do at these two projects is independent, and MaNGOS is not forced to cooperate with the other teams just because of this. That's not to say we won't cooperate - but what kind of cooperation is it even that you want to see? The teams are as informed as currently possible. What more do you want?
  10. I think I can safely answer for the whole team. You heard wrong. Really. If we had blizz devs, things would be much easier. Sigh... He's not a team leader ANYWHERE. No one is. There's no "official team leader". Please get this into your head.
  11. How about not talking about things you have no clue about? MaNGOS has always just upgraded to new client versions without caring about the state of SD2 and UDB - in fact, many MaNGOS devs are not even in contact with the UDB/SD2 devs. Now, sure, you can shake what I just said off as an "excuse", but then we won't get anywhere at all, no matter how we try to communicate. Sure - all sites know what all sites are doing. Sites, not projects. There's a difference. For example, UDB devs might not always be informed of core changes. Now, I don't know where your "100% positive" comes from, because no one controls MaNGOS, UDB, nor SD2 ultimately. This is not a communism - in fact, the team works very much like a democracy. Even Vladimir, contrary to popular belief, doesn't know the answer to everything, or know if all patches are OK, etc. - there's no "central person in charge". Now, I do agree on one point; sometimes, a search simply doesn't suffice, and thus asking the question is perfectly valid. Anyway, the way MaNGOS is managed will not change for legal reasons. That's just how it is.
  12. I agree. I don't have a problem with forks where author information is preserved; however, if people outright copy patches and commit them in their own name, and then reference their fork here, I don't think we should accept it. However, if author info is kept intact, I think it's ok, as it can be considered a friendly fork.
  13. I'm pretty sure this is also sent to client in SMSG_QUEST_QUERY_RESPONSE, so you must modify that packet too.
  14. I approve of Lightguard as well.
  15. Yep, sounds good.
  16. enum TypeMask { TYPEMASK_OBJECT = 0x1, TYPEMASK_ITEM = 0x2, TYPEMASK_CONTAINER = 0x6, TYPEMASK_UNIT = 0x8, TYPEMASK_PLAYER = 0x10, TYPEMASK_GAMEOBJECT = 0x20, TYPEMASK_DYNAMICOBJECT = 0x40, TYPEMASK_CORPSE = 0x80, };
  17. This will serve as a reference for the most commonly used structs/enums when reversing the client.
  18. ArenaTeamCache: #pragma pack(push, 1) struct ArenaTeamCache { int Id; char Name[96]; int Type; int BackgroundCol; int EmblemStyle; int EmblemColor; int BorderStyle; int BorderColor; }; #pragma pack(pop) PetitionCache: #pragma pack(push, 1) struct PetitionCache { int Id; int UnkInt0; WowGuid OwnerGuid; char TeamName[256]; char UnkString0[4096]; int Type0; int Type1; int Type2; int UnkInt1; int UnkInt2; int UnkInt3; int UnkInt4; __int16 UnkShort; int UnkInt6; int UnkInt7; char UnkString1[10][64]; int UnkInt8; int GuildOrArena; }; #pragma pack(pop) PageTextCache: #pragma pack(push, 1) struct PageTextCache { int ItemId; char *Text; int NextPage; }; #pragma pack(pop) NpcTextCache: #pragma pack(push, 1) struct NpcTextCache { float Probability[8]; char *Text0[8]; char *Text1[8]; int LanguageId[8]; int EmoteDelay[8][3]; int EmoteType[8][3]; }; #pragma pack(pop) ItemNameCache: #pragma pack(push, 1) struct ItemNameCache { char *NamePtr; int InventoryType; char Name[400]; }; #pragma pack(pop) ItemCache: #pragma pack(push, 1) struct ItemCache { int Id; int Class; int SubClass; int UnkInt; int DisplayId; int Quality; int FlagsAndFaction[2]; int BuyPrice; int SellPrice; int InvType; int AllowClass; int AllowRace; int ItemLvl; int ReqLvl; int ReqSkill; int ReqSkillRank; int ReqSpell; int ReqHonor; int ReqCityRank; int ReqRepFaction; int ReqRepRank; int MaxCount; int Stackable; int ContainerSlots; int StatsCount; int Stats[10][2]; int ScalingStatDistribution; int ScalingStatValue; float SSDDmg1[2]; float SSDDmg2[2]; int SSDDmgType[2]; int Resistance[7]; int Delay; int AmmoType; float RangedModRange; int SpellId[5]; int SpellTrigger[5]; int SpellCharges[5]; int SpellCooldown[5]; int SpellCategory[5]; int SpellCatCooldown[5]; int Bonding; char *Description; int PageTextId; int LanguageId; int PageMaterial; int StartQuest; int LockId; int Material; int Sheath; int RandomProperty; int RandomSuffix; int Block; int ItemSetId; int MaxDurability; int Area; int Map; int BagFamily; int TotemCategory; int SocketColor[3]; int SocketItem[3]; int SocketBonus; int GemProperties; int ReqDisenchantSkill; float ArmorDmgMod; int Duration; int ItemLimitCat; int Holiday; char Name[4][400]; }; #pragma pack(pop) GameObjectCache: #pragma pack(push, 1) struct GameObjectCache { int Type; int DisplayId; char *IconNamePtr; char *CastBarCaptionPtr; char *UnkStringPtr; int Data[24]; float Size; int QuestItem[6]; char Name[4][1024]; char IconName[1024]; char CastBarCaption[1024]; char UnkString[1024]; }; #pragma pack(pop) CreatureCache: #pragma pack(push, 1) struct CreatureCache { int Id; char *SubNamePtr; char *IconNamePtr; int TypeFlags; int Type; int Family; int Rank; int KillCredit1; int KillCredit2; int DisplayId1; int DisplayId2; int DisplayId3; int DisplayId4; float HpModifier; float MpModifier; char RacialLeader[4]; int QuestItem[6]; int MovementId; char Name[4][1024]; char SubName[1024]; char IconName[1024]; }; #pragma pack(pop) QuestCache: #pragma pack(push, 1) struct QuestCache { int Id; int Method; int Level; int RequiredLevel; int AreaIdOrSortId; int InfoId; int SuggestedPlayers; int FriendlyFactionID; int FriendlyFactionAmount; int HostileFactionID; int HostileFactionAmount; int NextQuestId; int XPId; int RewardMoney; int RewardMoneyInsteadOfXp; int RewardSpellId; int EffectOnPlayer; int RewardHonor; float RewardHonorBonus; int StartingItemId; int Flags; int RewardItem[4]; int RewardItemCount[4]; int RewardChoiceItem[6]; int RewardChoiceItemCount[6]; int PointMapID; float PointX; float PointY; int PointOptional; char Name[512]; char ObjectiveText[3000]; char Description[3000]; char EndText[512]; int ObjectiveId[4]; int ObjectiveRequiredCount[4]; int CollectItemId[6]; int CollectItemCount[6]; int IntermediateItemId[4]; int IntermediateItemCount[4]; char ObjectiveText[4][256]; int RewardTitleId; int RequiredPlayersKilled; int RewardTalentPoints; int RewardArenaPoints; char CompletionText[2048]; int RewardReputationFaction[5]; int FactionRewardID[5]; int RewardReputationOverride[5]; int Unk17; }; #pragma pack(pop) Thanks to TOM_RUS and Apoc for helping in figuring these.
  19. Link: http://www.megaupload.com/?d=J5RTV0PC Password: ida-55-pro-leak IDA SDK (found by TOM_RUS): http://www.megaupload.com/?d=SJ66W9ON IDA Python (compiled by TOM_RUS): http://www.megaupload.com/?d=IV5SAAD8
  20. Agreed. Aren't they in the G3D namespace?
  21. The ones in our Define.h are just fine.
  22. Wikipedia article only seems to mention most common OS's - but there is in fact no real standard that guarantees you these sizes, anyway. You can't just assume that they'll be the size you want.
  23. It's 8 bytes on most 64-bit systems, as well as PPC archs.In the end, the best cleanup of this would be to make both extractor, assembler, and core code use uint32/uint64/etc appropriately where needed, so we always know what size variables are written and read as.
×
×
  • 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