public void SCAdd(CSClient session, SCAdd message) { foreach (var c in Program.server.Clients) { c.Player.Character.Friends.ConnectFriend(message.btName.MakeString(), message.Server); } }
public void SServerList(CSClient session, CSServerList message) { Program.ServerList = message.List.Take((message.CountH << 8) + message.CountL).Select(x => new MU.Network.Auth.ServerDto { type = x.Type, data1 = 32, data2 = 0, gold = 0, server = x.Index, }); }
public void SCRem(CSClient session, SCRem message) { foreach (var c in Program.server.Clients) { foreach (var p in message.List) { c.Player.Character.Friends.DisconnectFriend(p.btName.MakeString()); } } }
private static void Worker(object param) { CSClient instance = param as CSClient; while (true) { Thread.Sleep(10000); instance.SendAsync(new CKeepAlive { Index = instance.Index, Load = (byte)instance._server.Load, Token = instance._token }); } }
public void SCAdd(CSClient session, SCAdd message) { foreach (var c in Program.server.Clients.Where(x => x.Player != null && x.Player.Status == MU.Resources.LoginStatus.Playing)) { var name = message.btName.MakeString(); c.Player.Character.Friends.ConnectFriend(name, message.Server); var m = c.Player.Character.Guild?.Find(name) ?? null; if (m != null && message.Server != Program.ServerCode) { m.Server = message.Server; } } }
public void SCRem(CSClient session, SCRem message) { foreach (var c in Program.server.Clients.Where(x => x.Player != null && x.Player.Status == MU.Resources.LoginStatus.Playing)) { foreach (var p in message.List) { var name = p.btName.MakeString(); c.Player.Character?.Friends.DisconnectFriend(name); var m = c.Player.Character.Guild?.Find(name) ?? null; if (m != null && message.Server != Program.ServerCode) { m.Server = 0xff; } } } }
private static async void ReceiveCallback(IAsyncResult ar) { CSClient instance = ar.AsyncState as CSClient; var messages = new List <object>(); try { var btRecived = instance._client.Client.EndReceive(ar); if (btRecived == 0) { instance._client.Client.Disconnect(false); return; } //Logger.Information($"Receive " + btRecived + " Buffer:" + string.Join("", instance._buffer.Select(x => x.ToString("X2")))); using (var mem = new MemoryStream(instance._buffer, 0, btRecived)) { int readed = 0; do { short serial; readed += instance._decoder.Decode(mem, out serial, messages); } while (readed < mem.Length); } foreach (var message in messages) { foreach (var handler in instance._handler) { await handler.OnMessageReceived(instance, message); } } instance._client.Client .BeginReceive(instance._buffer, 0, 1024, SocketFlags.None, ReceiveCallback, instance); } catch (Exception) { instance._client.Client.Disconnect(false); } }
private static void ReceiveCallback(IAsyncResult ar) { CSClient instance = ar.AsyncState as CSClient; var messages = new List <object>(); try { var btRecived = instance._client.Client.EndReceive(ar); if (btRecived == 0) { instance._client.Client.Disconnect(false); return; } using (var mem = new MemoryStream(instance._buffer, 0, btRecived)) { int readed = 0; do { short serial; readed += instance._decoder.Decode(mem, out serial, messages); } while (readed < mem.Length); } foreach (var message in messages) { foreach (var handler in instance._handler) { handler.OnMessageReceived(instance, message); } } } catch (Exception) { instance._client.Client.Disconnect(false); } }