public static DataTable ToDataTable(this IEnumerable <IAvatar> avatars) { DataTable dt = new DataTable(); dt.Columns.Add("ID", typeof(int)); dt.Columns.Add("Name", typeof(String)); dt.Columns.Add("Race", typeof(String)); dt.Columns.Add("Gender", typeof(Gender)); dt.Columns.Add("Health", typeof(int)); dt.Columns.Add("HealthMax", typeof(int)); dt.Columns.Add("Willpower", typeof(int)); dt.Columns.Add("WillpowerMax", typeof(int)); dt.Columns.Add("X", typeof(int)); dt.Columns.Add("Y", typeof(int)); dt.Columns.Add("Z", typeof(int)); dt.Columns.Add("Type", typeof(ObjectType)); dt.Columns.Add("Level", typeof(int)); dt.Columns.Add("IsOnline", typeof(bool)); dt.Columns.Add("HouseholdName", typeof(String)); dt.Columns.Add("HouseholdImageUri", typeof(String)); dt.Columns.Add("RankName", typeof(String)); dt.Columns.Add("RankImageUri", typeof(String)); dt.Columns.Add("Zone", typeof(String)); foreach (var avatar in avatars) { DataRow dr = dt.NewRow(); dr["ID"] = avatar.ID; dr["Name"] = avatar.Name; dr["Race"] = avatar.Race; dr["Gender"] = avatar.Gender; dr["Health"] = avatar.Body; dr["HealthMax"] = avatar.BodyMax; dr["Willpower"] = avatar.Mind; dr["WillpowerMax"] = avatar.MindMax; dr["X"] = avatar.X; dr["Y"] = avatar.Y; dr["Z"] = avatar.Z; dr["Type"] = avatar.ObjectType; dr["Level"] = avatar.Properties.GetValue <int>(PerenthiaAvatar.LevelProperty); dr["IsOnline"] = Game.Server.World.IsAvatarOnline(avatar); if (avatar is IPlayer) { var player = avatar as IPlayer; dr["HouseholdName"] = player.Household.HouseholdName; dr["HouseholdImageUri"] = player.Household.HouseholdImageUri; dr["RankName"] = player.Household.RankName; dr["RankImageUri"] = player.Household.RankImageUri; } MapManager.MapDetail detail = Game.Server.World.Map.GetDetail(avatar.Location); if (detail != null) { dr["Zone"] = detail.Name; } dt.Rows.Add(dr); } return(dt); }
public void Resurrect(IAvatar avatar) { avatar.SetBody(avatar.BodyMax); avatar.SetMind(avatar.MindMax); avatar.Context.Add(new RdlSystemMessage(RdlSystemMessage.PriorityType.Positive, "You have been resurrected!")); avatar.Context.AddRange(avatar.GetRdlProperties( Avatar.BodyProperty, Avatar.BodyMaxProperty, Avatar.MindProperty, Avatar.MindMaxProperty)); this.Enter(avatar, Direction.Empty); // Don't want to send down the whole map. Just send down the zone. //avatar.Context.AddRange(this.World.GetRdlMap(avatar.X, avatar.Y)); Character player = avatar as Character; if (player != null) { MapManager.MapDetail detail = this.World.Map.GetDetail(player.Location); if (detail != null) { string zone = player.Properties.GetValue <string>(Character.ZoneProperty); if (detail.Name != zone) { player.Properties.SetValue(Character.ZoneProperty, detail.Name); player.Context.Add(new RdlProperty(player.ID, Character.ZoneProperty, zone)); } } } }
/// <summary> /// Saves the specified map details. /// </summary> /// <param name="map">The map detail t save.</param> public abstract void SaveMap(MapManager.MapDetail map);
public static AvatarData ToServiceObject(this IAvatar avatar, bool includeSkills) { var obj = new AvatarData(); obj.ID = avatar.ID; obj.Gender = avatar.Gender.ToString(); obj.Health = avatar.Body; obj.HealthMax = avatar.BodyMax; obj.IsOnline = Game.Server.World.IsAvatarOnline(avatar); obj.Name = avatar.Name; obj.Race = avatar.Race; obj.Type = (int)avatar.ObjectType; obj.Willpower = avatar.Mind; obj.WillpowerMax = avatar.MindMax; obj.X = avatar.X; obj.Y = avatar.Y; obj.Z = avatar.Z; obj.Level = avatar.Properties.GetValue <int>(PerenthiaAvatar.LevelProperty); if (includeSkills) { List <NameValuePair> skills = new List <NameValuePair>(); foreach (var skill in avatar.Skills) { skills.Add(new NameValuePair { Name = skill.Key, Value = (int)skill.Value }); } obj.Skills = skills.ToArray(); } if (avatar is Character) { Character c = avatar as Character; if (c.Household != null) { obj.HouseholdImageUri = c.Household.HouseholdImageUri; obj.HouseholdName = c.Household.HouseholdName; obj.RankImageUri = c.Household.RankImageUri; obj.RankName = c.Household.RankName; obj.RankOrder = c.Household.RankOrder; } //List<AwardData> awards = new List<AwardData>(); //foreach (var a in c.Awards) //{ // awards.Add(new AwardData // { // Name = a.Name, // ImageUri = String.Concat(ConfigurationManager.AppSettings["MediaUri"], a.ImageUri), // Type = a.ObjectType // }); //} //obj.Awards = awards.ToArray(); } MapManager.MapDetail detail = Game.Server.World.Map.GetDetail(avatar.Location); if (detail != null) { obj.Zone = detail.Name; } return(obj); }