コード例 #1
0
        public void OnRoomPlayersUpdate(PacketCommand data)
        {
            if (m_rooms.ContainsKey(data.Command))
            {
                string[]   parts    = data.Data.Split('|');
                string[]   eloparts = parts[1].Split(',');
                string[]   players  = parts[0].Split(',');
                List <int> elos     = new List <int>();
                foreach (string elo in eloparts)
                {
                    int value = 1200;
                    try
                    {
                        value = int.Parse(elo);
                    }
                    catch
                    {
                        //MessageBox.Show("Error in parsing Elo from:" + eloparts.ToString());
                    }
                    elos.Add(value);
                }

                Invoke(new Action <string, string[], int[]>(InternalRoomPlayersUpdate), data.Command, (object)players, (object)elos.ToArray());
            }
        }
コード例 #2
0
        public override void HandleDataPacket(PacketCommand command, ref float t, ref float[] values)
        {
            t = BitConverter.ToUInt32(command.PayLoad, 0) / 1000.0F;
            Int16 a0 = command.PayLoad[4];
            Int16 a1 = command.PayLoad[5];
            Int16 a2 = command.PayLoad[6];
            Int16 a3 = command.PayLoad[7];

            a0 += (Int16)(((command.PayLoad[8] >> 0) & 0x3) << 8);
            a1 += (Int16)(((command.PayLoad[8] >> 2) & 0x3) << 8);
            a2 += (Int16)(((command.PayLoad[8] >> 4) & 0x3) << 8);
            a3 += (Int16)(((command.PayLoad[8] >> 6) & 0x3) << 8);

            byte gains = command.PayLoad[9];
            int  gain0 = SupportedGains[(gains >> 0) & 3];
            int  gain1 = SupportedGains[(gains >> 2) & 3];
            int  gain2 = SupportedGains[(gains >> 4) & 3];
            int  gain3 = SupportedGains[(gains >> 6) & 3];

            values = new float[] {
                (a0 / MaxADC) * MaxVoltage / gain0,
                (a1 / MaxADC) * MaxVoltage / gain1,
                (a2 / MaxADC) * MaxVoltage / gain2,
                (a3 / MaxADC) * MaxVoltage / gain3
            };
            OnNewGainValues(0, gain0);
            OnNewGainValues(1, gain1);
            OnNewGainValues(2, gain2);
            OnNewGainValues(3, gain3);
        }
コード例 #3
0
ファイル: PacketHeader.cs プロジェクト: NitroXenon/Ignite
 public static PacketHeader Create(PacketCommand cmd, UInt32 netId)
 {
     PacketHeader pktHeader;
     pktHeader.cmd = (UInt16) cmd;
     pktHeader.netId = netId;
     return pktHeader;
 }
コード例 #4
0
 public void OnRoomPlayersUpdate(PacketCommand data)
 {
     if (m_rooms.ContainsKey(data.Command))
     {
         Invoke(new Action <string, string[]>(InternalRoomPlayersUpdate), data.Command, ((object)data.Data.Split(',')));
     }
 }
コード例 #5
0
ファイル: Packet.cs プロジェクト: iridinite/wirefox
        public Packet(PacketCommand cmd, [CanBeNull] byte[] payload)
        {
            // to pass the buffer to unmanaged code, we need to memcpy it to an unmanaged buffer
            var length = payload?.Length ?? 0;
            var buffer = IntPtr.Zero;

            try {
                // payload may be null, in which case we pass nullptr to C++
                if (payload != null)
                {
                    buffer = Marshal.AllocHGlobal(length);
                    Marshal.Copy(payload, 0, buffer, length);
                }

                m_handle  = NativeMethods.wirefox_packet_create((byte)cmd, buffer, new UIntPtr((uint)length));
                m_cmd     = cmd;
                m_sender  = PeerID.Invalid;
                m_payload = payload;
            } finally {
                if (buffer != IntPtr.Zero)
                {
                    Marshal.FreeHGlobal(buffer);
                }
            }
        }
コード例 #6
0
ファイル: PacketHeader.cs プロジェクト: doivosevic/Summoning
        public static PacketHeader Create(PacketCommand cmd, UInt32 netId)
        {
            PacketHeader pktHeader;

            pktHeader.cmd   = (UInt16)cmd;
            pktHeader.netId = netId;
            return(pktHeader);
        }
コード例 #7
0
        public void OnRoomPlayersUpdate(PacketCommand data)
        {
            if (m_rooms.ContainsKey(data.Command))
            {
                string[]   parts    = data.Data.Split('|');
                string[]   eloparts = parts[1].Split(',');
                string[]   players  = parts[0].Split(',');
                List <int> elos     = new List <int>();
                foreach (string elo in eloparts)
                {
                    elos.Add(int.Parse(elo));
                }

                Invoke(new Action <string, string[], int[]>(InternalRoomPlayersUpdate), data.Command, (object)players, (object)elos.ToArray());
            }
        }
コード例 #8
0
 public void ParseCommand(PacketCommand command, SerialDataChannel channel)
 {
     if (command.PacketID == PhysLoggerPacketCommandID.GetHWSignatures)
     {
         var parts = command.PayLoadString.Split(new char[] { '=' });
         if (parts[0] == "ver")
         {
             if (parts[1] == PhysLoggerHWSignature.PhysLogger1_0.ToString())
             {
                 HWProps = new PhysLogger1_0HWProperties();
                 HWProps.OnNewGainValues += HWProps_OnNewGainValues;
                 new PacketCommand(PhysLoggerPacketCommandID.BeginFire, new byte[] { 1 }).SendCommand(channel);
             }
             else
             {
                 return;
             }
             OnSignatureUpdate(this, new EventArgs());
         }
         else
         {
             if (HWProps != null)
             {
                 if (HWProps.UpdateProp(parts))
                 {
                     OnSignatureUpdate?.Invoke(this, new EventArgs());
                 }
             }
         }
     }
     if (HWProps.Signature == PhysLoggerHWSignature.Unknown)
     {
         new PacketCommand(PhysLoggerPacketCommandID.GetHWSignatures).SendCommand(channel);
         return;
     }
     if (command.PacketID == PhysLoggerPacketCommandID.DataPacket)
     {
         float   t      = 0;
         float[] values = null;
         HWProps.HandleDataPacket(command, ref t, ref values);
         if (values != null)
         {
             NewPointReceived(t, values);
         }
     }
 }
コード例 #9
0
ファイル: Packet.cs プロジェクト: iridinite/wirefox
        internal Packet(IntPtr handle)
        {
            m_handle = handle;
            m_cmd    = (PacketCommand)NativeMethods.wirefox_packet_get_cmd(handle);
            m_sender = new PeerID(NativeMethods.wirefox_packet_get_sender(handle));

            var dataptr = NativeMethods.wirefox_packet_get_data(handle);

            if (dataptr == IntPtr.Zero)
            {
                // nullptr payload is allowed
                m_payload = new byte[0];
            }
            else
            {
                // copy payload of correct length over to managed land
                m_payload = new byte[NativeMethods.wirefox_packet_get_length(handle).ToUInt32()];
                Marshal.Copy(NativeMethods.wirefox_packet_get_data(handle), m_payload, 0, m_payload.Length);
            }
        }
コード例 #10
0
        public bool Validate(IPacketMap packet)
        {
            if (!(packet is T))
            {
                return(false);
            }

            if (!PacketCommand.Equals(packet.Command, StringComparison.CurrentCultureIgnoreCase))
            {
                return(false);
            }

            if (Validator != null && !Validator((T)packet))
            {
                return(false);
            }

            OnFound.SetResult((T)packet);

            return(true);
        }
コード例 #11
0
 private void HandlePackets(PacketCommand command)
 {
     if (InvokeRequired)
     {
         Invoke(new Action <PacketCommand>(HandlePackets), command);
     }
     else
     {
         if (command.Command == "POINTS")
         {
             DevPointCount.Text = command.Data;
         }
         if (command.Command == "MSG")
         {
             MessageBox.Show(command.Data);
         }
         if (command.Command == "USERNAME")
         {
             Program.ChangeUsername(command.Data);
         }
     }
 }
コード例 #12
0
 public virtual void HandleDataPacket(PacketCommand command, ref float f, ref float[] values)
 {
     new NotImplementedException();
 }
コード例 #13
0
 /// <summary>
 /// Main constructor for server side, the key must be initialized with a value.
 /// </summary>
 /// <param name="name_">The name of the emitter. For server side, it will be "root"</param>
 /// <param name="key_">The value of the Locker key</param>
 /// <param name="command_">The command associated to <paramref name="data_"/></param>
 /// <param name="data_">The <see cref="Object"/> which contain the data</param>
 public Packet(string name_, uint key_, PacketCommand command_, Object data_)
 {
     this.Name = name_;
     this.Key  = key_;
     this.Data = new KeyValuePair <PacketCommand, Object>(command_, data_);
 }
コード例 #14
0
        private bool ServerCommands(Account player, Room room)
        {
            try
            {
                if (text.StartsWith("(Ghost)"))
                {
                    text.Replace("(Ghost)", "");
                }
                if (text.StartsWith("(Fantasma)"))
                {
                    text.Replace("(Fantasma)", "");
                }
                string Command = text.Substring(1);
                if (!Settings.ChatCommandsActive || !player.HaveGMLevel())
                {
                    return(false);
                }
                if (!text.StartsWith(".") && text.Contains("help"))
                {
                    text = "Olha a merda...capoto o corsa. VRUMMMMM PÁH";
                    return(true);
                }
                if (!text.StartsWith("."))
                {
                    return(false);
                }
                Logger.ChatCommands($" [CHAT] [Commands] PlayerId: {player.playerId} Nick: {player.nickname} Login: {player.login} Ip: {player.ipAddress.ToString()} Text: {text}");

                AccessLevelEnum access = player.access;
                PacketCommand   REQ    = null;
                if (Command.StartsWith("HELP") && access >= AccessLevelEnum.Moderator)
                {
                    REQ = new CMD_HELP_REQ(1);
                }

                else if (Command.StartsWith("PCCAFEBASIC ") && access >= AccessLevelEnum.Admin)
                {
                    REQ = new CMD_GAMEMASTER_REQ(Command, 6);
                }
                else if (Command.StartsWith("PCCAFEPLUS ") && access >= AccessLevelEnum.Admin)
                {
                    REQ = new CMD_GAMEMASTER_REQ(Command, 7);
                }
                else if (Command.StartsWith("KICK ") && access >= AccessLevelEnum.Moderator)
                {
                    REQ = new CMD_KICK_REQ(Command, 1);
                }
                else if (Command.StartsWith("KICKALL") && access >= AccessLevelEnum.GameMaster)
                {
                    REQ = new CMD_KICK_REQ(Command, 2);
                }
                else if (Command.StartsWith("AFKKICK") && access >= AccessLevelEnum.Moderator)
                {
                    REQ = new CMD_KICK_REQ(Command, 2);
                }
                else if (Command.StartsWith("ONLINE") && access >= AccessLevelEnum.Moderator)
                {
                    REQ = new CMD_SERVERINFO_REQ(1);
                }
                else if (Command.StartsWith("G1 ") && access >= AccessLevelEnum.Moderator) //ALL
                {
                    REQ = new CMD_ANNOUNCE_REQ(Command, 1);
                }
                else if (Command.StartsWith("G2 ") && access >= AccessLevelEnum.Moderator) //ROOM
                {
                    REQ = new CMD_ANNOUNCE_REQ(Command, 2);
                }
                else if (Command.StartsWith("CASH ") && access >= AccessLevelEnum.GameMaster)
                {
                    REQ = new CMD_PLAYERINFO_REQ(Command, 1);
                }
                else if (Command.StartsWith("GOLD ") && access >= AccessLevelEnum.GameMaster)
                {
                    REQ = new CMD_PLAYERINFO_REQ(Command, 2);
                }
                else if (Command.StartsWith("RANK ") && access >= AccessLevelEnum.GameMaster)
                {
                    REQ = new CMD_GAMEMASTER_REQ(Command, 3);
                }
                else if (Command.StartsWith("NICK ") && access >= AccessLevelEnum.GameMaster)
                {
                    REQ = new CMD_GAMEMASTER_REQ(Command, 4);
                }
                else if (Command.StartsWith("ADDITEM ") && access >= AccessLevelEnum.GameMaster)
                {
                    REQ = new CMD_GAMEMASTER_REQ(Command, 5);
                }
                else if (Command.StartsWith("GMCOLOR") && access >= AccessLevelEnum.Moderator)
                {
                    REQ = new CMD_GAMEMASTER_REQ(Command, 1);
                }
                else if (Command.StartsWith("ANTIKICK") && access >= AccessLevelEnum.Moderator)
                {
                    REQ = new CMD_GAMEMASTER_REQ(Command, 2);
                }
                else if (Command.StartsWith("END") && access == AccessLevelEnum.Developer)
                {
                    REQ = new CMD_DEVELOPER_REQ(Command, 1);
                }
                else if (Command.StartsWith("ROOMTYPE ") && access == AccessLevelEnum.Developer)
                {
                    REQ = new CMD_DEVELOPER_REQ(Command, 2);
                }
                else if (Command.StartsWith("ROOMSPECIAL ") && access == AccessLevelEnum.Developer)
                {
                    REQ = new CMD_DEVELOPER_REQ(Command, 3);
                }
                else if (Command.StartsWith("ROOMWEAPON ") && access == AccessLevelEnum.Developer)
                {
                    REQ = new CMD_DEVELOPER_REQ(Command, 4);
                }
                else
                {
                    text = "Não foi possivel encontrar o comando digitado.";
                }
                if (REQ != null)
                {
                    if (REQ.Set(player, room))
                    {
                        REQ.RunImplement();
                    }
                    text = REQ.GetResponse();
                    REQ  = null;
                }
                return(true);
            }
            catch (Exception ex)
            {
                text = "Ocorreu um problema ao executar o comando.";
                Logger.Exception(ex);
                return(true);
            }
        }