public static void BeginArcher() { Client.GameState[] client = Conquer_Online_Server.ServerBase.Kernel.GamePool.Values.ToArray(); foreach (Client.GameState clientss in client) { if (clientss.Entity.Class >= 40 && clientss.Entity.Class <= 45) { Network.GamePackets.NpcReply npc = new Network.GamePackets.NpcReply(6, "The Archer ClassPK Tournament has Started! You Wana Join?"); npc.OptionID = 243; clientss.Send(npc.ToArray()); } } Stage = PKTournamentStage.Inviting; while (CountDown > 0) { if (CountDown == 60) Broadcast("60 seconds until start", BroadCastLoc.World); else if (CountDown == 10) { Stage = PKTournamentStage.Countdown; //if (PKTHash.Count < 2) //{ // Broadcast("The tournament requires atleast 2 people to start, Tournament Cancelled.", BroadCastLoc.World); // Stage = PKTournamentStage.None; // PKTHash = null; // return; //} Broadcast("10 seconds until start", BroadCastLoc.World); } else if (CountDown < 9) Broadcast(CountDown + " seconds until start", BroadCastLoc.World); CountDown--; Thread.Sleep(1000); } Stage = PKTournamentStage.Fighting; Broadcast("Fight!", BroadCastLoc.World); WaitForClass(); }
public static void StartTournament() { PKTHash2 = new Dictionary<uint, Client.GameState>(); CountDown = 320; Stage = PKTournamentStage.Inviting; Map = 1858; X = 70; Y = 70; PkThread = new Thread(new ThreadStart(BeginTournament)); PkThread.IsBackground = true; PkThread.Start(); }
public static void WaitForWinner() { Database.PkWarEvent3.ResetTopTrojan2(); Database.PkWarEvent3.ResetTopArcher2(); Database.PkWarEvent3.ResetTopFire2(); Database.PkWarEvent3.ResetTopMonk2(); Database.PkWarEvent3.ResetTopNinja2(); Database.PkWarEvent3.ResetTopWarrior2(); Database.PkWarEvent3.ResetTopWater2(); PKTournament.Stage = PKTournamentStage.Fighting; uint Tick = (uint)Environment.TickCount; int InMapAlive = PKTHash2.Count; while (true) { int alive = 0; foreach (Conquer_Online_Server.Client.GameState players in Conquer_Online_Server.ServerBase.Kernel.GamePool.Values) if (players.Entity.MapID == 1858 && (!players.Entity.Dead)) alive++; foreach (Client.GameState _GC in PKTHash2.Values) { if (_GC.InPKT) if (_GC.Entity.Dead == true) { InMapAlive--; _GC.Entity.Teleport(1002, 438, 382); _GC.InPKT = false; } //else if (!ServerBase.Kernel.GamePool.ContainsKey(_GC.Entity.UID)) //{ // InMapAlive--; // _GC.Entity.Teleport(1002, 438, 382); // _GC.InPKT = false; //} } System.Threading.Thread.Sleep(5000); foreach (Client.GameState _GC in PKTHash2.Values) { if (_GC.InPKT) if (alive == 1) { _GC.Entity.Teleport(1002, 438, 382); AwardClass(_GC); ServerBase.Kernel.srs = false; Stage = PKTournamentStage.Over; return; } } if (InMapAlive != 1) { Broadcast("There are " + InMapAlive + " Alive ", BroadCastLoc.Map); } Thread.Sleep(1000); } }
private static void AwardWinner(Client.GameState Winner) { if (Winner.Entity.VIPLevel > 0) { Broadcast(Winner.Entity.Name + " has won the tournament !He WIn 8.000Cps and WeeklyPKChampion Top cause he VIP", BroadCastLoc.World); Winner.Entity.WeeklyPKChampion += 1; Winner.Entity.ConquerPoints += 8000; } else { Broadcast(Winner.Entity.Name + " has won the tournament !He WIn 4.000Cps and WeeklyPKChampion Top P", BroadCastLoc.World); Winner.Entity.WeeklyPKChampion += 1; Winner.Entity.ConquerPoints += 4000; } PKTournament.Stage = PKTournamentStage.None; PkThread.Abort(); return; }
private static void AwardClass(Client.GameState Winner) { #region Ninja if (Winner.Entity.Class >= 50 && Winner.Entity.Class <= 55) { if (Winner.Entity.VIPLevel > 0) { Broadcast(Winner.Entity.Name + " Has Wins ClassPk War! Ninja and Got 8k CPs And TopClassNinja casue he VIp", BroadCastLoc.World); Winner.Entity.TopNinja += 1; } else { Broadcast(Winner.Entity.Name + " Has Wins ClassPk War! Ninja and Got 4k CPs And TopClassNinja", BroadCastLoc.World); Winner.Entity.TopNinja += 1; } } #endregion #region Warrior if (Winner.Entity.Class >= 20 && Winner.Entity.Class <= 25) { if (Winner.Entity.VIPLevel > 0) { Broadcast(Winner.Entity.Name + " Has Wins ClassPk War! Worrior and Got 8k CPs And TopClassWorrior casu he VIP", BroadCastLoc.World); Winner.Entity.TopWarrior += 1; } else { Broadcast(Winner.Entity.Name + " Has Wins ClassPk War! Worrior and Got 4k CPs And TopClassWorrior", BroadCastLoc.World); Winner.Entity.TopWarrior += 1; } } #endregion #region Archer if (Winner.Entity.Class >= 40 && Winner.Entity.Class <= 45) { if (Winner.Entity.VIPLevel > 0) { Broadcast(Winner.Entity.Name + " Has Wins ClassPk War! Archer and Got 8k CPs And TopClassArcher", BroadCastLoc.World); Winner.Entity.TopArcher += 1; } else { Broadcast(Winner.Entity.Name + " Has Wins ClassPk War! Archer and Got 4k CPs And TopClassArcher", BroadCastLoc.World); Winner.Entity.TopArcher += 1; } } #endregion #region Trojan if (Winner.Entity.Class >= 10 && Winner.Entity.Class <= 15) { if (Winner.Entity.VIPLevel > 0) { Broadcast(Winner.Entity.Name + " Has Wins ClassPk War! Trojan and Got 8k CPs And TopClassTrojan cause He VIP", BroadCastLoc.World); Winner.Entity.TopTrojan += 1; } else { Broadcast(Winner.Entity.Name + " Has Wins ClassPk War! Trojan and Got 4k CPs And TopClassTrojan", BroadCastLoc.World); Winner.Entity.TopTrojan += 1; } } #endregion #region Water if (Winner.Entity.Class >= 130 && Winner.Entity.Class <= 135) { if (Winner.Entity.VIPLevel > 0) { Broadcast(Winner.Entity.Name + " Has Wins ClassPk War! Water and Got 8k CPs And TopClassWaterToist case he VIP", BroadCastLoc.World); Winner.Entity.TopWaterTaoist += 1; } else { Broadcast(Winner.Entity.Name + " Has Wins ClassPk War! Water and Got 4k CPs And TopClassWaterToist", BroadCastLoc.World); Winner.Entity.TopWaterTaoist += 1; } } #endregion #region Fire if (Winner.Entity.Class >= 140 && Winner.Entity.Class <= 145) { if (Winner.Entity.VIPLevel > 0) { Broadcast(Winner.Entity.Name + " Has Wins ClassPk War! Toist and Got 8k CPs And TopClassFireToist case he Vip", BroadCastLoc.World); Winner.Entity.TopFireTaoist += 1; } else { Broadcast(Winner.Entity.Name + " Has Wins ClassPk War! Toist and Got 4k CPs And TopClassFireToist", BroadCastLoc.World); Winner.Entity.TopFireTaoist += 1; } } #endregion #region Monk if (Winner.Entity.Class >= 60 && Winner.Entity.Class <= 65) { if (Winner.Entity.VIPLevel > 0) { Broadcast(Winner.Entity.Name + " Has Wins ClassPk War! Monk and Got 8k CPs And TopClassMonk case he VIP", BroadCastLoc.World); Winner.Entity.TopMonk += 1; } else { Broadcast(Winner.Entity.Name + " Has Wins ClassPk War! Monk and Got 4k CPs And TopClassMonk", BroadCastLoc.World); Winner.Entity.TopMonk += 1; } } #endregion if (Winner.Entity.VIPLevel > 0) { Winner.Entity.ConquerPoints += 8000; } else { Winner.Entity.ConquerPoints += 4000; } PKTournament.Stage = PKTournamentStage.None; PkThread.Abort(); return; }
public static void WaitForWinner() { //Main.GameClient GC // Main.GameClient GCs = new NewestCOServer.Game.Character(); PKTournament.Stage = PKTournamentStage.Fighting; uint Tick = (uint)Environment.TickCount; int InMapAlive = PKTHash.Count; while (true) { int alive = 0; foreach (Conquer_Online_Server.Client.GameState players in Conquer_Online_Server.ServerBase.Kernel.GamePool.Values) if (players.Entity.MapID == 1507 && (!players.Entity.Dead)) alive++; foreach (Client.GameState _GC in PKTHash.Values) { if (_GC.InPKT) if (_GC.Entity.Dead == true) { InMapAlive--; _GC.Entity.Teleport(1002, 438, 382); _GC.InPKT = false; } //else if (!ServerBase.Kernel.GamePool.ContainsKey(_GC.Entity.UID)) //{ // InMapAlive--; // _GC.Entity.Teleport(1002, 438, 382); // _GC.InPKT = false; //} } System.Threading.Thread.Sleep(2000); foreach (Client.GameState _GC in PKTHash.Values) { if (_GC.InPKT) if (alive == 1) { _GC.Entity.Teleport(1002, 438, 382); AwardWinner(_GC); Stage = PKTournamentStage.Over; ServerBase.Kernel.PK = false; return; } } if (InMapAlive != 1) { Broadcast("There are " + InMapAlive + " Alive ", BroadCastLoc.Map); } Thread.Sleep(1000); } }
public static void StartTournamentWarrior() { PKTHash = new Dictionary<uint, Client.GameState>(); CountDown = 320; Stage = PKTournamentStage.Inviting; Map = 1787; X = 50; Y = 50; PkThread = new Thread(new ThreadStart(BeginWarrior)); PkThread.IsBackground = true; PkThread.Start(); }