public void ToggleSamsite(SamSite sam, BasePlayer player = null)
 {
     if (player != null)
     {
         if (sam.GetBuildingPrivilege() != player.GetBuildingPrivilege())
         {
             player.ChatMessage(Instance.Lang("NoPermThisTurret", player.UserIDString));
             return;
         }
     }
     if (sam.IsPowered() || onlineSams.Contains(sam))
     {
         PowerSamsiteOff(sam);
     }
     else
     {
         PowerSamsiteOn(sam);
     }
     sam.SendNetworkUpdate();
 }
Пример #2
0
            public void ToggleSamsite(SamSite samSite, BasePlayer player = null)
            {
                if (samSite == null)
                {
                    return;
                }

                if (player != null && samSite.GetBuildingPrivilege()?.IsAuthed(player) == false)
                {
                    player.ChatMessage(_instance.Lang("NoPermThisTurret", player.UserIDString));
                    return;
                }

                if (samSite.IsPowered())
                {
                    PowerSamsiteOff(samSite);
                }
                else
                {
                    PowerSamsiteOn(samSite);
                }

                samSite.SendNetworkUpdate();
            }
Пример #3
0
        public void TurretInput(InputState input, BasePlayer player)
        {
            if (input == null || player == null)
            {
                return;
            }

            BUTTON.TryParse(Button, out PowerButton);

            if (input.WasJustPressed(PowerButton))
            {
                bool hasPermission = permission.UserHasPermission(player.UserIDString, perms);
                if (!hasPermission)
                {
                    player.ChatMessage(msg("NoPermissions", player.UserIDString));
                    return;
                }

                RaycastHit hit;
                if (Physics.SphereCast(player.eyes.position, 0.5f, Quaternion.Euler(player.serverInput.current.aimAngles) * Vector3.forward, out hit))
                {
                    AutoTurret autoturret = hit.GetEntity()?.GetComponent <AutoTurret>();
                    SamSite    samsite    = hit.GetEntity()?.GetComponent <SamSite>();

                    if (autoturret != null)
                    {
                        if (hit.distance >= 1.5)
                        {
                            return;
                        }

                        if (!autoturret.IsAuthed(player))
                        {
                            player.ChatMessage(msg("NotAuthed", player.UserIDString));
                            return;
                        }

                        if (!IsAuthed(player, autoturret))
                        {
                            player.ChatMessage(msg("NoBuildPrivilege", player.UserIDString));
                            return;
                        }

                        if (autoturret.IsOnline())
                        {
                            autoturret.SetIsOnline(false);
                            PoweredTurrets.Remove(autoturret.net.ID);
                        }
                        else
                        {
                            autoturret.SetIsOnline(true);
                            PoweredTurrets.Add(autoturret.net.ID);
                        }
                        autoturret.SendNetworkUpdateImmediate();
                    }

                    if (samsite != null)
                    {
                        if (hit.distance >= 1.5)
                        {
                            return;
                        }

                        if (!IsAuthed(player, samsite))
                        {
                            player.ChatMessage(msg("NoBuildPrivilege", player.UserIDString));
                            return;
                        }

                        if (samsite.IsPowered())
                        {
                            samsite.UpdateHasPower(0, 1);
                            PoweredSams.Remove(samsite.net.ID);
                        }
                        else
                        {
                            samsite.UpdateHasPower(25, 1);
                            PoweredSams.Add(samsite.net.ID);
                        }
                        samsite.SendNetworkUpdateImmediate();
                    }
                }
            }
        }