void InstanceSaveManager::PlayerUnbindInstanceNotExtended(uint32 guidLow, uint32 mapid, Difficulty difficulty, Player* player /*= NULL*/) { BoundInstancesMapWrapper* w = playerBindStorage[guidLow]; BoundInstancesMap::iterator itr = w->m[difficulty].find(mapid); if (itr != w->m[difficulty].end()) { if (itr->second.extended) itr->second.extended = false; else { if (itr->second.perm && player) player->GetSession()->SendCalendarRaidLockout(itr->second.save, false); InstanceSave* tmp = itr->second.save; w->m[difficulty].erase(itr); tmp->RemovePlayer(guidLow, this); } } }
void InstanceSaveManager::PlayerUnbindInstance(uint32 guidLow, uint32 mapid, Difficulty difficulty, bool deleteFromDB, Player* player /*= NULL*/) { BoundInstancesMapWrapper* w = playerBindStorage[guidLow]; BoundInstancesMap::iterator itr = w->m[difficulty].find(mapid); if (itr != w->m[difficulty].end()) { if (deleteFromDB) { PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INSTANCE_BY_INSTANCE_GUID); stmt->setUInt32(0, guidLow); stmt->setUInt32(1, itr->second.save->GetInstanceId()); CharacterDatabase.Execute(stmt); } if (itr->second.perm && player) player->GetSession()->SendCalendarRaidLockout(itr->second.save, false); InstanceSave* tmp = itr->second.save; w->m[difficulty].erase(itr); tmp->RemovePlayer(guidLow, this); } }