using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; namespace GamerServices { public partial class FormGameDev : Form { private int TotalIn = 0; private int TotalOut = 0; private double[] AvIn = new double[30]; private double[] AvOut = new double[30]; private int curin = 0; private int curout = 0; private Game G; private PerformanceCounter prefcounter; private PerformanceCounter memcounter; public FormGameDev(Game g) { G = g; CheckForIllegalCrossThreadCalls = false; this.Icon = G.Main.Icon; InitializeComponent(); } public void AddIn(int val) { TotalIn += val; curin += val; this.label_traf_totin.Text = TotalIn.ToString(); } public void AddOut(int val) { TotalOut += val; curout += val; this.label_traf_toto.Text = TotalOut.ToString(); } public void UpdateAv() { if (G.ForceStop){ this.Close(); return; } double curavin = 0; double curavout = 0; for (int i = 1; i < AvIn.Length; i++) { curavin += AvIn[i]; curavout += AvOut[i]; AvIn[i - 1] = AvIn[i]; AvOut[i - 1] = AvOut[i]; } AvIn[AvIn.Length - 1] = curin; AvOut[AvOut.Length - 1] = curout; curavin += curin; curavout += curout; curin = 0; curout = 0; bool foundproc = false; Process[] procs = Process.GetProcessesByName(G.MainExe.Substring(0, G.MainExe.Length - 4)); foreach (Process proc in procs) { foundproc = true; if (prefcounter == null){ prefcounter = new PerformanceCounter("Process", "% Processor Time", proc.ProcessName); memcounter = new PerformanceCounter("Process", "Working Set", proc.ProcessName); AddMessage("Starting process monitor"); }else{ this.label_proc_cpu.Text = (prefcounter.NextValue() / 100).ToString() + "%"; this.label_proc_RAM.Text = ((memcounter.NextValue() / 1024) / 1024).ToString() + " MB"; } if (this.label_proc_name.Text != proc.ProcessName) this.label_proc_name.Text = proc.ProcessName; if (this.label_proc_threads.Text != proc.Threads.Count.ToString()) this.label_proc_threads.Text = proc.Threads.Count.ToString(); break; } if (!foundproc) { if (prefcounter != null) AddMessage("Lost game proccess."); prefcounter = null; memcounter = null; this.label_proc_name.Text = ""; this.label_proc_cpu.Text = ""; this.label_proc_RAM.Text = ""; this.label_proc_threads.Text = ""; } curavin /= AvIn.Length; curavout /= AvOut.Length; curavin = curavin - curavin % 0.1; curavout = curavout - curavout % 0.1; this.label_traf_avi.Text = curavin.ToString(); this.label_traf_avo.Text = curavout.ToString(); } public void AddMessage(string msg) { textlog.Text += msg + "\r\n"; textlog.SelectionStart = textlog.Text.Length; textlog.ScrollToCaret(); textlog.Refresh(); } private void button2_Click(object sender, EventArgs e) { TotalIn = 0; TotalOut = 0; this.label_traf_totin.Text = "0"; this.label_traf_toto.Text = "0"; this.label_traf_avi.Text = "0"; this.label_traf_avo.Text = "0"; AvIn = new double[30]; AvOut = new double[30]; curin = 0; curout = 0; textlog.Text = ""; } private void button1_Click(object sender, EventArgs e) { G.DevStop(); } private void FormGameDev_Load(object sender, EventArgs e) { button2_Click(null, null); checkBox1.Checked = false; button4.Enabled = checkBox1.Checked; textBox1.Enabled = checkBox1.Checked; comboBox1.Enabled = checkBox1.Checked; comboBox1.Items.Add("Notice"); comboBox1.Items.Add("General"); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { switch(comboBox1.Text){ case "Notice": textBox1.Text = "# Example of a notice popup\r\n\r\n# The byte 5 is for the inital packet type, leave it alone\r\n(byte)5\r\n(string)Title\r\n(string)Message\r\n\r\n# This is the icon type wich should be displayed whit the message!\r\n(byte)0"; break; case "General": textBox1.Text = "# Example of a packet\r\n# This is extremely useful for debugging purposes\r\n# If your game hooks into MrAG.Gamerservices.IncomingTCPPacket,\r\n# you can use this to manually send packets to trigger events for debugging results\r\n# Available packets are 6-254, below 5 are reservated for the tunneling service\r\n(byte)6\r\n"; break; } comboBox1.Text = "Examples"; } private void checkBox1_CheckedChanged(object sender, EventArgs e) { button4.Enabled = checkBox1.Checked; textBox1.Enabled = checkBox1.Checked; comboBox1.Enabled = checkBox1.Checked; } private void button4_Click(object sender, EventArgs e) { string[] tosend = textBox1.Text.Replace("\r", "").Split('\n'); MrAG.Networking.TCPClient c = G.GetAPIConnection(); if (c == null) { MessageBox.Show("No connection yet!", "Error"); return; } bool packetIDSend = false; c.Connection.Start_Send(); foreach(string line in tosend){ if (line.StartsWith("#")) { } else if (line.Length > 0) { string type = line.Substring(1, line.IndexOf(")") - 1); string data = line.Substring(type.Length + 2); switch (type) { case "string": if (!packetIDSend) { MessageBox.Show("Error, must send packetID (a byte) first!", "Error"); c.Connection.Finish_Send(); return; } c.Connection.AddString(data); break; case "byte": byte byettosend = byte.Parse(data); if (!packetIDSend && (byettosend < 5 || byettosend == 6)) { MessageBox.Show("Error, Packet 0-6 is reserved for internal use!", "Error"); c.Connection.Finish_Send(); return; } packetIDSend = true; c.Connection.AddByte(byettosend); break; case "short": if (!packetIDSend) { MessageBox.Show("Error, must send packetID (a byte) first!", "Error"); c.Connection.Finish_Send(); return; } c.Connection.AddByte(short.Parse(data)); break; case "int": if (!packetIDSend) { MessageBox.Show("Error, must send packetID (a byte) first!", "Error"); c.Connection.Finish_Send(); return; } c.Connection.AddInt(int.Parse(data)); break; case "float": if (!packetIDSend) { MessageBox.Show("Error, must send packetID (a byte) first!", "Error"); c.Connection.Finish_Send(); return; } c.Connection.AddFloat(float.Parse(data)); break; case "long": if (!packetIDSend) { MessageBox.Show("Error, must send packetID (a byte) first!", "Error"); c.Connection.Finish_Send(); return; } c.Connection.AddLong(long.Parse(data)); break; case "double": if (!packetIDSend) { MessageBox.Show("Error, must send packetID (a byte) first!", "Error"); c.Connection.Finish_Send(); return; } c.Connection.AddDouble(double.Parse(data)); break; } } } c.Connection.Finish_Send(); MessageBox.Show("Sent!", "Packet has been sent."); } } }