private void MapImg_Click(object sender, EventArgs e) { MouseEventArgs me = (MouseEventArgs)e; Point coordinates = me.Location; OutPut.AppendText(Environment.NewLine + "[Click] x:" + coordinates.X + " y:" + coordinates.Y); }
private void WriteLog(object sendingProcess, DataReceivedEventArgs outLine) { if (!string.IsNullOrEmpty(outLine.Data)) { OutPut.Dispatcher.Invoke(new Action(delegate { OutPut.AppendText(outLine.Data + "\r\n"); })); } }
public async Task Send(ClientWebSocket webSocket, string stringToSend) { if (webSocket.CloseStatus == WebSocketCloseStatus.NormalClosure) { OutPut.AppendText(Environment.NewLine + "Rcon websocket closed with msg: " + webSocket.CloseStatusDescription); } else { byte[] sendBytes = Encoding.UTF8.GetBytes(stringToSend + Environment.NewLine); var sendBuffer = new ArraySegment <byte>(sendBytes); await webSocket.SendAsync(sendBuffer, WebSocketMessageType.Text, false, cts.Token); OutPut.AppendText(Environment.NewLine + "Client: " + stringToSend); } }
public void OutPutPingServer() { if (Status != null) { OutPut.AppendText( " Server is UP" + Environment.NewLine + " CurrentVersion: " + Status.version.io + Environment.NewLine + " CurrentTime: " + Status.env.time + Environment.NewLine + " Players: " + Status.players + " / " + Status.maxplayers + Environment.NewLine + " Sleepers: " + Status.sleepers + Environment.NewLine + " Level:" + Status.level + Environment.NewLine + " World Size: " + Status.world.size + Environment.NewLine + " World Seed:" + Status.world.seed + Environment.NewLine); } else { OutPut.AppendText(" Server is not responding" + Environment.NewLine); } }
private void wsGreet() { try { var uri = "ws://" + SettingsForm.ServerNameBox.Text + ":" + SettingsForm.ServerPortBox.Text + "/ms"; WSArray.Add(new ClientWebSocket()); WSArray[0].Options.SetRequestHeader("Origin", "http://playrust.io"); WSArray[0].Options.Cookies = new CookieContainer(); // Build session cookie Cookie SIDCookie = new Cookie() { Name = "sid", Value = SettingsForm.SIDBox.Text, Domain = SettingsForm.ServerNameBox.Text }; WSArray[0].Options.Cookies.Add(SIDCookie); // Connect to websocket WSArray[0].ConnectAsync(new Uri(uri), cts.Token); while (WSArray[0].State != WebSocketState.Open) { //Wait for the socket to be connected and open } // Recive data Task.WhenAll(Receive(WSArray[0])); } catch (Exception ex) { OutPut.AppendText("Error: " + ex.Message + Environment.NewLine); } }
public async Task Receive(ClientWebSocket webSocket) { byte[] buffer = new byte[1024]; string wsTextResponse = string.Empty; while (webSocket.State != WebSocketState.Closed) { //WebSocket.CreateClientBuffer() var result = await webSocket.ReceiveAsync(new ArraySegment <byte>(buffer), cts.Token); if (result.MessageType == WebSocketMessageType.Close) { await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, cts.Token); } else { // Clean string wsTextResponse = Uri.UnescapeDataString(Encoding.UTF8.GetString(buffer).Replace("\0", "")); // Main loop if (wsTextResponse.Length > 0) { String[] CommandLst = wsTextResponse.Split(new[] { ' ' }, 2); DateTime timestamp = DateTime.Now; Models.world.@object WorldObject = null; // Records type switch (CommandLst[0]) { case "hello": OutPut.AppendText(Environment.NewLine + "Server synced: Hello CMD"); break; case "l": case "s": case "b": case "p": case "S": case "h": Models.world.@object InWorldObject = Newtonsoft.Json.JsonConvert.DeserializeObject <Models.world.@object>(CommandLst[1]); WorldObject = WorldObjects.Where(wo => wo.id == InWorldObject.id).FirstOrDefault(); if (WorldObject == null) { // Give Object a Icon InWorldObject = MapMgr.LoadWorldObjectImage(InWorldObject, CommandLst[0], MapImg); // Add Object WorldObjects.Add(InWorldObject); } else { // Set Icon InWorldObject.Icon = WorldObject.Icon; // Update Object var ValidCustomers = WorldObjects.Where(c => c.id == InWorldObject.id).ToList(); ValidCustomers.ForEach(wo => { wo.x = InWorldObject.x; wo.z = InWorldObject.z; wo.r = InWorldObject.r; wo.k = InWorldObject.k; }); } MapMgr.DrawMovingWorldObjects(WorldObjects, MapImg, Status); break; case "player.death": Models.player.death PlayerDeath = Newtonsoft.Json.JsonConvert.DeserializeObject <Models.player.death>(CommandLst[1]); OutPut.AppendText(Environment.NewLine + "{" + timestamp.ToString() + "}" + "[" + PlayerDeath.id + "] " + PlayerDeath.name + " was killed by " + PlayerDeath.lastDamage); break; case "player.chat": Models.player.chat PlayerChat = Newtonsoft.Json.JsonConvert.DeserializeObject <Models.player.chat>(CommandLst[1]); // I think 0 means the websocket chat is disabled if (PlayerChat.message == "0" | PlayerChat.message == "1") { OutPut.AppendText(Environment.NewLine + "{" + timestamp.ToString() + "}" + PlayerChat.name + " says something"); } else { OutPut.AppendText(Environment.NewLine + "{" + timestamp.ToString() + "}" + PlayerChat.name + ": " + PlayerChat.message); } break; case "player.spawn": Models.player.spawn PlayerSpawn = Newtonsoft.Json.JsonConvert.DeserializeObject <Models.player.spawn>(CommandLst[1]); OutPut.AppendText(Environment.NewLine + "{" + timestamp.ToString() + "}" + "[" + PlayerSpawn.id + "] " + PlayerSpawn.name + " has respawn"); break; case "player.connect": Models.player.connect PlayerConnect = Newtonsoft.Json.JsonConvert.DeserializeObject <Models.player.connect>(CommandLst[1]); OutPut.AppendText(Environment.NewLine + "{" + timestamp.ToString() + "}" + "[" + PlayerConnect.id + "] " + PlayerConnect.name + " has connected"); break; case "session": Session = Newtonsoft.Json.JsonConvert.DeserializeObject <Models.server.Session>(CommandLst[1]); OutPut.AppendText(Environment.NewLine + "{" + timestamp.ToString() + "}" + "[Server] You are logged in as id:" + Session.id); break; default: OutPut.AppendText(Environment.NewLine + "Server sent unknown record type: " + wsTextResponse); break; } MapImg.Refresh(); buffer = new byte[1024]; } } } }