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 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 bool DemoteMember(string name, GuildRank rank = GuildRank.Member) { if (string.IsNullOrEmpty(name)) { return(false); } var guildId = _client.GuildId; if (guildId == 0) { return(false); } var guild = GuildManager.GetGuild(guildId); if (guild == null) { return(false); } if (_client.GuildRank != GuildRank.GuildLeader) { return(false); } var target = PlayerManager.GetUser(name); if (target == null) { _client.SendSysMessage("The player is offline!"); return(false); } if (_client.UID == target.UID) { return(false); } var targetGuildId = target.GuildId; if (targetGuildId == 0 || targetGuildId != guildId) { return(false); } if (!target.GuildAttribute.SetRank(GuildRank.Member)) { return(false); } guild.BroadcastMessage(string.Format("{0} was discharged from the Deputy Leader position.", name, GuildRank.DeputyLeader)); guild.BroadcastGuildMsg(GuildPackets.Create(GuildAction.Unknown41, 990, 0)); return(true); }
public void SendInfoToClient(Player client) { if (client == null) { return; } SendEnemyList(client); SendAllyList(client); var guildId = Id; client.Send(GuildPackets.Create(GuildAction.SetSyndicate, guildId, FealtyGuild)); // TODO? }
public static void UpdateNews(MartialClient c, InPacket p) { if (c.getAccount().activeCharacter == null) { Logger.LogCheat(Logger.HackTypes.NullActive, c, "Hooked guild.Refresh with null of activeCharacter"); c.Close(); return; } Character chr = c.getAccount().activeCharacter; if (chr.getGuild() == null) { Logger.LogCheat(Logger.HackTypes.Guild, c, "Hooked guild news with char that ain't in guild"); c.Close(); return; } Guild guild = chr.getGuild(); if (chr.getGuild() == null) { Logger.LogCheat(Logger.HackTypes.Guild, c, "Hooked guild news with char that ain't in guild"); c.Close(); return; } GuildMember gMember = guild.findGuildMember(chr.getuID()); if (gMember.getGuildRank() < 4) // aint master? { Logger.LogCheat(Logger.HackTypes.Guild, c, "Hooked guildManagement with char that ain't a guild master"); c.Close(); return; } string news = MiscFunctions.obscureString(p.ReadString(195)); guild.guildNews = news; guild.sendToGuildMembers(GuildPackets.getRefreshNewsGuildPacket(news)); }
public void SetEnemy(int index, uint targetId, bool update = true) { _enemies[index] = targetId; if (update) { Enemy0 = _enemies[0]; Enemy1 = _enemies[1]; Enemy2 = _enemies[2]; Enemy3 = _enemies[3]; Enemy4 = _enemies[4]; SaveInfo(); } SynchroInfo(); if (targetId != 0) { BroadcastGuildMsg(GuildPackets.Create(GuildAction.SetEnemy, targetId, 0)); } }
public void SetAlly(int index, uint targetId, bool update = true) { _allies[index] = targetId; if (update) { Ally0 = _allies[0]; Ally1 = _allies[1]; Ally2 = _allies[2]; Ally3 = _allies[3]; Ally4 = _allies[4]; SaveInfo(); } SynchroInfo(); if (targetId != 0) { BroadcastGuildMsg(GuildPackets.Create(GuildAction.SetAlly, targetId, 0)); } }
public static void CreateGuild(MartialClient c, InPacket p) { if (c.getAccount().activeCharacter == null) { Logger.LogCheat(Logger.HackTypes.NullActive, c, "Hooked guild.Refresh with null of activeCharacter"); c.Close(); return; } Character chr = c.getAccount().activeCharacter; Guild guild = chr.getGuild(); byte managementType = p.ReadByte(); // 0 - disband; 1 - create; 2 - donate; 3 - hat byte managementArg = p.ReadByte(); // 1 - bang, 2 - mun, 3 - pa, 4 - nohing, 5 - dan, 6 - gak, 7 - gyo, 8 - gung string managementName = MiscFunctions.obscureString(p.ReadString(18)); switch (managementType) { case 0: { if (guild == null) { Logger.LogCheat(Logger.HackTypes.Guild, c, "Hooked guild disband with char that ain't in guild"); c.Close(); return; } guild.Delete(); WMap.Instance.removeGuild(guild); foreach (GuildMember i in guild.guildMembers) { Character tmp = i.getOnlineCharacter(); tmp.getAccount().mClient.WriteRawPacket(GuildPackets.quitGuildForInternal(tmp)); WMap.Instance.getGrid(tmp.getMap()).sendTo3x3Area(tmp, tmp.getArea(), GuildPackets.quitGuildForExternals(tmp)); tmp.setGuild(null); i.setOnlineCharacter(null); } return; } case 1: { if (guild != null) { Logger.LogCheat(Logger.HackTypes.Guild, c, "Hooked guild create with char that is in guild"); c.Close(); return; } Guild newGuild = new Guild(managementArg, managementName); c.WriteRawPacket(GuildPackets.createGuildResponse(chr, managementType, managementArg, managementName)); WMap.Instance.getGrid(chr.getMap()).sendTo3x3Area(chr, chr.getArea(), GuildPackets.extCharGuild(chr)); return; } case 2: { if (guild == null) { Logger.LogCheat(Logger.HackTypes.Guild, c, "Hooked guild donate with char that ain't in guild"); c.Close(); return; } return; } case 3: { if (guild == null) { Logger.LogCheat(Logger.HackTypes.Guild, c, "Hooked guild hat change with char that ain't in guild"); c.Close(); return; } guild.guildHat = managementArg; WMap.Instance.getGrid(chr.getMap()).sendTo3x3Area(chr, chr.getArea(), GuildPackets.extCharGuild(chr)); c.WriteRawPacket(GuildPackets.refreshGuild(chr)); return; } } return; }
public bool PromoteMember(string name, GuildRank rank) { 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 (_client.GuildRank != GuildRank.GuildLeader) { return(false); } if (guild.DeputyLeaders >= 5) { _client.SendSysMessage("All the posts have been occupied!"); return(false); } var target = PlayerManager.GetUser(name); if (target == null) { _client.SendSysMessage("The player is offline!"); return(false); } if (_client.UID == target.UID) { return(false); } var targetGuildId = target.GuildId; if (targetGuildId == 0 || targetGuildId != guildId) { return(false); } if (!target.GuildAttribute.SetRank(rank)) { return(false); } guild.BroadcastMessage(string.Format("{0} has appointed {1} as Deputy Leader.", _client.Name, name, rank)); guild.BroadcastGuildMsg(GuildPackets.Create(GuildAction.Unknown39, (ushort)rank, 0)); return(true); }
public bool AddAlly(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 || targetGuild.Id == guildId) { return(false); } targetGuild = targetGuild.MasterGuild; if (guild.IsEnemied(targetGuild.Id)) { _client.SendSysMessage("You must make peace with Guild " + name + " before you ally."); return(false); } var targetLeader = PlayerManager.GetUser(targetGuild.LeaderId); if (targetLeader == null) { _client.SendSysMessage("Target guild`s leader is offline!"); return(false); } if (!targetLeader.FetchApply(ApplyType.AllyGuild, _client.UID)) { _client.SetApply(ApplyType.AllyGuild, targetLeader.UID); var msgApply = GuildPackets.Create(GuildAction.Unknown16, guildId, 0); msgApply.Strings.AddString(guild.Name); targetLeader.Send(msgApply); return(true); } var index1 = -1; for (var i = 0; i < 5; i++) { var targetId = guild.GetAlly(i); if (targetId == 0 || GuildManager.GetGuild(targetId) == null || targetId == targetGuild.Id) { index1 = i; } } if (index1 == -1) { _client.SendSysMessage("Allies List is full!"); return(false); } var index2 = -1; for (var i = 0; i < 5; i++) { var targetId = targetGuild.GetAlly(i); if (targetId == 0 || GuildManager.GetGuild(targetId) == null || targetId == guild.Id) { index2 = i; } } if (index2 == -1) { _client.SendSysMessage("The target's Ally List is full!"); return(false); } guild.SetAlly(index1, targetGuild.Id); targetGuild.SetAlly(index2, guild.Id); guild.BroadcastGuildMsg(GuildPackets.Create(GuildAction.SetAlly, targetGuild.Id, 0)); targetGuild.BroadcastGuildMsg(GuildPackets.Create(GuildAction.SetAlly, guild.Id, 0)); // update allies page //guild.SynchroInfo(); //targetGuild.SynchroInfo(); // broadcast guild message guild.BroadcastMessage(string.Format("Guild Leader {0} has added Guild {1} to the allies list!", guild.LeaderName, targetGuild.Name)); targetGuild.BroadcastMessage(string.Format("Guild Leader {0} has added Guild {1} to the allies list!", targetGuild.LeaderName, guild.Name)); return(true); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: if (_client.GuildId == 0) { AddText("Greetings! I am the guild director, in charge of administrating and managing"); AddText(" guilds. What business do you have with me?"); AddOption("Create a guild", 1); AddOption("Inquire about a guild.", 3); } else if (_client.GuildRank == Enum.GuildRank.GuildLeader) { AddText("Greetings! I am the guild director, in charge of administrating and managing"); AddText(" guilds. What business do you have with me?"); AddOption("Add Enemy", 14); AddOption("Add Ally", 15); AddOption("Remove Enemy", 16); AddOption("Remove Ally", 17); AddOption("Promote Member", 18); AddOption("Demote Member", 19); AddOption("Disband Guild", 20); AddOption("More Options", 21); // AddOption("Inquire about a guild.", 3); } else { AddText("Greetings! I am the guild director, in charge of administrating and managing"); AddText(" guilds. What business do you have with me?"); AddOption("Inquire about a guild.", 3); } break; case 1: if (_client.Level >= 90) { AddText("Please enter the name for your guild"); AddInput("Name", 6); } else { AddText("Sorry, you cannot create a guild before you reach level 90. Please train"); AddText(" harder."); AddOption("I see.", 255); } break; case 2: { AddText("Disbanding your guild is a decision not to be taken lightly. When armies fall"); AddText(" apart, a period of chaos ensues?"); AddOption("I decide to disband.", 4); AddOption("I changed my mind.", 255); } break; case 3: AddText("Which guild would you like to inquire about?"); AddOption("Let me think it over", 255); break; case 4: _client.GuildAttribute.DisbandGuild(); break; case 6: if (_client.Money < 1000000) { AddText("I'm sorry, players must have at least 1 million gold to create a guild"); AddOption("I'll come back", 255); } else { bool GuildCheck = true; var GuildList = Database.ServerDatabase.Context.Guilds.GetAll(); foreach (var guild in GuildList) { if (guild.Name.ToLower() == _client.NpcInputBox.ToLower()) { GuildCheck = false; break; } } if (GuildCheck == true) { if (_client.GuildAttribute.CreateGuild(_client.NpcInputBox, 90, 1000000, 500000)) { AddText("I have set up your guild successfully!"); AddOption("Thanks!", 255); } } else { AddText("There was an error setting up your guild. The name may be taken or you may not pass the requirements"); AddOption("I'll try again", 255); } } break; case 14: //Add Enemy AddText("Please enter the name for the guild you wish to enemy"); AddInput("Enemy Name", 7); break; case 7: //Confirm Enemy String guildname = _client.NpcInputBox; var targetguild = GuildManager.GetGuildByName(guildname); if (targetguild == null) { AddText("This guild name does not exist."); AddOption("Thanks.", 255); break; } _client.GuildAttribute.AddEnemy(guildname); AddText("And the war begins..."); AddOption("We will win!", 255); break; case 15: //Add Ally AddText("Please enter the name for the guild you wish to ally"); AddInput("Ally Name", 9); break; case 9: //Confirm Ally String allyguild = _client.NpcInputBox; var guildtorequest = GuildManager.GetGuildByName(allyguild); if (guildtorequest == null) { AddText("This guild name does not exist."); AddOption("Thanks.", 255); break; } _client.GuildAttribute.AddAlly(allyguild); break; case 16: //Remove Enemy AddText("Choose the enemy you wish to make peace with..."); AddInput("Make peace with...", 8); break; case 8: //Confirm remove enemy var enemyguild = GuildManager.GetGuildByName(_client.NpcInputBox); var success = _client.GuildAttribute.RemoveEnemy(_client.NpcInputBox); if (success) { foreach (var member in _client.Guild.Members()) { member.Send(GuildPackets.Create(Enum.GuildAction.ClearEnemy, enemyguild.Id, enemyguild.MasterGuildId)); member.Guild.SendInfoToClient(member); } AddText("And the land knows peace once again."); AddOption("Thank you.", 255); } else { AddText("You are not enemied with this guild."); AddOption("My mistake.", 255); } break; case 17: //Remove Ally AddText("Choose the Ally you wish to remove from your Allies"); AddInput("Remove...", 10); break; case 10: //Confirm Remove Ally String allyname = _client.NpcInputBox; var alliedguild = GuildManager.GetGuildByName(allyname); if (alliedguild == null) { AddText("This guild name does not exist."); AddOption("Thanks.", 255); break; } _client.GuildAttribute.RemoveAlly(allyname); AddText("And so it is..."); AddOption("Thanks.", 255); break; case 18: //Promote AddText("What is the name of the player you wish to promote?"); AddInput("Their name is...", 11); break; case 11: //Confirm Promote String name = _client.NpcInputBox; if (_client.GuildRank != Enum.GuildRank.GuildLeader) { AddText("You are not the Guild Leader."); AddOption("Thanks.", 255); break; } if (_client.GuildAttribute.PromoteMember(name, Enum.GuildRank.DeputyLeader) == true) { AddText("They have been promoted."); AddOption("Thank you.", 255); } else { AddText("They could not be promoted..."); AddOption("Thanks anyway", 255); } break; case 19: //Demote AddText("What is the name of the player you wish to demote?"); AddInput("Their name is...", 12); break; case 12: //Confirm Demote string demotename = _client.NpcInputBox; if (_client.GuildRank != Enum.GuildRank.GuildLeader) { AddText("You are not the Guild Leader."); AddOption("Thanks.", 255); break; } if (_client.GuildAttribute.DemoteMember(demotename, Enum.GuildRank.Member) == true) { AddText("They have been demoted."); AddOption("Thank you.", 255); } else { AddText("They could not be demoted..."); AddOption("Thanks anyway", 255); } break; case 20: //Disband AddText("Are you sure you wish to disband?"); AddOption("I am sure.", 13); break; case 13: //Confirm Disband if (_client.GuildRank != Enum.GuildRank.GuildLeader) { AddText("You are not the Guild Leader"); AddOption("Oops.", 13); } else { _client.GuildAttribute.DisbandGuild(); } break; case 21: //More Options //TODO AddOption("Create branch", 22); //TODO AddOption("Destroy branch", 23); AddOption("Back...", 0); break; } AddFinish(); Send(); }