コード例 #1
0
ファイル: Alliance.cs プロジェクト: mynew4/DAoC
		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);
			}
		}
コード例 #2
0
ファイル: Guild Manager.cs プロジェクト: mynew4/DOLSharp
		/// <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);
		}
コード例 #3
0
ファイル: Alliance.cs プロジェクト: mynew4/DAoC
		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);
			}
		}
コード例 #4
0
ファイル: GuildMgr.cs プロジェクト: uvbs/Dawn-of-Light-core
        /// <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;
        }
コード例 #5
0
ファイル: GuildMgr.cs プロジェクト: uvbs/Dawn-of-Light-core
        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;
        }
コード例 #6
0
ファイル: GuildMgr.cs プロジェクト: uvbs/Dawn-of-Light-core
        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);
                }
            }
        }
コード例 #7
0
ファイル: GuildMgr.cs プロジェクト: uvbs/Dawn-of-Light-core
        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;
            }
        }
コード例 #8
0
ファイル: GuildMgr.cs プロジェクト: uvbs/Dawn-of-Light-core
        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;
            }
        }
コード例 #9
0
ファイル: GuildMgr.cs プロジェクト: uvbs/Dawn-of-Light-core
        /// <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;
        }
コード例 #10
0
ファイル: GuildMgr.cs プロジェクト: dol-leodagan/DOLSharp
        /// <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);
        }
コード例 #11
0
ファイル: Guild.cs プロジェクト: uvbs/Dawn-of-Light-core
        /// <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;
            }
        }
コード例 #12
0
ファイル: Alliance.cs プロジェクト: mynew4/DAoC
		public bool Contains(Guild myguild)
		{
			lock (Guilds.SyncRoot)
			{
				return Guilds.Contains(myguild);
			}
		}
コード例 #13
0
		public void SendObjectGuildID(GameObject obj, Guild guild) { }
コード例 #14
0
		public void SendObjectGuildID(GameObject obj, Guild guild)
		{
			if (SendObjectGuildIDMethod != null) SendObjectGuildIDMethod(this, obj, guild);
		}
コード例 #15
0
ファイル: PvPServerRules.cs プロジェクト: mynew4/DOLSharp
 public override bool IsAllowedToJoinGuild(GamePlayer source, Guild guild)
 {
     return true;
 }
コード例 #16
0
ファイル: GuildMgr.cs プロジェクト: uvbs/Dawn-of-Light-core
        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;
        }
コード例 #17
0
ファイル: GuildMgr.cs プロジェクト: dol-leodagan/DOLSharp
        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);
        }