public void RemoveGuild(Guild myguild) { lock (Guilds.SyncRoot) { myguild.alliance = null; myguild.AllianceId = ""; Guilds.Remove(myguild); if (myguild.GuildID == m_dballiance.DBguildleader.GuildID) { SendMessageToAllianceMembers(myguild.Name + " has disbanded the alliance of " + m_dballiance.AllianceName, PacketHandler.eChatType.CT_System, PacketHandler.eChatLoc.CL_SystemWindow); ArrayList mgl = new ArrayList(Guilds); foreach (Guild mg in mgl) { try { RemoveGuild(mg); } catch (Exception) { } } GameServer.Database.DeleteObject(m_dballiance); } else { m_dballiance.DBguilds = null; GameServer.Database.SaveObject(m_dballiance); GameServer.Database.FillObjectRelations(m_dballiance); } //sirru 23.12.06 save changes to db for each guild myguild.SaveIntoDatabase(); myguild.SendMessageToGuildMembers(myguild.Name + " has left the alliance of " + m_dballiance.AllianceName, PacketHandler.eChatType.CT_System, PacketHandler.eChatLoc.CL_SystemWindow); SendMessageToAllianceMembers(myguild.Name + " has left the alliance of " + m_dballiance.AllianceName, PacketHandler.eChatType.CT_System, PacketHandler.eChatLoc.CL_SystemWindow); } }
/// <summary> /// Send message to a guild /// </summary> /// <param name="message">The message</param> /// <param name="guild">The guild</param> public static void SendMessageToGuild(string message, Guild guild) { if (guild == null) return; message = "[Guild] [" + message +"]"; guild.SendMessageToGuildMembers(message, eChatType.CT_Guild, eChatLoc.CL_ChatWindow); }
public void AddGuild(Guild myguild) { lock (Guilds.SyncRoot) { myguild.alliance = this; Guilds.Add(myguild); myguild.AllianceId = m_dballiance.ObjectId; m_dballiance.DBguilds = null; //sirru 23.12.06 Add the new object instead of trying to save it GameServer.Database.AddObject(m_dballiance); GameServer.Database.FillObjectRelations(m_dballiance); //sirru 23.12.06 save changes to db for each guild SaveIntoDatabase(); SendMessageToAllianceMembers(myguild.Name + " has joined the alliance of " + m_dballiance.AllianceName, PacketHandler.eChatType.CT_System, PacketHandler.eChatLoc.CL_SystemWindow); } }
/// <summary> /// Load all guilds and alliances from the database /// </summary> public static bool LoadAllGuilds() { lock (m_guilds.SyncRoot) { m_guilds.Clear(); //clear guild list before loading! } m_lastID = 0; //load guilds var guildObjs = GameServer.Database.SelectAllObjects<DBGuild>(); foreach (var obj in guildObjs) { var myguild = new Guild(obj); if (obj.Ranks == null || obj.Ranks.Length < 10 || obj.Ranks[0] == null || obj.Ranks[1] == null || obj.Ranks[2] == null || obj.Ranks[3] == null || obj.Ranks[4] == null || obj.Ranks[5] == null || obj.Ranks[6] == null || obj.Ranks[7] == null || obj.Ranks[8] == null || obj.Ranks[9] == null) { log.ErrorFormat("GuildMgr: Ranks missing for {0}, creating new ones!", myguild.Name); RepairRanks(myguild); // now reload the guild to fix the relations myguild = new Guild(GameServer.Database.SelectObject<DBGuild>("GuildID = '" + obj.GuildID + "'")); } AddGuild(myguild); var guildCharacters = GameServer.Database.SelectObjects<DOLCharacters>(string.Format("GuildID = '" + GameServer.Database.Escape(myguild.GuildID) + "'")); var tempList = new Dictionary<string, GuildMemberDisplay>(guildCharacters.Count); foreach (DOLCharacters ch in guildCharacters) { var member = new GuildMemberDisplay(ch.ObjectId, ch.Name, ch.Level.ToString(), ch.Class.ToString(), ch.GuildRank.ToString(), "0", ch.LastPlayed.ToShortDateString(), ch.GuildNote); tempList.Add(ch.ObjectId, member); } m_guildXAllMembers.Add(myguild.GuildID, tempList); } //load alliances var allianceObjs = GameServer.Database.SelectAllObjects<DBAlliance>(); foreach (DBAlliance dball in allianceObjs) { var myalliance = new Alliance(); myalliance.LoadFromDatabase(dball); if (dball != null && dball.DBguilds != null) { foreach (DBGuild mydbgui in dball.DBguilds) { var gui = GetGuildByName(mydbgui.GuildName); myalliance.Guilds.Add(gui); gui.alliance = myalliance; } } } return true; }
private static DBRank CreateRank(Guild guild, int rankLevel) { DBRank rank = new DBRank(); rank.AcHear = false; rank.AcSpeak = false; rank.Alli = false; rank.Claim = false; rank.Emblem = false; rank.GcHear = true; rank.GcSpeak = false; rank.GuildID = guild.GuildID; rank.Invite = false; rank.OcHear = false; rank.OcSpeak = false; rank.Promote = false; rank.RankLevel = (byte)rankLevel; rank.Release = false; rank.Remove = false; rank.Title = "Rank " + rankLevel.ToString(); rank.Upgrade = false; rank.View = false; rank.View = false; rank.Dues = false; if (rankLevel < 9) { rank.GcSpeak = true; rank.View = true; if (rankLevel < 8) { rank.Emblem = true; if (rankLevel < 7) { rank.AcHear = true; if (rankLevel < 6) { rank.AcSpeak = true; if (rankLevel < 5) { rank.OcHear = true; if (rankLevel < 4) { rank.OcSpeak = true; if (rankLevel < 3) { rank.Invite = true; rank.Promote = true; if (rankLevel < 2) { rank.Release = true; rank.Upgrade = true; rank.Claim = true; if (rankLevel < 1) { rank.Remove = true; rank.Alli = true; rank.Dues = true; rank.Withdraw = true; rank.Title = "Guildmaster"; rank.Buff = true; } } } } } } } } } return rank; }
public static void RepairRanks(Guild guild) { DBRank rank; for (int i = 0; i < 10; i++) { bool foundRank = false; foreach (DBRank r in guild.Ranks) { if (r == null) { // I love DOLDB relations! break; } if (r.RankLevel == i) { foundRank = true; break; } } if (foundRank == false) { rank = CreateRank(guild, i); rank.Title = rank.Title.Replace("Rank", "Repaired Rank"); GameServer.Database.AddObject(rank); } } }
public static void CreateRanks(Guild guild) { DBRank rank; for (int i = 0; i < 10; i++) { rank = CreateRank(guild, i); GameServer.Database.AddObject(rank); guild.Ranks[i] = rank; } }
public static Guild CreateGuild(eRealm realm, string guildName, GamePlayer creator = null) { if (DoesGuildExist(guildName)) { if (creator != null) creator.Out.SendMessage(guildName + " already exists!", eChatType.CT_System, eChatLoc.CL_SystemWindow); return null; } try { DBGuild dbGuild = new DBGuild(); dbGuild.GuildName = guildName; dbGuild.GuildID = System.Guid.NewGuid().ToString(); dbGuild.Realm = (byte)realm; Guild newguild = new Guild(dbGuild); if (newguild.AddToDatabase() == false) { if (creator != null) { creator.Out.SendMessage("Database error, unable to add a new guild!", eChatType.CT_System, eChatLoc.CL_SystemWindow); } return null; } AddGuild(newguild); CreateRanks(newguild); if (log.IsDebugEnabled) log.Debug("Create guild; guild name=\"" + guildName + "\" Realm=" + GlobalConstants.RealmToName(newguild.Realm)); return newguild; } catch (Exception e) { if (log.IsErrorEnabled) log.Error("CreateGuild", e); return null; } }
/// <summary> /// Removes a guild from the manager /// </summary> /// <param name="guild">the guild</param> /// <returns></returns> public static bool RemoveGuild(Guild guild) { if (guild == null) return false; guild.ClearOnlineMemberList(); lock (m_guilds.SyncRoot) { m_guilds.Remove(guild.Name); m_guildids.Remove(guild.GuildID); } return true; }
/// <summary> /// Load all guilds and alliances from the database /// </summary> public static bool LoadAllGuilds() { lock (m_guilds.SyncRoot) { m_guilds.Clear(); //clear guild list before loading! } m_lastID = 0; //load guilds var guildObjs = GameServer.Database.SelectAllObjects <DBGuild>(); foreach (var obj in guildObjs) { var myguild = new Guild(obj); if (obj.Ranks == null || obj.Ranks.Length < 10 || obj.Ranks[0] == null || obj.Ranks[1] == null || obj.Ranks[2] == null || obj.Ranks[3] == null || obj.Ranks[4] == null || obj.Ranks[5] == null || obj.Ranks[6] == null || obj.Ranks[7] == null || obj.Ranks[8] == null || obj.Ranks[9] == null) { log.ErrorFormat("GuildMgr: Ranks missing for {0}, creating new ones!", myguild.Name); RepairRanks(myguild); // now reload the guild to fix the relations myguild = new Guild(DOLDB <DBGuild> .SelectObjects(DB.Column("GuildID").IsEqualTo(obj.GuildID)).FirstOrDefault()); } AddGuild(myguild); var guildCharacters = DOLDB <DOLCharacters> .SelectObjects(DB.Column("GuildID").IsEqualTo(myguild.GuildID)); var tempList = new Dictionary <string, GuildMemberDisplay>(guildCharacters.Count); foreach (DOLCharacters ch in guildCharacters) { var member = new GuildMemberDisplay(ch.ObjectId, ch.Name, ch.Level.ToString(), ch.Class.ToString(), ch.GuildRank.ToString(), "0", ch.LastPlayed.ToShortDateString(), ch.GuildNote); tempList.Add(ch.ObjectId, member); } m_guildXAllMembers.Add(myguild.GuildID, tempList); } //load alliances var allianceObjs = GameServer.Database.SelectAllObjects <DBAlliance>(); foreach (DBAlliance dball in allianceObjs) { var myalliance = new Alliance(); myalliance.LoadFromDatabase(dball); if (dball != null && dball.DBguilds != null) { foreach (DBGuild mydbgui in dball.DBguilds) { var gui = GetGuildByName(mydbgui.GuildName); myalliance.Guilds.Add(gui); gui.alliance = myalliance; } } } return(true); }
/// <summary> /// Looks up if a given client have access for the specific command in this guild /// </summary> /// <returns>true or false</returns> public bool HasRank(GamePlayer member, Guild.eRank rankNeeded) { try { // Is the player in the guild at all? if (!m_onlineGuildPlayers.ContainsKey(member.InternalID)) { log.Debug("Player " + member.Name + " (" + member.InternalID + ") is not a member of guild " + Name); return false; } // If player have a privlevel above 1, it has access enough if (member.Client.Account.PrivLevel > 1) return true; if (member.GuildRank == null) { if (log.IsWarnEnabled) log.Warn("Rank not in db for player " + member.Name); return false; } switch (rankNeeded) { case Guild.eRank.Emblem: { return member.GuildRank.Emblem; } case Guild.eRank.AcHear: { return member.GuildRank.AcHear; } case Guild.eRank.AcSpeak: { return member.GuildRank.AcSpeak; } case Guild.eRank.Demote: { return member.GuildRank.Promote; } case Guild.eRank.Promote: { return member.GuildRank.Promote; } case Guild.eRank.GcHear: { return member.GuildRank.GcHear; } case Guild.eRank.GcSpeak: { return member.GuildRank.GcSpeak; } case Guild.eRank.Invite: { return member.GuildRank.Invite; } case Guild.eRank.OcHear: { return member.GuildRank.OcHear; } case Guild.eRank.OcSpeak: { return member.GuildRank.OcSpeak; } case Guild.eRank.Remove: { return member.GuildRank.Remove; } case Guild.eRank.Alli: { return member.GuildRank.Alli; } case Guild.eRank.View: { return member.GuildRank.View; } case Guild.eRank.Claim: { return member.GuildRank.Claim; } case Guild.eRank.Release: { return member.GuildRank.Release; } case Guild.eRank.Upgrade: { return member.GuildRank.Upgrade; } case Guild.eRank.Dues: { return member.GuildRank.Dues; } case Guild.eRank.Withdraw: { return member.GuildRank.Withdraw; } case Guild.eRank.Leader: { return (member.GuildRank.RankLevel == 0); } case Guild.eRank.Buff: { return member.GuildRank.Buff; } default: { if (log.IsWarnEnabled) log.Warn("Required rank not in the DB: " + rankNeeded); ChatUtil.SendDebugMessage(member, "Required rank not in the DB: " + rankNeeded); return false; } } } catch (Exception e) { if (log.IsErrorEnabled) log.Error("GotAccess", e); return false; } }
public bool Contains(Guild myguild) { lock (Guilds.SyncRoot) { return Guilds.Contains(myguild); } }
public void SendObjectGuildID(GameObject obj, Guild guild) { }
public void SendObjectGuildID(GameObject obj, Guild guild) { if (SendObjectGuildIDMethod != null) SendObjectGuildIDMethod(this, obj, guild); }
public override bool IsAllowedToJoinGuild(GamePlayer source, Guild guild) { return true; }
public const long COST_RE_EMBLEM = 1000000; //200 gold /// <summary> /// Adds a guild to the list of guilds /// </summary> /// <param name="guild">The guild to add</param> /// <returns>True if the function succeeded, otherwise false</returns> public static bool AddGuild(Guild guild) { if (guild == null) return false; lock (m_guilds.SyncRoot) { if (!m_guilds.Contains(guild.Name)) { m_guilds.Add(guild.Name, guild); m_guildids.Add(guild.GuildID, guild.Name); guild.ID = ++m_lastID; return true; } } return false; }
private static DBRank CreateRank(Guild guild, int rankLevel) { DBRank rank = new DBRank(); rank.AcHear = false; rank.AcSpeak = false; rank.Alli = false; rank.Claim = false; rank.Emblem = false; rank.GcHear = true; rank.GcSpeak = false; rank.GuildID = guild.GuildID; rank.Invite = false; rank.OcHear = false; rank.OcSpeak = false; rank.Promote = false; rank.RankLevel = (byte)rankLevel; rank.Release = false; rank.Remove = false; rank.Title = "Rank " + rankLevel.ToString(); rank.Upgrade = false; rank.View = false; rank.View = false; rank.Dues = false; if (rankLevel < 9) { rank.GcSpeak = true; rank.View = true; if (rankLevel < 8) { rank.Emblem = true; if (rankLevel < 7) { rank.AcHear = true; if (rankLevel < 6) { rank.AcSpeak = true; if (rankLevel < 5) { rank.OcHear = true; if (rankLevel < 4) { rank.OcSpeak = true; if (rankLevel < 3) { rank.Invite = true; rank.Promote = true; if (rankLevel < 2) { rank.Release = true; rank.Upgrade = true; rank.Claim = true; if (rankLevel < 1) { rank.Remove = true; rank.Alli = true; rank.Dues = true; rank.Withdraw = true; rank.Title = "Guildmaster"; rank.Buff = true; } } } } } } } } } return(rank); }