diff --git a/A1Emu/A1_FKPlugins/A1_System.cs b/A1Emu/A1_FKPlugins/A1_System.cs index e1f70ab..e9b3504 100644 --- a/A1Emu/A1_FKPlugins/A1_System.cs +++ b/A1Emu/A1_FKPlugins/A1_System.cs @@ -34,6 +34,7 @@ class A1_System : TcpSession string opponentConID = ""; int opponentUID = 0; int teamSide = 5; + int roundCount = 0; public A1_System(TcpServer server, int port, string sqServerInput, string directory) : base(server) { @@ -112,7 +113,10 @@ class A1_System : TcpSession // ---------------------------- Plugin 5 (Soccer) --------------------------- \\ case "cm": - //responses.Add(CharacterMove(commandInfo[1], commandInfo[2], commandInfo[3])); + responses.Add(CharacterMove(commandInfo[1], commandInfo[2], commandInfo[3])); + break; + case "bs": + responses.Add(BlockShot(commandInfo[1], commandInfo[2], commandInfo[3], commandInfo[4], commandInfo[5])); break; // ---------------------------- Plugin 7 (Galaxy) --------------------------- \\ @@ -123,7 +127,10 @@ class A1_System : TcpSession responses.Add(VersionStatisticsRequest(commandInfo[1])); break; case "sp": - responses.Add(SaveProfile(commandInfo[1])); + if(routingString[1] == "7") + responses.Add(SaveProfile(commandInfo[1])); + else if(routingString[1] == "5") + responses.Add(ShotParameters(commandInfo[1], commandInfo[2], commandInfo[3], commandInfo[4], commandInfo[5])); break; case "spp": responses.Add(SaveProfilePart(commandInfo[1], commandInfo[2])); @@ -154,6 +161,10 @@ class A1_System : TcpSession case "rp": responses.Add(ReadyPlay(commandInfo[1], routingString[1])); break; + + case "ms": + responses.Add(MessageOpponent(commandInfo[1], commandInfo[2], routingString[1])); + break; default: responses.Add(@""); @@ -1345,6 +1356,7 @@ class A1_System : TcpSession int challenge = 0; int challenger = 0; + teamSide = 5; var con = new MySqlConnection(sqServer); string sql = "SELECT * FROM mp_5 WHERE userID=@userID"; @@ -1505,35 +1517,84 @@ class A1_System : TcpSession settings.Encoding = Encoding.ASCII; using (XmlWriter writer = XmlWriter.Create(responseStream, settings)) { + bool isStartingGame = teamSide == 5; writer.WriteStartElement("h" + plugin + "_0"); if(plugin == "5") { writer.WriteStartElement("oc"); - if(a1_User.userID < opponentUID) + if(teamSide == 5) { - writer.WriteAttributeString("c", "0"); - }else - { - writer.WriteAttributeString("c", "1"); + if(a1_User.userID < opponentUID) + { + teamSide = 0; + writer.WriteAttributeString("c", "0"); + }else{ + teamSide = 1; + writer.WriteAttributeString("c", "1"); + } + }else{ + if(roundCount % 5 == 0) + { + switch(teamSide) + { + case 0: + teamSide = 1; + writer.WriteAttributeString("c", "1"); + break; + case 1: + teamSide = 0; + writer.WriteAttributeString("c", "0"); + break; + } + }else + { + switch(teamSide) + { + case 0: + writer.WriteAttributeString("c", "0"); + break; + case 1: + writer.WriteAttributeString("c", "1"); + break; + } + } } writer.WriteEndElement(); writer.WriteStartElement("cc"); - if(a1_User.userID < opponentUID) + if(teamSide == 5) { - writer.WriteAttributeString("c", "0"); - }else - { - writer.WriteAttributeString("c", "1"); + if(a1_User.userID < opponentUID) + { + writer.WriteAttributeString("c", "1"); + }else + { + writer.WriteAttributeString("c", "0"); + } + }else{ + switch(teamSide) + { + case 0: + writer.WriteAttributeString("c", "0"); + break; + case 1: + writer.WriteAttributeString("c", "1"); + break; + } } writer.WriteEndElement(); writer.WriteStartElement("nr"); writer.WriteEndElement(); - writer.WriteStartElement("sg"); - writer.WriteEndElement(); + if(isStartingGame) + { + writer.WriteStartElement("sg"); + writer.WriteEndElement(); + } + + roundCount += 1; } writer.WriteEndElement(); @@ -1561,10 +1622,147 @@ class A1_System : TcpSession System.Threading.Thread.Sleep(500); } + string sql2 = "UPDATE mp_5 SET ready = @r WHERE userID=@userID"; + MySqlCommand sqCommand2 = new MySqlCommand(sql2, con); + sqCommand2.Parameters.AddWithValue("@r", 0); + sqCommand2.Parameters.AddWithValue("@userID", a1_User.userID); + con.Open(); + sqCommand2.ExecuteNonQuery(); + con.Close(); return System.Text.ASCIIEncoding.ASCII.GetString(responseStream.ToArray()); } + string MessageOpponent(string m, string bid, string plugin) + { + var responseStream = new MemoryStream(); + XmlWriterSettings settings = new XmlWriterSettings(); + settings.OmitXmlDeclaration = true; + settings.ConformanceLevel = ConformanceLevel.Fragment; + settings.Encoding = Encoding.ASCII; + using (XmlWriter writer = XmlWriter.Create(responseStream, settings)) + { + writer.WriteStartElement("h" + plugin + "_0"); + writer.WriteStartElement("ms"); + + writer.WriteAttributeString("n", a1_User.username); + writer.WriteAttributeString("m", m); + + writer.WriteAttributeString("bid", bid); + + writer.WriteEndElement(); + writer.WriteEndElement(); + writer.Flush(); + writer.Close(); + } + + a1_Sender.SendToUser(this.Server, opponentConID, System.Text.ASCIIEncoding.ASCII.GetString(responseStream.ToArray())); + + return System.Text.ASCIIEncoding.ASCII.GetString(responseStream.ToArray()); + } + + // -------------------------------------------------------------------------- \\ + // Plugin 5 - Soccer \\ + // -------------------------------------------------------------------------- \\ + + string CharacterMove(string x, string d, string bid) + { + var responseStream = new MemoryStream(); + XmlWriterSettings settings = new XmlWriterSettings(); + settings.OmitXmlDeclaration = true; + settings.ConformanceLevel = ConformanceLevel.Fragment; + settings.Encoding = Encoding.ASCII; + using (XmlWriter writer = XmlWriter.Create(responseStream, settings)) + { + writer.WriteStartElement("h5_0"); + + writer.WriteStartElement("cm"); + + writer.WriteAttributeString("x", x); + + writer.WriteAttributeString("d", d); + + writer.WriteAttributeString("bid", bid); + + writer.WriteEndElement(); + writer.WriteEndElement(); + writer.Flush(); + writer.Close(); + } + + a1_Sender.SendToUser(this.Server, opponentConID, System.Text.ASCIIEncoding.ASCII.GetString(responseStream.ToArray())); + + return ""; + } + + string ShotParameters(string p, string z, string y, string x, string bid) + { + var responseStream = new MemoryStream(); + XmlWriterSettings settings = new XmlWriterSettings(); + settings.OmitXmlDeclaration = true; + settings.ConformanceLevel = ConformanceLevel.Fragment; + settings.Encoding = Encoding.ASCII; + using (XmlWriter writer = XmlWriter.Create(responseStream, settings)) + { + writer.WriteStartElement("h5_0"); + + writer.WriteStartElement("sp"); + + writer.WriteAttributeString("p", p); + + writer.WriteAttributeString("z", z); + + writer.WriteAttributeString("y", y); + + writer.WriteAttributeString("x", x); + + writer.WriteAttributeString("bid", bid); + + writer.WriteEndElement(); + writer.WriteEndElement(); + writer.Flush(); + writer.Close(); + } + + a1_Sender.SendToUser(this.Server, opponentConID, System.Text.ASCIIEncoding.ASCII.GetString(responseStream.ToArray())); + + return ""; + } + + string BlockShot(string d, string lx, string m, string c, string bid) + { + var responseStream = new MemoryStream(); + XmlWriterSettings settings = new XmlWriterSettings(); + settings.OmitXmlDeclaration = true; + settings.ConformanceLevel = ConformanceLevel.Fragment; + settings.Encoding = Encoding.ASCII; + using (XmlWriter writer = XmlWriter.Create(responseStream, settings)) + { + writer.WriteStartElement("h5_0"); + + writer.WriteStartElement("bs"); + + writer.WriteAttributeString("d", d); + + writer.WriteAttributeString("lx", lx); + + writer.WriteAttributeString("m", m); + + writer.WriteAttributeString("c", c); + + writer.WriteAttributeString("bid", bid); + + writer.WriteEndElement(); + writer.WriteEndElement(); + writer.Flush(); + writer.Close(); + } + + a1_Sender.SendToUser(this.Server, opponentConID, System.Text.ASCIIEncoding.ASCII.GetString(responseStream.ToArray())); + + return ""; + } + // -------------------------------------------------------------------------- \\ // Plugin 7 - Galaxy \\ // -------------------------------------------------------------------------- \\