Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.Text;
- using COServer.Game;
- using System.Collections.Generic;
- namespace COServer.Network.GamePackets
- {
- public unsafe class MsgSyndicate : Writer, Interfaces.IPacket
- {
- public enum Mode : uint
- {
- None = 0,
- JoinRequest = 1,
- InviteRequest = 2,
- Quit = 3,
- Info = 6,
- Allied = 7,
- RemoveAlly = 8,
- Enemied = 9,
- RemoveEnemy = 10,
- DonateSilvers = 11,
- Refresh = 12,
- Disband = 19,
- DonateConquerPoints = 20,
- ChangeGuildRequirements = 24,
- GuildRequirements = 25,
- Bulletin = 27,
- PromoteSendRequest = 28,
- PromoteAcceptRequest = 29,
- Discharge = 30,
- ConfirmPromote = 34,
- Diseharge = 36,
- Promote = 37,
- PromoteInfo = 38,
- Unknown = 45,
- GuildBlackList = 47,
- MakeBlackList = 48,
- SmsBlackList = 49,
- RemoveBlackList = 50
- }
- byte[] Packet;
- public MsgSyndicate(bool Create)
- {
- if (Create)
- {
- Packet = new byte[36];
- WriteUInt16((ushort)(Packet.Length - 8), 0, Packet);
- WriteUInt16((ushort)MsgTypes.MsgSyndicate, 2, Packet);
- }
- }
- public MsgSyndicate(uint Date)
- {
- Packet = new byte[36 + Date];
- WriteUInt16((ushort)(Packet.Length - 8), 0, Packet);
- WriteUInt16((ushort)MsgTypes.MsgSyndicate, 2, Packet);
- }
- public Mode Action
- {
- get { return (Mode)Packet[4]; }
- set { fixed (byte* Pack = Packet) *((uint*)(Pack + 4)) = (uint)value; }
- }
- public uint dwParam
- {
- get { return BitConverter.ToUInt32(Packet, 8); }
- set { WriteUInt32(value, 8, Packet); }
- }
- public uint Level
- {
- get { return BitConverter.ToUInt32(Packet, 12); }
- set { WriteUInt32(value, 12, Packet); }
- }
- public uint Reborn
- {
- get { return BitConverter.ToUInt32(Packet, 16); }
- set { WriteUInt32(value, 16, Packet); }
- }
- public uint Class
- {
- get { return BitConverter.ToUInt32(Packet, 20); }
- set { WriteUInt32(value, 20, Packet); }
- }
- public string BulletinTime
- {
- set
- {
- WriteByte(1, 24, Packet);
- WriteByte((byte)(value.Length), 25, Packet);
- WriteString(value, 26, Packet);
- }
- }
- public byte[] ToArray()
- {
- return Packet;
- }
- public void Deserialize(byte[] Data)
- {
- Packet = Data;
- }
- public void Send(Client.GameState client)
- {
- client.Send(Packet);
- }
- static void AllyGuilds(string name, Client.GameState client)
- {
- foreach (var guild in Kernel.Guilds.Values)
- {
- if (guild.Name == name && client.Guild.Name != name)
- {
- if (guild.Leader != null)
- {
- if (guild.Leader.IsOnline)
- {
- guild.Leader.Client.OnMessageBoxEventParams = new object[] { guild, client.Guild };
- client.OnMessageBoxEventParams = new object[] { guild, client.Guild };
- Client.GameState Leader = guild.Leader.Client;
- Leader.MessageOK = delegate
- {
- Game.ConquerStructures.Society.Guild Guild1 = Leader.OnMessageBoxEventParams[0] as Game.ConquerStructures.Society.Guild;
- Game.ConquerStructures.Society.Guild Guild2 = Leader.OnMessageBoxEventParams[1] as Game.ConquerStructures.Society.Guild;
- if (Guild1.Ally.Count == 6 || Guild2.Ally.Count == 6) return;
- Guild1.AddAlly(Guild2.Name);
- Guild2.AddAlly(Guild1.Name);
- if (Guild1.Leader.Client != null)
- {
- if (Guild1.Leader.Client.Socket.Alive)
- {
- if (Guild2.Leader.Client != null && Guild2.Leader.Client.Socket.Alive)
- {
- Guild2.Leader.Client.Send(new MsgTalk(Guild1.Leader.Name + " has accepted your ally request.", System.Drawing.Color.Blue, MsgTalk.TopLeft));
- }
- }
- }
- };
- guild.Leader.Client.MessageCancel = delegate
- {
- try
- {
- if (guild.Leader.Client != null)
- {
- if (guild.Leader.Client.Socket.Alive)
- {
- if (guild.Leader.Client.OnMessageBoxEventParams != null)
- {
- Game.ConquerStructures.Society.Guild Guild2 = guild.Leader.Client.OnMessageBoxEventParams[1] as Game.ConquerStructures.Society.Guild;
- Game.ConquerStructures.Society.Guild Guild1 = guild.Leader.Client.OnMessageBoxEventParams[0] as Game.ConquerStructures.Society.Guild;
- if (Guild2.Leader.IsOnline)
- {
- Guild2.Leader.Client.Send(new MsgTalk(Guild1.Leader.Name + " has declined your ally request.", System.Drawing.Color.Blue, MsgTalk.TopLeft));
- }
- }
- }
- }
- }
- catch (Exception e)
- {
- Server.SaveException(e);
- }
- };
- guild.Leader.Client.Send(new NpcReply(NpcReply.MessageBox, client.Player.Name + " , GuildLeader of " + client.Guild.Name + " wants to make with you an alliance."));
- }
- }
- }
- }
- }
- public void SendPromote(Client.GameState client, ushort typ)
- {
- if (client == null) return;
- if (client.AsMember == null) return;
- List<string> list = new List<string>();
- StringBuilder builder = new StringBuilder();
- if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
- {
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.GuildLeader, 1, 1, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.DeputyLeader, (int)client.Guild.RanksCounts[990], 10, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HDeputyLeader, (int)client.Guild.RanksCounts[980], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 650));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonoraryManager, (int)client.Guild.RanksCounts[880], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 320));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonorarySuperv, (int)client.Guild.RanksCounts[840], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 270));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonorarySteward, (int)client.Guild.RanksCounts[680], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 100));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Aide, (int)client.Guild.RanksCounts[602], 6, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Steward, (int)client.Guild.RanksCounts[690], 3, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Follower, (int)client.Guild.RanksCounts[490], 10, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
- }
- if (client.AsMember.Rank == Enums.GuildMemberRank.LeaderSpouse)
- {
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HDeputyLeader, (int)client.Guild.RanksCounts[980], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 650));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonoraryManager, (int)client.Guild.RanksCounts[880], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 320));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonorarySuperv, (int)client.Guild.RanksCounts[840], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 270));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonorarySteward, (int)client.Guild.RanksCounts[680], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 100));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Aide, (int)client.Guild.RanksCounts[602], 10, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Steward, (int)client.Guild.RanksCounts[690], 3, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Follower, (int)client.Guild.RanksCounts[490], 10, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
- }
- if (client.AsMember.Rank == Enums.GuildMemberRank.Manager || client.AsMember.Rank == Enums.GuildMemberRank.HonoraryManager)
- {
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Aide, (int)client.Guild.RanksCounts[602], 6, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
- }
- if (client.AsMember.Rank == Enums.GuildMemberRank.DeputyLeader)
- {
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HDeputyLeader, (int)client.Guild.RanksCounts[980], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 650));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonoraryManager, (int)client.Guild.RanksCounts[880], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 320));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonorarySuperv, (int)client.Guild.RanksCounts[840], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 270));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonorarySteward, (int)client.Guild.RanksCounts[680], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 100));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Steward, (int)client.Guild.RanksCounts[690], 3, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Aide, (int)client.Guild.RanksCounts[602], 6, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
- list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Follower, (int)client.Guild.RanksCounts[490], 10, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
- }
- int extraLength = 0;
- foreach (var str in list) extraLength += str.Length + 1;
- byte[] packet = new byte[28 + 8 + extraLength];
- WriteUInt16((ushort)(packet.Length - 8), 0, packet);
- WriteUInt16((ushort)MsgTypes.MsgSyndicate, 2, packet);
- WriteByte((byte)typ, 4, packet);
- WriteStringList(list, 24, packet);
- client.Send(packet);
- }
- private string CreatePromotionString(StringBuilder builder, Enums.GuildMemberRank rank, int occupants, int maxOccupants, int extraBattlePower, int conquerPoints)
- {
- builder.Remove(0, builder.Length);
- builder.Append((int)rank);
- builder.Append(" ");
- builder.Append(occupants);
- builder.Append(" ");
- builder.Append(maxOccupants);
- builder.Append(" ");
- builder.Append(extraBattlePower);
- builder.Append(" ");
- builder.Append(conquerPoints);
- builder.Append(" ");
- return builder.ToString();
- }
- public static void Process(byte[] Packet, Client.GameState client)
- {
- MsgSyndicate command = new MsgSyndicate(false);
- command.Deserialize(Packet);
- switch (command.Action)
- {
- case Mode.Info:
- {
- var Guild = Kernel.Guilds[command.dwParam];
- if (Guild != null)
- Guild.SendName(client);
- break;
- }
- case Mode.ChangeGuildRequirements:
- {
- if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
- {
- client.Guild.LevelRequirement = Math.Min(command.Level, 140);
- client.Guild.RebornRequirement = Math.Min(command.Reborn, 2);
- client.Guild.ClassRequirement = Math.Min(command.Class, 127);
- foreach (var member in client.Guild.Members.Values)
- if (member.IsOnline)
- client.Guild.SendGuild(member.Client);
- Database.GuildTable.SaveRequirements(client.Guild);
- }
- break;
- }
- case Mode.RemoveAlly:
- case Mode.RemoveEnemy:
- {
- string name = Encoding.Default.GetString(Packet, 26, Packet[25]);
- if (client.Guild != null)
- {
- if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
- {
- client.Guild.RemoveAlly(name);
- foreach (var guild in Kernel.Guilds.Values)
- {
- if (guild.Name == name && client.Guild.Name != name)
- {
- guild.RemoveAlly(client.Guild.Name);
- }
- }
- client.Guild.RemoveEnemy(name);
- }
- }
- break;
- }
- case Mode.Allied:
- {
- string name = Encoding.Default.GetString(Packet, 26, Packet[25]);
- if (client.Guild != null)
- {
- if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
- {
- if (client.Guild.Ally.Count < 6)
- {
- AllyGuilds(name, client);
- }
- }
- }
- break;
- }
- case Mode.Enemied:
- {
- string name = Encoding.Default.GetString(Packet, 26, Packet[25]);
- if (client.Guild != null)
- {
- if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
- {
- if (client.Guild.Enemy.Count < 6)
- {
- client.Guild.AddEnemy(name);
- }
- }
- }
- break;
- }
- case Mode.Bulletin:
- {
- string message = Encoding.Default.GetString(Packet, 26, Packet[25]);
- if (client.Guild != null)
- {
- if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
- {
- client.Guild.Bulletin = message;
- client.Guild.CreateBuletinTime();
- client.Guild.SendGuild(client);
- }
- }
- break;
- }
- case Mode.DonateSilvers:
- {
- if (client.Guild != null)
- {
- if (client.Trade.InTrade) return;
- if (client.PokerPlayer != null)
- return;
- if (client.Player.Money >= command.dwParam)
- {
- client.Guild.SilverFund += command.dwParam;
- Database.GuildTable.SaveFunds(client.Guild);
- client.AsMember.SilverDoantion += command.dwParam;
- client.Player.Money -= command.dwParam;
- client.Guild.SendGuild(client);
- client.Guild.SendGuildMessage(new MsgTalk((client.Player.Name + " Donate " + command.dwParam + " Guild " + client.Guild.Name + " Silvers"), System.Drawing.Color.Red, MsgTalk.TopLeft));
- }
- }
- break;
- }
- case Mode.DonateConquerPoints:
- {
- if (client.Guild != null)
- {
- if (client.Trade.InTrade) return;
- if (client.PokerPlayer != null)
- return;
- if (client.Player.ConquerPoints >= (ulong)command.dwParam)
- {
- client.Guild.ConquerPointFund += command.dwParam;
- Database.GuildTable.SaveFunds(client.Guild);
- client.AsMember.ConquerPointDonation += command.dwParam;
- client.Player.ConquerPoints -= (uint)command.dwParam;
- client.Guild.SendGuild(client);
- client.Guild.SendGuildMessage(new MsgTalk((client.Player.Name + " Donate " + command.dwParam + " Guild " + client.Guild.Name + " ConquerPoints"), System.Drawing.Color.Red, MsgTalk.TopLeft));
- }
- }
- break;
- }
- case Mode.Refresh:
- {
- if (client.AsMember != null)
- {
- if (client.Guild != null)
- client.Guild.SendGuild(client);
- }
- break;
- }
- case Mode.PromoteInfo:
- {
- if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
- {
- SafeDictionary<uint, Game.ConquerStructures.Society.Guild.Member> array2 = new SafeDictionary<uint, Game.ConquerStructures.Society.Guild.Member>();
- foreach (var p in client.Guild.Members.Values)
- {
- if (p.Rank == (Enums.GuildMemberRank)command.dwParam)
- {
- array2.Add(p.ID, p);
- }
- }
- var array = array2.Values.ToArray();
- if (array != null)
- {
- byte[] Buffer = new byte[8 + 48 + array.Length * 32];
- WriteUInt16((ushort)(Buffer.Length - 8), 0, Buffer);
- WriteUInt16((ushort)MsgTypes.MsgSynMemberList, 2, Buffer);
- Uint(1, 4, Buffer);
- Uint((uint)array.Length, 12, Buffer);
- int offset = 16;
- for (int i = 0; i < array.Length; i++)
- {
- Uint((uint)array[i].Level, offset, Buffer);//Level
- offset += 4;
- Uint((uint)(array[i].IsOnline ? 1 : 0), offset, Buffer);//Online
- offset += 4;
- if (array[i].IsOnline)
- Uint((uint)array[i].Client.Player.BattlePower, offset, Buffer);//BattlePower
- offset += 4;
- offset += 4;
- WriteString(array[i].Name, offset, Buffer);//Name
- offset += 16;
- }
- client.Send(Buffer);
- }
- }
- client.Send(Packet);
- break;
- }
- case Mode.Discharge:
- {
- string name = Encoding.Default.GetString(Packet, 26, Packet[25]);
- if (client.Guild != null)
- {
- if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
- {
- var member = client.Guild.GetMemberByName(name);
- if (member.ID != client.Player.UID)
- {
- if (member.Rank == Enums.GuildMemberRank.DeputyLeader)
- {
- member.Rank = Enums.GuildMemberRank.Member;
- if (member.IsOnline)
- {
- client.Guild.SendGuild(member.Client);
- member.Client.Player.GuildRank = (ushort)member.Rank;
- member.Client.Screen.FullWipe();
- member.Client.Screen.Reload(null);
- member.Client.Player.GuildSharedBp = member.Guild.GetSharedBattlepower(member.Rank);
- }
- Database.EntityTable.UpdateData(member.ID, "GuildRank", (int)member.Rank);
- client.Guild.SendGuildMessage(new MsgTalk((member.Name + " was discharged from " + member.Rank + " position."), System.Drawing.Color.Yellow, MsgTalk.Guild));
- }
- }
- }
- }
- break;
- }
- case Mode.Promote:
- {
- if (client.Guild == null || client.AsMember == null) return;
- command.SendPromote(client, 37);
- return;
- }
- case Mode.PromoteAcceptRequest:
- case Mode.ConfirmPromote:
- case Mode.PromoteSendRequest:
- {
- if (client.Guild != null && client.AsMember != null)
- {
- string GetMemberName = GeneralData.ReadString(Packet, 26, Packet[25]);
- ushort GetMemberRank = BitConverter.ToUInt16(Packet, 8);
- Game.ConquerStructures.Society.Guild.Member MemberPromote = null;
- if (client.Guild.GetMember(GetMemberName, out MemberPromote))
- {
- if (client.AsMember.Rank < MemberPromote.Rank)
- {
- client.Send("Sorry, you have small rank for change he position!");
- break;
- }
- if (client.AsMember.Rank == Enums.GuildMemberRank.DeputyLeader)
- {
- if (GetMemberRank == (ushort)Enums.GuildMemberRank.Steward)
- {
- if (client.Guild.RanksCounts[GetMemberRank] >= 3)
- {
- client.Send("Sorry all Steward`s ranks its ocupated!");
- return;
- }
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
- MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
- if (MemberPromote.IsOnline)
- {
- client.Guild.SendGuild(MemberPromote.Client);
- MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
- MemberPromote.Client.Screen.FullWipe();
- MemberPromote.Client.Screen.Reload(null);
- }
- }
- if (GetMemberRank == (ushort)Enums.GuildMemberRank.Follower)
- {
- if (client.Guild.RanksCounts[GetMemberRank] >= 10)
- {
- client.Send("Sorry all Follower`s ranks its ocupated!");
- return;
- }
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
- MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
- if (MemberPromote.IsOnline)
- {
- client.Guild.SendGuild(MemberPromote.Client);
- MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
- MemberPromote.Client.Screen.FullWipe();
- MemberPromote.Client.Screen.Reload(null);
- }
- }
- if (GetMemberRank == (ushort)Enums.GuildMemberRank.Aide)
- {
- if (client.Guild.RanksCounts[GetMemberRank] >= 6)
- {
- client.Send("Sorry all Aide`s ranks its ocupated!");
- return;
- }
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
- MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
- if (MemberPromote.IsOnline)
- {
- client.Guild.SendGuild(MemberPromote.Client);
- MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
- MemberPromote.Client.Screen.FullWipe();
- MemberPromote.Client.Screen.Reload(null);
- }
- }
- }
- if (client.AsMember.Rank == Enums.GuildMemberRank.Manager || client.AsMember.Rank == Enums.GuildMemberRank.HonoraryManager)
- {
- if (GetMemberRank == (ushort)Enums.GuildMemberRank.Aide)
- {
- if (client.Guild.RanksCounts[GetMemberRank] >= 6)
- {
- client.Send("Sorry all Aide`s ranks its ocupated!");
- return;
- }
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
- MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
- if (MemberPromote.IsOnline)
- {
- client.Guild.SendGuild(MemberPromote.Client);
- MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
- MemberPromote.Client.Screen.FullWipe();
- MemberPromote.Client.Screen.Reload(null);
- }
- }
- }
- if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader || client.AsMember.Rank == Enums.GuildMemberRank.LeaderSpouse)
- {
- if (GetMemberRank == (ushort)Enums.GuildMemberRank.GuildLeader)
- {
- if (client.AsMember.Rank == Enums.GuildMemberRank.LeaderSpouse) return;
- MemberPromote.Rank = Game.Enums.GuildMemberRank.GuildLeader;
- client.Guild.LeaderName = MemberPromote.Name;
- if (MemberPromote.IsOnline)
- {
- client.Guild.SendGuild(MemberPromote.Client);
- MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
- MemberPromote.Client.Screen.FullWipe();
- MemberPromote.Client.Screen.Reload(null);
- }
- client.AsMember.Rank = Game.Enums.GuildMemberRank.DeputyLeader;
- client.Player.GuildRank = (ushort)client.AsMember.Rank;
- client.Guild.SendGuild(client);
- client.Screen.FullWipe();
- client.Screen.Reload(null);
- Database.GuildTable.SaveLeader(client.Guild);
- }
- if (GetMemberRank == (ushort)Enums.GuildMemberRank.DeputyLeader)
- {
- if (client.Guild.RanksCounts[GetMemberRank] >= 6)
- {
- client.Send("Sorry all DeputyLeader`s ranks its ocupated!");
- return;
- }
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
- MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
- if (MemberPromote.IsOnline)
- {
- client.Guild.SendGuild(MemberPromote.Client);
- MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
- MemberPromote.Client.Screen.FullWipe();
- MemberPromote.Client.Screen.Reload(null);
- }
- }
- if (GetMemberRank == (ushort)Enums.GuildMemberRank.Aide)
- {
- if (client.AsMember.Rank == Enums.GuildMemberRank.LeaderSpouse) return;
- if (client.Guild.RanksCounts[GetMemberRank] >= 6)
- {
- client.Send("Sorry all Aide`s ranks its ocupated!");
- return;
- }
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
- MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
- if (MemberPromote.IsOnline)
- {
- client.Guild.SendGuild(MemberPromote.Client);
- MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
- MemberPromote.Client.Screen.FullWipe();
- MemberPromote.Client.Screen.Reload(null);
- }
- }
- if (GetMemberRank == (ushort)Enums.GuildMemberRank.Steward)
- {
- if (client.Guild.RanksCounts[GetMemberRank] >= 3)
- {
- client.Send("Sorry all Steward`s ranks its ocupated!");
- return;
- }
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
- MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
- if (MemberPromote.IsOnline)
- {
- client.Guild.SendGuild(MemberPromote.Client);
- MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
- MemberPromote.Client.Screen.FullWipe();
- MemberPromote.Client.Screen.Reload(null);
- }
- }
- if (GetMemberRank == (ushort)Enums.GuildMemberRank.HDeputyLeader)
- {
- if (client.Guild.RanksCounts[GetMemberRank] >= 4)
- {
- client.Send("Sorry all HDeputyLeader`s ranks its ocupated!");
- return;
- }
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
- MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
- if (MemberPromote.IsOnline)
- {
- client.Guild.SendGuild(MemberPromote.Client);
- MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
- MemberPromote.Client.Screen.FullWipe();
- MemberPromote.Client.Screen.Reload(null);
- }
- }
- if (GetMemberRank == (ushort)Enums.GuildMemberRank.HonoraryManager)
- {
- if (client.Guild.RanksCounts[GetMemberRank] >= 4)
- {
- client.Send("Sorry all HonoraryManager`s ranks its ocupated!");
- return;
- }
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
- MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
- if (MemberPromote.IsOnline)
- {
- client.Guild.SendGuild(MemberPromote.Client);
- MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
- MemberPromote.Client.Screen.FullWipe();
- MemberPromote.Client.Screen.Reload(null);
- }
- }
- if (GetMemberRank == (ushort)Enums.GuildMemberRank.HonorarySuperv)
- {
- if (client.Guild.RanksCounts[GetMemberRank] >= 4)
- {
- client.Send("Sorry all HonorarySuperv`s ranks its ocupated!");
- return;
- }
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
- MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
- if (MemberPromote.IsOnline)
- {
- client.Guild.SendGuild(MemberPromote.Client);
- MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
- MemberPromote.Client.Screen.FullWipe();
- MemberPromote.Client.Screen.Reload(null);
- }
- }
- if (GetMemberRank == (ushort)Enums.GuildMemberRank.HonorarySteward)
- {
- if (client.Guild.RanksCounts[GetMemberRank] >= 4)
- {
- client.Send("Sorry all HonorarySteward`s ranks its ocupated!");
- return;
- }
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
- MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
- if (MemberPromote.IsOnline)
- {
- client.Guild.SendGuild(MemberPromote.Client);
- MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
- MemberPromote.Client.Screen.FullWipe();
- MemberPromote.Client.Screen.Reload(null);
- }
- }
- if (GetMemberRank == (ushort)Enums.GuildMemberRank.Follower)
- {
- if (client.Guild.RanksCounts[GetMemberRank] >= 10)
- {
- client.Send("Sorry all Follower`s ranks its ocupated!");
- return;
- }
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
- MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
- if (MemberPromote.IsOnline)
- {
- client.Guild.SendGuild(MemberPromote.Client);
- MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
- MemberPromote.Client.Screen.FullWipe();
- MemberPromote.Client.Screen.Reload(null);
- }
- }
- if (GetMemberRank == (ushort)Enums.GuildMemberRank.Member)
- {
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
- MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
- client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
- if (MemberPromote.IsOnline)
- {
- client.Guild.SendGuild(MemberPromote.Client);
- MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
- MemberPromote.Client.Screen.FullWipe();
- MemberPromote.Client.Screen.Reload(null);
- }
- }
- }
- client.Guild.SendGuildMessage(new MsgTalk((client.Player.Name + " has appointed " + MemberPromote.Name + " as " + MemberPromote.Rank), System.Drawing.Color.Yellow, MsgTalk.Guild));
- //MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
- }
- else client.Send("Sorry Can't Find " + GetMemberName);
- }
- break;
- }
- case Mode.JoinRequest:
- {
- Client.GameState Target;
- if (Kernel.GamePool.TryGetValue(command.dwParam, out Target))
- {
- if (Target.Guild.BlackList.Contains(client.Player.UID))
- {
- command.Action = Mode.GuildBlackList;
- client.Send(command);
- return;
- }
- client.GuildJoinTarget = Target.Player.UID;
- if (client.GuildJoinTarget == Target.Player.UID && Target.GuildJoinTarget == client.Player.UID)
- {
- client.GuildJoinTarget = 0;
- Target.GuildJoinTarget = 0;
- Game.ConquerStructures.Society.Guild g;
- if (Kernel.Guilds.TryGetValue(Target.Player.GuildID, out g))
- {
- if (Target.AsMember.Rank != Game.Enums.GuildMemberRank.Member)
- {
- if (client.Player.GuildID == 0)
- {
- if (client.Union != null)
- {
- var Union = Kernel.Unions[client.UnionIDX];
- Union.RemoveMember(client);
- }
- g.AddMember(client);
- }
- }
- }
- }
- else
- {
- Game.ConquerStructures.Society.Guild tG;
- if (Kernel.Guilds.TryGetValue(Target.Player.GuildID, out tG))
- {
- if (Target.AsMember.Rank != Game.Enums.GuildMemberRank.Member)
- {
- if (MsgSynRecruitAdvertisingList.PassJoinRequirements(client, tG))
- {
- client.Player.GuildRequest = Time32.Now;
- command.dwParam = client.Player.UID;
- MsgRelation Relation = new MsgRelation();
- Relation.Level = (uint)client.Player.Level;
- Relation.BattlePower = (uint)client.Player.BattlePower;
- Relation.Receiver = Target.Player.UID;
- Relation.Requester = client.Player.UID;
- Relation.Spouse = Target.Player.Name == client.Player.Spouse;
- Relation.Friend = client.Friends.ContainsKey(Target.Player.UID);
- Relation.TradePartner = client.Partners.ContainsKey(Target.Player.UID);
- if (client.Mentor != null)
- Relation.Mentor = client.Mentor.ID == Target.Player.UID;
- Relation.Apprentice = client.Apprentices.ContainsKey(Target.Player.UID);
- if (client.Team != null)
- Relation.Teammate = client.Team.IsTeammate(Target.Player.UID);
- if (client.Guild != null)
- Relation.GuildMember = client.Guild.Members.ContainsKey(Target.Player.UID);
- Relation.Enemy = client.Enemy.ContainsKey(Target.Player.UID);
- Target.Send(Relation.ToArray());
- Target.Send(command);
- }
- }
- }
- }
- }
- break;
- }
- case Mode.InviteRequest:
- {
- Client.GameState Target;
- if (Kernel.GamePool.TryGetValue(command.dwParam, out Target))
- {
- if (client.Guild.BlackList.Contains(Target.Player.UID))
- {
- command.Action = Mode.SmsBlackList;
- client.Send(command);
- return;
- }
- client.GuildJoinTarget = Target.Player.UID;
- if (client.GuildJoinTarget == Target.Player.UID && Target.GuildJoinTarget == client.Player.UID)
- {
- client.GuildJoinTarget = 0;
- Target.GuildJoinTarget = 0;
- Game.ConquerStructures.Society.Guild g;
- if (Kernel.Guilds.TryGetValue(client.Player.GuildID, out g))
- {
- if (client.AsMember.Rank != Game.Enums.GuildMemberRank.Member)
- {
- if (Target.Union != null)
- {
- var Union = Kernel.Unions[Target.Union.ID];
- Union.RemoveMember(Target);
- }
- g.AddMember(Target);
- }
- }
- }
- else
- {
- if (client.AsMember.Rank != Game.Enums.GuildMemberRank.Member)
- {
- client.Player.GuildRequest = Time32.Now;
- command.dwParam = client.Player.UID;
- MsgRelation Relation = new MsgRelation();
- Relation.Level = (uint)client.Player.Level;
- Relation.BattlePower = (uint)client.Player.BattlePower;
- Relation.Receiver = Target.Player.UID;
- Relation.Requester = client.Player.UID;
- Relation.Spouse = Target.Player.Name == client.Player.Spouse;
- Relation.Friend = client.Friends.ContainsKey(Target.Player.UID);
- Relation.TradePartner = client.Partners.ContainsKey(Target.Player.UID);
- if (client.Mentor != null)
- Relation.Mentor = client.Mentor.ID == Target.Player.UID;
- Relation.Apprentice = client.Apprentices.ContainsKey(Target.Player.UID);
- if (client.Team != null)
- Relation.Teammate = client.Team.IsTeammate(Target.Player.UID);
- if (client.Guild != null)
- Relation.GuildMember = client.Guild.Members.ContainsKey(Target.Player.UID);
- Relation.Enemy = client.Enemy.ContainsKey(Target.Player.UID);
- Target.Send(Relation.ToArray());
- Target.Send(command);
- }
- }
- }
- break;
- }
- case Mode.Unknown:
- {
- client.Send(command);
- break;
- }
- case Mode.MakeBlackList:
- {
- if (client.Guild != null)
- {
- uint UID = command.dwParam;
- if (Kernel.GamePool.ContainsKey(UID))
- {
- var c = Kernel.GamePool[UID];
- if (!client.Guild.BlackList.Contains(UID))
- client.Guild.BlackList.Add(UID);
- c.Send(command);
- }
- client.Send("Tha target is addad to the Guild Blacklist.");
- }
- break;
- }
- case Mode.RemoveBlackList:
- {
- if (client.Guild != null)
- {
- uint UID = command.dwParam;
- if (client.Guild.BlackList.Contains(UID))
- client.Guild.BlackList.Remove(UID);
- client.Send(command);
- }
- client.Send("Removed from blacklist successfully. The target is recruitable, now.");
- break;
- }
- case Mode.Quit:
- {
- if (client.Guild != null)
- {
- if (client.AsMember.Rank != Enums.GuildMemberRank.GuildLeader)
- {
- client.Guild.ExpelMember(client.Player.Name, true);
- }
- }
- break;
- }
- case Mode.Diseharge:
- {
- string name = Encoding.Default.GetString(Packet, 26, Packet[25]);
- if (client.Guild != null)
- {
- if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
- {
- var member = client.Guild.GetMemberByName(name);
- client.Guild.SendGuildMessage(new MsgTalk((member.Name + " was discharged from " + member.Rank + " position."), System.Drawing.Color.Yellow, MsgTalk.Guild));
- if (member.ID != client.Player.UID)
- {
- member.Rank = Enums.GuildMemberRank.Member;
- if (member.IsOnline)
- {
- client.Guild.SendGuild(member.Client);
- member.Client.Player.GuildRank = (ushort)member.Rank;
- member.Client.Screen.FullWipe();
- member.Client.Screen.Reload(null);
- member.Client.Player.GuildSharedBp = member.Guild.GetSharedBattlepower(member.Rank);
- }
- Database.EntityTable.UpdateData(member.ID, "GuildRank", (int)member.Rank);
- }
- }
- }
- break;
- }
- default: Console.WriteLine("[GuildCommand] Unknown Action: " + command.Action + ""); break;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement