public Guild() { id = 0; type = 0; name = ""; server = ""; }
/// <summary> /// Gives GP to a player for a given guild. /// If the baseAmount is less than 1, nothing will happen. /// If the baseAmount is greater than 1000, the baseAmount will be set to 1000. /// If the player ranks up, a message will be sent to him/her and an OnPlayerGuildRankUp event will be published. /// </summary> /// <param name="player">The player to give GP.</param> /// <param name="guild">The guild this GP will apply to.</param> /// <param name="baseAmount">The baseAmount of GP to grant.</param> public static void GiveGuildPoints(NWPlayer player, GuildType guild, int baseAmount) { if (baseAmount <= 0) { return; } // Clamp max GP baseAmount if (baseAmount > 1000) { baseAmount = 1000; } // Grant a bonus based on the player's guild relations perk rank. Always offset by 1 so we don't end up with multiplication by zero. int perkBonus = PerkService.GetCreaturePerkLevel(player, PerkType.GuildRelations) + 1; baseAmount *= perkBonus; var dbGuild = DataService.Get <Guild>((int)guild); var pcGP = DataService.Single <PCGuildPoint>(x => x.GuildID == (int)guild && x.PlayerID == player.GlobalID); pcGP.Points += baseAmount; // Clamp player GP to the highest rank. int maxRank = RankProgression.Keys.Max(); int maxGP = RankProgression[maxRank]; if (pcGP.Points >= maxGP) { pcGP.Points = maxGP - 1; } // Notify player how much GP they earned. player.SendMessage("You earned " + baseAmount + " " + dbGuild.Name + " guild points."); // Are we able to rank up? bool didRankUp = false; if (pcGP.Rank < maxRank) { // Is it time for a rank up? int nextRank = RankProgression[pcGP.Rank]; if (pcGP.Points >= nextRank) { // Let's do a rank up. pcGP.Rank++; player.SendMessage(ColorTokenService.Green("You've reached rank " + pcGP.Rank + " in the " + dbGuild.Name + "!")); didRankUp = true; } } // Submit changes to the DB/cache. DataService.SubmitDataChange(pcGP, DatabaseActionType.Update); // If the player ranked up, publish an event saying so. if (didRankUp) { MessageHub.Instance.Publish(new OnPlayerGuildRankUp(player.GlobalID, pcGP.Rank)); } }
public Guild() { id = 0; name = "No name"; server = "Rexxar"; type = 0; }
public Guild(uint id, string name, string server, GuildType type) { this.id = id; this.name = name; this.server = server; this.type = type; }
public Guild(uint guildID, GuildType guildType, string guildName, string serverName) { this.guildID = guildID; this.guildType = guildType; this.guildName = guildName; this.serverName = serverName; }
/// <summary> /// Returns the <see cref="GuildResult"/> when <see cref="Player"/> is at maximum number of guilds by <see cref="GuildType"/>. /// </summary> private static GuildResult GetMaximumGuildTypeError(GuildType type) { switch (type) { case GuildType.Guild: return(GuildResult.AtMaxGuildCount); case GuildType.WarParty: return(GuildResult.MaxWarPartyCount); case GuildType.ArenaTeam2v2: case GuildType.ArenaTeam3v3: case GuildType.ArenaTeam5v5: return(GuildResult.MaxArenaTeamCount); case GuildType.Community: return(GuildResult.AtMaxCommunityCount); case GuildType.Circle: return(GuildResult.AtMaxCircleCount); default: throw new ArgumentException(); } }
//Default Constructor public Guild() { this.guildID = 0; this.guildType = 0; this.guildName = string.Empty; this.serverName = string.Empty; }
/// <summary> /// Sets the guild. /// </summary> /// <param name="userID">The user ID.</param> /// <param name="type">The type.</param> public void SetGuild(int userID, GuildType type) { var command = connection.CreateCommand("UPDATE Users SET [Guild]=? WHERE [UserID]=?;"); command.AddParameter("Guild", (byte)type); command.AddParameter("UserID", userID); command.ExecuteNonQuery(); }
public QuestGPReward(GuildType guild, int amount, bool isSelectable) { Guild = guild; Amount = amount; IsSelectable = isSelectable; var dbGuild = DataService.Guild.GetByID((int)guild); MenuName = Amount + " " + dbGuild.Name + " GP"; }
/// <summary> /// Gets the guild users. /// </summary> /// <param name="guild">The guild.</param> /// <param name="filter">The filter.</param> /// <returns></returns> public List <string> GetGuildUsers(GuildType guild, LevelFilter filter) { var command = connection.CreateCommand(@"SELECT Users.Name FROM Users WHERE ((Users.Level) Between @LevelFrom AND @LevelTo) And Guild=@Guild"); command.AddParameter(filter); command.AddParameter("Guild", (byte)guild); return(ReadString(command)); }
/// <summary> /// Gives GP to a player for a given guild. /// If the baseAmount is less than 1, nothing will happen. /// If the baseAmount is greater than 1000, the baseAmount will be set to 1000. /// If the player ranks up, a message will be sent to him/her and an OnPlayerGuildRankUp event will be published. /// </summary> /// <param name="player">The player to give GP.</param> /// <param name="guild">The guild this GP will apply to.</param> /// <param name="baseAmount">The baseAmount of GP to grant.</param> public static void GiveGuildPoints(NWPlayer player, GuildType guild, int baseAmount) { if (baseAmount <= 0) { return; } // Clamp max GP baseAmount if (baseAmount > 1000) { baseAmount = 1000; } var dbGuild = DataService.Guild.GetByID((int)guild); var pcGP = DataService.PCGuildPoint.GetByPlayerIDAndGuildID(player.GlobalID, (int)guild); pcGP.Points += baseAmount; // Clamp player GP to the highest rank. int maxRank = RankProgression.Keys.Max(); int maxGP = RankProgression[maxRank]; if (pcGP.Points >= maxGP) { pcGP.Points = maxGP - 1; } // Notify player how much GP they earned. player.SendMessage("You earned " + baseAmount + " " + dbGuild.Name + " guild points."); // Are we able to rank up? bool didRankUp = false; if (pcGP.Rank < maxRank) { // Is it time for a rank up? int nextRank = RankProgression[pcGP.Rank]; if (pcGP.Points >= nextRank) { // Let's do a rank up. pcGP.Rank++; player.SendMessage(ColorTokenService.Green("You've reached rank " + pcGP.Rank + " in the " + dbGuild.Name + "!")); didRankUp = true; } } // Submit changes to the DB/cache. DataService.SubmitDataChange(pcGP, DatabaseActionType.Update); // If the player ranked up, publish an event saying so. if (didRankUp) { MessageHub.Instance.Publish(new OnPlayerGuildRankUp(player.GlobalID, pcGP.Rank)); } }
public Guild() { /******************************************** * Null constructor * No inputs * this creates a blank guild ********************************************/ gid = 0; type = (GuildType)0; name = "N/A"; server = "N/A"; }
public static int CalculateGPReward(NWPlayer player, GuildType guild, int baseAmount) { var pcGP = DataService.PCGuildPoint.GetByPlayerIDAndGuildID(player.GlobalID, (int)guild); float rankBonus = 0.25f * pcGP.Rank; // Grant a bonus based on the player's guild relations perk rank. int perkBonus = PerkService.GetCreaturePerkLevel(player, PerkType.GuildRelations); baseAmount = baseAmount + (perkBonus * baseAmount); return(baseAmount + (int)(baseAmount * rankBonus)); }
/// <summary> /// Creates new guild with the members from the party. /// </summary> /// <param name="party"></param> /// <exception cref="ArgumentException"> /// Thrown if one of the party members already is in a guild. /// </exception> public void CreateGuild(Party party, string name, GuildType type, GuildVisibility visibility) { var partyMembers = party.GetMembers(); if (partyMembers.Any(a => a.GuildId != 0)) { throw new ArgumentException("One of the party members is in a guild already."); } var leader = party.Leader; lock (_syncLock) { // Add guild var guild = new Guild(); guild.Name = name; guild.LeaderName = leader.Name; guild.Title = ""; guild.EstablishedDate = DateTime.Now; guild.Server = ChannelServer.Instance.Conf.Channel.ChannelServer; guild.Type = type; guild.Visibility = visibility; guild.IntroMessage = string.Format(Localization.Get("Guild stone for the {0} guild."), guild.Name); guild.WelcomeMessage = string.Format(Localization.Get("Welcome to the {0} guild!"), guild.Name); guild.LeavingMessage = string.Format(Localization.Get("You have left the {0} guild."), guild.Name); guild.RejectionMessage = string.Format(Localization.Get("You have been denied admission to the {0} guild."), guild.Name); ChannelServer.Instance.Database.AddGuild(guild); this.LoadGuild(guild); // Add members foreach (var creature in partyMembers) { var guildMember = new GuildMember(); guildMember.GuildId = guild.Id; guildMember.CharacterId = creature.EntityId; guildMember.JoinedDate = DateTime.Now; guildMember.Application = ""; if (creature != leader) { guildMember.Rank = GuildMemberRank.Member; } ChannelServer.Instance.Database.AddGuildMember(guildMember); guild.AddMember(guildMember); creature.Guild = guild; creature.GuildMember = guildMember; Send.GuildUpdateMember(creature, guild, guildMember); } } }
/***************************************************** * GuildTypePrint * input: GuildType * output: ArrayList (String) * purpose: to list off all the guilds of the type * selected by the user * ****************************************************/ public ArrayList GuildTypePrint(GuildType type) { ArrayList classArray = new ArrayList(); var guildQuery = from S in Globals.guilds where S.Value.Type == type select S; classArray.Add("List of all guilds of type: " + type); foreach (var guild in guildQuery) { classArray.Add(guild.Value.ToString()); } return(classArray); }
public Guild(uint tid = 0, GuildType ttype = (GuildType)0, string tname = "") { /****************************************************************** * guild constructor * inputs uint id, guildType, string name * * This constructor is for pulling the guild information from the file * server name is parsed from the guild name that is read in. * ******************************************************************/ gid = tid; type = ttype; string[] subs = tname.Split('-'); name = subs[0]; server = subs[1]; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 0: _Score = reader.ReadInt(); _Items = reader.ReadStrongItemList(); _HideMap = reader.ReadMap(); _ItemHue = reader.ReadInt(); _GuildType = (GuildType)reader.ReadInt(); _Rect = reader.ReadRect2D(); break; } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRect)); }
/// <summary> /// Returns the maximum number of guilds a <see cref="Player"/> can be in by <see cref="GuildType"/>. /// </summary> private static uint GetMaximumGuildTypeCount(GuildType type) { // move to configuration file? switch (type) { case GuildType.Guild: case GuildType.WarParty: case GuildType.ArenaTeam2v2: case GuildType.ArenaTeam3v3: case GuildType.ArenaTeam5v5: case GuildType.Community: return(1u); case GuildType.Circle: return(5u); default: throw new ArgumentException(); } }
public override void Initialize() { var player = GetPC(); // Don't let non-players use this convo. if (!player.IsPlayer) { EndConversation(); return; } NWObject speaker = GetDialogTarget(); GuildType guild = (GuildType)speaker.GetLocalInt("GUILD_ID"); var model = new Model { Guild = guild }; SetDialogCustomData(model); LoadMainPage(); }
public void HandleGuildRegister(ICommandContext context, [Parameter("Guild type to create.", ParameterFlags.None, typeof(EnumParameterConverter <GuildType>))] GuildType type, [Parameter("Name of newly created guild.")] string name, [Parameter("", ParameterFlags.Optional)] string leaderRank, [Parameter("", ParameterFlags.Optional)] string councilRank, [Parameter("", ParameterFlags.Optional)] string memberRank) { Player player = context.Invoker as Player; // default ranks from client leaderRank ??= "Leader"; councilRank ??= "Council"; memberRank ??= "Member"; // default standard from the client GuildStandard standard = null; if (type == GuildType.Guild) { standard = new GuildStandard(3, 4, 6); } GuildResultInfo info = player.GuildManager.CanRegisterGuild(type, name, leaderRank, councilRank, memberRank, standard); if (info.Result != GuildResult.Success) { GuildBase.SendGuildResult(player.Session, info); return; } player.GuildManager.RegisterGuild(type, name, leaderRank, councilRank, memberRank, standard); }
public Guild(uint tid = 0, GuildType ttype = (GuildType)0, string tname = "", string tserver = "") { /***************************************************************** * guild constructor the second * input: uint id, guildType, string name, string server * * This constructor is for the user inputed guild, where we don't * need to parse the servername from the guild name, it's done for us *****************************************************************/ //checks to see if we were given a server name, since loading from file is deliniated by a dash, we will handle it in this class gid = tid; type = ttype; if (String.IsNullOrEmpty(tserver)) { string[] subs = tname.Split('-'); name = subs[0]; server = subs[1]; } else { name = tname; server = tserver; } }
/// <summary> /// Gets the users from guild. /// </summary> /// <param name="guild">The guild.</param> /// <param name="pagesFilter">The pages filter.</param> /// <returns></returns> public List <string> GetUsersLinksFromGuild(GuildType guild, IRange <int> pagesFilter) { var url = UrlCastleTreasury + "&id=" + ((int)guild); if (pagesFilter == null) { Browser.GoTo(url); } else { Browser.GoTo(url + "&page=" + pagesFilter.From); } var pages = pagesFilter == null ? new Pager(browser, url) : new FilteredPager(browser, url, pagesFilter); pages.Sleep = 1000; var links = new List <string>(); do { var table = browser.Table(Find.ByClass("default treasury_now")); if (table.Exists) { links.AddRange( table.Links.Where(e => !string.IsNullOrEmpty(e.Url) && e.Url.StartsWith(UrlPlayer)).Select(e => e.Url) ); } } while (pages.GotoNextPage()); return(links.Distinct().ToList()); }
public override void Deserialize(GenericReader reader) { int version = reader.ReadInt(); if (version < 5) { FixGuilds(); } switch (version) { case 5: { m_WarInitializations = reader.ReadGuildList(); m_WarKills = new WarKillsItem[reader.ReadInt()]; for (int i = 0; i < m_WarKills.Length; ++i) { m_WarKills[i].w_Guild = reader.ReadGuild() as Guild; m_WarKills[i].Kills = reader.ReadInt(); m_WarKills[i].MaxKills = reader.ReadInt(); m_WarKills[i].WarTime = (uint)reader.ReadInt(); m_WarKills[i].ExpTime = (uint)reader.ReadInt(); } m_AllianceLeader = reader.ReadBool(); m_AllianceName = reader.ReadString(); goto case 4; } case 4: { m_AllyDeclarations = reader.ReadGuildList(); m_AllyInvitations = reader.ReadGuildList(); goto case 3; } case 3: { m_TypeLastChange = reader.ReadDateTime(); goto case 2; } case 2: { m_Type = (GuildType)reader.ReadInt(); goto case 1; } case 1: { m_LastFealty = reader.ReadDateTime(); goto case 0; } case 0: { m_Leader = reader.ReadMobile(); m_Name = reader.ReadString(); m_Abbreviation = reader.ReadString(); m_Allies = reader.ReadGuildList(); m_Enemies = reader.ReadGuildList(); m_WarDeclarations = reader.ReadGuildList(); m_WarInvitations = reader.ReadGuildList(); m_Members = reader.ReadMobileList(); m_Candidates = reader.ReadMobileList(); m_Accepted = reader.ReadMobileList(); m_Guildstone = reader.ReadItem(); m_Teleporter = reader.ReadItem(); m_Charter = reader.ReadString(); m_Website = reader.ReadString(); break; } } if (m_AllyDeclarations == null) { m_AllyDeclarations = new ArrayList(); } if (m_AllyInvitations == null) { m_AllyInvitations = new ArrayList(); } if (m_WarInitializations == null) { m_WarInitializations = new ArrayList(); } if (WarTimer1 == null) { WarTimer1 = new WarTimer(); WarTimer1.Start(); } if (m_Guildstone == null || m_Members.Count == 0) { Disband(); } }
/// <summary> /// Creates new guild with the members from the party. /// </summary> /// <param name="party"></param> /// <exception cref="ArgumentException"> /// Thrown if one of the party members already is in a guild. /// </exception> public void CreateGuild(Party party, string name, GuildType type, GuildVisibility visibility) { var partyMembers = party.GetMembers(); if (partyMembers.Any(a => a.GuildId != 0)) throw new ArgumentException("One of the party members is in a guild already."); var leader = party.Leader; lock (_syncLock) { // Add guild var guild = new Guild(); guild.Name = name; guild.LeaderName = leader.Name; guild.Title = ""; guild.EstablishedDate = DateTime.Now; guild.Server = ChannelServer.Instance.Conf.Channel.ChannelServer; guild.Type = type; guild.Visibility = visibility; guild.IntroMessage = string.Format(Localization.Get("Guild stone for the {0} guild."), guild.Name); guild.WelcomeMessage = string.Format(Localization.Get("Welcome to the {0} guild!"), guild.Name); guild.LeavingMessage = string.Format(Localization.Get("You have left the {0} guild."), guild.Name); guild.RejectionMessage = string.Format(Localization.Get("You have been denied admission to the {0} guild."), guild.Name); ChannelServer.Instance.Database.AddGuild(guild); this.LoadGuild(guild); // Add members foreach (var creature in partyMembers) { var guildMember = new GuildMember(); guildMember.GuildId = guild.Id; guildMember.CharacterId = creature.EntityId; guildMember.JoinedDate = DateTime.Now; guildMember.Application = ""; if (creature != leader) guildMember.Rank = GuildMemberRank.Member; ChannelServer.Instance.Database.AddGuildMember(guildMember); guild.AddMember(guildMember); creature.Guild = guild; creature.GuildMember = guildMember; Send.GuildUpdateMember(creature, guild, guildMember); } } }
public static bool CreateGuild(string name, GuildType type, MabiCreature leader, IEnumerable<MabiCreature> otherMembers) { if (WorldDb.Instance.GetGuildForChar(leader.Id) != null) { Send.MsgBox(leader.Client, leader, Localization.Get("guild.already_you")); // You are already a member of a guild return false; } foreach (var member in otherMembers) { if (WorldDb.Instance.GetGuildForChar(member.Id) != null) { Send.MsgBox(leader.Client, leader, Localization.Get("guild.already"), member.Name); // {0} is already a member of a guild return false; } } if (!WorldDb.Instance.GuildNameOkay(name)) { Send.MsgBox(leader.Client, leader, Localization.Get("guild.name_used")); // That name is not valid or is already in use. return false; } // TODO: checks in here... var pos = leader.GetPosition(); var guild = new MabiGuild(); guild.IntroMessage = string.Format(Localization.Get("guild.intro"), name); // Guild stone for the {0} guild guild.LeavingMessage = string.Format(Localization.Get("guild.leaving"), name); // You have left the {0} guild guild.RejectionMessage = string.Format(Localization.Get("guild.rejection"), name); // You have been denied admission to the {0} guild. guild.WelcomeMessage = string.Format(Localization.Get("guild.welcome"), name); // Welcome to the {0} guild! guild.Name = name; guild.Region = leader.Region; guild.X = pos.X; guild.Y = pos.Y; guild.Rotation = leader.Direction; guild.StoneClass = GuildStoneType.Normal; guild.Type = type; var guildId = guild.Save(); leader.GuildMember = new MabiGuildMember(leader.Id, guildId, GuildMemberRank.Leader); leader.GuildMember.Save(); foreach (var member in otherMembers) { member.GuildMember = new MabiGuildMember(member.Id, guildId, GuildMemberRank.SeniorMember); member.GuildMember.Save(); } // Reload guild to make sure it gets initialized and gets an id guild = WorldDb.Instance.GetGuild(guildId); leader.Guild = guild; WorldManager.Instance.Broadcast(PacketCreator.GuildMembershipChanged(guild, leader, GuildMemberRank.Leader), SendTargets.Range, leader); foreach (var member in otherMembers) { member.Guild = guild; WorldManager.Instance.Broadcast(PacketCreator.GuildMembershipChanged(guild, member, GuildMemberRank.SeniorMember), SendTargets.Range, member); } AddGuildStone(guild); Send.ChannelNotice(NoticeType.Top, 20000, Localization.Get("guild.created"), name, leader.Name); // {0} Guild has been created. Guild leader: {1} return true; }
public IQuest AddRewardGuildPoints(GuildType guild, int amount, bool isSelectable = false) { AddReward(new QuestGPReward(guild, amount, isSelectable)); return(this); }
/// <summary> /// Create a new <see cref="GuildChat"/> using the supplied parameters. /// </summary> public GuildChat(GuildType type, string name, string leaderRankName, string councilRankName, string memberRankName) : base(type, name, leaderRankName, councilRankName, memberRankName) { }
public override void Deserialize(GenericReader reader) { int version = reader.ReadInt(); switch (version) { case 5: { int count = reader.ReadInt(); m_PendingWars = new List<WarDeclaration>(); for (int i = 0; i < count; i++) { m_PendingWars.Add(new WarDeclaration(reader)); } count = reader.ReadInt(); m_AcceptedWars = new List<WarDeclaration>(); for (int i = 0; i < count; i++) { m_AcceptedWars.Add(new WarDeclaration(reader)); } bool isAllianceLeader = reader.ReadBool(); if (isAllianceLeader) { m_AllianceInfo = new AllianceInfo(reader); } else { m_AllianceLeader = reader.ReadGuild() as Guild; } goto case 4; } case 4: { m_AllyDeclarations = reader.ReadStrongGuildList<Guild>(); m_AllyInvitations = reader.ReadStrongGuildList<Guild>(); goto case 3; } case 3: { m_TypeLastChange = reader.ReadDateTime(); goto case 2; } case 2: { m_Type = (GuildType)reader.ReadInt(); goto case 1; } case 1: { m_LastFealty = reader.ReadDateTime(); goto case 0; } case 0: { m_Leader = reader.ReadMobile(); if (m_Leader is PlayerMobile) { ((PlayerMobile)m_Leader).GuildRank = RankDefinition.Leader; } m_Name = reader.ReadString(); m_Abbreviation = reader.ReadString(); m_Allies = reader.ReadStrongGuildList<Guild>(); m_Enemies = reader.ReadStrongGuildList<Guild>(); m_WarDeclarations = reader.ReadStrongGuildList<Guild>(); m_WarInvitations = reader.ReadStrongGuildList<Guild>(); m_Members = reader.ReadStrongMobileList(); m_Candidates = reader.ReadStrongMobileList(); m_Accepted = reader.ReadStrongMobileList(); m_Guildstone = reader.ReadItem(); m_Teleporter = reader.ReadItem(); m_Charter = reader.ReadString(); m_Website = reader.ReadString(); break; } } if (m_AllyDeclarations == null) { m_AllyDeclarations = new List<Guild>(); } if (m_AllyInvitations == null) { m_AllyInvitations = new List<Guild>(); } if (m_AcceptedWars == null) { m_AcceptedWars = new List<WarDeclaration>(); } if (m_PendingWars == null) { m_PendingWars = new List<WarDeclaration>(); } /* if ( ( !NewGuildSystem && m_Guildstone == null )|| m_Members.Count == 0 ) Disband(); */ Timer.DelayCall(TimeSpan.Zero, VerifyGuild_Callback); }
/// <summary> /// Returns a list of guilds from the database, based on the given /// search parameters. /// </summary> /// <param name="serverName"></param> /// <param name="page"></param> /// <param name="perPage"></param> /// <param name="sortBy"></param> /// <param name="sortType"></param> /// <param name="guildLevel"></param> /// <param name="memberAmount"></param> /// <param name="guildType"></param> /// <param name="searchText"></param> /// <returns></returns> public List <GuildSearchResult> GetGuildList(string serverName, GuildSortBy sortBy, GuildSortType sortType, GuildSearchLevel guildLevel, GuildSearchMembers memberAmount, GuildType guildType, string searchText) { var result = new List <GuildSearchResult>(); serverName = MySqlHelper.EscapeString(serverName); searchText = MySqlHelper.EscapeString(searchText); // Build query var query = string.Format( "SELECT `g`.*, COUNT(`m`.`characterId`) AS `memberCount`" + " FROM `guilds` AS `g`" + " LEFT JOIN `guild_members` AS `m` ON `g`.`guildId` = `m`.`guildId`" + " WHERE `g`.`server` = '{0}' AND `g`.`name` LIKE '%{1}%' AND `g`.`guildId` > {2}", serverName, searchText, MabiId.Guilds); // Search for level if (guildLevel != GuildSearchLevel.All) { GuildLevel level; switch (guildLevel) { default: case GuildSearchLevel.Beginner: level = GuildLevel.Beginner; break; case GuildSearchLevel.Basic: level = GuildLevel.Basic; break; case GuildSearchLevel.Advanced: level = GuildLevel.Advanced; break; case GuildSearchLevel.Great: level = GuildLevel.Great; break; case GuildSearchLevel.Grand: level = GuildLevel.Grand; break; } query += string.Format(" AND `g`.`level` = {0}", (int)level); } // Search for guild type if (guildType != GuildType.All) { query += string.Format(" AND `g`.`type` = {0}", (int)guildType); } // For the join query += " GROUP BY `g`.`guildId`"; // Search for member amount range if (memberAmount != GuildSearchMembers.All) { int min, max; switch (memberAmount) { default: case GuildSearchMembers.Lv1_5: min = 1; max = 5; break; case GuildSearchMembers.Lv6_10: min = 6; max = 10; break; case GuildSearchMembers.Lv11_20: min = 11; max = 20; break; case GuildSearchMembers.Lv21_50: min = 21; max = 50; break; case GuildSearchMembers.Lv51_X: min = 21; max = 999999; break; } query += string.Format(" HAVING `memberCount` >= {0} AND `memberCount` <= {1}", min, max); } // Sort if (sortBy != GuildSortBy.None) { string by; string type = sortType.ToString().ToUpper(); switch (sortBy) { default: case GuildSortBy.Level: by = "`g`.`level`"; break; case GuildSortBy.Members: by = "`memberCount`"; break; case GuildSortBy.Type: by = "`g`.`type`"; break; case GuildSortBy.Name: by = "`g`.`name`"; break; } query += string.Format(" ORDER BY {0} {1}", by, type); } // Query using (var conn = this.Connection) using (var mc = new MySqlCommand(query, conn)) using (var reader = mc.ExecuteReader()) { while (reader.Read()) { var guild = new GuildSearchResult(); guild.Id = reader.GetInt64("guildId"); guild.MemberCount = reader.GetInt32("memberCount"); guild.Name = reader.GetString("name"); guild.Type = (GuildType)reader.GetInt32("type"); guild.LeaderName = reader.GetString("leaderName"); switch ((GuildLevel)reader.GetInt32("level")) { default: case GuildLevel.Beginner: guild.LevelIndex = 5; break; case GuildLevel.Basic: guild.LevelIndex = 10; break; case GuildLevel.Advanced: guild.LevelIndex = 20; break; case GuildLevel.Great: guild.LevelIndex = 50; break; case GuildLevel.Grand: guild.LevelIndex = 250; break; } result.Add(guild); } } return(result); }
public override void Deserialize( GenericReader reader ) { int version = reader.ReadInt(); if ( version < 5 ) { FixGuilds(); } switch ( version ) { case 5: { m_WarInitializations = reader.ReadGuildList(); m_WarKills = new WarKillsItem[reader.ReadInt()]; for ( int i = 0; i < m_WarKills.Length; ++i ) { m_WarKills[i].w_Guild = reader.ReadGuild() as Guild; m_WarKills[i].Kills = reader.ReadInt(); m_WarKills[i].MaxKills = reader.ReadInt(); m_WarKills[i].WarTime = (uint) reader.ReadInt(); m_WarKills[i].ExpTime = (uint) reader.ReadInt(); } m_AllianceLeader = reader.ReadBool(); m_AllianceName = reader.ReadString(); goto case 4; } case 4: { m_AllyDeclarations = reader.ReadGuildList(); m_AllyInvitations = reader.ReadGuildList(); goto case 3; } case 3: { m_TypeLastChange = reader.ReadDateTime(); goto case 2; } case 2: { m_Type = (GuildType) reader.ReadInt(); goto case 1; } case 1: { m_LastFealty = reader.ReadDateTime(); goto case 0; } case 0: { m_Leader = reader.ReadMobile(); m_Name = reader.ReadString(); m_Abbreviation = reader.ReadString(); m_Allies = reader.ReadGuildList(); m_Enemies = reader.ReadGuildList(); m_WarDeclarations = reader.ReadGuildList(); m_WarInvitations = reader.ReadGuildList(); m_Members = reader.ReadMobileList(); m_Candidates = reader.ReadMobileList(); m_Accepted = reader.ReadMobileList(); m_Guildstone = reader.ReadItem(); m_Teleporter = reader.ReadItem(); m_Charter = reader.ReadString(); m_Website = reader.ReadString(); break; } } if ( m_AllyDeclarations == null ) { m_AllyDeclarations = new ArrayList(); } if ( m_AllyInvitations == null ) { m_AllyInvitations = new ArrayList(); } if ( m_WarInitializations == null ) { m_WarInitializations = new ArrayList(); } if ( WarTimer1 == null ) { WarTimer1 = new WarTimer(); WarTimer1.Start(); } if ( m_Guildstone == null || m_Members.Count == 0 ) { Timer.DelayCall( TimeSpan.Zero, new TimerCallback( Disband ) ); } }
public static bool JoinVirtue(Mobile m, GuildType type) { if (type == GuildType.Regular) return true; if (m.Kills >= 5) return false; GuildType cur = GetGuildType(m); if (cur != type && cur != GuildType.Regular) return false; if ( m.NetState != null ) SetGuildType(m.NetState.Address, type); return true; }
public static void SetGuildType(System.Net.IPAddress addr, GuildType type) { if (_IPTable.ContainsKey(addr)) { _IPTable[addr] = type; } else { _IPTable.Add(addr, type); } }
public override void Deserialize(GenericReader reader) { int version = reader.ReadInt(); switch (version) { case 4: { m_AllyDeclarations = reader.ReadGuildListOrNull(); m_AllyInvitations = reader.ReadGuildListOrNull(); goto case 3; } case 3: { m_TypeLastChange = reader.ReadDateTime(); goto case 2; } case 2: { m_Type = (GuildType)reader.ReadInt(); goto case 1; } case 1: { m_LastFealty = reader.ReadDateTime(); goto case 0; } case 0: { m_Leader = reader.ReadMobile(); m_Name = reader.ReadString(); m_Abbreviation = reader.ReadString(); m_Allies = reader.ReadGuildListOrNull(); m_Enemies = reader.ReadGuildListOrNull(); m_WarDeclarations = reader.ReadGuildListOrNull(); m_WarInvitations = reader.ReadGuildListOrNull(); m_Members = reader.ReadMobileList(); m_Candidates = reader.ReadMobileListOrNull(); m_Accepted = reader.ReadMobileListOrNull(); m_Guildstone = reader.ReadItem(); m_Teleporter = reader.ReadItem(); m_Charter = reader.ReadString(); m_Website = reader.ReadString(); break; } } if (m_Guildstone == null || m_Members.Count == 0) { Disband(); } }
public override void OnResponse(NetState state, RelayInfo info) { if (GuildGump.BadLeader(m_Mobile, m_Guild)) { return; } GuildType newType = m_Guild.Type; //GuildType.Regular; IOBAlignment newIOBType = m_Guild.IOBAlignment; //IOBAlignment.None; switch (info.ButtonID) { default: break; //return; // Close case 1: newType = GuildType.Regular; break; case 2: newType = GuildType.Order; break; case 3: newType = GuildType.Chaos; break; case 5: newIOBType = IOBAlignment.Brigand; break; case 6: newIOBType = IOBAlignment.Council; break; case 7: newIOBType = IOBAlignment.Good; break; case 8: newIOBType = IOBAlignment.Orcish; break; case 9: newIOBType = IOBAlignment.Pirate; break; case 10: newIOBType = IOBAlignment.Savage; break; case 11: newIOBType = IOBAlignment.Undead; break; case 12: newIOBType = IOBAlignment.None; break; } if (m_Guild.IOBAlignment != newIOBType && CanChangeKin() == false) { m_Mobile.SendMessage("Guild Kin Alignment change is currently disabled."); return; } if ((m_Guild.Type != newType || m_Guild.IOBAlignment != newIOBType) && m_Guild.TypeLastChange.AddDays(7) > DateTime.Now) { m_Mobile.SendMessage("You can only change your alignment once every 7 days."); } else { if (m_Guild.Type != newType) { //Changing Order/Chaos //Check that Order/Chaos guilds aren't allied if (newType != GuildType.Regular) //we only care if there changeing to a differnt special type { ArrayList Allies = m_Guild.Allies; for (int i = 0; i < Allies.Count; ++i) { Guild g = (Guild)Allies[i]; if (g.Type != GuildType.Regular && g.Type != newType) { m_Mobile.SendMessage("Break any alliances with opposing guild types first"); return; } } } //Change the Guild! m_Guild.Type = newType; m_Guild.GuildMessage(1018022, newType.ToString()); // Guild Message: Your guild type has changed: } else if (m_Guild.IOBAlignment != newIOBType) { //Changing KIN //Check that different IOB types aren't allied if (newIOBType != IOBAlignment.None) { ArrayList Allies = m_Guild.Allies; for (int i = 0; i < Allies.Count; ++i) { Guild g = (Guild)Allies[i]; if (g.IOBAlignment != IOBAlignment.None && g.IOBAlignment != newIOBType) { m_Mobile.SendMessage("Break any alliances with opposing guild types first"); return; } } } //Change the Guild! m_Guild.IOBAlignment = newIOBType; if (m_Guild.IOBAlignment != IOBAlignment.None) { m_Guild.GuildMessage("Your guild is now allied with the " + this.TranslateIOBName(newIOBType)); } else { m_Guild.GuildMessage("Your guild has broken its kin alignment, it is now unaligned."); } } else { m_Mobile.SendMessage("You have not changed your alignment."); } } GuildGump.EnsureClosed(m_Mobile); m_Mobile.SendGump(new GuildmasterGump(m_Mobile, m_Guild)); }
public override void Deserialize( GenericReader reader ) { int version = reader.ReadInt(); switch ( version ) { case 4: { m_AllyDeclarations = reader.ReadGuildList(); m_AllyInvitations = reader.ReadGuildList(); goto case 3; } case 3: { m_TypeLastChange = reader.ReadDateTime(); goto case 2; } case 2: { m_Type = (GuildType)reader.ReadInt(); goto case 1; } case 1: { m_LastFealty = reader.ReadDateTime(); goto case 0; } case 0: { m_Leader = reader.ReadMobile(); m_Name = reader.ReadString(); m_Abbreviation = reader.ReadString(); m_Allies = reader.ReadGuildList(); m_Enemies = reader.ReadGuildList(); m_WarDeclarations = reader.ReadGuildList(); m_WarInvitations = reader.ReadGuildList(); m_Members = reader.ReadMobileList(); m_Candidates = reader.ReadMobileList(); m_Accepted = reader.ReadMobileList(); m_Guildstone = reader.ReadItem(); m_Teleporter = reader.ReadItem(); m_Charter = reader.ReadString(); m_Website = reader.ReadString(); break; } } if ( m_AllyDeclarations == null ) m_AllyDeclarations = new ArrayList(); if ( m_AllyInvitations == null ) m_AllyInvitations = new ArrayList(); if ( m_Guildstone == null || m_Members.Count == 0 ) Disband(); }
public override void Deserialize( GenericReader reader ) { int version = reader.ReadInt(); switch ( version ) { case 5: { int count = reader.ReadInt(); m_PendingWars = new List<WarDeclaration>(); for( int i = 0; i < count; i++ ) { m_PendingWars.Add( new WarDeclaration( reader ) ); } count = reader.ReadInt(); m_AcceptedWars = new List<WarDeclaration>(); for( int i = 0; i < count; i++ ) { m_AcceptedWars.Add( new WarDeclaration( reader ) ); } bool isAllianceLeader = reader.ReadBool(); if( isAllianceLeader ) m_AllianceInfo = new AllianceInfo( reader ); else m_AllianceLeader = reader.ReadGuild() as Guild; goto case 4; } case 4: { m_AllyDeclarations = reader.ReadStrongGuildList<Guild>(); m_AllyInvitations = reader.ReadStrongGuildList<Guild>(); goto case 3; } case 3: { m_TypeLastChange = reader.ReadDateTime(); goto case 2; } case 2: { m_Type = (GuildType)reader.ReadInt(); goto case 1; } case 1: { m_LastFealty = reader.ReadDateTime(); goto case 0; } case 0: { m_Leader = reader.ReadMobile(); if( m_Leader is PlayerMobile ) ((PlayerMobile)m_Leader).GuildRank = RankDefinition.Leader; m_Name = reader.ReadString(); m_Abbreviation = reader.ReadString(); m_Allies = reader.ReadStrongGuildList<Guild>(); m_Enemies = reader.ReadStrongGuildList<Guild>(); m_WarDeclarations = reader.ReadStrongGuildList<Guild>(); m_WarInvitations = reader.ReadStrongGuildList<Guild>(); m_Members = reader.ReadStrongMobileList(); m_Candidates = reader.ReadStrongMobileList(); m_Accepted = reader.ReadStrongMobileList(); m_Guildstone = reader.ReadItem(); m_Teleporter = reader.ReadItem(); m_Charter = reader.ReadString(); m_Website = reader.ReadString(); break; } } if ( m_AllyDeclarations == null ) m_AllyDeclarations = new List<Guild>(); if ( m_AllyInvitations == null ) m_AllyInvitations = new List<Guild>(); if ( m_AcceptedWars == null ) m_AcceptedWars = new List<WarDeclaration>(); if ( m_PendingWars == null ) m_PendingWars = new List<WarDeclaration>(); /* if ( ( !NewGuildSystem && m_Guildstone == null )|| m_Members.Count == 0 ) Disband(); */ Timer.DelayCall( TimeSpan.Zero, new TimerCallback( VerifyGuild_Callback ) ); }
public override void Deserialize(GenericReader reader) { int version = reader.ReadInt(); switch (version) { case 5: case 4: { m_AllyDeclarations = reader.ReadStrongGuildList <Guild>(); m_AllyInvitations = reader.ReadStrongGuildList <Guild>(); goto case 3; } case 3: { m_TypeLastChange = reader.ReadDateTime(); goto case 2; } case 2: { m_Type = (GuildType)reader.ReadInt(); goto case 1; } case 1: { m_LastFealty = reader.ReadDateTime(); goto case 0; } case 0: { m_Leader = reader.ReadMobile(); if (m_Leader is PlayerMobile) { ((PlayerMobile)m_Leader).GuildRank = RankDefinition.Leader; } m_Name = reader.ReadString(); m_Abbreviation = reader.ReadString(); m_Allies = reader.ReadStrongGuildList <Guild>(); m_Enemies = reader.ReadStrongGuildList <Guild>(); m_WarDeclarations = reader.ReadStrongGuildList <Guild>(); m_WarInvitations = reader.ReadStrongGuildList <Guild>(); m_Members = reader.ReadStrongMobileList(); m_Candidates = reader.ReadStrongMobileList(); m_Accepted = reader.ReadStrongMobileList(); m_Guildstone = reader.ReadItem(); m_Teleporter = reader.ReadItem(); m_Charter = reader.ReadString(); m_Website = reader.ReadString(); break; } } if (m_AllyDeclarations == null) { m_AllyDeclarations = new List <Guild>(); } if (m_AllyInvitations == null) { m_AllyInvitations = new List <Guild>(); } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(VerifyGuild_Callback)); }