Esempio n. 1
0
        private static bool MergeCheck(MyShipMergeBlock __instance)
        {
            if (!BlockLimiterConfig.Instance.EnableLimits)
            {
                return(true);
            }

            var mergeBlock = __instance;

            if (mergeBlock?.Other == null)
            {
                return(true);
            }

            if (mergeBlock.IsLocked || !mergeBlock.IsFunctional || !mergeBlock.Other.IsFunctional)
            {
                return(true);
            }


            if (BlockLimiterConfig.Instance.MergerBlocking)
            {
                if (!Grid.CanMerge(mergeBlock.CubeGrid, mergeBlock.Other.CubeGrid))
                {
                    mergeBlock.Enabled = false;
                    return(false);
                }
            }

            return(true);
        }
Esempio n. 2
0
        private static void AddBlocks(MyShipMergeBlock __instance)
        {
            var id = __instance.CubeGrid.EntityId;

            Task.Run((() =>
            {
                Thread.Sleep(10000);
                if (!GridCache.TryGetGridById(id, out var grid))
                {
                    return;
                }

                UpdateLimits.GridLimit(grid);
            }));
        }
Esempio n. 3
0
        private static bool MergeCheck(MyShipMergeBlock __instance)
        {
            if (!BlockLimiterConfig.Instance.EnableLimits || !BlockLimiterConfig.Instance.MergerBlocking)
            {
                return(true);
            }

            var mergeBlock = __instance;

            if (mergeBlock?.Other == null || MergeBlockCache.Contains(mergeBlock.CubeGrid.EntityId) || MergeBlockCache.Contains(mergeBlock.Other.CubeGrid.EntityId) ||
                !mergeBlock.Enabled || !mergeBlock.Other.Enabled || mergeBlock.IsLocked || !mergeBlock.IsFunctional || !mergeBlock.Other.IsFunctional || mergeBlock.CubeGrid == mergeBlock.Other.CubeGrid)

            {
                return(true);
            }



            if (Grid.CanMerge(mergeBlock.CubeGrid, mergeBlock.Other.CubeGrid, out var blocks, out var count, out var limitName))
            {
                if (!MergeBlockCache.Contains(mergeBlock.CubeGrid.EntityId))
                {
                    MergeBlockCache.Add(mergeBlock.CubeGrid.EntityId);
                }

                return(true);
            }

            mergeBlock.Enabled = false;

            if (DateTime.Now - _lastLogTime < TimeSpan.FromSeconds(1))
            {
                return(false);
            }
            _lastLogTime = DateTime.Now;
            var msg          = Utilities.GetMessage(BlockLimiterConfig.Instance.DenyMessage, blocks, limitName, count);
            var remoteUserId = MySession.Static.Players.TryGetSteamId(mergeBlock.OwnerId);

            if (remoteUserId != 0 && MySession.Static.Players.IsPlayerOnline(mergeBlock.OwnerId))
            {
                BlockLimiter.Instance.Torch.CurrentSession.Managers.GetManager <ChatManagerServer>()?
                .SendMessageAsOther(BlockLimiterConfig.Instance.ServerName, msg, Color.Red, remoteUserId);
            }
            Utilities.SendFailSound(remoteUserId);

            Log.Info($"Blocked merger between {mergeBlock.CubeGrid?.DisplayName} and {mergeBlock.Other?.CubeGrid?.DisplayName}");
            return(false);
        }
Esempio n. 4
0
 public MyDebugRenderComponentShipMergeBlock(MyShipMergeBlock shipConnector)
     : base(shipConnector)
 {
     m_shipMergeBlock = shipConnector;
 }