Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.Text;
- using System.Collections.Generic;
- namespace AboGamil.Network.GamePackets
- {
- public unsafe class MsgFamilyOccupy : Writer, Interfaces.IPacket
- {
- byte[] Packet;
- public enum ActionType : byte
- {
- Apply = 0,
- Cancel = 1,
- Abandon = 2,
- Register = 5,
- Show = 6,
- Enter = 8,
- ClaimedExp = 10,
- Claimed = 18
- }
- public enum ButtonType : byte
- {
- Abandon = 1,
- Cancel = 3,
- Apply = 5,
- }
- public enum ActionMessage : byte
- {
- ClaimedEXP = 2,
- Abandoned = 3,
- Register = 4,
- ReceiveCall = 7,
- MemCantClaim = 12,
- OnceDay = 13,
- Claimedit = 14,
- Claimedtomorrow = 15,
- ClaimedExp = 16,
- ReachedMax = 17,
- inventory = 20
- }
- public MsgFamilyOccupy()
- {
- Packet = new byte[148];
- WriteUInt16((ushort)(Packet.Length - 8), 0, Packet);
- WriteUInt16((ushort)MsgTypes.MsgFamilyOccupy, 2, Packet);
- }
- public byte Action
- {
- get { return Packet[4]; }
- set { Packet[4] = value; }
- }
- public uint UID
- {
- get { return BitConverter.ToUInt32(Packet, 8); }
- set { WriteUInt32(value, 8, Packet); }
- }
- public uint NpcUid
- {
- get { return BitConverter.ToUInt32(Packet, 12); }
- set { WriteUInt32(value, 12, Packet); }
- }
- public byte Button
- {
- get { return Packet[16]; }
- set { Packet[16] = value; }
- }
- public string Name
- {
- get { return Encoding.ASCII.GetString(Packet, 20, 16); }
- set { WriteString(value, 20, Packet); }
- }
- public string DominationMap
- {
- get { return Encoding.ASCII.GetString(Packet, 56, 16); }
- set { WriteString(value, 56, Packet); }
- }
- public byte Enter
- {
- get { return Packet[92]; }
- set { Packet[92] = value; }
- }
- public byte Unknown93
- {
- get { return Packet[93]; }
- set { Packet[93] = value; }
- }
- public byte Unknown94
- {
- get { return Packet[94]; }
- set { Packet[94] = value; }
- }
- public uint OccupationDays
- {
- get { return BitConverter.ToUInt32(Packet, 96); }
- set { WriteUInt32(value, 96, Packet); }
- }
- public uint Reward
- {
- get { return BitConverter.ToUInt32(Packet, 100); }
- set { WriteUInt32(value, 100, Packet); }
- }
- public uint NextReward
- {
- get { return BitConverter.ToUInt32(Packet, 104); }
- set { WriteUInt32(value, 104, Packet); }
- }
- public uint Free
- {
- get { return BitConverter.ToUInt32(Packet, 120); }
- set { WriteUInt32(value, 120, Packet); }
- }
- public byte LightReward
- {
- get { return Packet[128]; }
- set { Packet[128] = value; }
- }
- public byte ClaimedExp
- {
- get { return Packet[129]; }
- set { Packet[129] = value; }
- }
- public byte[] ToArray()
- {
- return Packet;
- }
- public void Deserialize(byte[] packet)
- {
- Packet = packet;
- }
- public void Send(Client.GameState client)
- {
- client.Send(Packet);
- }
- public static void Process(byte[] packet, Client.GameState client)
- {
- MsgFamilyOccupy Occupy = new MsgFamilyOccupy();
- Occupy.Deserialize(packet);
- switch (Occupy.Action)
- {
- #region Apply
- case (byte)ActionType.Apply:
- {
- var clan = client.Player.GetClan;
- var tournament = FamilyTournament.GetNpcTournament(client.JoinToWar);
- {
- if (client.Player.GetClan.Fund < tournament.Client.Free)
- {
- client.Send(new MsgTalk("There in not enough in the Clan Fund to apply for Clan War.", System.Drawing.Color.Red, MsgTalk.TopLeft));
- }
- else if (tournament.Client.CurentMap == "TwinCityClan")
- {
- FamilyTournament.ApplyTwinCityClan(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng TwinCityClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "WindPlainClan")
- {
- FamilyTournament.ApplyWindPlainClan(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng WindPlainClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "DesertCityClan")
- {
- FamilyTournament.ApplyDesertCityClan(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng DesertCityClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "DesertClan")
- {
- FamilyTournament.ApplyDesertClan(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng DesertClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "BirdCityClan")
- {
- FamilyTournament.ApplyBirdCityClan(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng BirdCityClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "BirdIslandClan")
- {
- FamilyTournament.ApplyBirdIslandClan(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng BirdIslandClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "ApeCityClan")
- {
- FamilyTournament.ApplyApeCityClan(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng ApeCityClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "LoveCanyonClan")
- {
- FamilyTournament.ApplyLoveCanyonClan(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng LoveCanyonClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "PhoenixCastleClan")
- {
- FamilyTournament.ApplyPhoenixCastleClan(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng PhoenixCastleCla Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "MapleForestClan")
- {
- FamilyTournament.ApplyMapleForestClan(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has send a request ti challeng MapleForestClan Prepare yourself!"), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- }
- break;
- }
- #endregion
- #region Cancel
- case (byte)ActionType.Cancel:
- {
- var clan = client.Player.GetClan;
- var tournament = FamilyTournament.GetNpcTournament(client.JoinToWar);
- if (tournament.Client.CurentMap == "TwinCityClan")
- {
- FamilyTournament.CancelApply(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to TwinCityClan."), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "WindPlainClan")
- {
- FamilyTournament.CancelApply(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to WindPlainClan."), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "DesertCityClan")
- {
- FamilyTournament.CancelApply(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to DesertCityClan."), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "DesertClan")
- {
- FamilyTournament.CancelApply(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to DesertClan."), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "BirdCityClan")
- {
- FamilyTournament.CancelApply(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to BirdCityClan."), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "BirdIslandClan")
- {
- FamilyTournament.CancelApply(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to BirdIslandClan."), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "ApeCityClan")
- {
- FamilyTournament.CancelApply(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to ApeCityClan."), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "LoveCanyonClan")
- {
- FamilyTournament.CancelApply(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to LoveCanyonClan."), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "PhoenixCastleClan")
- {
- FamilyTournament.CancelApply(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to PhoenixCastleCla."), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- if (tournament.Client.CurentMap == "MapleForestClan")
- {
- FamilyTournament.CancelApply(client);
- clan.SendMessage(new MsgTalk(("The Clan Leader has recalled the request to MapleForestClan."), System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- return;
- }
- break;
- }
- #endregion
- #region Abandon
- case (byte)ActionType.Abandon:
- {
- MsgFamily clan = client.Player.GetClan;
- var tournament = FamilyTournament.GetNpcTournament(client.JoinToWar);
- if (tournament.Client.CurentMap == "TwinCityClan")
- {
- tournament.Client.Name = "None";
- tournament.Client.Free = 0;
- tournament.Client.OccupationDays = 0;
- tournament.Client.UID = 0;
- clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to TwinCityClan.", System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
- return;
- }
- if (tournament.Client.CurentMap == "WindPlainClan")
- {
- tournament.Client.Name = "";
- tournament.Client.Free = 0;
- tournament.Client.OccupationDays = 0;
- clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to WindPlainClan.", System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
- return;
- }
- if (tournament.Client.CurentMap == "DesertCityClan")
- {
- tournament.Client.Name = "";
- tournament.Client.Free = 0;
- tournament.Client.OccupationDays = 0;
- clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to DesertCityClan.", System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
- return;
- }
- if (tournament.Client.CurentMap == "DesertClan")
- {
- tournament.Client.Name = "";
- tournament.Client.Free = 0;
- tournament.Client.OccupationDays = 0;
- clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to DesertClan.", System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
- return;
- }
- if (tournament.Client.CurentMap == "BirdCityClan")
- {
- tournament.Client.Name = "";
- tournament.Client.Free = 0;
- tournament.Client.OccupationDays = 0;
- clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to BirdCityClan.", System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
- return;
- }
- if (tournament.Client.CurentMap == "BirdIslandClan")
- {
- tournament.Client.Name = "";
- tournament.Client.Free = 0;
- tournament.Client.OccupationDays = 0;
- clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to BirdIslandClan.", System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
- return;
- }
- if (tournament.Client.CurentMap == "ApeCityClan")
- {
- tournament.Client.Name = "";
- tournament.Client.Free = 0;
- tournament.Client.OccupationDays = 0;
- clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to ApeCityClan.", System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
- return;
- }
- if (tournament.Client.CurentMap == "LoveCanyonClan")
- {
- tournament.Client.Name = "";
- tournament.Client.Free = 0;
- tournament.Client.OccupationDays = 0;
- clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to LoveCanyonClan.", System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
- return;
- }
- if (tournament.Client.CurentMap == "PhoenixCastleClan")
- {
- tournament.Client.Name = "";
- tournament.Client.Free = 0;
- tournament.Client.OccupationDays = 0;
- clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to PhoenixCastleCla.", System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
- return;
- }
- if (tournament.Client.CurentMap == "MapleForestClan")
- {
- tournament.Client.Name = "";
- tournament.Client.Free = 0;
- tournament.Client.OccupationDays = 0;
- clan.SendMessage(new MsgTalk("The Clan Leader has Abandon to MapleForestClan.", System.Drawing.Color.Red, MsgTalk.Clan));
- client.Send(clan);
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.Abandoned }.Send(client);
- return;
- }
- break;
- }
- #endregion
- #region Register
- case (byte)ActionType.Register:
- {
- client.Player.SendSysMesage("Send Register Test");
- break;
- }
- #endregion
- #region Show
- case (byte)ActionType.Show:
- {
- client.JoinToWar = Occupy.NpcUid;
- var tournament = FamilyTournament.GetNpcTournament(Occupy.NpcUid);
- if (tournament != null)
- {
- var obj = tournament.Client;
- if (obj != null)
- {
- #region Information
- Occupy.UID = obj.UID;
- Occupy.Name = obj.Name;
- Occupy.DominationMap = obj.DominationMap;
- Occupy.Unknown93 = 1;
- Occupy.Unknown94 = 1;
- Occupy.OccupationDays = obj.OccupationDays;
- Occupy.Reward = obj.Reward;
- Occupy.NextReward = obj.NextReward;
- Occupy.Free = obj.Free;
- #endregion
- #region Cancel
- if (client.Player.ClanRank == MsgFamily.Ranks.ClanLeader)
- {
- if (tournament.Client.CurentMap == "TwinCityClan")
- {
- if (client.Player.GetClan.TwinCityClan == true)
- {
- Occupy.Button = (byte)ButtonType.Cancel;
- }
- }
- if (tournament.Client.CurentMap == "WindPlainClan")
- {
- if (client.Player.GetClan.WindPlainClan == true)
- {
- Occupy.Button = (byte)ButtonType.Cancel;
- }
- }
- if (tournament.Client.CurentMap == "DesertCityClan")
- {
- if (client.Player.GetClan.DesertCityClan == true)
- {
- Occupy.Button = (byte)ButtonType.Cancel;
- }
- }
- if (tournament.Client.CurentMap == "DesertClan")
- {
- if (client.Player.GetClan.DesertClan == true)
- {
- Occupy.Button = (byte)ButtonType.Cancel;
- }
- }
- if (tournament.Client.CurentMap == "BirdCityClan")
- {
- if (client.Player.GetClan.BirdCityClan == true)
- {
- Occupy.Button = (byte)ButtonType.Cancel;
- }
- }
- if (tournament.Client.CurentMap == "BirdIslandClan")
- {
- if (client.Player.GetClan.BirdIslandClan == true)
- {
- Occupy.Button = (byte)ButtonType.Cancel;
- }
- }
- if (tournament.Client.CurentMap == "ApeCityClan")
- {
- if (client.Player.GetClan.ApeCityClan == true)
- {
- Occupy.Button = (byte)ButtonType.Cancel;
- }
- }
- if (tournament.Client.CurentMap == "LoveCanyonClan")
- {
- if (client.Player.GetClan.LoveCanyonClan == true)
- {
- Occupy.Button = (byte)ButtonType.Cancel;
- }
- }
- if (tournament.Client.CurentMap == "PhoenixCastleClan")
- {
- if (client.Player.GetClan.PhoenixCastleClan == true)
- {
- Occupy.Button = (byte)ButtonType.Cancel;
- }
- }
- if (tournament.Client.CurentMap == "MapleForestClan")
- {
- if (client.Player.GetClan.MapleForestClan == true)
- {
- Occupy.Button = (byte)ButtonType.Cancel;
- }
- }
- }
- #endregion
- #region Apply
- if (client.Player.ClanRank == MsgFamily.Ranks.ClanLeader)
- {
- if (tournament.Client.CurentMap == "TwinCityClan")
- {
- if (client.Player.GetClan.TwinCityClan == false)
- {
- if (!tournament.Open)
- {
- Occupy.Button = (byte)ButtonType.Apply;
- }
- }
- }
- if (tournament.Client.CurentMap == "WindPlainClan")
- {
- if (client.Player.GetClan.WindPlainClan == false)
- {
- if (!tournament.Open)
- {
- Occupy.Button = (byte)ButtonType.Apply;
- }
- }
- }
- if (tournament.Client.CurentMap == "DesertCityClan")
- {
- if (client.Player.GetClan.DesertCityClan == false)
- {
- if (!tournament.Open)
- {
- Occupy.Button = (byte)ButtonType.Apply;
- }
- }
- }
- if (tournament.Client.CurentMap == "DesertClan")
- {
- if (client.Player.GetClan.DesertClan == false)
- {
- if (!tournament.Open)
- {
- Occupy.Button = (byte)ButtonType.Apply;
- }
- }
- }
- if (tournament.Client.CurentMap == "BirdCityClan")
- {
- if (client.Player.GetClan.BirdCityClan == false)
- {
- if (!tournament.Open)
- {
- Occupy.Button = (byte)ButtonType.Apply;
- }
- }
- }
- if (tournament.Client.CurentMap == "BirdIslandClan")
- {
- if (client.Player.GetClan.BirdIslandClan == false)
- {
- if (!tournament.Open)
- {
- Occupy.Button = (byte)ButtonType.Apply;
- }
- }
- }
- if (tournament.Client.CurentMap == "ApeCityClan")
- {
- if (client.Player.GetClan.ApeCityClan == false)
- {
- if (!tournament.Open)
- {
- Occupy.Button = (byte)ButtonType.Apply;
- }
- }
- }
- if (tournament.Client.CurentMap == "LoveCanyonClan")
- {
- if (client.Player.GetClan.LoveCanyonClan == false)
- {
- if (!tournament.Open)
- {
- Occupy.Button = (byte)ButtonType.Apply;
- }
- }
- }
- if (tournament.Client.CurentMap == "PhoenixCastleClan")
- {
- if (client.Player.GetClan.PhoenixCastleClan == false)
- {
- if (!tournament.Open)
- {
- Occupy.Button = (byte)ButtonType.Apply;
- }
- }
- }
- if (tournament.Client.CurentMap == "MapleForestClan")
- {
- if (client.Player.GetClan.MapleForestClan == false)
- {
- if (!tournament.Open)
- {
- Occupy.Button = (byte)ButtonType.Apply;
- }
- }
- }
- }
- #endregion
- #region Abandon & Claimed
- if (client.Player.ClanRank == MsgFamily.Ranks.ClanLeader)
- {
- if (obj.Name == client.Player.GetClan.Name)
- {
- if (!client.Player.GetClan.Claimed)
- {
- if (!tournament.Open)
- {
- Occupy.LightReward = 1;
- Occupy.Button = (byte)ButtonType.Abandon;
- }
- }
- }
- }
- #endregion
- #region ClaimedEXP
- //if (obj.Name == client.Player.GetClan.Name)
- //{
- // if (!client.Player.ClaimedExp)
- // {
- // if (!tournament.Open)
- // {
- // Occupy.ClaimedExp = 1;
- // Occupy.Button = (byte)ActionMessage.ClaimedEXP;
- // }
- // }
- //}
- #endregion
- #region Enter
- if (tournament.Open)
- {
- Occupy.Enter = 1;
- }
- #endregion
- client.Send(packet);
- }
- }
- break;
- }
- #endregion
- #region Enter
- case (byte)ActionType.Enter:
- {
- if (client.JoinToWar != 0)
- {
- var tournament = FamilyTournament.GetNpcTournament(client.JoinToWar);
- if (client.Player.GetClan == null)
- {
- client.Player.SendSysMesage("Sorry You Not Have Clan To Join!");
- return;
- }
- if (tournament.Client.CurentMap == "TwinCityClan")
- {
- if (client.Player.GetClan.TwinCityClan == false)
- {
- client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
- return;
- }
- }
- if (tournament.Client.CurentMap == "WindPlainClan")
- {
- if (client.Player.GetClan.WindPlainClan == false)
- {
- client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
- return;
- }
- }
- if (tournament.Client.CurentMap == "DesertCityClan")
- {
- if (client.Player.GetClan.DesertCityClan == false)
- {
- client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
- return;
- }
- }
- if (tournament.Client.CurentMap == "DesertClan")
- {
- if (client.Player.GetClan.DesertClan == false)
- {
- client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
- return;
- }
- }
- if (tournament.Client.CurentMap == "BirdCityClan")
- {
- if (client.Player.GetClan.BirdCityClan == false)
- {
- client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
- return;
- }
- }
- if (tournament.Client.CurentMap == "BirdIslandClan")
- {
- if (client.Player.GetClan.BirdIslandClan == false)
- {
- client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
- return;
- }
- }
- if (tournament.Client.CurentMap == "ApeCityClan")
- {
- if (client.Player.GetClan.ApeCityClan == false)
- {
- client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
- return;
- }
- }
- if (tournament.Client.CurentMap == "LoveCanyonClan")
- {
- if (client.Player.GetClan.LoveCanyonClan == false)
- {
- client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
- return;
- }
- }
- if (tournament.Client.CurentMap == "PhoenixCastleClan")
- {
- if (client.Player.GetClan.PhoenixCastleClan == false)
- {
- client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
- return;
- }
- }
- if (tournament.Client.CurentMap == "MapleForestClan")
- {
- if (client.Player.GetClan.MapleForestClan == false)
- {
- client.Player.SendSysMesage("Sorry Your Clan Not Apply To Join!");
- return;
- }
- }
- if (tournament != null)
- {
- tournament.Teleport(client);
- }
- }
- break;
- }
- #endregion
- #region Claimed
- case (byte)ActionType.Claimed:
- {
- var clan = client.Player.GetClan;
- var tournament = FamilyTournament.GetNpcTournament(client.JoinToWar);
- if (tournament.Client.CurentMap == "TwinCityClan")
- {
- if (client.Player.GetClan.Claimed)
- {
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
- }
- else
- {
- client.Inventory.Add(722454, 0, 1);
- client.Player.GetClan.Claimed = true;
- MsgFamily.SaveClan(clan);
- }
- return;
- }
- if (tournament.Client.CurentMap == "WindPlainClan")
- {
- if (client.Player.GetClan.Claimed)
- {
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
- }
- else
- {
- client.Inventory.Add(722455, 0, 1);
- client.Player.GetClan.Claimed = true;
- MsgFamily.SaveClan(clan);
- }
- return;
- }
- if (tournament.Client.CurentMap == "DesertCityClan")
- {
- if (client.Player.GetClan.Claimed)
- {
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
- }
- else
- {
- client.Inventory.Add(722459, 0, 1);
- client.Player.GetClan.Claimed = true;
- MsgFamily.SaveClan(clan);
- }
- return;
- }
- if (tournament.Client.CurentMap == "DesertClan")
- {
- if (client.Player.GetClan.Claimed)
- {
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
- }
- else
- {
- client.Inventory.Add(722464, 0, 1);
- client.Player.GetClan.Claimed = true;
- MsgFamily.SaveClan(clan);
- }
- return;
- }
- if (tournament.Client.CurentMap == "BirdCityClan")
- {
- if (client.Player.GetClan.Claimed)
- {
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
- }
- else
- {
- client.Inventory.Add(722475, 0, 1);
- client.Player.GetClan.Claimed = true;
- MsgFamily.SaveClan(clan);
- }
- return;
- }
- if (tournament.Client.CurentMap == "BirdIslandClan")
- {
- if (client.Player.GetClan.Claimed)
- {
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
- }
- else
- {
- client.Inventory.Add(722465, 0, 1);
- client.Player.GetClan.Claimed = true;
- MsgFamily.SaveClan(clan);
- }
- return;
- }
- if (tournament.Client.CurentMap == "ApeCityClan")
- {
- if (client.Player.GetClan.Claimed)
- {
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
- }
- else
- {
- client.Inventory.Add(722469, 0, 1);
- client.Player.GetClan.Claimed = true;
- MsgFamily.SaveClan(clan);
- }
- return;
- }
- if (tournament.Client.CurentMap == "LoveCanyonClan")
- {
- if (client.Player.GetClan.Claimed)
- {
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
- }
- else
- {
- client.Inventory.Add(722470, 0, 1);
- client.Player.GetClan.Claimed = true;
- MsgFamily.SaveClan(clan);
- }
- return;
- }
- if (tournament.Client.CurentMap == "PhoenixCastleClan")
- {
- if (client.Player.GetClan.Claimed)
- {
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
- }
- else
- {
- client.Inventory.Add(722474, 0, 1);
- client.Player.GetClan.Claimed = true;
- MsgFamily.SaveClan(clan);
- }
- return;
- }
- if (tournament.Client.CurentMap == "MapleForestClan")
- {
- if (client.Player.GetClan.Claimed)
- {
- new MsgFamilyOccupy() { Action = (byte)ActionMessage.OnceDay }.Send(client);
- }
- else
- {
- client.Inventory.Add(722475, 0, 1);
- client.Player.GetClan.Claimed = true;
- MsgFamily.SaveClan(clan);
- }
- return;
- }
- break;
- }
- #endregion
- #region ClaimedExp
- case (byte)ActionType.ClaimedExp:
- {
- if (!client.Player.ClaimedExp)
- {
- client.IncreaseExperience(client.ExpBall * 3, false);
- }
- client.Player.ClaimedExp = true;
- break;
- }
- #endregion
- default: Console.WriteLine("[MsgFamilyOccupy] Unknown Action: " + Occupy.Action + " "); break;
- }
- }
- }
- public unsafe class FamilyTournament
- {
- #region War Tournament
- public class ClientWar
- {
- public uint UID;
- public uint Reward;
- public uint NextReward;
- public uint Free;
- public uint OccupationDays;
- public string Name = "None";
- public string CurentMap = "";
- public string DominationMap = "";
- public ClientWar(MsgFamily clan)
- {
- UID = clan.ID;
- Name = clan.Name;
- Free = clan.Fund;
- }
- public ClientWar()
- {
- }
- public override string ToString()
- {
- if (Name.Contains('#'))
- Name = Name.Replace("#", "");
- if (Name.Contains('^'))
- Name = Name.Replace("^", "");
- StringBuilder build = new StringBuilder();
- build.Append(UID + "#" + Reward + "#" + NextReward
- + "#" + OccupationDays + "#" + Name + "#" + CurentMap + "#" + DominationMap + "#" + Free + "#");
- return build.ToString();
- }
- public void Load(string data)
- {
- if (data == null) return;
- if (!data.Contains('#')) return;
- string[] line = data.Split('#');
- UID = uint.Parse(line[0]);
- Reward = uint.Parse(line[1]);
- NextReward = uint.Parse(line[2]);
- OccupationDays = uint.Parse(line[3]);
- Name = line[4];
- CurentMap = line[5];
- DominationMap = line[6];
- Free = uint.Parse(line[7]);
- }
- }
- public enum ClanArena : ushort
- {
- TwinCityClan = 0,
- PhoenixCastleClan = 1,
- ApeCityClan = 2,
- DesertCityClan = 3,
- BirdCityClan = 4,
- WindPlainClan = 5,
- MapleForestClan = 6,
- LoveCanyonClan = 7,
- DesertClan = 8,
- BirdIslandClan = 9,
- Count = 10
- }
- public static uint GetItemReward(ClanArena typ)
- {
- switch (typ)
- {
- case ClanArena.TwinCityClan:
- return 722454;
- case ClanArena.WindPlainClan:
- return 722455;
- case ClanArena.DesertCityClan:
- return 722459;
- case ClanArena.DesertClan:
- return 722460;
- case ClanArena.BirdCityClan:
- return 722464;
- case ClanArena.BirdIslandClan:
- return 722465;
- case ClanArena.ApeCityClan:
- return 722469;
- case ClanArena.LoveCanyonClan:
- return 722470;
- case ClanArena.PhoenixCastleClan:
- return 722474;
- case ClanArena.MapleForestClan:
- return 722475;
- }
- return 0;
- }
- public static ushort GetMap(ClanArena typ)
- {
- switch (typ)
- {
- case ClanArena.TwinCityClan:
- return 1505;
- case ClanArena.WindPlainClan:
- return 1555;
- case ClanArena.PhoenixCastleClan:
- return 1509;
- case ClanArena.MapleForestClan:
- return 1590;
- case ClanArena.DesertCityClan:
- return 1508;
- case ClanArena.DesertClan:
- return 1580;
- case ClanArena.BirdCityClan:
- return 1507;
- case ClanArena.BirdIslandClan:
- return 1570;
- case ClanArena.ApeCityClan:
- return 1506;
- case ClanArena.LoveCanyonClan:
- return 1560;
- }
- return 0;
- }
- private static ClanArena GetTournament(uint NpcUID)
- {
- if (NpcUID == 101895)
- return ClanArena.TwinCityClan;
- if (NpcUID == 101897)
- return ClanArena.WindPlainClan;
- if (NpcUID == 101901)
- return ClanArena.PhoenixCastleClan;
- if (NpcUID == 101902)
- return ClanArena.MapleForestClan;
- if (NpcUID == 101905)
- return ClanArena.ApeCityClan;
- if (NpcUID == 101906)
- return ClanArena.LoveCanyonClan;
- if (NpcUID == 101913)
- return ClanArena.DesertCityClan;
- if (NpcUID == 101914)
- return ClanArena.DesertClan;
- if (NpcUID == 101909)
- return ClanArena.BirdCityClan;
- if (NpcUID == 101910)
- return ClanArena.BirdIslandClan;
- return ClanArena.Count;
- }
- public static ClanTournament GetNpcTournament(uint NpcUID)
- {
- try
- {
- return Tournaments[(byte)GetTournament(NpcUID)];
- }
- catch (Exception e)
- {
- Console.WriteLine(e.ToString());
- return null;
- }
- }
- public static ClanTournament[] Tournaments;
- public static void Create()
- {
- Tournaments = new ClanTournament[(byte)ClanArena.Count];
- for (byte x = 0; x < (byte)ClanArena.Count; x++)
- Tournaments[x] = new ClanTournament((ClanArena)x);
- Load();
- }
- public static bool GetMyWar(uint CLAN_ID, out ClientWar war)
- {
- foreach (var client_War in Tournaments)
- if (client_War.Client.UID == CLAN_ID)
- {
- war = client_War.Client;
- return true;
- }
- war = null;
- return false;
- }
- public static void Start()
- {
- for (byte x = 0; x < (byte)ClanArena.Count; x++)
- Tournaments[x].Start();
- Game.Player.SendWorldMessage("ClanWar has begun! Go to every map to ClanWar npc to join !");
- }
- public static void Save()
- {
- using (Database.Write _wr = new Database.Write("database\\Rangers\\ClanWar.txt"))
- {
- string[] items = new string[(byte)ClanArena.Count];
- for (byte x = 0; x < Tournaments.Length; x++)
- items[x] = "" + (byte)Tournaments[x].Map + "^" + Tournaments[x].Client.ToString();
- _wr.Add(items, items.Length).Execute(Database.Mode.Open);
- }
- }
- public static void Load()
- {
- using (Database.Read r = new Database.Read("database\\Rangers\\ClanWar.txt"))
- {
- if (r.Reader())
- {
- int count = r.Count;
- for (uint x = 0; x < count; x++)
- {
- string data = r.ReadString("");
- if (data != null)
- {
- ClanArena tour = (ClanArena)byte.Parse(data.Split('^')[0]);
- Tournaments[(byte)tour].Client.Load(data.Split('^')[1]);
- }
- }
- }
- }
- }
- public class ClanTournament
- {
- public const int MinuteTimes = 20;
- public ClientWar Client;
- private DateTime StartTimer;
- private IDisposable Subscribe;
- public ClanArena Map;
- public bool Open = false;
- public static Client.GameState client;
- public ClanTournament(ClanArena map)
- {
- if (!Constants.PKFreeMaps.Contains(GetMap(map)))
- Constants.PKFreeMaps.Add(GetMap(map));
- Map = map;
- Client = new ClientWar();
- Client.DominationMap = Client.CurentMap = Map.ToString();
- Client.Reward = Client.NextReward = GetItemReward(Map);
- }
- public void Teleport(Client.GameState client)
- {
- if (Open)
- {
- client.Player.PKMode = Game.Enums.PKMode.Team;
- client.Send(new MsgAction(true)
- {
- UID = client.Player.UID,
- ID = MsgAction.Mode.ChangePKMode,
- dwParam = (uint)client.Player.PKMode
- });
- var telemap = Kernel.Maps[GetMap(Map)];
- Database.DMaps.LoadMap(GetMap(Map));
- client.Player.Teleport(GetMap(Map), 50, 50);
- }
- }
- public void Start()
- {
- if (!Open)
- {
- StartTimer = DateTime.Now;
- Open = true;
- Subscribe = Thread.Subscribe(Work, 5000);
- }
- }
- private void Finish()
- {
- if (Open)
- {
- if (DateTime.Now > StartTimer.AddMinutes(MinuteTimes))
- {
- Open = false;
- Subscribe.Dispose();
- }
- }
- }
- private int ClansOnMap(Client.GameState[] clients)
- {
- List<uint> ClansIDs = new List<uint>();
- foreach (var obj in clients)
- {
- if (obj.Player.ClanId != 0)
- {
- if (!ClansIDs.Contains(obj.Player.ClanId))
- ClansIDs.Add(obj.Player.ClanId);
- }
- }
- return ClansIDs.Count;
- }
- private void Work(int time)
- {
- var clients_on_MAP = Kernel.GamePool.Values.Where(p => p.Player.MapID == GetMap(Map) && !p.Player.Dead).ToArray();
- int count_clans = ClansOnMap(clients_on_MAP);
- byte[] Messaje = new Network.GamePackets.MsgTalk("Alive Clans In " + Map.ToString() + " : " + count_clans + "", System.Drawing.Color.Yellow, Network.GamePackets.MsgTalk.FirstRightCorner).ToArray();
- foreach (var obj in clients_on_MAP)
- obj.Send(Messaje);
- if (DateTime.Now > StartTimer.AddMinutes(MinuteTimes))
- {
- if (count_clans < 2)
- {
- if (clients_on_MAP != null && clients_on_MAP.Length > 0)
- {
- var clan = clients_on_MAP[0].Player.GetClan;
- foreach (var member in clients_on_MAP)
- GetClientReward(member);
- UpdateWarInfo(clan);
- }
- Finish();
- }
- }
- }
- private void UpdateWarInfo(MsgFamily clan)
- {
- if (Client.UID == clan.ID)
- {
- Client.Free = clan.Fund;
- Client.OccupationDays++;
- }
- else
- {
- Client = new ClientWar(clan);
- Client.OccupationDays++;
- Client.Free = clan.Fund;
- Client.DominationMap = Client.CurentMap = Map.ToString();
- Client.Reward = Client.NextReward = GetItemReward(Map);
- }
- }
- private void GetClientReward(Client.GameState obj)
- {
- uint Reward = 50000;
- if (Map != ClanArena.TwinCityClan)
- Reward /= 2;
- if (obj.Player.ClanRank == MsgFamily.Ranks.ClanLeader)
- {
- obj.Player.ConquerPoints += Reward;
- //obj.Player.ConquerPointsFake += Reward;
- obj.Send(new Network.GamePackets.MsgTalk("You win " + Reward + " ConquerPoints for domination " + Map.ToString() + "", System.Drawing.Color.Red, Network.GamePackets.MsgTalk.System).ToArray());
- }
- else
- {
- Reward /= 3;
- obj.Player.ConquerPoints += Reward;
- //obj.Player.ConquerPointsFake += Reward;
- obj.Send(new Network.GamePackets.MsgTalk("You win " + Reward + " ConquerPoints for domination " + Map.ToString() + "", System.Drawing.Color.Red, Network.GamePackets.MsgTalk.System).ToArray());
- }
- obj.Player.GetClan.TwinCityClan = false;
- obj.Player.Teleport(1002, 410, 354);
- }
- }
- #endregion
- #region Apply & Cancel
- public static void CancelApply(Client.GameState client)
- {
- client.Player.GetClan.TwinCityClan = false;
- client.Player.GetClan.WindPlainClan = false;
- client.Player.GetClan.DesertCityClan = false;
- client.Player.GetClan.DesertClan = false;
- client.Player.GetClan.BirdCityClan = false;
- client.Player.GetClan.BirdIslandClan = false;
- client.Player.GetClan.ApeCityClan = false;
- client.Player.GetClan.LoveCanyonClan = false;
- client.Player.GetClan.PhoenixCastleClan = false;
- client.Player.GetClan.MapleForestClan = false;
- }
- public static void ApplyTwinCityClan(Client.GameState client)
- {
- client.Player.GetClan.TwinCityClan = true;
- client.Player.GetClan.WindPlainClan = false;
- client.Player.GetClan.DesertCityClan = false;
- client.Player.GetClan.DesertClan = false;
- client.Player.GetClan.BirdCityClan = false;
- client.Player.GetClan.BirdIslandClan = false;
- client.Player.GetClan.ApeCityClan = false;
- client.Player.GetClan.LoveCanyonClan = false;
- client.Player.GetClan.PhoenixCastleClan = false;
- client.Player.GetClan.MapleForestClan = false;
- }
- public static void ApplyWindPlainClan(Client.GameState client)
- {
- client.Player.GetClan.TwinCityClan = false;
- client.Player.GetClan.WindPlainClan = true;
- client.Player.GetClan.DesertCityClan = false;
- client.Player.GetClan.DesertClan = false;
- client.Player.GetClan.BirdCityClan = false;
- client.Player.GetClan.BirdIslandClan = false;
- client.Player.GetClan.ApeCityClan = false;
- client.Player.GetClan.LoveCanyonClan = false;
- client.Player.GetClan.PhoenixCastleClan = false;
- client.Player.GetClan.MapleForestClan = false;
- }
- public static void ApplyDesertCityClan(Client.GameState client)
- {
- client.Player.GetClan.TwinCityClan = false;
- client.Player.GetClan.WindPlainClan = false;
- client.Player.GetClan.DesertCityClan = true;
- client.Player.GetClan.DesertClan = false;
- client.Player.GetClan.BirdCityClan = false;
- client.Player.GetClan.BirdIslandClan = false;
- client.Player.GetClan.ApeCityClan = false;
- client.Player.GetClan.LoveCanyonClan = false;
- client.Player.GetClan.PhoenixCastleClan = false;
- client.Player.GetClan.MapleForestClan = false;
- }
- public static void ApplyDesertClan(Client.GameState client)
- {
- client.Player.GetClan.TwinCityClan = false;
- client.Player.GetClan.WindPlainClan = false;
- client.Player.GetClan.DesertCityClan = false;
- client.Player.GetClan.DesertClan = true;
- client.Player.GetClan.BirdCityClan = false;
- client.Player.GetClan.BirdIslandClan = false;
- client.Player.GetClan.ApeCityClan = false;
- client.Player.GetClan.LoveCanyonClan = false;
- client.Player.GetClan.PhoenixCastleClan = false;
- client.Player.GetClan.MapleForestClan = false;
- }
- public static void ApplyBirdCityClan(Client.GameState client)
- {
- client.Player.GetClan.TwinCityClan = false;
- client.Player.GetClan.WindPlainClan = false;
- client.Player.GetClan.DesertCityClan = false;
- client.Player.GetClan.DesertClan = false;
- client.Player.GetClan.BirdCityClan = true;
- client.Player.GetClan.BirdIslandClan = false;
- client.Player.GetClan.ApeCityClan = false;
- client.Player.GetClan.LoveCanyonClan = false;
- client.Player.GetClan.PhoenixCastleClan = false;
- client.Player.GetClan.MapleForestClan = false;
- }
- public static void ApplyBirdIslandClan(Client.GameState client)
- {
- client.Player.GetClan.TwinCityClan = false;
- client.Player.GetClan.WindPlainClan = false;
- client.Player.GetClan.DesertCityClan = false;
- client.Player.GetClan.DesertClan = false;
- client.Player.GetClan.BirdCityClan = false;
- client.Player.GetClan.BirdIslandClan = true;
- client.Player.GetClan.ApeCityClan = false;
- client.Player.GetClan.LoveCanyonClan = false;
- client.Player.GetClan.PhoenixCastleClan = false;
- client.Player.GetClan.MapleForestClan = false;
- }
- public static void ApplyApeCityClan(Client.GameState client)
- {
- client.Player.GetClan.TwinCityClan = false;
- client.Player.GetClan.WindPlainClan = false;
- client.Player.GetClan.DesertCityClan = false;
- client.Player.GetClan.DesertClan = false;
- client.Player.GetClan.BirdCityClan = false;
- client.Player.GetClan.BirdIslandClan = false;
- client.Player.GetClan.ApeCityClan = true;
- client.Player.GetClan.LoveCanyonClan = false;
- client.Player.GetClan.PhoenixCastleClan = false;
- client.Player.GetClan.MapleForestClan = false;
- }
- public static void ApplyLoveCanyonClan(Client.GameState client)
- {
- client.Player.GetClan.TwinCityClan = false;
- client.Player.GetClan.WindPlainClan = false;
- client.Player.GetClan.DesertCityClan = false;
- client.Player.GetClan.DesertClan = false;
- client.Player.GetClan.BirdCityClan = false;
- client.Player.GetClan.BirdIslandClan = false;
- client.Player.GetClan.ApeCityClan = false;
- client.Player.GetClan.LoveCanyonClan = true;
- client.Player.GetClan.PhoenixCastleClan = false;
- client.Player.GetClan.MapleForestClan = false;
- }
- public static void ApplyPhoenixCastleClan(Client.GameState client)
- {
- client.Player.GetClan.TwinCityClan = false;
- client.Player.GetClan.WindPlainClan = false;
- client.Player.GetClan.DesertCityClan = false;
- client.Player.GetClan.DesertClan = false;
- client.Player.GetClan.BirdCityClan = false;
- client.Player.GetClan.BirdIslandClan = false;
- client.Player.GetClan.ApeCityClan = false;
- client.Player.GetClan.LoveCanyonClan = false;
- client.Player.GetClan.PhoenixCastleClan = true;
- client.Player.GetClan.MapleForestClan = false;
- }
- public static void ApplyMapleForestClan(Client.GameState client)
- {
- client.Player.GetClan.TwinCityClan = false;
- client.Player.GetClan.WindPlainClan = false;
- client.Player.GetClan.DesertCityClan = false;
- client.Player.GetClan.DesertClan = false;
- client.Player.GetClan.BirdCityClan = false;
- client.Player.GetClan.BirdIslandClan = false;
- client.Player.GetClan.ApeCityClan = false;
- client.Player.GetClan.LoveCanyonClan = false;
- client.Player.GetClan.PhoenixCastleClan = false;
- client.Player.GetClan.MapleForestClan = true;
- }
- #endregion
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement