//SMSG_SERVER_FIRST_ACHIEVEMENT public static void SendServerFirstAchievement(AchievementEntryId achievementEntryId, Character chr) { using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_SERVER_FIRST_ACHIEVEMENT, chr.Name.Length + 1 + 8 + 4 + 4)) { packet.WriteCString(chr.Name); packet.Write(chr.EntityId); packet.WriteUInt((uint)achievementEntryId); packet.WriteUInt(0); World.Broadcast(packet); } }
//SMSG_ACHIEVEMENT_EARNED public static void SendAchievementEarned(AchievementEntryId achievementEntryId, Character chr) { using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_ACHIEVEMENT_EARNED, 8 + 4 + 4)) { chr.EntityId.WritePacked(packet); packet.WriteUInt((uint)achievementEntryId); packet.WriteDateTime(DateTime.Now); packet.WriteUInt(0); chr.SendPacketToArea(packet, true); } }
public static RealmPacketOut CreateAchievementEarnedToGuild(AchievementEntryId achievementEntryId, Character chr) { // Must be a better way to do this. const string msg = "|Hplayer:$N|h[$N]|h has earned the achievement $a!"; var packet = new RealmPacketOut(RealmServerOpCode.SMSG_MESSAGECHAT); packet.WriteByte((byte) ChatMsgType.Achievment); packet.WriteUInt((uint) ChatLanguage.Universal); packet.Write(chr.EntityId); packet.WriteUInt(5); packet.Write(chr.EntityId); packet.WriteUIntPascalString(msg); packet.WriteByte(0); packet.WriteUInt((uint) achievementEntryId); return packet; }
/// <summary> /// Checks if player has completed the given achievement. /// </summary> /// <param name="achievementEntry"></param> /// <returns></returns> public bool HasCompleted(AchievementEntryId achievementEntry) { return m_completedAchievements.ContainsKey(achievementEntry); }
/// <summary> /// Removes achievement from the player. /// </summary> /// <param name="achievementEntryId"></param> /// <returns></returns> public bool RemoveAchievement(AchievementEntryId achievementEntryId) { AchievementRecord achievementRecord; if (m_completedAchievements.TryGetValue(achievementEntryId, out achievementRecord)) { RemoveAchievement(achievementRecord); return true; } return false; }
/// <summary> /// Adds a new achievement to the list, when achievement is earned. /// </summary> /// <param name="achievementEntry"></param> public void EarnAchievement(AchievementEntryId achievementEntryId) { var achievementEntry = AchievementMgr.GetAchievementEntry(achievementEntryId); if(achievementEntry!= null) EarnAchievement(achievementEntry); }
public static bool IsRealmFirst(AchievementEntryId achievementEntryId) { return (!CompletedRealmFirstAchievements.Contains(achievementEntryId)); }
public static AchievementEntry GetAchievementEntry(AchievementEntryId achievementEntryId) { AchievementEntry entry; AchievementEntries.TryGetValue(achievementEntryId, out entry); return entry; }
public static bool AddAchievement(Character character, AchievementEntryId achievementEntryId) { character.Achievements.EarnAchievement(achievementEntryId); return true; }