public void MakeTestPacket4(Stream network, string CharName) { byte[] rawChar = StringToChars(CharName); TGSCloseSignal packet = new TGSCloseSignal(); packet.h.seqno = 1; packet.h.size = (short)(rawChar.Length + Marshal.SizeOf(packet)); packet.h.type = (byte)EPacketType.GSCloseSignal; packet.ifclose = 0; byte[] rawPacket = D2DBS.core.StructToBytes(packet); network.Write(rawPacket, 0, rawPacket.Length); }
private int HandleCloseSignal(ConnInfo Conn, List <byte> buf) { TGSCloseSignal packet = new TGSCloseSignal(); int pos = Marshal.SizeOf(packet); packet = (TGSCloseSignal)D2DBS.core.BytesToStruct(buf.ToArray(), Marshal.SizeOf(packet), packet.GetType()); string[] Names = BytesToString(buf.GetRange(pos, buf.Count - pos)).Split('\0'); string GameName = Names[0]; string CharVersion = D2DBS.config["char_version"]; if (packet.ifclose == 0) { D2DBS.mysql.Execute("INSERT DELAYED INTO game (`version`, `name`,`startdate`,`enddate`) VALUES ('" + CharVersion + "', '" + D2DBS.mysql.Escape(GameName) + "', UNIX_TIMESTAMP(), '0')"); D2DBS.log.Write("info", "Game `" + GameName + "` closed on gs " + Conn.GSId.ToString()); } else { D2DBS.mysql.Execute("UPDATE LOW_PRIORITY `game` SET `enddate` = UNIX_TIMESTAMP() WHERE `version` = '" + CharVersion + " AND `name` = '" + D2DBS.mysql.Escape(GameName) + "' ORDER BY startdate DESC LIMIT 1"); D2DBS.log.Write("info", "Game `" + GameName + "` started on gs " + Conn.GSId.ToString()); } return(0); }