Advertisement
UmarKhaled_

MsgFamilyOccupy.cs

Jan 19th, 2020
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 68.13 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Text;
  4. using System.Collections.Generic;
  5.  
  6. namespace AboGamil.Network.GamePackets
  7. {
  8.     public unsafe class MsgFamilyOccupy : Writer, Interfaces.IPacket
  9.     {
  10.         byte[] Packet;
  11.         public enum ActionType : byte
  12.         {
  13.             Apply = 0,
  14.             Cancel = 1,
  15.             Abandon = 2,
  16.             Register = 5,
  17.             Show = 6,
  18.             Enter = 8,
  19.             ClaimedExp = 10,
  20.             Claimed = 18
  21.         }
  22.         public enum ButtonType : byte
  23.         {
  24.             Abandon = 1,
  25.             Cancel = 3,
  26.             Apply = 5,
  27.         }
  28.         public enum ActionMessage : byte
  29.         {
  30.             ClaimedEXP = 2,
  31.             Abandoned = 3,
  32.             Register = 4,
  33.             ReceiveCall = 7,
  34.             MemCantClaim = 12,
  35.             OnceDay = 13,
  36.             Claimedit = 14,
  37.             Claimedtomorrow = 15,
  38.             ClaimedExp = 16,
  39.             ReachedMax = 17,
  40.             inventory = 20
  41.         }
  42.         public MsgFamilyOccupy()
  43.         {
  44.             Packet = new byte[148];
  45.             WriteUInt16((ushort)(Packet.Length - 8), 0, Packet);
  46.             WriteUInt16((ushort)MsgTypes.MsgFamilyOccupy, 2, Packet);
  47.         }
  48.         public byte Action
  49.         {
  50.             get { return Packet[4]; }
  51.             set { Packet[4] = value; }
  52.         }
  53.         public uint UID
  54.         {
  55.             get { return BitConverter.ToUInt32(Packet, 8); }
  56.             set { WriteUInt32(value, 8, Packet); }
  57.         }
  58.         public uint NpcUid
  59.         {
  60.             get { return BitConverter.ToUInt32(Packet, 12); }
  61.             set { WriteUInt32(value, 12, Packet); }
  62.         }
  63.         public byte Button
  64.         {
  65.             get { return Packet[16]; }
  66.             set { Packet[16] = value; }
  67.         }
  68.         public string Name
  69.         {
  70.             get { return Encoding.ASCII.GetString(Packet, 20, 16); }
  71.             set { WriteString(value, 20, Packet); }
  72.         }
  73.         public string DominationMap
  74.         {
  75.             get { return Encoding.ASCII.GetString(Packet, 56, 16); }
  76.             set { WriteString(value, 56, Packet); }
  77.         }
  78.         public byte Enter
  79.         {
  80.             get { return Packet[92]; }
  81.             set { Packet[92] = value; }
  82.         }
  83.         public byte Unknown93
  84.         {
  85.             get { return Packet[93]; }
  86.             set { Packet[93] = value; }
  87.         }
  88.         public byte Unknown94
  89.         {
  90.             get { return Packet[94]; }
  91.             set { Packet[94] = value; }
  92.         }
  93.         public uint OccupationDays
  94.         {
  95.             get { return BitConverter.ToUInt32(Packet, 96); }
  96.             set { WriteUInt32(value, 96, Packet); }
  97.         }
  98.         public uint Reward
  99.         {
  100.             get { return BitConverter.ToUInt32(Packet, 100); }
  101.             set { WriteUInt32(value, 100, Packet); }
  102.         }
  103.         public uint NextReward
  104.         {
  105.             get { return BitConverter.ToUInt32(Packet, 104); }
  106.             set { WriteUInt32(value, 104, Packet); }
  107.         }
  108.         public uint Free
  109.         {
  110.             get { return BitConverter.ToUInt32(Packet, 120); }
  111.             set { WriteUInt32(value, 120, Packet); }
  112.         }
  113.         public byte LightReward
  114.         {
  115.             get { return Packet[128]; }
  116.             set { Packet[128] = value; }
  117.         }
  118.         public byte ClaimedExp
  119.         {
  120.             get { return Packet[129]; }
  121.             set { Packet[129] = value; }
  122.         }
  123.         public byte[] ToArray()
  124.         {
  125.             return Packet;
  126.         }
  127.         public void Deserialize(byte[] packet)
  128.         {
  129.             Packet = packet;
  130.         }
  131.         public void Send(Client.GameState client)
  132.         {
  133.             client.Send(Packet);
  134.         }
  135.         public static void Process(byte[] packet, Client.GameState client)
  136.         {
  137.             MsgFamilyOccupy Occupy = new MsgFamilyOccupy();
  138.             Occupy.Deserialize(packet);
  139.             switch (Occupy.Action)
  140.             {
  141.                 #region Apply
  142.                 case (byte)ActionType.Apply:
  143.                     {
  144.                         var clan = client.Player.GetClan;
  145.                         var tournament = FamilyTournament.GetNpcTournament(client.JoinToWar);
  146.                         {
  147.                             if (client.Player.GetClan.Fund < tournament.Client.Free)
  148.                             {
  149.                                 client.Send(new MsgTalk("There in not enough in the Clan Fund to apply for Clan War.", System.Drawing.Color.Red, MsgTalk.TopLeft));
  150.                             }
  151.                             else if (tournament.Client.CurentMap == "TwinCityClan")
  152.                             {
  153.                                 FamilyTournament.ApplyTwinCityClan(client);
  154.                                 clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng TwinCityClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
  155.                                 client.Send(clan);
  156.                                 return;
  157.                             }
  158.                             if (tournament.Client.CurentMap == "WindPlainClan")
  159.                             {
  160.                                 FamilyTournament.ApplyWindPlainClan(client);
  161.                                 clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng WindPlainClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
  162.                                 client.Send(clan);
  163.                                 return;
  164.                             }
  165.                             if (tournament.Client.CurentMap == "DesertCityClan")
  166.                             {
  167.                                 FamilyTournament.ApplyDesertCityClan(client);
  168.                                 clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng DesertCityClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
  169.                                 client.Send(clan);
  170.                                 return;
  171.                             }
  172.                             if (tournament.Client.CurentMap == "DesertClan")
  173.                             {
  174.                                 FamilyTournament.ApplyDesertClan(client);
  175.                                 clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng DesertClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
  176.                                 client.Send(clan);
  177.                                 return;
  178.                             }
  179.                             if (tournament.Client.CurentMap == "BirdCityClan")
  180.                             {
  181.                                 FamilyTournament.ApplyBirdCityClan(client);
  182.                                 clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng BirdCityClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
  183.                                 client.Send(clan);
  184.                                 return;
  185.                             }
  186.                             if (tournament.Client.CurentMap == "BirdIslandClan")
  187.                             {
  188.                                 FamilyTournament.ApplyBirdIslandClan(client);
  189.                                 clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng BirdIslandClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
  190.                                 client.Send(clan);
  191.                                 return;
  192.                             }
  193.                             if (tournament.Client.CurentMap == "ApeCityClan")
  194.                             {
  195.                                 FamilyTournament.ApplyApeCityClan(client);
  196.                                 clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng ApeCityClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
  197.                                 client.Send(clan);
  198.                                 return;
  199.                             }
  200.                             if (tournament.Client.CurentMap == "LoveCanyonClan")
  201.                             {
  202.                                 FamilyTournament.ApplyLoveCanyonClan(client);
  203.                                 clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng LoveCanyonClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
  204.                                 client.Send(clan);
  205.                                 return;
  206.                             }
  207.                             if (tournament.Client.CurentMap == "PhoenixCastleClan")
  208.                             {
  209.                                 FamilyTournament.ApplyPhoenixCastleClan(client);
  210.                                 clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng PhoenixCastleCla Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
  211.                                 client.Send(clan);
  212.                                 return;
  213.                             }
  214.                             if (tournament.Client.CurentMap == "MapleForestClan")
  215.                             {
  216.                                 FamilyTournament.ApplyMapleForestClan(client);
  217.                                 clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng MapleForestClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
  218.                                 client.Send(clan);
  219.                                 return;
  220.                             }
  221.                         }
  222.                         break;
  223.                     }
  224.                 #endregion
  225.                 #region Cancel
  226.                 case (byte)ActionType.Cancel:
  227.                     {
  228.                         var clan = client.Player.GetClan;
  229.                         var tournament = FamilyTournament.GetNpcTournament(client.JoinToWar);
  230.                         if (tournament.Client.CurentMap == "TwinCityClan")
  231.                         {
  232.                             FamilyTournament.CancelApply(client);
  233.                             clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to TwinCityClan."), System.Drawing.Color.Red, MsgTalk.Clan));
  234.                             client.Send(clan);
  235.                             return;
  236.                         }
  237.                         if (tournament.Client.CurentMap == "WindPlainClan")
  238.                         {
  239.                             FamilyTournament.CancelApply(client);
  240.                             clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to WindPlainClan."), System.Drawing.Color.Red, MsgTalk.Clan));
  241.                             client.Send(clan);
  242.                             return;
  243.                         }
  244.                         if (tournament.Client.CurentMap == "DesertCityClan")
  245.                         {
  246.                             FamilyTournament.CancelApply(client);
  247.                             clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to DesertCityClan."), System.Drawing.Color.Red, MsgTalk.Clan));
  248.                             client.Send(clan);
  249.                             return;
  250.                         }
  251.                         if (tournament.Client.CurentMap == "DesertClan")
  252.                         {
  253.                             FamilyTournament.CancelApply(client);
  254.                             clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to DesertClan."), System.Drawing.Color.Red, MsgTalk.Clan));
  255.                             client.Send(clan);
  256.                             return;
  257.                         }
  258.                         if (tournament.Client.CurentMap == "BirdCityClan")
  259.                         {
  260.                             FamilyTournament.CancelApply(client);
  261.                             clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to BirdCityClan."), System.Drawing.Color.Red, MsgTalk.Clan));
  262.                             client.Send(clan);
  263.                             return;
  264.                         }
  265.                         if (tournament.Client.CurentMap == "BirdIslandClan")
  266.                         {
  267.                             FamilyTournament.CancelApply(client);
  268.                             clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to BirdIslandClan."), System.Drawing.Color.Red, MsgTalk.Clan));
  269.                             client.Send(clan);
  270.                             return;
  271.                         }
  272.                         if (tournament.Client.CurentMap == "ApeCityClan")
  273.                         {
  274.                             FamilyTournament.CancelApply(client);
  275.                             clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to ApeCityClan."), System.Drawing.Color.Red, MsgTalk.Clan));
  276.                             client.Send(clan);
  277.                             return;
  278.                         }
  279.                         if (tournament.Client.CurentMap == "LoveCanyonClan")
  280.                         {
  281.                             FamilyTournament.CancelApply(client);
  282.                             clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to LoveCanyonClan."), System.Drawing.Color.Red, MsgTalk.Clan));
  283.                             client.Send(clan);
  284.                             return;
  285.                         }
  286.                         if (tournament.Client.CurentMap == "PhoenixCastleClan")
  287.                         {
  288.                             FamilyTournament.CancelApply(client);
  289.                             clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to PhoenixCastleCla."), System.Drawing.Color.Red, MsgTalk.Clan));
  290.                             client.Send(clan);
  291.                             return;
  292.                         }
  293.                         if (tournament.Client.CurentMap == "MapleForestClan")
  294.                         {
  295.                             FamilyTournament.CancelApply(client);
  296.                             clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to MapleForestClan."), System.Drawing.Color.Red, MsgTalk.Clan));
  297.                             client.Send(clan);
  298.                             return;
  299.                         }
  300.                         break;
  301.                     }
  302.                 #endregion
  303.                 #region Abandon
  304.                 case (byte)ActionType.Abandon:
  305.                     {
  306.                         MsgFamily clan = client.Player.GetClan;
  307.                         var tournament = FamilyTournament.GetNpcTournament(client.JoinToWar);
  308.                         if (tournament.Client.CurentMap == "TwinCityClan")
  309.                         {
  310.                             tournament.Client.Name = "None";
  311.                             tournament.Client.Free = 0;
  312.                             tournament.Client.OccupationDays = 0;
  313.                             tournament.Client.UID = 0;
  314.                             clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to TwinCityClan.", System.Drawing.Color.Red, MsgTalk.Clan));
  315.                             client.Send(clan);
  316.                             new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
  317.                             return;
  318.                         }
  319.                         if (tournament.Client.CurentMap == "WindPlainClan")
  320.                         {
  321.                             tournament.Client.Name = "";
  322.                             tournament.Client.Free = 0;
  323.                             tournament.Client.OccupationDays = 0;
  324.                             clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to WindPlainClan.", System.Drawing.Color.Red, MsgTalk.Clan));
  325.                             client.Send(clan);
  326.                             new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
  327.                             return;
  328.                         }
  329.                         if (tournament.Client.CurentMap == "DesertCityClan")
  330.                         {
  331.                             tournament.Client.Name = "";
  332.                             tournament.Client.Free = 0;
  333.                             tournament.Client.OccupationDays = 0;
  334.                             clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to DesertCityClan.", System.Drawing.Color.Red, MsgTalk.Clan));
  335.                             client.Send(clan);
  336.                             new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
  337.                             return;
  338.                         }
  339.                         if (tournament.Client.CurentMap == "DesertClan")
  340.                         {
  341.                             tournament.Client.Name = "";
  342.                             tournament.Client.Free = 0;
  343.                             tournament.Client.OccupationDays = 0;
  344.                             clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to DesertClan.", System.Drawing.Color.Red, MsgTalk.Clan));
  345.                             client.Send(clan);
  346.                             new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
  347.                             return;
  348.                         }
  349.                         if (tournament.Client.CurentMap == "BirdCityClan")
  350.                         {
  351.                             tournament.Client.Name = "";
  352.                             tournament.Client.Free = 0;
  353.                             tournament.Client.OccupationDays = 0;
  354.                             clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to BirdCityClan.", System.Drawing.Color.Red, MsgTalk.Clan));
  355.                             client.Send(clan);
  356.                             new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
  357.                             return;
  358.                         }
  359.                         if (tournament.Client.CurentMap == "BirdIslandClan")
  360.                         {
  361.                             tournament.Client.Name = "";
  362.                             tournament.Client.Free = 0;
  363.                             tournament.Client.OccupationDays = 0;
  364.                             clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to BirdIslandClan.", System.Drawing.Color.Red, MsgTalk.Clan));
  365.                             client.Send(clan);
  366.                             new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
  367.                             return;
  368.                         }
  369.                         if (tournament.Client.CurentMap == "ApeCityClan")
  370.                         {
  371.                             tournament.Client.Name = "";
  372.                             tournament.Client.Free = 0;
  373.                             tournament.Client.OccupationDays = 0;
  374.                             clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to ApeCityClan.", System.Drawing.Color.Red, MsgTalk.Clan));
  375.                             client.Send(clan);
  376.                             new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
  377.                             return;
  378.                         }
  379.                         if (tournament.Client.CurentMap == "LoveCanyonClan")
  380.                         {
  381.                             tournament.Client.Name = "";
  382.                             tournament.Client.Free = 0;
  383.                             tournament.Client.OccupationDays = 0;
  384.                             clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to LoveCanyonClan.", System.Drawing.Color.Red, MsgTalk.Clan));
  385.                             client.Send(clan);
  386.                             new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
  387.                             return;
  388.                         }
  389.                         if (tournament.Client.CurentMap == "PhoenixCastleClan")
  390.                         {
  391.                             tournament.Client.Name = "";
  392.                             tournament.Client.Free = 0;
  393.                             tournament.Client.OccupationDays = 0;
  394.                             clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to PhoenixCastleCla.", System.Drawing.Color.Red, MsgTalk.Clan));
  395.                             client.Send(clan);
  396.                             new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
  397.                             return;
  398.                         }
  399.                         if (tournament.Client.CurentMap == "MapleForestClan")
  400.                         {
  401.                             tournament.Client.Name = "";
  402.                             tournament.Client.Free = 0;
  403.                             tournament.Client.OccupationDays = 0;
  404.                             clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to MapleForestClan.", System.Drawing.Color.Red, MsgTalk.Clan));
  405.                             client.Send(clan);
  406.                             new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
  407.                             return;
  408.                         }
  409.                         break;
  410.                     }
  411.                 #endregion
  412.                 #region Register
  413.                 case (byte)ActionType.Register:
  414.                     {
  415.                         client.Player.SendSysMesage("Send Register Test");
  416.                         break;
  417.                     }
  418.                 #endregion
  419.                 #region Show
  420.                 case (byte)ActionType.Show:
  421.                     {
  422.                         client.JoinToWar = Occupy.NpcUid;
  423.                         var tournament = FamilyTournament.GetNpcTournament(Occupy.NpcUid);
  424.                         if (tournament != null)
  425.                         {
  426.                             var obj = tournament.Client;
  427.                             if (obj != null)
  428.                             {
  429.                                 #region Information
  430.                                 Occupy.UID = obj.UID;
  431.                                 Occupy.Name = obj.Name;
  432.                                 Occupy.DominationMap = obj.DominationMap;
  433.                                 Occupy.Unknown93 = 1;
  434.                                 Occupy.Unknown94 = 1;
  435.                                 Occupy.OccupationDays = obj.OccupationDays;
  436.                                 Occupy.Reward = obj.Reward;
  437.                                 Occupy.NextReward = obj.NextReward;
  438.                                 Occupy.Free = obj.Free;
  439.                                 #endregion
  440.                                 #region Cancel
  441.                                 if (client.Player.ClanRank == MsgFamily.Ranks.ClanLeader)
  442.                                 {
  443.                                     if (tournament.Client.CurentMap == "TwinCityClan")
  444.                                     {
  445.                                         if (client.Player.GetClan.TwinCityClan == true)
  446.                                         {
  447.                                             Occupy.Button = (byte)ButtonType.Cancel;
  448.                                         }
  449.                                     }
  450.                                     if (tournament.Client.CurentMap == "WindPlainClan")
  451.                                     {
  452.                                         if (client.Player.GetClan.WindPlainClan == true)
  453.                                         {
  454.                                             Occupy.Button = (byte)ButtonType.Cancel;
  455.                                         }
  456.                                     }
  457.                                     if (tournament.Client.CurentMap == "DesertCityClan")
  458.                                     {
  459.                                         if (client.Player.GetClan.DesertCityClan == true)
  460.                                         {
  461.                                             Occupy.Button = (byte)ButtonType.Cancel;
  462.                                         }
  463.                                     }
  464.                                     if (tournament.Client.CurentMap == "DesertClan")
  465.                                     {
  466.                                         if (client.Player.GetClan.DesertClan == true)
  467.                                         {
  468.                                             Occupy.Button = (byte)ButtonType.Cancel;
  469.                                         }
  470.                                     }
  471.                                     if (tournament.Client.CurentMap == "BirdCityClan")
  472.                                     {
  473.                                         if (client.Player.GetClan.BirdCityClan == true)
  474.                                         {
  475.                                             Occupy.Button = (byte)ButtonType.Cancel;
  476.                                         }
  477.                                     }
  478.                                     if (tournament.Client.CurentMap == "BirdIslandClan")
  479.                                     {
  480.                                         if (client.Player.GetClan.BirdIslandClan == true)
  481.                                         {
  482.                                             Occupy.Button = (byte)ButtonType.Cancel;
  483.                                         }
  484.                                     }
  485.                                     if (tournament.Client.CurentMap == "ApeCityClan")
  486.                                     {
  487.                                         if (client.Player.GetClan.ApeCityClan == true)
  488.                                         {
  489.                                             Occupy.Button = (byte)ButtonType.Cancel;
  490.                                         }
  491.                                     }
  492.                                     if (tournament.Client.CurentMap == "LoveCanyonClan")
  493.                                     {
  494.                                         if (client.Player.GetClan.LoveCanyonClan == true)
  495.                                         {
  496.                                             Occupy.Button = (byte)ButtonType.Cancel;
  497.                                         }
  498.                                     }
  499.                                     if (tournament.Client.CurentMap == "PhoenixCastleClan")
  500.                                     {
  501.                                         if (client.Player.GetClan.PhoenixCastleClan == true)
  502.                                         {
  503.                                             Occupy.Button = (byte)ButtonType.Cancel;
  504.                                         }
  505.                                     }
  506.                                     if (tournament.Client.CurentMap == "MapleForestClan")
  507.                                     {
  508.                                         if (client.Player.GetClan.MapleForestClan == true)
  509.                                         {
  510.                                             Occupy.Button = (byte)ButtonType.Cancel;
  511.                                         }
  512.                                     }
  513.                                 }
  514.                                 #endregion
  515.                                 #region Apply
  516.                                 if (client.Player.ClanRank == MsgFamily.Ranks.ClanLeader)
  517.                                 {
  518.                                     if (tournament.Client.CurentMap == "TwinCityClan")
  519.                                     {
  520.                                         if (client.Player.GetClan.TwinCityClan == false)
  521.                                         {
  522.                                             if (!tournament.Open)
  523.                                             {
  524.                                                 Occupy.Button = (byte)ButtonType.Apply;
  525.                                             }
  526.                                         }
  527.                                     }
  528.                                     if (tournament.Client.CurentMap == "WindPlainClan")
  529.                                     {
  530.                                         if (client.Player.GetClan.WindPlainClan == false)
  531.                                         {
  532.                                             if (!tournament.Open)
  533.                                             {
  534.                                                 Occupy.Button = (byte)ButtonType.Apply;
  535.                                             }
  536.                                         }
  537.                                     }
  538.                                     if (tournament.Client.CurentMap == "DesertCityClan")
  539.                                     {
  540.                                         if (client.Player.GetClan.DesertCityClan == false)
  541.                                         {
  542.                                             if (!tournament.Open)
  543.                                             {
  544.                                                 Occupy.Button = (byte)ButtonType.Apply;
  545.                                             }
  546.                                         }
  547.                                     }
  548.                                     if (tournament.Client.CurentMap == "DesertClan")
  549.                                     {
  550.                                         if (client.Player.GetClan.DesertClan == false)
  551.                                         {
  552.                                             if (!tournament.Open)
  553.                                             {
  554.                                                 Occupy.Button = (byte)ButtonType.Apply;
  555.                                             }
  556.                                         }
  557.                                     }
  558.                                     if (tournament.Client.CurentMap == "BirdCityClan")
  559.                                     {
  560.                                         if (client.Player.GetClan.BirdCityClan == false)
  561.                                         {
  562.                                             if (!tournament.Open)
  563.                                             {
  564.                                                 Occupy.Button = (byte)ButtonType.Apply;
  565.                                             }
  566.                                         }
  567.                                     }
  568.                                     if (tournament.Client.CurentMap == "BirdIslandClan")
  569.                                     {
  570.                                         if (client.Player.GetClan.BirdIslandClan == false)
  571.                                         {
  572.                                             if (!tournament.Open)
  573.                                             {
  574.                                                 Occupy.Button = (byte)ButtonType.Apply;
  575.                                             }
  576.                                         }
  577.                                     }
  578.                                     if (tournament.Client.CurentMap == "ApeCityClan")
  579.                                     {
  580.                                         if (client.Player.GetClan.ApeCityClan == false)
  581.                                         {
  582.                                             if (!tournament.Open)
  583.                                             {
  584.                                                 Occupy.Button = (byte)ButtonType.Apply;
  585.                                             }
  586.                                         }
  587.                                     }
  588.                                     if (tournament.Client.CurentMap == "LoveCanyonClan")
  589.                                     {
  590.                                         if (client.Player.GetClan.LoveCanyonClan == false)
  591.                                         {
  592.                                             if (!tournament.Open)
  593.                                             {
  594.                                                 Occupy.Button = (byte)ButtonType.Apply;
  595.                                             }
  596.                                         }
  597.                                     }
  598.                                     if (tournament.Client.CurentMap == "PhoenixCastleClan")
  599.                                     {
  600.                                         if (client.Player.GetClan.PhoenixCastleClan == false)
  601.                                         {
  602.                                             if (!tournament.Open)
  603.                                             {
  604.                                                 Occupy.Button = (byte)ButtonType.Apply;
  605.                                             }
  606.                                         }
  607.                                     }
  608.                                     if (tournament.Client.CurentMap == "MapleForestClan")
  609.                                     {
  610.                                         if (client.Player.GetClan.MapleForestClan == false)
  611.                                         {
  612.                                             if (!tournament.Open)
  613.                                             {
  614.                                                 Occupy.Button = (byte)ButtonType.Apply;
  615.                                             }
  616.                                         }
  617.                                     }
  618.                                 }
  619.                                 #endregion
  620.                                 #region Abandon & Claimed
  621.                                 if (client.Player.ClanRank == MsgFamily.Ranks.ClanLeader)
  622.                                 {
  623.                                     if (obj.Name == client.Player.GetClan.Name)
  624.                                     {
  625.                                         if (!client.Player.GetClan.Claimed)
  626.                                         {
  627.                                             if (!tournament.Open)
  628.                                             {
  629.                                                 Occupy.LightReward = 1;
  630.                                                 Occupy.Button = (byte)ButtonType.Abandon;
  631.                                             }
  632.                                         }
  633.                                     }
  634.                                 }
  635.                                 #endregion
  636.                                 #region ClaimedEXP
  637.                                 //if (obj.Name == client.Player.GetClan.Name)
  638.                                 //{
  639.                                 //    if (!client.Player.ClaimedExp)
  640.                                 //    {
  641.                                 //        if (!tournament.Open)
  642.                                 //        {
  643.                                 //            Occupy.ClaimedExp = 1;
  644.                                 //            Occupy.Button = (byte)ActionMessage.ClaimedEXP;
  645.                                 //        }
  646.                                 //    }
  647.                                 //}
  648.                                 #endregion
  649.                                 #region Enter
  650.                                 if (tournament.Open)
  651.                                 {
  652.                                     Occupy.Enter = 1;
  653.                                 }
  654.                                 #endregion
  655.                                 client.Send(packet);
  656.                             }
  657.                         }
  658.                         break;
  659.                     }
  660.                 #endregion
  661.                 #region Enter
  662.                 case (byte)ActionType.Enter:
  663.                     {
  664.                         if (client.JoinToWar != 0)
  665.                         {
  666.                             var tournament = FamilyTournament.GetNpcTournament(client.JoinToWar);
  667.                             if (client.Player.GetClan == null)
  668.                             {
  669.                                 client.Player.SendSysMesage("Sorry You Not Have Clan To Join!");
  670.                                 return;
  671.                             }
  672.                             if (tournament.Client.CurentMap == "TwinCityClan")
  673.                             {
  674.                                 if (client.Player.GetClan.TwinCityClan == false)
  675.                                 {
  676.                                     client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
  677.                                     return;
  678.                                 }
  679.                             }
  680.                             if (tournament.Client.CurentMap == "WindPlainClan")
  681.                             {
  682.                                 if (client.Player.GetClan.WindPlainClan == false)
  683.                                 {
  684.                                     client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
  685.                                     return;
  686.                                 }
  687.                             }
  688.                             if (tournament.Client.CurentMap == "DesertCityClan")
  689.                             {
  690.                                 if (client.Player.GetClan.DesertCityClan == false)
  691.                                 {
  692.                                     client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
  693.                                     return;
  694.                                 }
  695.                             }
  696.                             if (tournament.Client.CurentMap == "DesertClan")
  697.                             {
  698.                                 if (client.Player.GetClan.DesertClan == false)
  699.                                 {
  700.                                     client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
  701.                                     return;
  702.                                 }
  703.                             }
  704.                             if (tournament.Client.CurentMap == "BirdCityClan")
  705.                             {
  706.                                 if (client.Player.GetClan.BirdCityClan == false)
  707.                                 {
  708.                                     client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
  709.                                     return;
  710.                                 }
  711.                             }
  712.                             if (tournament.Client.CurentMap == "BirdIslandClan")
  713.                             {
  714.                                 if (client.Player.GetClan.BirdIslandClan == false)
  715.                                 {
  716.                                     client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
  717.                                     return;
  718.                                 }
  719.                             }
  720.                             if (tournament.Client.CurentMap == "ApeCityClan")
  721.                             {
  722.                                 if (client.Player.GetClan.ApeCityClan == false)
  723.                                 {
  724.                                     client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
  725.                                     return;
  726.                                 }
  727.                             }
  728.                             if (tournament.Client.CurentMap == "LoveCanyonClan")
  729.                             {
  730.                                 if (client.Player.GetClan.LoveCanyonClan == false)
  731.                                 {
  732.                                     client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
  733.                                     return;
  734.                                 }
  735.                             }
  736.                             if (tournament.Client.CurentMap == "PhoenixCastleClan")
  737.                             {
  738.                                 if (client.Player.GetClan.PhoenixCastleClan == false)
  739.                                 {
  740.                                     client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
  741.                                     return;
  742.                                 }
  743.                             }
  744.                             if (tournament.Client.CurentMap == "MapleForestClan")
  745.                             {
  746.                                 if (client.Player.GetClan.MapleForestClan == false)
  747.                                 {
  748.                                     client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
  749.                                     return;
  750.                                 }
  751.                             }
  752.                             if (tournament != null)
  753.                             {
  754.                                 tournament.Teleport(client);
  755.                             }
  756.                         }
  757.                         break;
  758.                     }
  759.                 #endregion
  760.                 #region Claimed
  761.                 case (byte)ActionType.Claimed:
  762.                     {
  763.                         var clan = client.Player.GetClan;
  764.                         var tournament = FamilyTournament.GetNpcTournament(client.JoinToWar);
  765.                         if (tournament.Client.CurentMap == "TwinCityClan")
  766.                         {
  767.                             if (client.Player.GetClan.Claimed)
  768.                             {
  769.                                 new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
  770.                             }
  771.                             else
  772.                             {
  773.                                 client.Inventory.Add(722454, 0, 1);
  774.                                 client.Player.GetClan.Claimed = true;
  775.                                 MsgFamily.SaveClan(clan);
  776.                             }
  777.                             return;
  778.                         }
  779.                         if (tournament.Client.CurentMap == "WindPlainClan")
  780.                         {
  781.                             if (client.Player.GetClan.Claimed)
  782.                             {
  783.                                 new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
  784.                             }
  785.                             else
  786.                             {
  787.                                 client.Inventory.Add(722455, 0, 1);
  788.                                 client.Player.GetClan.Claimed = true;
  789.                                 MsgFamily.SaveClan(clan);
  790.                             }
  791.                             return;
  792.                         }
  793.                         if (tournament.Client.CurentMap == "DesertCityClan")
  794.                         {
  795.                             if (client.Player.GetClan.Claimed)
  796.                             {
  797.                                 new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
  798.                             }
  799.                             else
  800.                             {
  801.                                 client.Inventory.Add(722459, 0, 1);
  802.                                 client.Player.GetClan.Claimed = true;
  803.                                 MsgFamily.SaveClan(clan);
  804.                             }
  805.                             return;
  806.                         }
  807.                         if (tournament.Client.CurentMap == "DesertClan")
  808.                         {
  809.                             if (client.Player.GetClan.Claimed)
  810.                             {
  811.                                 new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
  812.                             }
  813.                             else
  814.                             {
  815.                                 client.Inventory.Add(722464, 0, 1);
  816.                                 client.Player.GetClan.Claimed = true;
  817.                                 MsgFamily.SaveClan(clan);
  818.                             }
  819.                             return;
  820.                         }
  821.                         if (tournament.Client.CurentMap == "BirdCityClan")
  822.                         {
  823.                             if (client.Player.GetClan.Claimed)
  824.                             {
  825.                                 new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
  826.                             }
  827.                             else
  828.                             {
  829.                                 client.Inventory.Add(722475, 0, 1);
  830.                                 client.Player.GetClan.Claimed = true;
  831.                                 MsgFamily.SaveClan(clan);
  832.                             }
  833.                             return;
  834.                         }
  835.                         if (tournament.Client.CurentMap == "BirdIslandClan")
  836.                         {
  837.                             if (client.Player.GetClan.Claimed)
  838.                             {
  839.                                 new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
  840.                             }
  841.                             else
  842.                             {
  843.                                 client.Inventory.Add(722465, 0, 1);
  844.                                 client.Player.GetClan.Claimed = true;
  845.                                 MsgFamily.SaveClan(clan);
  846.                             }
  847.                             return;
  848.                         }
  849.                         if (tournament.Client.CurentMap == "ApeCityClan")
  850.                         {
  851.                             if (client.Player.GetClan.Claimed)
  852.                             {
  853.                                 new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
  854.                             }
  855.                             else
  856.                             {
  857.                                 client.Inventory.Add(722469, 0, 1);
  858.                                 client.Player.GetClan.Claimed = true;
  859.                                 MsgFamily.SaveClan(clan);
  860.                             }
  861.                             return;
  862.                         }
  863.                         if (tournament.Client.CurentMap == "LoveCanyonClan")
  864.                         {
  865.                             if (client.Player.GetClan.Claimed)
  866.                             {
  867.                                 new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
  868.                             }
  869.                             else
  870.                             {
  871.                                 client.Inventory.Add(722470, 0, 1);
  872.                                 client.Player.GetClan.Claimed = true;
  873.                                 MsgFamily.SaveClan(clan);
  874.                             }
  875.                             return;
  876.                         }
  877.                         if (tournament.Client.CurentMap == "PhoenixCastleClan")
  878.                         {
  879.                             if (client.Player.GetClan.Claimed)
  880.                             {
  881.                                 new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
  882.                             }
  883.                             else
  884.                             {
  885.                                 client.Inventory.Add(722474, 0, 1);
  886.                                 client.Player.GetClan.Claimed = true;
  887.                                 MsgFamily.SaveClan(clan);
  888.                             }
  889.                             return;
  890.                         }
  891.                         if (tournament.Client.CurentMap == "MapleForestClan")
  892.                         {
  893.                             if (client.Player.GetClan.Claimed)
  894.                             {
  895.                                 new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
  896.                             }
  897.                             else
  898.                             {
  899.                                 client.Inventory.Add(722475, 0, 1);
  900.                                 client.Player.GetClan.Claimed = true;
  901.                                 MsgFamily.SaveClan(clan);
  902.                             }
  903.                             return;
  904.                         }
  905.                         break;
  906.                     }
  907.                 #endregion
  908.                 #region ClaimedExp
  909.                 case (byte)ActionType.ClaimedExp:
  910.                     {
  911.                         if (!client.Player.ClaimedExp)
  912.                         {
  913.                             client.IncreaseExperience(client.ExpBall * 3, false);
  914.                         }
  915.                         client.Player.ClaimedExp = true;
  916.                         break;
  917.                     }
  918.                 #endregion
  919.                 default: Console.WriteLine("[MsgFamilyOccupy] Unknown Action: " + Occupy.Action + " "); break;
  920.             }
  921.         }
  922.     }
  923.     public unsafe class FamilyTournament
  924.     {
  925.         #region War Tournament
  926.         public class ClientWar
  927.         {
  928.             public uint UID;
  929.             public uint Reward;
  930.             public uint NextReward;
  931.             public uint Free;
  932.             public uint OccupationDays;
  933.             public string Name = "None";
  934.             public string CurentMap = "";
  935.             public string DominationMap = "";
  936.             public ClientWar(MsgFamily clan)
  937.             {
  938.                 UID = clan.ID;
  939.                 Name = clan.Name;
  940.                 Free = clan.Fund;
  941.             }
  942.             public ClientWar()
  943.             {
  944.  
  945.             }
  946.             public override string ToString()
  947.             {
  948.                 if (Name.Contains('#'))
  949.                     Name = Name.Replace("#", "");
  950.                 if (Name.Contains('^'))
  951.                     Name = Name.Replace("^", "");
  952.                 StringBuilder build = new StringBuilder();
  953.                 build.Append(UID + "#" + Reward + "#" + NextReward
  954.                     + "#" + OccupationDays + "#" + Name + "#" + CurentMap + "#" + DominationMap + "#" + Free + "#");
  955.                 return build.ToString();
  956.             }
  957.             public void Load(string data)
  958.             {
  959.                 if (data == null) return;
  960.                 if (!data.Contains('#')) return;
  961.                 string[] line = data.Split('#');
  962.                 UID = uint.Parse(line[0]);
  963.                 Reward = uint.Parse(line[1]);
  964.                 NextReward = uint.Parse(line[2]);
  965.                 OccupationDays = uint.Parse(line[3]);
  966.                 Name = line[4];
  967.                 CurentMap = line[5];
  968.                 DominationMap = line[6];
  969.                 Free = uint.Parse(line[7]);
  970.             }
  971.         }
  972.         public enum ClanArena : ushort
  973.         {
  974.             TwinCityClan = 0,
  975.             PhoenixCastleClan = 1,
  976.             ApeCityClan = 2,
  977.             DesertCityClan = 3,
  978.             BirdCityClan = 4,
  979.             WindPlainClan = 5,
  980.             MapleForestClan = 6,
  981.             LoveCanyonClan = 7,
  982.             DesertClan = 8,
  983.             BirdIslandClan = 9,
  984.             Count = 10
  985.         }
  986.         public static uint GetItemReward(ClanArena typ)
  987.         {
  988.             switch (typ)
  989.             {
  990.                 case ClanArena.TwinCityClan:
  991.                     return 722454;
  992.                 case ClanArena.WindPlainClan:
  993.                     return 722455;
  994.                 case ClanArena.DesertCityClan:
  995.                     return 722459;
  996.                 case ClanArena.DesertClan:
  997.                     return 722460;
  998.                 case ClanArena.BirdCityClan:
  999.                     return 722464;
  1000.                 case ClanArena.BirdIslandClan:
  1001.                     return 722465;
  1002.                 case ClanArena.ApeCityClan:
  1003.                     return 722469;
  1004.                 case ClanArena.LoveCanyonClan:
  1005.                     return 722470;
  1006.                 case ClanArena.PhoenixCastleClan:
  1007.                     return 722474;
  1008.                 case ClanArena.MapleForestClan:
  1009.                     return 722475;
  1010.             }
  1011.             return 0;
  1012.         }
  1013.         public static ushort GetMap(ClanArena typ)
  1014.         {
  1015.             switch (typ)
  1016.             {
  1017.                 case ClanArena.TwinCityClan:
  1018.                     return 1505;
  1019.                 case ClanArena.WindPlainClan:
  1020.                     return 1555;
  1021.                 case ClanArena.PhoenixCastleClan:
  1022.                     return 1509;
  1023.                 case ClanArena.MapleForestClan:
  1024.                     return 1590;
  1025.                 case ClanArena.DesertCityClan:
  1026.                     return 1508;
  1027.                 case ClanArena.DesertClan:
  1028.                     return 1580;
  1029.                 case ClanArena.BirdCityClan:
  1030.                     return 1507;
  1031.                 case ClanArena.BirdIslandClan:
  1032.                     return 1570;
  1033.                 case ClanArena.ApeCityClan:
  1034.                     return 1506;
  1035.                 case ClanArena.LoveCanyonClan:
  1036.                     return 1560;
  1037.             }
  1038.             return 0;
  1039.         }
  1040.         private static ClanArena GetTournament(uint NpcUID)
  1041.         {
  1042.             if (NpcUID == 101895)
  1043.                 return ClanArena.TwinCityClan;
  1044.             if (NpcUID == 101897)
  1045.                 return ClanArena.WindPlainClan;
  1046.             if (NpcUID == 101901)
  1047.                 return ClanArena.PhoenixCastleClan;
  1048.             if (NpcUID == 101902)
  1049.                 return ClanArena.MapleForestClan;
  1050.             if (NpcUID == 101905)
  1051.                 return ClanArena.ApeCityClan;
  1052.             if (NpcUID == 101906)
  1053.                 return ClanArena.LoveCanyonClan;
  1054.             if (NpcUID == 101913)
  1055.                 return ClanArena.DesertCityClan;
  1056.             if (NpcUID == 101914)
  1057.                 return ClanArena.DesertClan;
  1058.             if (NpcUID == 101909)
  1059.                 return ClanArena.BirdCityClan;
  1060.             if (NpcUID == 101910)
  1061.                 return ClanArena.BirdIslandClan;
  1062.             return ClanArena.Count;
  1063.         }
  1064.         public static ClanTournament GetNpcTournament(uint NpcUID)
  1065.         {
  1066.             try
  1067.             {
  1068.                 return Tournaments[(byte)GetTournament(NpcUID)];
  1069.             }
  1070.             catch (Exception e)
  1071.             {
  1072.                 Console.WriteLine(e.ToString());
  1073.                 return null;
  1074.             }
  1075.         }
  1076.         public static ClanTournament[] Tournaments;
  1077.         public static void Create()
  1078.         {
  1079.             Tournaments = new ClanTournament[(byte)ClanArena.Count];
  1080.             for (byte x = 0; x < (byte)ClanArena.Count; x++)
  1081.                 Tournaments[x] = new ClanTournament((ClanArena)x);
  1082.             Load();
  1083.         }
  1084.         public static bool GetMyWar(uint CLAN_ID, out ClientWar war)
  1085.         {
  1086.             foreach (var client_War in Tournaments)
  1087.                 if (client_War.Client.UID == CLAN_ID)
  1088.                 {
  1089.                     war = client_War.Client;
  1090.                     return true;
  1091.                 }
  1092.             war = null;
  1093.             return false;
  1094.         }
  1095.         public static void Start()
  1096.         {
  1097.  
  1098.             for (byte x = 0; x < (byte)ClanArena.Count; x++)
  1099.                 Tournaments[x].Start();
  1100.             Game.Player.SendWorldMessage("ClanWar has begun! Go to every map to ClanWar npc to join !");
  1101.         }
  1102.         public static void Save()
  1103.         {
  1104.             using (Database.Write _wr = new Database.Write("database\\Rangers\\ClanWar.txt"))
  1105.             {
  1106.                 string[] items = new string[(byte)ClanArena.Count];
  1107.                 for (byte x = 0; x < Tournaments.Length; x++)
  1108.                     items[x] = "" + (byte)Tournaments[x].Map + "^" + Tournaments[x].Client.ToString();
  1109.                 _wr.Add(items, items.Length).Execute(Database.Mode.Open);
  1110.             }
  1111.         }
  1112.         public static void Load()
  1113.         {
  1114.             using (Database.Read r = new Database.Read("database\\Rangers\\ClanWar.txt"))
  1115.             {
  1116.                 if (r.Reader())
  1117.                 {
  1118.                     int count = r.Count;
  1119.                     for (uint x = 0; x < count; x++)
  1120.                     {
  1121.                         string data = r.ReadString("");
  1122.                         if (data != null)
  1123.                         {
  1124.                             ClanArena tour = (ClanArena)byte.Parse(data.Split('^')[0]);
  1125.                             Tournaments[(byte)tour].Client.Load(data.Split('^')[1]);
  1126.                         }
  1127.                     }
  1128.                 }
  1129.             }
  1130.         }
  1131.         public class ClanTournament
  1132.         {
  1133.             public const int MinuteTimes = 20;
  1134.             public ClientWar Client;
  1135.             private DateTime StartTimer;
  1136.             private IDisposable Subscribe;
  1137.             public ClanArena Map;
  1138.             public bool Open = false;
  1139.             public static Client.GameState client;
  1140.             public ClanTournament(ClanArena map)
  1141.             {
  1142.                 if (!Constants.PKFreeMaps.Contains(GetMap(map)))
  1143.                     Constants.PKFreeMaps.Add(GetMap(map));
  1144.                 Map = map;
  1145.                 Client = new ClientWar();
  1146.                 Client.DominationMap = Client.CurentMap = Map.ToString();
  1147.                 Client.Reward = Client.NextReward = GetItemReward(Map);
  1148.             }
  1149.             public void Teleport(Client.GameState client)
  1150.             {
  1151.                 if (Open)
  1152.                 {
  1153.                     client.Player.PKMode = Game.Enums.PKMode.Team;
  1154.                     client.Send(new MsgAction(true)
  1155.                     {
  1156.                         UID = client.Player.UID,
  1157.                         ID = MsgAction.Mode.ChangePKMode,
  1158.                         dwParam = (uint)client.Player.PKMode
  1159.                     });
  1160.                     var telemap = Kernel.Maps[GetMap(Map)];
  1161.                     Database.DMaps.LoadMap(GetMap(Map));
  1162.  
  1163.                     client.Player.Teleport(GetMap(Map), 50, 50);
  1164.                 }
  1165.             }
  1166.  
  1167.             public void Start()
  1168.             {
  1169.                 if (!Open)
  1170.                 {
  1171.                     StartTimer = DateTime.Now;
  1172.                     Open = true;
  1173.                     Subscribe = Thread.Subscribe(Work, 5000);
  1174.                 }
  1175.             }
  1176.             private void Finish()
  1177.             {
  1178.                 if (Open)
  1179.                 {
  1180.                     if (DateTime.Now > StartTimer.AddMinutes(MinuteTimes))
  1181.                     {
  1182.                         Open = false;
  1183.                         Subscribe.Dispose();
  1184.                     }
  1185.                 }
  1186.             }
  1187.             private int ClansOnMap(Client.GameState[] clients)
  1188.             {
  1189.                 List<uint> ClansIDs = new List<uint>();
  1190.                 foreach (var obj in clients)
  1191.                 {
  1192.                     if (obj.Player.ClanId != 0)
  1193.                     {
  1194.                         if (!ClansIDs.Contains(obj.Player.ClanId))
  1195.                             ClansIDs.Add(obj.Player.ClanId);
  1196.                     }
  1197.                 }
  1198.                 return ClansIDs.Count;
  1199.             }
  1200.             private void Work(int time)
  1201.             {
  1202.                 var clients_on_MAP = Kernel.GamePool.Values.Where(p => p.Player.MapID == GetMap(Map) && !p.Player.Dead).ToArray();
  1203.                 int count_clans = ClansOnMap(clients_on_MAP);
  1204.                 byte[] Messaje = new Network.GamePackets.MsgTalk("Alive Clans In " + Map.ToString() + " : " + count_clans + "", System.Drawing.Color.Yellow, Network.GamePackets.MsgTalk.FirstRightCorner).ToArray();
  1205.                 foreach (var obj in clients_on_MAP)
  1206.                     obj.Send(Messaje);
  1207.                 if (DateTime.Now > StartTimer.AddMinutes(MinuteTimes))
  1208.                 {
  1209.                     if (count_clans < 2)
  1210.                     {
  1211.                         if (clients_on_MAP != null && clients_on_MAP.Length > 0)
  1212.                         {
  1213.                             var clan = clients_on_MAP[0].Player.GetClan;
  1214.                             foreach (var member in clients_on_MAP)
  1215.                                 GetClientReward(member);
  1216.                             UpdateWarInfo(clan);
  1217.                         }
  1218.                         Finish();
  1219.                     }
  1220.                 }
  1221.             }
  1222.             private void UpdateWarInfo(MsgFamily clan)
  1223.             {
  1224.                 if (Client.UID == clan.ID)
  1225.                 {
  1226.                     Client.Free = clan.Fund;
  1227.                     Client.OccupationDays++;
  1228.                 }
  1229.                 else
  1230.                 {
  1231.                     Client = new ClientWar(clan);
  1232.                     Client.OccupationDays++;
  1233.                     Client.Free = clan.Fund;
  1234.                     Client.DominationMap = Client.CurentMap = Map.ToString();
  1235.                     Client.Reward = Client.NextReward = GetItemReward(Map);
  1236.                 }
  1237.             }
  1238.             private void GetClientReward(Client.GameState obj)
  1239.             {
  1240.  
  1241.                 uint Reward = 50000;
  1242.                 if (Map != ClanArena.TwinCityClan)
  1243.                     Reward /= 2;
  1244.                 if (obj.Player.ClanRank == MsgFamily.Ranks.ClanLeader)
  1245.                 {
  1246.                     obj.Player.ConquerPoints += Reward;
  1247.                     //obj.Player.ConquerPointsFake += Reward;
  1248.                     obj.Send(new Network.GamePackets.MsgTalk("You win " + Reward + " ConquerPoints for domination " + Map.ToString() + "", System.Drawing.Color.Red, Network.GamePackets.MsgTalk.System).ToArray());
  1249.                 }
  1250.                 else
  1251.                 {
  1252.                     Reward /= 3;
  1253.                     obj.Player.ConquerPoints += Reward;
  1254.                     //obj.Player.ConquerPointsFake += Reward;
  1255.                     obj.Send(new Network.GamePackets.MsgTalk("You win " + Reward + " ConquerPoints for domination " + Map.ToString() + "", System.Drawing.Color.Red, Network.GamePackets.MsgTalk.System).ToArray());
  1256.                 }
  1257.                 obj.Player.GetClan.TwinCityClan = false;
  1258.                 obj.Player.Teleport(1002, 410, 354);
  1259.             }
  1260.         }
  1261.         #endregion
  1262.         #region Apply & Cancel
  1263.         public static void CancelApply(Client.GameState client)
  1264.         {
  1265.             client.Player.GetClan.TwinCityClan = false;
  1266.             client.Player.GetClan.WindPlainClan = false;
  1267.             client.Player.GetClan.DesertCityClan = false;
  1268.             client.Player.GetClan.DesertClan = false;
  1269.             client.Player.GetClan.BirdCityClan = false;
  1270.             client.Player.GetClan.BirdIslandClan = false;
  1271.             client.Player.GetClan.ApeCityClan = false;
  1272.             client.Player.GetClan.LoveCanyonClan = false;
  1273.             client.Player.GetClan.PhoenixCastleClan = false;
  1274.             client.Player.GetClan.MapleForestClan = false;
  1275.         }
  1276.         public static void ApplyTwinCityClan(Client.GameState client)
  1277.         {
  1278.             client.Player.GetClan.TwinCityClan = true;
  1279.             client.Player.GetClan.WindPlainClan = false;
  1280.             client.Player.GetClan.DesertCityClan = false;
  1281.             client.Player.GetClan.DesertClan = false;
  1282.             client.Player.GetClan.BirdCityClan = false;
  1283.             client.Player.GetClan.BirdIslandClan = false;
  1284.             client.Player.GetClan.ApeCityClan = false;
  1285.             client.Player.GetClan.LoveCanyonClan = false;
  1286.             client.Player.GetClan.PhoenixCastleClan = false;
  1287.             client.Player.GetClan.MapleForestClan = false;
  1288.         }
  1289.         public static void ApplyWindPlainClan(Client.GameState client)
  1290.         {
  1291.             client.Player.GetClan.TwinCityClan = false;
  1292.             client.Player.GetClan.WindPlainClan = true;
  1293.             client.Player.GetClan.DesertCityClan = false;
  1294.             client.Player.GetClan.DesertClan = false;
  1295.             client.Player.GetClan.BirdCityClan = false;
  1296.             client.Player.GetClan.BirdIslandClan = false;
  1297.             client.Player.GetClan.ApeCityClan = false;
  1298.             client.Player.GetClan.LoveCanyonClan = false;
  1299.             client.Player.GetClan.PhoenixCastleClan = false;
  1300.             client.Player.GetClan.MapleForestClan = false;
  1301.         }
  1302.         public static void ApplyDesertCityClan(Client.GameState client)
  1303.         {
  1304.             client.Player.GetClan.TwinCityClan = false;
  1305.             client.Player.GetClan.WindPlainClan = false;
  1306.             client.Player.GetClan.DesertCityClan = true;
  1307.             client.Player.GetClan.DesertClan = false;
  1308.             client.Player.GetClan.BirdCityClan = false;
  1309.             client.Player.GetClan.BirdIslandClan = false;
  1310.             client.Player.GetClan.ApeCityClan = false;
  1311.             client.Player.GetClan.LoveCanyonClan = false;
  1312.             client.Player.GetClan.PhoenixCastleClan = false;
  1313.             client.Player.GetClan.MapleForestClan = false;
  1314.         }
  1315.         public static void ApplyDesertClan(Client.GameState client)
  1316.         {
  1317.             client.Player.GetClan.TwinCityClan = false;
  1318.             client.Player.GetClan.WindPlainClan = false;
  1319.             client.Player.GetClan.DesertCityClan = false;
  1320.             client.Player.GetClan.DesertClan = true;
  1321.             client.Player.GetClan.BirdCityClan = false;
  1322.             client.Player.GetClan.BirdIslandClan = false;
  1323.             client.Player.GetClan.ApeCityClan = false;
  1324.             client.Player.GetClan.LoveCanyonClan = false;
  1325.             client.Player.GetClan.PhoenixCastleClan = false;
  1326.             client.Player.GetClan.MapleForestClan = false;
  1327.         }
  1328.         public static void ApplyBirdCityClan(Client.GameState client)
  1329.         {
  1330.             client.Player.GetClan.TwinCityClan = false;
  1331.             client.Player.GetClan.WindPlainClan = false;
  1332.             client.Player.GetClan.DesertCityClan = false;
  1333.             client.Player.GetClan.DesertClan = false;
  1334.             client.Player.GetClan.BirdCityClan = true;
  1335.             client.Player.GetClan.BirdIslandClan = false;
  1336.             client.Player.GetClan.ApeCityClan = false;
  1337.             client.Player.GetClan.LoveCanyonClan = false;
  1338.             client.Player.GetClan.PhoenixCastleClan = false;
  1339.             client.Player.GetClan.MapleForestClan = false;
  1340.         }
  1341.         public static void ApplyBirdIslandClan(Client.GameState client)
  1342.         {
  1343.             client.Player.GetClan.TwinCityClan = false;
  1344.             client.Player.GetClan.WindPlainClan = false;
  1345.             client.Player.GetClan.DesertCityClan = false;
  1346.             client.Player.GetClan.DesertClan = false;
  1347.             client.Player.GetClan.BirdCityClan = false;
  1348.             client.Player.GetClan.BirdIslandClan = true;
  1349.             client.Player.GetClan.ApeCityClan = false;
  1350.             client.Player.GetClan.LoveCanyonClan = false;
  1351.             client.Player.GetClan.PhoenixCastleClan = false;
  1352.             client.Player.GetClan.MapleForestClan = false;
  1353.         }
  1354.         public static void ApplyApeCityClan(Client.GameState client)
  1355.         {
  1356.             client.Player.GetClan.TwinCityClan = false;
  1357.             client.Player.GetClan.WindPlainClan = false;
  1358.             client.Player.GetClan.DesertCityClan = false;
  1359.             client.Player.GetClan.DesertClan = false;
  1360.             client.Player.GetClan.BirdCityClan = false;
  1361.             client.Player.GetClan.BirdIslandClan = false;
  1362.             client.Player.GetClan.ApeCityClan = true;
  1363.             client.Player.GetClan.LoveCanyonClan = false;
  1364.             client.Player.GetClan.PhoenixCastleClan = false;
  1365.             client.Player.GetClan.MapleForestClan = false;
  1366.         }
  1367.         public static void ApplyLoveCanyonClan(Client.GameState client)
  1368.         {
  1369.             client.Player.GetClan.TwinCityClan = false;
  1370.             client.Player.GetClan.WindPlainClan = false;
  1371.             client.Player.GetClan.DesertCityClan = false;
  1372.             client.Player.GetClan.DesertClan = false;
  1373.             client.Player.GetClan.BirdCityClan = false;
  1374.             client.Player.GetClan.BirdIslandClan = false;
  1375.             client.Player.GetClan.ApeCityClan = false;
  1376.             client.Player.GetClan.LoveCanyonClan = true;
  1377.             client.Player.GetClan.PhoenixCastleClan = false;
  1378.             client.Player.GetClan.MapleForestClan = false;
  1379.         }
  1380.         public static void ApplyPhoenixCastleClan(Client.GameState client)
  1381.         {
  1382.             client.Player.GetClan.TwinCityClan = false;
  1383.             client.Player.GetClan.WindPlainClan = false;
  1384.             client.Player.GetClan.DesertCityClan = false;
  1385.             client.Player.GetClan.DesertClan = false;
  1386.             client.Player.GetClan.BirdCityClan = false;
  1387.             client.Player.GetClan.BirdIslandClan = false;
  1388.             client.Player.GetClan.ApeCityClan = false;
  1389.             client.Player.GetClan.LoveCanyonClan = false;
  1390.             client.Player.GetClan.PhoenixCastleClan = true;
  1391.             client.Player.GetClan.MapleForestClan = false;
  1392.         }
  1393.         public static void ApplyMapleForestClan(Client.GameState client)
  1394.         {
  1395.             client.Player.GetClan.TwinCityClan = false;
  1396.             client.Player.GetClan.WindPlainClan = false;
  1397.             client.Player.GetClan.DesertCityClan = false;
  1398.             client.Player.GetClan.DesertClan = false;
  1399.             client.Player.GetClan.BirdCityClan = false;
  1400.             client.Player.GetClan.BirdIslandClan = false;
  1401.             client.Player.GetClan.ApeCityClan = false;
  1402.             client.Player.GetClan.LoveCanyonClan = false;
  1403.             client.Player.GetClan.PhoenixCastleClan = false;
  1404.             client.Player.GetClan.MapleForestClan = true;
  1405.         }
  1406.         #endregion
  1407.     }
  1408. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement