public void SynchroInfo(bool announce = false) { var info = GetInfo(); var guild = GuildManager.GetGuild(GuildId); _client.Send(GuildAttrInfoPacket.Create(info, guild)); //_client.Send(GuildDonationPacket.Create(info)); if (guild != null) { guild.SendAllyList(_client); guild.SendEnemyList(_client); } _client.SendToScreen(Packets.Game.SpawnEntityPacket.Create(_client), true); if (announce) { string ann = string.Empty; if (guild != null) { var master = guild.MasterGuild; ann = master.Announce; } _client.SendMessage(ann); } }
public bool LeaveGuild(bool deleteRecord = true, bool synchro = true) { if (_data == null) { return(false); } var oldGuildId = GuildId; if (deleteRecord) { ServerDatabase.Context.GuildAttributes.Remove(_data); } _data = null; if (synchro) { var guild = GuildManager.GetGuild(oldGuildId); if (guild != null && guild.Amount > 0) { guild.Amount--; guild.RemoveMemberList(_client.Name); } SynchroInfo(); } return(true); }
public bool DisbandGuild() { var guildId = GuildId; if (guildId == 0) { return(false); } if (Rank != GuildRank.GuildLeader) { _client.SendSysMessage("You have not been authorized!"); return(false); } uint masterGuildId = 0; var guild = GuildManager.GetGuild(guildId); if (guild != null) { masterGuildId = guild.FealtyGuild; } GuildManager.DestroyGuild(guildId, masterGuildId); return(true); }
public bool JoinGuild(uint id, GuildRank rank = GuildRank.Member, int donation = 0) { if (_data != null) { return(false); } _data = new DbGuildAttr { Id = _client.UID, GuildId = id, Rank = rank, JoinDate = (uint)Common.Clock }; ServerDatabase.Context.GuildAttributes.AddOrUpdate(_data); var guild = GuildManager.GetGuild(GuildId); if (guild != null) { guild.Amount++; guild.SaveInfo(); } AddMemberList(id, _client.Name, Rank, _client.Level); SynchroInfo(true); if (guild != null) { guild.SendInfoToClient(_client); } return(true); }
public bool SetRank(GuildRank rank, bool leader = false) { if (!(rank != GuildRank.GuildLeader && _data.Rank != GuildRank.GuildLeader || leader)) { return(false); } var guild = GuildManager.GetGuild(GuildId); if (guild == null) { return(false); } _data.Rank = rank; SaveInfo(); if (!guild.EditMemberList(_client.Name, rank)) { return(false); } SynchroInfo(); return(true); }
public bool SendPromotionInfoToClient() { if (GuildId == 0) { return(false); } var guild = GuildManager.GetGuild(GuildId); if (guild == null) { return(false); } var msg = GuildPackets.Create(GuildAction.PromoteInfo, 0, 0); msg.Strings.AddString(guild.GetRankString(GuildRank.GuildLeader)); msg.Strings.AddString(guild.GetRankString(GuildRank.DeputyLeader)); //msg.Strings.AddString("980 0 1 0 650"); //msg.Strings.AddString("880 0 1 0 320"); //msg.Strings.AddString("840 0 1 0 270"); //msg.Strings.AddString("680 0 1 0 100"); //msg.Strings.AddString("602 0 0 0 0"); _client.Send(msg); return(true); }
public bool SendInfoToClient() { var info = GetInfo(); var guild = GuildManager.GetGuild(GuildId); if (guild != null) { guild = guild.MasterGuild; } _client.Send(GuildAttrInfoPacket.Create(info, guild)); if (guild != null) { var msgAnnounce = Redux.Packets.Game.GuildPackets.Create(GuildAction.SetAnnounce, guild.AnnounceDate, 0); msgAnnounce.Strings.AddString(guild.Announce); _client.Send(msgAnnounce); guild.SendAllyList(_client); guild.SendEnemyList(_client); } return(true); }
public bool BoostDonateMoney(uint money) { if (_data == null) { return(false); } if (money <= 0) { return(false); } var guild = GuildManager.GetGuild(GuildId); if (guild == null) { return(false); } guild = guild.MasterGuild; if (guild == null) { return(false); } guild.Money += money; AddSilverDonation(money); guild.EditMemberList(_client.Name, SilverDonation); SynchroInfo(); return(true); }
public static void On_WorldClient_AcademyMemberLeft(WorldConnector pConnector, InterPacket pPacket) { int guildID, characterID; if (!pPacket.TryReadInt(out guildID) || !pPacket.TryReadInt(out characterID)) { return; } Guild guild; if (GuildManager.GetGuildByID(guildID, out guild)) { GuildAcademyMember member; if (guild.Academy.GetMember(characterID, out member)) { guild.Academy.Members.Remove(member); member.Dispose(); ZoneCharacter character; if (CharacterManager.GetLoggedInCharacter(characterID, out character)) { character.Guild = null; character.GuildAcademy = null; character.GuildAcademyMember = null; GuildManager.RemoveGuildBuff(character); } } } }
/// <summary> /// Does the actual handling of promoting a guild member. /// </summary> /// <param name="invoker">The guild member is who promoting the <paramref name="target"/>.</param> /// <param name="target">The guild member being promoted.</param> /// <returns>True if the <paramref name="invoker"/> successfully promoted the <paramref name="target"/>; /// otherwise false.</returns> protected virtual bool InternalTryPromoteMember(IGuildMember invoker, IGuildMember target) { // Promote ++target.GuildRank; if (target.GuildRank > invoker.GuildRank) { const string errmsg = "Somehow, when `{0}` promoted `{1}`, their rank [{2}] ended up greater than that of" + " the member who promoted them [{3}]."; if (log.IsErrorEnabled) { log.ErrorFormat(errmsg, invoker, target, target.GuildRank, invoker.GuildRank); } Debug.Fail(string.Format(errmsg, invoker, target, target.GuildRank, invoker.GuildRank)); target.GuildRank = invoker.GuildRank; } // Log the event GuildManager.LogEvent(invoker, GuildEvents.Promote, target); if (MemberPromoted != null) { MemberPromoted.Raise(invoker, EventArgsHelper.Create(target)); } OnMemberPromoted(invoker, target); return(true); }
public async Task CanCreateGuild_SuccessTest() { var config = new GuildConfiguration() { MinMembers = 2 }; var character1 = CreateCharacter(testMap); var character2 = CreateCharacter(testMap); var party = new Party(); character1.SetParty(party); character2.SetParty(party); var database = new Mock <IDatabase>(); database.Setup(x => x.Characters.FindAsync(character1.Id)).ReturnsAsync(new DbCharacter()); database.Setup(x => x.Characters.FindAsync(character2.Id)).ReturnsAsync(new DbCharacter()); var guildManager = new GuildManager(guildLoggerMock.Object, config, new GuildHouseConfiguration(), database.Object, gameWorldMock.Object, timeMock.Object); var result = await guildManager.CanCreateGuild(character1, "guild_name"); Assert.Equal(GuildCreateFailedReason.Success, result); }
private void OnQuery_JOIN() { GameSection.StayEvent(); MonoBehaviourSingleton <GuildManager> .I.SendRequestJoin(_clanId, -1, delegate(bool isSuccess, Error error) { InGameGuildInvitedJoinDialog inGameGuildInvitedJoinDialog = this; DoWaitProtocolBusyFinish(delegate { if (!GuildManager.IsValidInGuild()) { GameSection.ChangeStayEvent("REQUEST", null); } GameSection.ResumeEvent(isSuccess, null); if (GuildManager.IsValidInGuild()) { MonoBehaviourSingleton <GuildManager> .I.guildInviteList.Clear(); MonoBehaviourSingleton <UserInfoManager> .I.ClearPartyInvite(); MonoBehaviourSingleton <UIManager> .I.invitationButton.Close(UITransition.TYPE.CLOSE); MonoBehaviourSingleton <UIManager> .I.invitationInGameButton.Close(UITransition.TYPE.CLOSE); MonoBehaviourSingleton <UserInfoManager> .I.showJoinClanInGame = true; inGameGuildInvitedJoinDialog.BackToHome(); } }); }); }
public bool Create() { if (_data != null) { return(false); } if (_client == null) { return(false); } _data = ServerDatabase.Context.GuildAttributes.GetById(_client.UID); if (_data == null) { return(true); } if (GuildManager.GetGuild(GuildId) == null) { _data = null; return(true); } return(true); }
public void ReloadGuild(TPlayObject PlayObject, string[] @Params) { int nPermission = @Params.Length > 0 ? int.Parse(@Params[0]) : 0; string sParam1 = @Params.Length > 1 ? @Params[1] : ""; if ((sParam1 == "") || ((sParam1 != "") && (sParam1[1] == '?'))) { PlayObject.SysMsg(String.Format(GameMsgDef.g_sGameCommandParamUnKnow, this.Attributes.Name, GameMsgDef.g_sGameCommandReloadGuildHelpMsg), TMsgColor.c_Red, TMsgType.t_Hint); return; } if (M2Share.nServerIndex != 0) { PlayObject.SysMsg(GameMsgDef.g_sGameCommandReloadGuildOnMasterserver, TMsgColor.c_Red, TMsgType.t_Hint); return; } TGUild Guild = GuildManager.FindGuild(sParam1); if (Guild == null) { PlayObject.SysMsg(String.Format(GameMsgDef.g_sGameCommandReloadGuildNotFoundGuildMsg, sParam1), TMsgColor.c_Red, TMsgType.t_Hint); return; } Guild.LoadGuild(); PlayObject.SysMsg(String.Format(GameMsgDef.g_sGameCommandReloadGuildSuccessMsg, sParam1), TMsgColor.c_Red, TMsgType.t_Hint); // UserEngine.SendServerGroupMsg(SS_207, nServerIndex, sParam1); }
public async Task CanCreateGuild_GuildNameTest() { var guildManager = new GuildManager(guildLoggerMock.Object, new GuildConfiguration(), new GuildHouseConfiguration(), databaseMock.Object, gameWorldMock.Object, timeMock.Object, inventoryMock.Object, partyMock.Object, countryMock.Object, etinMock.Object); var result = await guildManager.CanCreateGuild(""); Assert.Equal(GuildCreateFailedReason.WrongName, result); }
public FoxDb(LogService lgr, ConfigurationService cfg) { Logger = lgr; Configuration = cfg; LiteCollection <GuildEntity> lcGuild; LiteCollection <UserEntity> lcUser; LiteCollection <MemberEntity> lcMember; LiteCollection <ChannelEntity> lcChannel; if (!Directory.Exists("databases")) { Directory.CreateDirectory("databases"); } using (var guilds = new LiteDatabase($"Filename=databases/guilds.db; Password={cfg.DbPassword}")) { lcGuild = guilds.GetCollection <GuildEntity>("guilds"); } using (var users = new LiteDatabase($"Filename=databases/users.db; Password={cfg.DbPassword}")) { lcUser = users.GetCollection <UserEntity>("users"); } using (var members = new LiteDatabase($"Filename=databases/members.db; Password={cfg.DbPassword}")) { lcMember = members.GetCollection <MemberEntity>("members"); } using (var channels = new LiteDatabase($"Filename=databases/channels.db; Password={cfg.DbPassword}")) { lcChannel = channels.GetCollection <ChannelEntity>("channels"); } var mapper = BsonMapper.Global; mapper.Entity <ChannelEntity>() .Ignore(x => x.Region); lcGuild.EnsureIndex(x => x.Id); lcUser.EnsureIndex(x => x.Id); lcMember.EnsureIndex(x => x.Id); lcChannel.EnsureIndex(x => x.Id); _dbEntities = new List <object> { lcGuild, lcUser, lcMember, lcChannel }; GuildManager = new GuildManager(this); MemberManager = new MemberManager(this); UserManager = new UserManager(this); ChannelManager = new ChannelManager(this); lgr.Print(LogLevel.Info, "Database", "Database loaded with success."); }
public static void On_WorldClient_AcademyMemberOnline(WorldConnector pConnector, InterPacket pPacket) { int guildID, characterID; if (!pPacket.TryReadInt(out guildID) || !pPacket.TryReadInt(out characterID)) { return; } Guild guild; if (GuildManager.GetGuildByID(guildID, out guild)) { GuildAcademyMember member; if (guild.Academy.GetMember(characterID, out member)) { member.IsOnline = true; ZoneCharacter character; if (CharacterManager.GetLoggedInCharacter(characterID, out character)) { character.Guild = guild; character.GuildAcademy = guild.Academy; character.GuildAcademyMember = member; member.Character = character; } } } }
public override void CleanUp() { if (this.User == null) { return; } MsgrServer.Instance.UserManager.Remove(this.User); // Notify friends about user going offline var friendUsers = MsgrServer.Instance.UserManager.Get(this.User.GetFriendIds()); if (friendUsers.Count != 0) { Network.Send.FriendOffline(friendUsers, this.User); } var guild = MsgrServer.Instance.GuildManager.FindGuildWithMember(this.User.CharacterId); if (guild != null) { var member = guild.GetMember(this.User.CharacterId); GuildManager.ForOnlineMembers(guild, memberUser => Network.Send.GuildMemberState(memberUser.Client, guild, member, this.User, ContactStatus.Offline)); } }
public void ReloadGuild(TPlayObject PlayObject, string[] @Params) { string sParam1 = @Params.Length > 0 ? @Params[0] : ""; if ((sParam1 == "") || ((sParam1 != "") && (sParam1[0] == '?'))) { if (GameConfig.boGMShowFailMsg) { PlayObject.SysMsg(string.Format(GameMsgDef.g_sGameCommandParamUnKnow, Attributes.Name, GameMsgDef.g_sGameCommandReloadGuildHelpMsg), TMsgColor.c_Red, TMsgType.t_Hint); } return; } if (M2Share.nServerIndex != 0) { PlayObject.SysMsg(GameMsgDef.g_sGameCommandReloadGuildOnMasterserver, TMsgColor.c_Red, TMsgType.t_Hint); return; } TGUild Guild = GuildManager.FindGuild(sParam1); if (Guild == null) { PlayObject.SysMsg(string.Format(GameMsgDef.g_sGameCommandReloadGuildNotFoundGuildMsg, sParam1), TMsgColor.c_Red, TMsgType.t_Hint); return; } Guild.LoadGuild(); PlayObject.SysMsg(string.Format(GameMsgDef.g_sGameCommandReloadGuildSuccessMsg, sParam1), TMsgColor.c_Red, TMsgType.t_Hint); UserEngine.SendServerGroupMsg(Grobal2.SS_207, M2Share.nServerIndex, sParam1); }
public static void OneLoadGuildInCharacter(WorldCharacter pChar) { var dbClient = Program.DatabaseManager.GetClient(); var GuildID = dbClient.ReadInt32("SELECT GuildID FROM guildmembers WHERE CharID='" + pChar.ID + "'"); var AcademyID = dbClient.ReadInt32("SELECT GuildID FROM guildacademymembers WHERE CharID='" + pChar.ID + "'"); if (AcademyID > 0 && GuildID == 0) { Guild g; if (!GuildManager.GetGuildByID(AcademyID, out g)) { return; } pChar.GuildAcademy = g.Academy; pChar.IsInGuildAcademy = true; } else if (GuildID > 0 && AcademyID == 0) { Guild g; if (!GuildManager.GetGuildByID(GuildID, out g)) { return; } pChar.Guild = g; pChar.GuildAcademy = g.Academy; pChar.IsInGuild = true; var GuildMember = g.Members.Find(m => m.Character.Character.Name == pChar.Character.Name); GuildMember.Character.Client = pChar.Client; } }
public void SendGuildRequest_PartyChangeTest() { var config = new GuildConfiguration() { MinMembers = 2 }; var character1 = CreateCharacter(testMap); var character2 = CreateCharacter(testMap); var party = new Party(); character1.SetParty(party); character2.SetParty(party); var guildManager = new GuildManager(guildLoggerMock.Object, config, new GuildHouseConfiguration(), databaseMock.Object, gameWorldMock.Object, timeMock.Object); guildManager.SendGuildRequest(character1, "guild_name", "guild_message"); Assert.NotEmpty(GuildManager.CreationRequests); Assert.True(GuildManager.CreationRequests.ContainsKey(party)); character2.SetParty(null); Assert.Empty(GuildManager.CreationRequests); Assert.False(GuildManager.CreationRequests.ContainsKey(party)); }
public void ChangeSabukLord(TPlayObject PlayObject, string[] @Params) { string sCASTLENAME = @Params.Length > 0 ? @Params[0] : ""; string sGuildName = @Params.Length > 1 ? @Params[1] : ""; bool boFlag = @Params.Length > 2 ? bool.Parse(@Params[2]) : false; if ((sCASTLENAME == "") || (sGuildName == "")) { PlayObject.SysMsg("命令格式: @" + this.Attributes.Name + " 城堡名称 行会名称", TMsgColor.c_Red, TMsgType.t_Hint); return; } TUserCastle Castle = M2Share.g_CastleManager.Find(sCASTLENAME); if (Castle == null) { PlayObject.SysMsg(String.Format(GameMsgDef.g_sGameCommandSbkGoldCastleNotFoundMsg, sCASTLENAME), TMsgColor.c_Red, TMsgType.t_Hint); return; } TGUild Guild = GuildManager.FindGuild(sGuildName); if (Guild != null) { M2Share.AddGameDataLog("27" + "\09" + Castle.m_sOwnGuild + "\09" + '0' + "\09" + '1' + "\09" + "sGuildName" + "\09" + PlayObject.m_sCharName + "\09" + '0' + "\09" + '1' + "\09" + '0'); Castle.GetCastle(Guild); UserEngine.SendServerGroupMsg(Grobal2.SS_211, M2Share.nServerIndex, sGuildName); PlayObject.SysMsg(Castle.m_sName + " 所属行会已经更改为 " + sGuildName, TMsgColor.c_Green, TMsgType.t_Hint); } else { PlayObject.SysMsg("行会 " + sGuildName + "还没建立!!!", TMsgColor.c_Red, TMsgType.t_Hint); } }
public void OnPurchaseFailure(string str) { /*Application.ExternalEval( * @"console.log('Purchased failed: " + str + "');" * );*/ GuildManager.showPurchaseFailure(str); }
/// <summary> /// Does the actual handling of demoting a guild member. /// </summary> /// <param name="invoker">The guild member is who demoting the <paramref name="target"/>.</param> /// <param name="target">The guild member being demoted.</param> /// <returns>True if the <paramref name="invoker"/> successfully demoted the <paramref name="target"/>; /// otherwise false.</returns> protected virtual bool InternalTryDemoteMember(IGuildMember invoker, IGuildMember target) { // Demote --target.GuildRank; if (target.GuildRank < 0 || target.GuildRank > _guildSettings.HighestRank) { const string errmsg = "Somehow, when `{0}` demoted `{1}`, their rank ended up at the invalid value of `{2}`." + " Rank being reset to 0."; if (log.IsErrorEnabled) { log.ErrorFormat(errmsg, invoker, target, target.GuildRank); } Debug.Fail(string.Format(errmsg, invoker, target, target.GuildRank)); target.GuildRank = 0; } // Log the event GuildManager.LogEvent(invoker, GuildEvents.Demote, target); OnMemberDemoted(invoker, target); if (MemberDemoted != null) { MemberDemoted.Raise(invoker, EventArgsHelper.Create(target)); } return(true); }
public bool IsEnemied(uint targetId, bool nest = true) { if (targetId == 0) { return(false); } var target = GuildManager.GetGuild(targetId); if (target == null) { return(false); } targetId = target.MasterGuildId; if (nest && FealtyGuild != 0) { var guild = GuildManager.GetGuild(FealtyGuild); if (guild != null) { return(guild.IsEnemied(targetId)); } } for (var i = 0; i < 5; i++) { if (GetEnemy(i) == targetId) { return(true); } } return(false); }
public override void UpdateUI() { if (!PartyManager.IsValidNotEmptyList() && !GuildManager.IsValidNotEmptyInviteList() && !GuildManager.IsValidNotEmptyDonateInviteList()) { MonoBehaviourSingleton <UserInfoManager> .I.ClearPartyInvite(); MonoBehaviourSingleton <UIManager> .I.invitationButton.Close(UITransition.TYPE.CLOSE); MonoBehaviourSingleton <UIManager> .I.invitationInGameButton.Close(UITransition.TYPE.CLOSE); } if (!PartyManager.IsValidNotEmptyList() && !LoungeMatchingManager.IsValidNotEmptyList() && !LoungeMatchingManager.IsValidNotEmptyRallyList() && !GuildManager.IsValidNotEmptyInviteList() && !GuildManager.IsValidNotEmptyDonateInviteList()) { SetActive((Enum)UI.GRD_QUEST, false); SetActive((Enum)UI.TBL_QUEST, false); SetActive((Enum)UI.STR_NON_LIST, true); } else { parties = MonoBehaviourSingleton <PartyManager> .I.partys.ToArray(); lounges = MonoBehaviourSingleton <LoungeMatchingManager> .I.lounges.ToArray(); rallyInvites = MonoBehaviourSingleton <LoungeMatchingManager> .I.rallyInvite.ToArray(); guildInvites = MonoBehaviourSingleton <GuildManager> .I.guildInviteList.ToArray(); guildDonateInvites = MonoBehaviourSingleton <GuildManager> .I.donateInviteList.ToArray(); SetActive((Enum)UI.TBL_QUEST, true); SetActive((Enum)UI.GRD_QUEST, true); SetActive((Enum)UI.STR_NON_LIST, false); UpdateTable(); } }
public void DelGuild(TPlayObject PlayObject, string[] @Params) { string sGuildName = @Params.Length > 0 ? @Params[0] : ""; if (M2Share.nServerIndex != 0) { PlayObject.SysMsg("只能在主服务器上才可以使用此命令删除行会!!!", TMsgColor.c_Red, TMsgType.t_Hint); return; } if (sGuildName == "") { if (GameConfig.boGMShowFailMsg) { PlayObject.SysMsg("命令格式: @" + base.Attributes.Name + " 行会名称", TMsgColor.c_Red, TMsgType.t_Hint); } return; } if (GuildManager.DelGuild(sGuildName)) { UserEngine.SendServerGroupMsg(Grobal2.SS_206, M2Share.nServerIndex, sGuildName); } else { PlayObject.SysMsg("没找到" + sGuildName + "这个行会!!!", TMsgColor.c_Red, TMsgType.t_Hint); } }
/// <summary> /// 申请开启行会战 /// </summary> /// <param name="PlayObject"></param> /// <param name="sGuildName"></param> /// <returns></returns> private int ReQuestGuildWar(TPlayObject PlayObject, string sGuildName) { int result = 0; try { if (GuildManager.FindGuild(sGuildName) != null) { if (PlayObject.m_nGold >= M2Share.g_Config.nGuildWarPrice) { PlayObject.DecGold(M2Share.g_Config.nGuildWarPrice); PlayObject.GoldChanged(); PlayObject.ReQuestGuildWar(sGuildName); } else { PlayObject.SysMsg("您没有足够的金币!!!", TMsgColor.c_Red, TMsgType.t_Hint); } } else { PlayObject.SysMsg("行会 " + sGuildName + " 不存在!!!", TMsgColor.c_Red, TMsgType.t_Hint); } result = 1; } catch { M2Share.MainOutMessage("{异常} TGuildOfficial.ReQuestGuildWar"); } return(result); }
public bool RemoveAlly(string name) { if (string.IsNullOrEmpty(name)) { return(false); } var guildId = GuildId; if (guildId == 0) { return(false); } var guild = GuildManager.GetGuild(guildId); if (guild == null) { return(false); } if (Rank != GuildRank.GuildLeader) { return(false); } var targetGuild = GuildManager.GetGuildByName(name); if (targetGuild == null) { return(false); } targetGuild = targetGuild.MasterGuild; for (var i = 0; i < 5; i++) { var targetId = guild.GetAlly(i); if (targetId == targetGuild.Id) { guild.SetAlly(i, 0); guild.BroadcastGuildMsg(GuildPackets.Create(GuildAction.ClearAlly, targetId, 0)); foreach (var member in guild.Members()) { } guild.BroadcastMessage(string.Format("Guild Leader {0} has removed Guild {1} from the allied list!", guild.LeaderName, targetGuild.Name)); targetGuild.BroadcastMessage(string.Format("Guild {1}`s Guild Leader {0} has removed our Guild from the allied list!", guild.LeaderName, guild.Name)); } var targetguildId = targetGuild.GetAlly(i); if (targetguildId == guild.Id) { targetGuild.SetAlly(i, 0); targetGuild.BroadcastGuildMsg(GuildPackets.Create(GuildAction.ClearAlly, guild.Id, 0)); } } return(true); }
public EntityManager() { Guilds = new GuildManager("guilds.json"); Characters = new CharacterManager("characters.xml"); Map = new MapManager("map.xml"); Villages = new VillageManager("villages.json"); Inventories = new InventoryManager("inventories.xml"); }