Jump to content

Trazom

Members
  • Posts

    25
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Trazom's Achievements

Member

Member (2/3)

0

Reputation

  1. Please stop bumping. It will not help the patch to be accepted, even worse. Unless you have something useful to add (tested and found no bug, tested and found bug, fixe, ...). I will update the first post with the latest update from nos4r2zod. Thanks for fix.
  2. Raven, put this @@ -7455,6 +7455,8 @@ } SetLootGUID(guid); + + [b]loot->loot_type = loot_type[/b]; // LOOT_INSIGNIA and LOOT_FISHINGHOLE unsupported by client switch(loot_type) after the switch (so saving the updated loot_type), and you can now also simplify this block as follow : diff -r 7815832576de src/game/LootHandler.cpp --- a/src/game/LootHandler.cpp Tue Apr 28 00:09:37 2009 -0500 +++ b/src/game/LootHandler.cpp Tue Apr 28 14:58:35 2009 -0400 @@ -153,6 +153,7 @@ player->SendNewItem(newitem, uint32(item->count), false, false, true); player->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM, item->itemid, item->count); + player->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE, loot->loot_type, item->count); } else player->SendEquipError( msg, NULL, NULL ); @@ -509,6 +510,7 @@ Item * newitem = target->StoreNewItem( dest, item.itemid, true, item.randomPropertyId ); target->SendNewItem(newitem, uint32(item.count), false, false, true ); target->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM, item.itemid, item.count); + target->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE, pLoot->loot_type, item.count); // mark as looted item.count=0;
  3. What features does the patch add? support ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA For which repository revision was the patch created? master [7723] Is there a thread in the bug report section or at lighthouse? None I know Who has been writing this patch? Myself src/game/AchievementMgr.cpp | 25 ++++++++++++++++++++++++- src/game/BattleGround.cpp | 10 ++++++++++ 2 files changed, 34 insertions(+), 1 deletions(-) diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp index 03083a6..b42687a 100644 --- a/src/game/AchievementMgr.cpp +++ b/src/game/AchievementMgr.cpp @@ -279,6 +279,11 @@ void AchievementMgr::ResetAchievementCriteria(AchievementCriteriaTypes type, uin achievementCriteria->healing_done.mapid == miscvalue2) SetCriteriaProgress(achievementCriteria, 0, PROGRESS_SET); break; + case ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA: // have total statistic also not expected to be reset + // reset only the criteria having the miscvalue1 condition + if (achievementCriteria->win_rated_arena.flag == miscvalue1) + SetCriteriaProgress(achievementCriteria, 0, PROGRESS_SET); + break; default: // reset all cases break; } @@ -867,6 +872,23 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui continue; SetCriteriaProgress(achievementCriteria, GetPlayer()->GetItemCount(achievementCriteria->own_item.itemID, true)); break; + case ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA: + // miscvalue1 constains the personal rating + if (!miscvalue1) // no update at login + continue; + + // minimum rating requirement not in dbc + if (achievementCriteria->ID == 3384 && miscvalue1 < 1800 + || achievementCriteria->ID == 3385 && miscvalue1 < 2000 + ) + { + // reset the progress as we have a win without the requirement. + SetCriteriaProgress(achievementCriteria, 0); + continue; + } + + SetCriteriaProgress(achievementCriteria, 1, PROGRESS_ACCUMULATE); + break; case ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM: // AchievementMgr::UpdateAchievementCriteria might also be called on login - skip in this case if(!miscvalue1) @@ -1113,7 +1135,6 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui case ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA: case ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA: case ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL: - case ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA: case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING: case ACHIEVEMENT_CRITERIA_TYPE_REACH_TEAM_RATING: case ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK: @@ -1229,6 +1250,8 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve return progress->counter >= 1; case ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM: return progress->counter >= achievementCriteria->own_item.itemCount; + case ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA: + return progress->counter >= achievementCriteria->win_rated_arena.count; case ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM: return progress->counter >= achievementCriteria->use_item.itemCount; case ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM: diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp index 6ea83c0..f801820 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -697,9 +697,19 @@ void BattleGround::EndBattleGround(uint32 winner) if (isArena() && isRated() && winner_arena_team && loser_arena_team) { if (team == winner) + { + // update achievement BEFORE personal rating update + plr->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA, winner_arena_team->GetMember(plr->GetGUID())->personal_rating); + winner_arena_team->MemberWon(plr,loser_rating); + } else + { loser_arena_team->MemberLost(plr,winner_rating); + + // Arena lost => reset the win_rated_arena having the "no_loose" condition + plr->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA, ACHIEVEMENT_CRITERIA_CONDITION_NO_LOOSE); + } } if (team == winner)
  4. This fix is now obsolete. It was done by Vlad in [7722]
  5. not related to the patch. got this also without it.
  6. gee! I thought this refactoring part of the patch would be hardly accepted :lol: Patch updated to [7701].
  7. ok. I wait and will propose an updated fix for the achievement when you have completed the enum update.
  8. I made some test, and indeed the enum LootType in Player.h does not correspond to the loot type condition of the achievement criteria. In the achievement criteria, the lootType condition is 2, 3 and 4. Puting dummy value in the SetProgressCriteria for all the criteria I've found: - The LootType condition 3 is definitely for the fishing. - The LootType condition 2 is used in one criteria. It's a counter of object stolen (=> Pickpocketing) - The LootType condition 4 is used in one criteria. It's a counter of disenchanted loot (in french "Materiaux obtenus par désenchantement). So I started a new Enum for "AchievementConditionLootType" with the 3 values in DBCEnum.h. like this (not compiled yet) enum AchievementConditionLootType { ACHIEVEMENT_CONDITION_LOOT_PICKPOCKETING = 2, ACHIEVEMENT_CONDITION_LOOT_FISHING = 3, ACHIEVEMENT_CONDITION_LOOT_DISENCHANTING = 4, }; is it ok to continue that way?
  9. What features does the patch add? support ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE, ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE and related criteria : ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEAL_CASTED, ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED, ACHIEVEMENT_CRITERIA_TYPE_TOTAL_HEALING_RECEIVED, ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_DEALT, ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_RECEIVED, ACHIEVEMENT_CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED For which repository revision was the patch created? master [7701] Is there a thread in the bug report section or at lighthouse? None I know Who has been writing this patch? Myself I have also made some refactoring to gather all healing done in one function (just like DealDamage for damage) http://paste2.org/p/189103 Revision 2: rebase on 7701 with new DealHeal function http://paste2.org/p/189923
  10. What features does the patch add? For action type ACTION_T_CAST, spell is not cast when caster is casting another spell, even if param3 flag CAST_TRIGGERED is set For which repository revision was the patch created? master [7694] Is there a thread in the bug report section or at lighthouse? None I know Who has been writing this patch? Myself src/game/CreatureEventAI.cpp | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/game/CreatureEventAI.cpp b/src/game/CreatureEventAI.cpp index a63ca11..ae79dd7 100644 --- a/src/game/CreatureEventAI.cpp +++ b/src/game/CreatureEventAI.cpp @@ -622,7 +622,7 @@ void CreatureEventAI::ProcessAction(uint16 type, uint32 param1, uint32 param2, u } //Allowed to cast only if not casting (unless we interrupt ourself) or if spell is triggered - bool canCast = !(caster->IsNonMeleeSpellCasted(false) && (param3 & CAST_TRIGGERED | CAST_INTURRUPT_PREVIOUS)); + bool canCast = !(caster->IsNonMeleeSpellCasted(false)) || (param3 & (CAST_TRIGGERED | CAST_INTURRUPT_PREVIOUS)); // If cast flag CAST_AURA_NOT_PRESENT is active, check if target already has aura on them if(param3 & CAST_AURA_NOT_PRESENT)
  11. I was preparing a fix for this criteria. The problem in your patch is that you give the credit when the loot is sent, but it shall be done when the player actually loot the item. You should also give credit for every items looted (not only fish). not 1 per loot type (see comments on wowhead). Moreover, the patch can be more general and support all loot type and not only fishing. Here is my patch, if you want to merge some part. (based on rev 7673) src/game/AchievementMgr.cpp | 45 ++++++++++++++++++++++++++++++++++++++++++- src/game/LootHandler.cpp | 2 + src/game/LootMgr.h | 2 + src/game/Player.cpp | 3 ++ 4 files changed, 51 insertions(+), 1 deletions(-) diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp index 1b8338a..2ea8dc8 100644 --- a/src/game/AchievementMgr.cpp +++ b/src/game/AchievementMgr.cpp @@ -1001,6 +1001,48 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui SetCriteriaProgress(achievementCriteria, 1, PROGRESS_ACCUMULATE); break; } + case ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE: + { + // miscvalue1=loot_type + // miscvalue2=count of item loot + + if (!miscvalue1) + continue; + + if (miscvalue1 != achievementCriteria->loot_type.lootType) + continue; + + // Zone not in dbc. + switch(achievementCriteria->ID) + { + case 5274: + { + // must be in orgrimmar + uint32 zone_id; + uint32 area_id; + GetPlayer()->GetZoneAndAreaId(zone_id,area_id); + if (zone_id != 1637) + continue; + break; + } + case 5275: + { + // must be in stormwind + uint32 zone_id; + uint32 area_id; + GetPlayer()->GetZoneAndAreaId(zone_id,area_id); + if (zone_id != 1519) + continue; + break; + } + default: + break; + } + + SetCriteriaProgress(achievementCriteria, miscvalue2, PROGRESS_ACCUMULATE); + break; + } + // std case: not exist in DBC, not triggered in code as result case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALTH: case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_SPELLPOWER: @@ -1051,7 +1093,6 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED: case ACHIEVEMENT_CRITERIA_TYPE_QUEST_ABANDONED: case ACHIEVEMENT_CRITERIA_TYPE_FLIGHT_PATHS_TAKEN: - case ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE: case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE: case ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL: case ACHIEVEMENT_CRITERIA_TYPE_ACCEPTED_SUMMONINGS: @@ -1174,6 +1215,8 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve return progress->counter >= achievementCriteria->use_gameobject.useCount; case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS: return progress->counter >= achievementCriteria->learn_skilline_spell.spellCount; + case ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE: + return progress->counter >= achievementCriteria->loot_type.lootTypeCount; // handle all statistic-only criteria here case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND: diff --git a/src/game/LootHandler.cpp b/src/game/LootHandler.cpp index 254f197..9a9bf55 100644 --- a/src/game/LootHandler.cpp +++ b/src/game/LootHandler.cpp @@ -143,6 +143,7 @@ void WorldSession::HandleAutostoreLootItemOpcode( WorldPacket & recv_data ) player->SendNewItem(newitem, uint32(item->count), false, false, true); player->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM, item->itemid, item->count); + player->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE, (loot->loot_type == LOOT_FISHINGHOLE ? LOOT_FISHING : loot->loot_type), item->count); } else player->SendEquipError( msg, NULL, NULL ); @@ -497,6 +498,7 @@ void WorldSession::HandleLootMasterGiveOpcode( WorldPacket & recv_data ) Item * newitem = target->StoreNewItem( dest, item.itemid, true, item.randomPropertyId ); target->SendNewItem(newitem, uint32(item.count), false, false, true ); target->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM, item.itemid, item.count); + target->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE, (pLoot->loot_type == LOOT_FISHINGHOLE ? LOOT_FISHING : pLoot->loot_type), item.count); // mark as looted item.count=0; diff --git a/src/game/LootMgr.h b/src/game/LootMgr.h index b16757d..0f4dc30 100644 --- a/src/game/LootMgr.h +++ b/src/game/LootMgr.h @@ -57,6 +57,7 @@ enum PermissionTypes class Player; class LootStore; +enum LootType; struct LootStoreItem { @@ -224,6 +225,7 @@ struct Loot std::vector<LootItem> items; uint32 gold; uint8 unlootedCount; + LootType loot_type; Loot(uint32 _gold = 0) : gold(_gold), unlootedCount(0) {} ~Loot() { clear(); } diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 684cdac..dd26a4d 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -7252,6 +7252,9 @@ void Player::SendLoot(uint64 guid, LootType loot_type) SetLootGUID(guid); + // save original loot_type + loot->loot_type = loot_type; + // LOOT_PICKPOCKETING, LOOT_PROSPECTING, LOOT_DISENCHANTING, LOOT_INSIGNIA and LOOT_MILLING unsupported by client, sending LOOT_SKINNING instead if(loot_type == LOOT_PICKPOCKETING || loot_type == LOOT_DISENCHANTING || loot_type == LOOT_PROSPECTING || loot_type == LOOT_INSIGNIA || loot_type == LOOT_MILLING) loot_type = LOOT_SKINNING;
  12. Description of the bug? Implement the criteria ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT For which repository revision was the patch created? 7681 Is there a thread in the bug report section or at lighthouse? None I know Who has been writing this patch? Myself src/game/AchievementMgr.cpp | 11 ++++++++++- src/game/GameObject.cpp | 1 + 2 files changed, 11 insertions(+), 1 deletions(-) diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp index 1b8338a..1536cb7 100644 --- a/src/game/AchievementMgr.cpp +++ b/src/game/AchievementMgr.cpp @@ -945,6 +945,14 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui SetCriteriaProgress(achievementCriteria, 1, PROGRESS_ACCUMULATE); break; + case ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT: + if (!miscvalue1) + continue; + if (miscvalue1 != achievementCriteria->fish_in_gameobject.goEntry) + continue; + + SetCriteriaProgress(achievementCriteria, 1, PROGRESS_ACCUMULATE); + break; case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS: { // spell always provide and at login spell learning. @@ -1031,7 +1039,6 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui case ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS: case ACHIEVEMENT_CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS: case ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL: - case ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT: case ACHIEVEMENT_CRITERIA_TYPE_EARNED_PVP_TITLE: case ACHIEVEMENT_CRITERIA_TYPE_LOSE_DUEL: case ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE: @@ -1168,6 +1175,8 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve return progress->counter >= achievementCriteria->equip_item.count; case ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD: return progress->counter >= achievementCriteria->quest_reward_money.goldInCopper; + case ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT: + return progress->counter >= achievementCriteria->fish_in_gameobject.lootCount; case ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY: return progress->counter >= achievementCriteria->loot_money.goldInCopper; case ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT: diff --git a/src/game/GameObject.cpp b/src/game/GameObject.cpp index 5c931ab..4b2916d 100644 --- a/src/game/GameObject.cpp +++ b/src/game/GameObject.cpp @@ -1027,6 +1027,7 @@ void GameObject::Use(Unit* user) if (ok) { player->SendLoot(ok->GetGUID(),LOOT_FISHINGHOLE); + player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT, ok->GetGOInfo()->id); SetLootState(GO_JUST_DEACTIVATED); } else
  13. I just applied it without problem on a clean pull of master (rev 7673). Check your revision. Or may be you have custom patch?
  14. I'm currently implementing the achievement based on this criteria ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE I'm in search of some advice from the dev team to implement the reset of the criteria. There is no problem to count the healing done. (BTW, I'm also doing ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE for this achievement, but it's the same discussion) Description: There are 6 criteria of this type. 5 are counters related to healing done in BG for the achievement: http://www.wowhead.com/?achievement=227 Those 5 counters need to be reset for each BG as the target count shall be done in the same BG (cfr "in a single battle"). For those 5 counters, the value of "healing_done.flag" is ACHIEVEMENT_CRITERIA_CONDITION_MAP(3), and the "healing_done.mapid" is the mapid of the BG. The last criteria is the counter for the total of healing done (statistics). Obviously, this shall never be reset. For this criteria, both the flag and the mapid are 0. Question? As far as I know, there is no such reset yet. What would be the best way to implement this reset in a generic way, without hacking the criteria number of the criteria that shall not be reset? Suggestion I thought of adding a function in AchievementMgr, much like UpdateAchievementCriteria, which would reset the criteria only if miscvalue1 and miscvalue2 match exactly the parameters. @@ -248,10 +248,45 @@ void AchievementMgr::Reset() // re-fill data CheckAllAchievementCriteria(); } +void AchievementMgr::ResetAchievementCriteria(AchievementCriteriaTypes type, uint32 miscvalue1, uint32 miscvalue2, Unit *unit, uint32 time) +{ + if((sLog.getLogFilter() & LOG_FILTER_ACHIEVEMENT_UPDATES)==0) + sLog.outDetail("AchievementMgr::ResetAchievementCriteria(%u, %u, %u, %u)", type, miscvalue1, miscvalue2, time); + + if (!sWorld.getConfig(CONFIG_GM_ALLOW_ACHIEVEMENT_GAINS) && m_player->GetSession()->GetSecurity() > SEC_PLAYER) + return; + + AchievementCriteriaEntryList const& achievementCriteriaList = achievementmgr.GetAchievementCriteriaByType(type); + for(AchievementCriteriaEntryList::const_iterator i = achievementCriteriaList.begin(); i!=achievementCriteriaList.end(); ++i) + { + AchievementCriteriaEntry const *achievementCriteria = (*i); + + AchievementEntry const *achievement = sAchievementStore.LookupEntry(achievementCriteria->referredAchievement); + if (!achievement) + continue; + + // don't update already completed criteria + if (IsCompletedCriteria(achievementCriteria,achievement)) + continue; + + switch (type) + { + case ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE: + case ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE: + if (achievementCriteria->healing_done.flag == miscvalue1 + && achievementCriteria->healing_done.mapid == miscvalue2) + { + SetCriteriaProgress(achievementCriteria, 0, PROGRESS_SET); + } + break; + } + } +} + void AchievementMgr::DeleteFromDB(uint32 lowguid) { CharacterDatabase.BeginTransaction (); CharacterDatabase.PExecute("DELETE FROM character_achievement WHERE guid = %u",lowguid); CharacterDatabase.PExecute("DELETE FROM character_achievement_progress WHERE guid = %u",lowguid); I would call it when a player is added to a bg (BattleGround::AddPlayer) @@ -1113,10 +1113,13 @@ void BattleGround::AddPlayer(Player *plr) { if(GetStatus() == STATUS_WAIT_JOIN) // not started yet plr->CastSpell(plr, SPELL_PREPARATION, true); // reduces all mana cost of spells. } + plr->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE, ACHIEVEMENT_CRITERIA_CONDITION_MAP, GetMapId()); + plr->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE, ACHIEVEMENT_CRITERIA_CONDITION_MAP, GetMapId()); + // setup BG group membership PlayerAddedToBGCheckIfBGIsRunning(plr); AddOrSetPlayerToCorrectBgGroup(plr, guid, team); // Log I would like to know if I continue that way, or may be a dev has a better suggestion?
  15. This is DB related. I've seen no bug in the core (thougth I might have missed it ) In the table Instance_template, reset_delay is the delay to reset in DAYS. not minute. not second. DAY. (see: http://wiki.udbforums.org/index.php/Instance_template#reset_delay ) If this value is 0, the reset_delay is taken from the DBC. This reset_delay is multiplied by the entry Rate.InstanceResetTime in the config file. In any case, the minimum reset_delay is 1 day. => if you happen to have 49708d, I suspect that the entry in your db is not correct. BTW, The entry Instance.ResetTimeHour of the config file determines the hour when the reset occurs (default: 4) The next resettime for each instance is stored in table characters.intance_reset. => If you change the reset_delay of an instance, don't forget to update the resettime in characters.instance_reset and set the resettime to 0. This will force a reset of the instance at the next reboot and a new computation of the next reset time. If you don't update that resettime, it will be recompute only at the next reset time (for you, in 49708 day ) The bind to instance is also only DB related. The bind is only done IF the flags_extra of the creature_template contains the flag CREATURE_FLAG_EXTRA_INSTANCE_BIND (see http://wiki.udbforums.org/index.php/Creature_template#flags_extra). Without this, you have no binding of the player to the instance ID. This flag shall be set for every boss of the instances.
×
×
  • 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