private static bool TryGetDummy(string name, IMyModel model, out IMyModelDummy dummy)
        {
            Dictionary <string, IMyModelDummy> dummies = new Dictionary <string, IMyModelDummy>();

            model.GetDummies(dummies);
            return(dummies.TryGetValue(name, out dummy));
        }
Beispiel #2
0
        private void UpdateInput()
        {
            if (MyAPIGateway.Session == null)
            {
                return;
            }


            IMyPlayer player = MyAPIGateway.Session.Player;

            if (player == null)
            {
                return;
            }

            IMyCharacter character = player.Character;

            if (character == null)
            {
                return;
            }



            IMyUseObject useObject = character.Components?.Get <MyCharacterDetectorComponent>()?.UseObject;

            if (useObject == null)
            {
                return;
            }

            bool isUsePressed  = MyAPIGateway.Input.GetGameControl(MyControlsSpace.USE).IsNewPressed();
            bool isUsePressed2 = MyAPIGateway.Input.GetGameControl(MyControlsSpace.PRIMARY_TOOL_ACTION).IsNewPressed();

            IMyModelDummy dummy = useObject.Dummy;

            if (dummy == null)
            {
                return;
            }

            string detectorName = dummy.Name;

            // ... only if the detector is not a Spawndoor, in this case make Terminal available again and return;
            if (detectorName.Contains(DUMMY_SUFFIX) || detectorName.Contains(DUMMY_SUFFIX2))
            {
                IMyEntity owner = useObject.Owner;

                if (owner == null || owner != m_block)
                {
                    return;
                }


                if ((isUsePressed || isUsePressed2) && CheckReadynessClient())
                {
                    try
                    {
                        ShowMessageInGameAndLog("UpdateInput", "isUsePressed:[ " + isUsePressed.ToString() + "]" + "isUsePressed2:[" + isUsePressed2.ToString() + "]");
                        // slot already has a weapon -> remove it and add to players inventory
                        MyRelationsBetweenPlayerAndBlock blockrelationttoplayer = ((IMyCubeBlock)Entity).GetUserRelationToOwner(MyAPIGateway.Session.Player.IdentityId);
                        bool b = (blockrelationttoplayer == MyRelationsBetweenPlayerAndBlock.Enemies) || (blockrelationttoplayer == MyRelationsBetweenPlayerAndBlock.Neutral);

                        ShowMessageInGameAndLog("MyRelationsBetweenPlayerAndBlock", "NotFriendly = " + b);

                        if (b)
                        {
                            // ShowMessageInGameAndLog("UpdateInput", " ReplaceOwner before!");
                            // ReplaceOwner(player.IdentityId);
                            ShowMessageInGameAndLog("UpdateInput", "Try send msg to server ");


                            SendMessage_ReplaceDoor(MyAPIGateway.Session.Player.IdentityId, true, m_block.CubeGrid.CustomName);

                            //(m_block as IMyAdvancedDoor).OpenDoor();
                            NeedsUpdate = MyEntityUpdateEnum.NONE;

                            Destuctscript();

                            var timer3 = new Timer(10000);
                            timer3.AutoReset = false;
                            timer3.Elapsed  += (a12, b12) => MyAPIGateway.Utilities.InvokeOnGameThread(() =>
                            {
                                sendrefreshmsgtoserver();
                            });
                            timer3.Start();
                        }
                        else
                        {
                            (m_block as IMyAdvancedDoor).OpenDoor();
                        }
                    }
                    catch (Exception tmp) { ShowMessageInGameAndLog("UpdateInput", "EXEPTION! " + tmp?.ToString()); }
                }
            }
        }