Example #1
0
        public string GetTime(Item item)
        {
            var time = blockedItems.FirstOrDefault(p => p.Value.Contains(item.info.shortname)).Key;

            if (time == default(string))
            {
                return(string.Empty);
            }
            return(core.TimeToString(core.StringToTime(time) - (DateTime.Now.Subtract(core.GetWipeTime()).TotalSeconds)));
        }
Example #2
0
 void BlockPlayer(BasePlayer player, bool owner = false)
 {
     if (player.IsSleeping())
     {
         return;
     }
     if (!timers.ContainsKey(player.userID))
     {
         player.ChatMessage(string.Format(Messages[owner ? "ownerhome" : "blockactive"],
                                          core.TimeToString(owner ? ownerBlockTime : blockTime)));
     }
     if (!owner || !timers.ContainsKey(player.userID))
     {
         var secs = owner ? ownerBlockTime : blockTime;
         timers[player.userID] = secs;
         CooldownRaid(player, secs);
     }
 }
Example #3
0
        object OnPlayerChat(ConsoleSystem.Arg arg)
        {
            var sender  = arg.Player();
            var message = arg.GetString(0, "text").Trim();

            if (message.Length > 500)
            {
                sender.Kick("Иди нахуй со своим спамом в чат, уже пофиксили) азазаза затралил)");
                return(false);
            }
            if (message.Length > 100)
            {
                SendReply(sender, "Запрещено отправлять столько символов");
                return(false);
            }
            message = RemoveCaps(message);

            message = message.Replace("лагает", "хорошо работает").Replace("гавно", "хороший");

            int floodTime;

            if (floods.TryGetValue(sender.userID, out floodTime))
            {
                floodTime++;
                SendReply(sender, string.Format(Messages["floodTimeout"], floodTime));
                floods[sender.userID] = floodTime;
                return(true);
            }
            else
            {
                floods[sender.userID] = 3;
            }

            double muteTime;

            if (mutes.TryGetValue(sender.userID, out muteTime))
            {
                var remain = muteTime - GrabCurrentTime();
                if (remain >= 0)
                {
                    Reply(sender, string.Format(Messages["muteself"], core.TimeToString(remain)));
                    return(true);
                }
                mutes.Remove(sender.userID);
            }

            bool mute;
            var  censorMessage = message.CensorBadWords(out mute);

            /*if (mute)
             *  Mute(sender, 60*autoMuteMin);
             * else
             * {
             *  ClearMessage(message).CensorBadWords(out mute);
             *  if (mute)
             *      Mute(sender, 60 * autoMuteMin);
             * }*/
            var prefix = prefixes[GetPrefix(sender.userID)].ToString();
            var name   = names[GetName(sender.userID)].ToString().Replace("{0}", sender.displayName);

            if (!PermissionService.HasPermission(sender.userID, clearedNamesPerms[GetName(sender.userID)]))
            {
                name = names[namesKeys.Find(p => p.Contains("default"))].ToString();
                GetConfig(sender.userID).Name = "default";
            }
            if (!PermissionService.HasPermission(sender.userID, clearedPrefixesPerms[GetPrefix(sender.userID)]))
            {
                prefix = prefixes[prefixesKeys.Find(p => p.Contains("default"))].ToString();
                GetConfig(sender.userID).Prefix = "default";
            }
            if (!PermissionService.HasPermission(sender.userID, clearedMessagesPerms[GetMessage(sender.userID)]))
            {
                GetConfig(sender.userID).Message = "default";
            }

            Interface.Oxide.RootLogger.Write(LogType.Info, $"[CHAT] " + (string.IsNullOrEmpty(sender.displayName) ? $"{message}" : $"{sender.displayName}: {censorMessage}"));
            censorMessage = messages[GetMessage(sender.userID)].ToString().Replace("{0}", censorMessage);
            if (prefix.Length > 0)
            {
                name = $"{prefix} {name}";
            }
            BroadcastChat(name, message, sender.userID, censorMessage);

            return(true);
        }
Example #4
0
        void AddShopPlayer(ulong userId)
        {
            if (!players.ContainsKey(userId))
            {
                players[userId] = new ShopPlayer()
                {
                    Points = 15, TotalOnlineSeconds = 0
                }
            }
            ;
        }

        #endregion

        #region UI

        void CreateItemsUI()
        {
            float gap       = 0.014f;
            float width     = 0.15f;
            float height    = 0.17f;
            float startxBox = gap;
            float startyBox = 1f - height - 0.05f;

            float xmin = startxBox;
            float ymin = startyBox;

            itemsUI = new CuiElementContainer();
            int i          = 0;
            var mainParent = itemsUI.Add(new CuiPanel()
            {
                Image = { Color = "0 0 0 0" }
            }, "rustyshop.items",
                                         "rustyshop.items.customui");

            foreach (var item in items)
            {
                var min       = $"{xmin} {ymin}";
                var max       = $"{xmin + width} {ymin + height}";
                var panelname = itemsUI.Add(new CuiPanel()
                {
                    Image         = { Color = "0 0 0 0" },
                    RectTransform = { AnchorMin = min, AnchorMax = max }
                }, mainParent);


                itemsUI.Add(new CuiButton()
                {
                    Button        = { Command = $"rustyshop.buy {i}", Color = "0.3 0.5 0.4 1" },
                    RectTransform = { AnchorMin = "0 0", AnchorMax = "1 0.25" },
                    Text          =
                    {
                        Text     =
                            $"<color=orange><color=#00ccff>{item.Amount}</color> за <color=#ffcc00>{item.Cost}</color> р.</color>",
                        FontSize = 16,
                        Align    = TextAnchor.MiddleCenter
                    }
                }, panelname);

                itemsUI.Add(new CuiElement()
                {
                    Name       = CuiHelper.GetGuid(),
                    Parent     = panelname,
                    Components =
                    {
                        new CuiRawImageComponent()
                        {
                            Png    = ImageStorage.FetchPng(item.DisplayName),
                            Sprite = "assets/content/textures/generic/fulltransparent.tga"
                        },
                        new CuiRectTransformComponent()
                        {
                            AnchorMin = "0 0.25", AnchorMax = "1 1"
                        }
                    }
                });

                xmin += width + gap;
                if (xmin + width >= 1)
                {
                    xmin  = startxBox;
                    ymin -= height + gap;
                }
                i++;
            }
        }

        void DrawUI(BasePlayer player)
        {
            var shopPlayer = players[player.userID];

            foreach (var we in itemsUI)
            {
                CuiHelper.DestroyUi(player, we.Name);
            }
            core.DrawUIWithEx(player, "RustyShop", "menu", itemsUI, shopPlayer.Points,
                              core.TimeToString(shopPlayer.TotalOnlineSeconds));
        }

        void DestroyUI(BasePlayer player)
        {
            core.DestroyUI(player, "RustyShop", "menu");
        }

        IEnumerator LoadImages()
        {
            foreach (var item in items)
            {
                yield return(CommunityEntity.ServerInstance.StartCoroutine(ImageStorage.Store(item.DisplayName, item.URL)));
            }
            CreateItemsUI();
        }
Example #5
0
        object OnHammerHit(BasePlayer player, HitInfo info)
        {
            if (!activePlayers.Contains(player.userID))
            {
                return(null);
            }
            if (info == null)
            {
                return(null);
            }
            var entity = info?.HitEntity;

            if (entity == null)
            {
                return(null);
            }
            if ((!(entity is DecayEntity) && !(entity is Signage)) && !entity.ShortPrefabName.ContainsAny("shelves", "quarry", "ladder"))
            {
                return(null);
            }
            if (!entity.OwnerID.IsSteamId())
            {
                return(null);
            }

            if (NoEscape != null)
            {
                var time = (double)NoEscape.Call("ApiGetTime", player.userID);
                if (time > 0)
                {
                    SendReply(player, string.Format(Messages["raidremove"], core.TimeToString(time)));
                    return(null);
                }
            }

            if (friendRemove && HasFriend(player.userID, entity.OwnerID))
            {
                RemoveEntity(player, entity);
                return(true);
            }

            if (selfRemove && entity.OwnerID == player.userID)
            {
                RemoveEntity(player, entity);
                return(true);
            }

            var ret = Interface.Call("CanRemove", player, entity);

            if (ret is string)
            {
                SendReply(player, (string)ret);
                return(null);
            }
            if (ret is bool && (bool)ret)
            {
                RemoveEntity(player, entity);
                return(true);
            }

            if (cupboardRemove)
            {
                var cupboard = player.GetBuildingPrivilege();
                if (cupboard != null && cupboard.authorizedPlayers.Select(p => p.userid).Contains(player.userID))
                {
                    RemoveEntity(player, entity);
                    return(true);
                }
            }


            SendReply(player, "<color=#ffcc00><size=16>Для ремува авторизуйтесь в шкафу!</size></color>");
            return(null);
        }