示例#1
0
        private bool ServerTerminalMonitor(PacketObj data)
        {
            var packet            = data.Packet;
            var terminalMonPacket = (TerminalMonitorPacket)packet;
            var ent  = MyEntities.GetEntityByIdOrDefault(packet.EntityId);
            var comp = ent?.Components.Get <WeaponComponent>();

            if (comp?.Ai == null || comp.Platform.State != MyWeaponPlatform.PlatformState.Ready)
            {
                return(Error(data, Msg("Comp", comp != null), Msg("Ai", comp?.Ai != null), Msg("Ai", comp?.Platform.State == MyWeaponPlatform.PlatformState.Ready)));
            }

            uint[] mIds;
            if (PlayerMIds.TryGetValue(packet.SenderId, out mIds) && mIds[(int)packet.PType] < packet.MId)
            {
                mIds[(int)packet.PType] = packet.MId;

                if (terminalMonPacket.State == TerminalMonitorPacket.Change.Update)
                {
                    TerminalMon.ServerUpdate(comp);
                }
                else if (terminalMonPacket.State == TerminalMonitorPacket.Change.Clean)
                {
                    TerminalMon.ServerClean(comp);
                }

                data.Report.PacketValid = true;
            }
            else
            {
                Log.Line($"ServerTerminalMonitor: MidsHasSenderId:{PlayerMIds.ContainsKey(packet.SenderId)} - midsNull:{mIds == null} - senderId:{packet.SenderId}");
            }

            return(true);
        }