public static bool Valid(Client.GameClient client) { if (!client.Socket.Alive || client.Entity == null || client == null) { client.Disconnect(); return(false); } return(true); }
public static void GameServer_OnClientReceive(byte[] buffer2, int length, ClientWrapper wrapper) { byte[] buffer = new byte[length]; Buffer.BlockCopy(buffer2, 0, buffer, 0, length); if (wrapper.Connector == null) { wrapper.Disconnect(); return; } Client.GameClient gameClient = wrapper.Connector as Client.GameClient; #region Split { var str = Game.PacketHandler.BytesToString(buffer); if (str.Contains("F2 F1")) { var split = str.Split(new string[] { " F2 F1 " }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < split.Length; i++) { byte[] buf = new byte[split[i].Length + 1]; buf[buf.Length - 1] = 0xF2; if (i == 0) { Buffer.BlockCopy(Game.PacketHandler.StringToBytes(split[i]), 0, buf, 0, Game.PacketHandler.StringToBytes(split[i]).Length); } else { Buffer.BlockCopy(Game.PacketHandler.StringToBytes(split[i]), 0, buf, 1, Game.PacketHandler.StringToBytes(split[i]).Length); byte[] buf2 = new byte[buf.Length + 1]; Buffer.BlockCopy(buf, 0, buf2, 1, buf.Length); buf[0] = 0xF1; } var packet2 = new GamePackets.Packet(buffer); packet2.Deserialize(buffer); if (CapturePackets) { Console.WriteLine("Captured a packet from Client (GAME Server) Length: " + buffer.Length + " Type: (" + buffer[3] + "-" + buffer[4] + "-" + buffer[5] + ")"); } Game.PacketHandler.Process(gameClient, packet2); } return; } } #endregion var packet = new GamePackets.Packet(buffer); packet.Deserialize(buffer); if (CapturePackets) { Console.WriteLine("Captured a packet from Client (GAME Server) Length: " + buffer.Length + " Type: (" + buffer[3] + "-" + buffer[4] + "-" + buffer[5] + ")"); } Game.PacketHandler.Process(gameClient, packet); }
public bool Register(Client.GameClient client) { if (client.TimerSubscriptions == null) { client.TimerSyncRoot = new object(); client.TimerSubscriptions = new IDisposable[] { Subscribe(Characters, client) }; return(true); } return(false); }
public void Unregister(Client.GameClient client) { if (client.TimerSubscriptions == null) { return; } lock (client.TimerSyncRoot) { if (client.TimerSubscriptions != null) { foreach (var timer in client.TimerSubscriptions) { timer.Dispose(); } client.TimerSubscriptions = null; } } }
private void CharactersCallback(Client.GameClient client, int time) { if (!Valid(client)) { return; } Time32 Now = new Time32(time); #region Announce if (Now >= client.Entity.Announce.AddSeconds(Constants.delayBetweenShowAnnounce) && client.Account.Server != null) { Game.PacketHandler.Announce(client, Constants.ServerAnnounce); client.Entity.Announce = Time32.Now; } #endregion #region Fever if (Now >= client.Entity.FeverTime.AddMinutes(1) && client.Account.Server != null) { //If the player is playing the Fever will increase 3% every 1 min but if he only logged and on the lobby it will increase 1% every 1 min //I'm leaving it 1% 'till i code the PVP byte oldVal = client.Entity.FPercent; client.Entity.FPercent++; client.Entity.FeverTime = Time32.Now; if (oldVal < 33 && client.Entity.FPercent >= 33) { client.Entity.MP += 10; Game.PacketHandler.SendFeverReward(client, 10, 1); } if (oldVal < 66 && client.Entity.FPercent >= 66) { client.Entity.MP += 10; Game.PacketHandler.SendFeverReward(client, 10, 2); } } #endregion }
public static void GameServer_OnClientConnect(ClientWrapper obj) { Client.GameClient client = new Client.GameClient(obj); obj.Connector = client; }