Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }