Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Conquer_Online_Server.Database; namespace Conquer_Online_Server.Game.Tournaments { public enum Tournamet_Type { LeveL100, LeveL119, LeveL129, LeveL130 } public enum top_typ { Elite_PK_Champion__Low_ = 12, Elite_PK_2nd_Place_Low_ = 13, Elite_PK_3rd_Place_Low_ = 14, Elite_PK_Top_8__Low_ = 15, Elite_PK_Champion_High_ = 16, Elite_PK_2nd_Place_High_ = 17, Elite_PK_3rd_Place__High_ = 18, Elite_PK_Top_8_High_ = 19 } public class Elite_client { public uint Points = 0; public uint UID = 0; public ushort Avatar = 0; public ushort Mesh = 0; public string Name = ""; public ushort Postion = 0; public byte MyTitle = 0; public Elite_client(Client.GameState client) { this.UID = client.Entity.UID; this.Avatar = client.Entity.Face; this.Mesh = client.Entity.Body; this.Name = client.Entity.Name; } public Elite_client(uint _uid, ushort _avatar, ushort _mesh, string _name, uint _points, ushort Position, byte Tytle) { this.MyTitle = Tytle; this.Postion = Position; this.Points = _points; this.UID = _uid; this.Avatar = _avatar; this.Mesh = _mesh; this.Name = _name; } } public class EliteTournament { public static Dictionary<uint, Elite_client> Elite_PK_Tournament = new Dictionary<uint, Elite_client>(500); public static Dictionary<uint, Elite_client> Top8 = new Dictionary<uint, Elite_client>(10); public void LoginClient(Client.GameState client) { if (!Start) { if (Top8.ContainsKey(client.Entity.UID)) { client.Entity.Elite = Top8[client.Entity.UID]; CreatePacket(client); } } } public void CreatePacket(Client.GameState client) { client.Entity.TitlePacket = new Network.GamePackets.TitlePacket(true); client.Entity.TitlePacket.UID = client.Entity.UID; client.Entity.TitlePacket.Type = 4; client.Entity.TitlePacket.dwParam = 1; client.Entity.TitlePacket.dwParam2 = Top8[client.Entity.UID].MyTitle; } public void DeleteTabelInstances() { foreach (Elite_client client in Top8.Values) { MySqlCommand cmd = new MySqlCommand(MySqlCommandType.DELETE); int res = cmd.Delete("elitepk", "UID", client.UID).Execute(); } } public void LoadTop8() { MySqlCommand cmd = new MySqlCommand(MySqlCommandType.SELECT); cmd.Select("elitepk"); MySqlReader r = new MySqlReader(cmd); while (r.Read()) { Elite_client client = new Elite_client( r.ReadUInt32("UID") , r.ReadUInt16("Avatar") , r.ReadUInt16("Mesh") , r.ReadString("Name") , r.ReadUInt32("Points") , r.ReadUInt16("Postion") , r.ReadByte("MyTitle") ); if (!Top8.ContainsKey(client.UID)) Top8.Add(client.UID, client); } r.Close(); } public void SaveTop8() { foreach (Elite_client client in Top8.Values) { MySqlCommand cmd = new MySqlCommand(MySqlCommandType.INSERT); cmd.Insert("elitepk") .Insert("UID", client.UID).Insert("Avatar", client.Avatar) .Insert("Mesh", client.Mesh).Insert("Name", client.Name) .Insert("Points", client.Points).Insert("Postion", client.Postion) .Insert("MyTitle", client.MyTitle); cmd.Execute(); } } public EliteTournament() { LoadTop8(); } public void Open() { if (!Start) { DeleteTabelInstances(); Start = true; CalculateTime = DateTime.Now; StartTimer = DateTime.Now; SendInvitation(); Elite_PK_Tournament.Clear(); Top8.Clear(); } } public void Open(int hour, int minute) { if (DateTime.Now.Minute == minute && DateTime.Now.Hour == hour) { if (!Start) { DeleteTabelInstances(); Start = true; CalculateTime = DateTime.Now; StartTimer = DateTime.Now; SendInvitation(); Elite_PK_Tournament.Clear(); Top8.Clear(); } } } public void SendInvitation() { Client.GameState[] client = Conquer_Online_Server.ServerBase.Kernel.GamePool.Values.ToArray(); foreach (Client.GameState clientss in client) { Network.GamePackets.NpcReply npc = new Network.GamePackets.NpcReply(6, "The Elite Tournament has Started! You Wana Join?"); npc.OptionID = 249; clientss.Send(npc.ToArray()); } } private DateTime CalculateTime; public void SendThis() { if (Start) { if (DateTime.Now > CalculateTime.AddSeconds(7)) { CalculateTime = DateTime.Now; CalculateRank(); Client.GameState[] Clients = Conquer_Online_Server.ServerBase.Kernel.GamePool.Values.ToArray(); foreach (Client.GameState client in Clients) { if (client.Entity.MapID == Mapid) { SendScore(client); } } Finish(); } } } public void Finish() { if (Start) { if (DateTime.Now > StartTimer.AddMinutes(15)) { CalculateRank(); Client.GameState[] Clients = Conquer_Online_Server.ServerBase.Kernel.GamePool.Values.ToArray(); foreach (Client.GameState client in Clients) { if (client.Entity.MapID == Mapid) { this.ObtinedOutCoord(client); this.ObtinedReward(client); } } SaveTop8(); Start = false; } } } public void ObtinedReward(Client.GameState client) { switch (client.Entity.Elite.Postion) { case 1: { client.Entity.Elite.MyTitle = (byte)top_typ.Elite_PK_Champion_High_; client.Entity.ConquerPoints += 100000; break; } case 2: { client.Entity.Elite.MyTitle = (byte)top_typ.Elite_PK_2nd_Place_High_; client.Entity.ConquerPoints += 50000; break; } case 3: { client.Entity.Elite.MyTitle = (byte)top_typ.Elite_PK_3rd_Place__High_; client.Entity.ConquerPoints += 30000; break; } default: { client.Entity.Elite.MyTitle = (byte)top_typ.Elite_PK_Top_8_High_; client.Entity.ConquerPoints += 10000; break; } } CreatePacket(client); } public DateTime StartTimer; public bool Start = false; private ushort Mapid = 6002; public void AddMap(Client.GameState client) { if (Start) { client.Entity.Elite = new Elite_client(client); if (!Elite_PK_Tournament.ContainsKey(client.Entity.UID)) Elite_PK_Tournament.Add(client.Entity.Elite.UID, client.Entity.Elite); else { Elite_PK_Tournament[client.Entity.UID].Points = 0; } ObtinedCoord(client); } } public void ObtinedOutCoord(Client.GameState client) { byte Rand = (byte)Conquer_Online_Server.ServerBase.Kernel.Random.Next(1, 4); switch (Rand) { case 1: client.Entity.Teleport(1002, 391, 371); break; case 2: client.Entity.Teleport(1002, 392, 323); break; case 3: client.Entity.Teleport(1002, 475, 373); break; case 4: client.Entity.Teleport(1002, 405, 246); break; } } public void ObtinedCoord(Client.GameState client) { byte Rand = (byte)Conquer_Online_Server.ServerBase.Kernel.Random.Next(1, 10); switch (Rand) { case 1: client.Entity.Teleport(Mapid, 17, 80); break; case 2: client.Entity.Teleport(Mapid, 47, 99); break; case 3: client.Entity.Teleport(Mapid, 101, 118); break; case 4: client.Entity.Teleport(Mapid, 141, 109); break; case 5: client.Entity.Teleport(Mapid, 88, 50); break; case 6: client.Entity.Teleport(Mapid, 78, 23); break; case 7: client.Entity.Teleport(Mapid, 63, 47); break; case 8: client.Entity.Teleport(Mapid, 72, 79); break; case 9: client.Entity.Teleport(Mapid, 94, 95); break; case 10: client.Entity.Teleport(Mapid, 121, 114); break; } } public void SendScore(Client.GameState client) { if (Start) { for (uint x = 1; x < 9; x++) { string Mesage = ""; foreach (Elite_client clients in Top8.Values) { if (clients.Postion == x) { Mesage = "No." + x + " " + clients.Name + ": Score: " + clients.Points + ""; } } Network.GamePackets.Message msg = new Network.GamePackets.Message(Mesage, System.Drawing.Color.Red, x == 1 ? Network.GamePackets.Message.FirstRightCorner : Network.GamePackets.Message.ContinueRightCorner); client.Send(msg); } } } public void CalculateRank() { if (Start) { Dictionary<uint, ulong> ToIndex = new Dictionary<uint, ulong>(); uint CurKey = 0; int Rank = 1; for (short x = 0; x < Elite_PK_Tournament.Count; x++) { if (Rank == 9) break; ulong Value = 0; foreach (uint K in Elite_PK_Tournament.Keys) { if (Elite_PK_Tournament[K].Points >= Value && !ToIndex.ContainsKey(K)) { Value = Elite_PK_Tournament[K].Points; CurKey = K; } } if (!ToIndex.ContainsKey(CurKey)) ToIndex.Add(CurKey, Value); if (Elite_PK_Tournament.ContainsKey(CurKey)) { Elite_PK_Tournament[CurKey].Postion = (ushort)Rank; } Rank++; } lock (Top8) { Top8.Clear(); for (byte x = 1; x < 10; x++) { foreach (Elite_client client in Elite_PK_Tournament.Values) { if (client.Postion == x) { Top8.Add(client.UID, client); } } } } } } } }
btw When i Find it It Stands on Client.Entity.Elite.Title Line i dont know y although i added Elite Pk Saving , loading system in my database
Code:
client.Entity.Elite.MyTitle = (byte)top_typ.Elite_PK_Champion_High_; client.Entity.Elite.UID = client.Entity.UID; client.Inventory.Add(720717, 0, 1);
Code:
System.NullReferenceException: Object reference not set to an instance of an object. at Conquer_Online_Server.Dialogs.GetDialog(NpcRequest npcRequest, GameState client) in B:\1.Conquer World\Conquer Making\CrazyZeroVb.V.2\NPCS.cs:line 13884 at Conquer_Online_Server.Network.PacketHandler.HandlePacket(Byte[] packet, GameState client) in B:\1.Conquer World\Conquer Making\CrazyZeroVb.V.2\Network\PacketHandler.cs:line 1616 at Conquer_Online_Server.Network.PacketHandler.HandleBuffer(Byte[] buffer, GameState client) in B:\1.Conquer World\Conquer Making\CrazyZeroVb.V.2\Network\PacketHandler.cs:line 52 at Conquer_Online_Server.Program.GameServer_AnnounceReceive(Byte[] arg1, ISocketWrapper arg2) in B:\1.Conquer World\Conquer Making\CrazyZeroVb.V.2\Program.cs:line 1582 at Conquer_Online_Server.Network.Sockets.AsyncSocket.AsyncReceive(IAsyncResult res) in B:\1.Conquer World\Conquer Making\CrazyZeroVb.V.2\Network\Sockets\AsyncSocket.cs:line 89