예제 #1
0
 private void Server_SendingConsoleCommand(Exiled.Events.EventArgs.SendingConsoleCommandEventArgs ev)
 {
     if (ev.Name.ToUpper() == "COMBUST")
     {
         var controller = ev.Player.GameObject.GetComponent <SCP457Controller>();
         if (controller != null)
         {
             if (controller.combustdelay == 0f)
             {
                 foreach (var plr in Player.List)
                 {
                     var brn = plr.GameObject.GetComponent <BurningComponent>();
                     if (brn != null)
                     {
                         if (brn.burning)
                         {
                             var temp = brn.burningtime;
                             temp += Config.commands.combust.burning_time;
                             if (temp < Config.commands.combust.burning_time_max)
                             {
                                 plr.ReferenceHub.playerStats.HurtPlayer(new PlayerStats.HitInfo(MainClass.singleton.Config.commands.combust.dmg_amount, "SCP457", DamageTypes.Asphyxiation, 0), plr.GameObject);
                                 brn.burningtime = temp;
                                 brn.colatime    = MainClass.singleton.Config.attack_settings.cola_duration;
                                 plr.ReferenceHub.playerEffectsController.EnableEffect <CustomPlayerEffects.Scp207>(MainClass.singleton.Config.attack_settings.cola_duration);
                                 plr.ReferenceHub.playerEffectsController.GetEffect <CustomPlayerEffects.Scp207>().ServerChangeIntensity(1);
                                 plr.ReferenceHub.playerEffectsController.EnableEffect <CustomPlayerEffects.Flashed>(1f);
                             }
                         }
                     }
                 }
                 ev.IsAllowed            = false;
                 ev.ReturnMessage        = Config.commands.combust.command_used_message;
                 controller.combustdelay = Config.commands.combust.cooldown;
             }
             else
             {
                 ev.IsAllowed     = false;
                 ev.ReturnMessage = Config.commands.combust.cooldown_message.Replace("%seconds%", ((int)controller.combustdelay).ToString());
             }
         }
     }
 }
예제 #2
0
        public void Server_SendingConsoleCommand(Exiled.Events.EventArgs.SendingConsoleCommandEventArgs ev)
        {
            switch (ev.Name.ToUpper())
            {
            case "GAMESTORE":
                ev.IsAllowed = false;
                if (ev.Arguments.Count == 0)
                {
                    ev.Player.SendConsoleMessage(Config.messages["GAMESTORE_CMD"].Replace("%bal%", $"{ecoController.GetPlayerBalance(ev.Player)}"), "green");
                }
                else if (ev.Arguments.Count == 1)
                {
                    switch (ev.Arguments[0].ToUpper())
                    {
                    case "BALANCE":
                    case "BAL":
                        ev.Player.SendConsoleMessage(Config.messages["BALANCE_CMD"].Replace("%bal%", $"{ecoController.GetPlayerBalance(ev.Player)}"), "green");
                        break;

                    case "BUY":
                        ev.Player.SendConsoleMessage(Config.messages["BUY_LIST_CMD"], "green");
                        var cats3 = Config.categories.Where(p => p.Value.restrictedTeam != Team.RIP && p.Value.restrictedTeam != ev.Player.Team).ToList();
                        if (cats3.Count == 0)
                        {
                            ev.Player.SendConsoleMessage(Config.messages["BUY_LIST_ITEM_EMPTY_CMD"], "green");
                        }
                        else
                        {
                            foreach (var cat in cats3)
                            {
                                ev.Player.SendConsoleMessage(Config.messages["BUY_LIST_ITEM_CMD"].Replace("%categoryid%", $"{cat.Key}").Replace("%categoryname%", cat.Value.CategoryName).Replace("%categorydesc%", cat.Value.CategoryDescription), "green");
                            }
                        }
                        ev.Player.SendConsoleMessage(Config.messages["BUY_LIST_FOOTER_CMD"], "green");
                        break;
                    }
                }
                else if (ev.Arguments.Count == 2)
                {
                    switch (ev.Arguments[0].ToUpper())
                    {
                    case "BUY":
                        if (int.TryParse(ev.Arguments[1], out int categoryId))
                        {
                            foreach (var cat in Config.categories)
                            {
                                if (cat.Key == categoryId)
                                {
                                    if (cat.Value.BuyableItems.Count == 0)
                                    {
                                        ev.Player.SendConsoleMessage(Config.messages["BUY_CATEGORY_EMPTY_CMD"], "green");
                                        return;
                                    }
                                    ev.Player.SendConsoleMessage(Config.messages["BUY_CATEGORY_CMD"].Replace("%categoryname%", cat.Value.CategoryName), "green");
                                    foreach (var item in cat.Value.BuyableItems)
                                    {
                                        ev.Player.SendConsoleMessage(Config.messages["BUY_CATEGORY_ITEM_CMD"].Replace("%itemid%", $"{item.Key}").Replace("%itemname%", item.Value.ItemName).Replace("%itemprice%", $"{item.Value.CoinsCost}").Replace("%itemdesc%", item.Value.ItemDesc), "green");
                                    }
                                    ev.Player.SendConsoleMessage(Config.messages["BUY_CATEGORY_FOOTER_CMD"].Replace("%categoryid%", $"{cat.Key}"), "green");
                                    return;
                                }
                            }
                            List <string> cats = new List <string>();
                            foreach (var t in Config.categories)
                            {
                                cats.Add($"[{t.Key}] {t.Value.CategoryName}");
                            }
                            ev.Player.SendConsoleMessage(Config.messages["BUY_CATEGORY_NOTFOUND_CMD"].Replace("%id%", $"{categoryId}").Replace("%categories%", string.Join(", ", cats)), "green");
                        }
                        else
                        {
                            ev.Player.SendConsoleMessage(Config.messages["BUY_CATEGORY_SYNTAX_CMD"], "green");
                        }
                        break;
                    }
                }
                else if (ev.Arguments.Count == 3)
                {
                    switch (ev.Arguments[0].ToUpper())
                    {
                    case "BUY":
                        if (int.TryParse(ev.Arguments[1], out int categoryId))
                        {
                            if (int.TryParse(ev.Arguments[2], out int itemId))
                            {
                                foreach (var cat in Config.categories)
                                {
                                    if (cat.Key == categoryId)
                                    {
                                        if (cat.Value.restrictedTeam != Team.RIP && cat.Value.restrictedTeam != ev.Player.Team)
                                        {
                                            foreach (var item in cat.Value.BuyableItems)
                                            {
                                                if (item.Key == itemId)
                                                {
                                                    if (item.Value.MaxPerRound != plugin.GetUsesLeft(ev.Player, categoryId, itemId))
                                                    {
                                                        if (ecoController.GetPlayerBalance(ev.Player) >= item.Value.CoinsCost)
                                                        {
                                                            plugin.UsesLeftAdd(ev.Player, categoryId, itemId);
                                                            ecoController.RemovePlayerBalance(ev.Player, item.Value.CoinsCost);
                                                            if (Config.rewards.ContainsKey(item.Value.RewardName))
                                                            {
                                                                var reward = Config.rewards[item.Value.RewardName];

                                                                foreach (var itemReward in reward.Items)
                                                                {
                                                                    if (plugin.IsInChance(itemReward.Chance))
                                                                    {
                                                                        if (itemReward.ClassRole != RoleType.None)
                                                                        {
                                                                            if (itemReward.InventorySetup.Count != 0)
                                                                            {
                                                                                ev.Player.SessionVariables.Add("STP", itemReward.InventorySetup);
                                                                            }
                                                                            ev.Player.Role = itemReward.ClassRole;
                                                                        }
                                                                        else
                                                                        {
                                                                            if (itemReward.HPAmount != -1)
                                                                            {
                                                                                ev.Player.Health = itemReward.HPAmount;
                                                                            }
                                                                            if (itemReward.InventorySetup.Count != 0)
                                                                            {
                                                                                ev.Player.ClearInventory();
                                                                                foreach (var item4 in itemReward.InventorySetup)
                                                                                {
                                                                                    ev.Player.AddItem(item4);
                                                                                }
                                                                            }
                                                                        }
                                                                        if (itemReward.AmmoSetup.Count != 0)
                                                                        {
                                                                            foreach (var ammo in itemReward.AmmoSetup)
                                                                            {
                                                                                ev.Player.Ammo[(int)ammo.Key] = ammo.Value;
                                                                            }
                                                                        }
                                                                        if (itemReward.HPAmount != -1 && itemReward.ClassRole != RoleType.None)
                                                                        {
                                                                            ev.Player.MaxHealth = (int)itemReward.HPAmount;
                                                                            ev.Player.Health    = itemReward.HPAmount;
                                                                        }
                                                                        for (int x = 0; x < itemReward.Amount; x++)
                                                                        {
                                                                            if (itemReward.CustomItemID != -1)
                                                                            {
                                                                                try
                                                                                {
                                                                                    CustomItem.TryGive(ev.Player, itemReward.CustomItemID);
                                                                                }
                                                                                catch (Exception)
                                                                                {
                                                                                    Log.Info("Failed to give player customitem, Exiled.Customitems not installed");
                                                                                }
                                                                            }
                                                                            else if (!string.IsNullOrEmpty(itemReward.CustomReward))
                                                                            {
                                                                                switch (itemReward.CustomReward)
                                                                                {
                                                                                case "CONTRACT":
                                                                                    var playersuserids = Player.List.Where(p => p.UserId != ev.Player.UserId && p.Team != ev.Player.Team && p.Team != Team.RIP).SelectMany(p2 => p2.UserId).ToList();
                                                                                    var us             = playersuserids[UnityEngine.Random.Range(0, playersuserids.Count - 1)];
                                                                                    var targetPlayer   = Player.Get(us);
                                                                                    if (targetPlayer != null)
                                                                                    {
                                                                                        ev.Player.SendConsoleMessage(Config.messages["BUY_CONTRACT_CMD"].Replace("%playername%", targetPlayer.Nickname), "green");
                                                                                        ev.Player.Broadcast(item.Value.BroadcastTime, Config.messages["BUY_CONTRACT_BC"].Replace("%playername%", targetPlayer.Nickname));
                                                                                        targetPlayer.SendConsoleMessage(Config.messages["BUY_CONTRACT_TARGET_CMD"].Replace("%playername%", targetPlayer.Nickname), "green");
                                                                                        targetPlayer.Broadcast(item.Value.BroadcastTime, Config.messages["BUY_CONTRACT_TARGET_BC"].Replace("%playername%", ev.Player.Nickname));
                                                                                    }
                                                                                    break;
                                                                                }
                                                                            }
                                                                            else if (itemReward.ItemType != ItemType.None)
                                                                            {
                                                                                ev.Player.AddItem(new Inventory.SyncItemInfo()
                                                                                {
                                                                                    durability = 30f,
                                                                                    id         = itemReward.ItemType,
                                                                                    modBarrel  = itemReward.WeaponMods.Barrel,
                                                                                    modSight   = itemReward.WeaponMods.Sight,
                                                                                    modOther   = itemReward.WeaponMods.Other
                                                                                });
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                            if (item.Value.SendBroadcastAfterBuy)
                                                            {
                                                                ev.Player.Broadcast(item.Value.BroadcastTime, Config.messages["BUY_ITEM_BC"].Replace("%itemprice%", $"{item.Value.CoinsCost}").Replace("%itemname%", item.Value.ItemName).Replace("%playeritemlimit%", $"{plugin.GetUsesLeft(ev.Player, categoryId, itemId)}").Replace("%itemlimit%", $"{item.Value.MaxPerRound}"), Broadcast.BroadcastFlags.Normal);
                                                            }
                                                            ev.Player.SendConsoleMessage(Config.messages["BUY_ITEM_CMD"].Replace("%itemprice%", $"{item.Value.CoinsCost}").Replace("%itemname%", item.Value.ItemName).Replace("%playeritemlimit%", $"{plugin.GetUsesLeft(ev.Player, categoryId, itemId)}").Replace("%itemlimit%", $"{item.Value.MaxPerRound}"), "green");
                                                        }
                                                        else
                                                        {
                                                            ev.Player.SendConsoleMessage(Config.messages["BUY_ITEM_MISSINGMONEY_CMD"].Replace("%itemprice%", $"{item.Value.CoinsCost}").Replace("%itemname%", item.Value.ItemName).Replace("%bal%", $"{ecoController.GetPlayerBalance(ev.Player)}"), "green");
                                                        }
                                                    }
                                                    else
                                                    {
                                                        ev.Player.SendConsoleMessage(Config.messages["BUY_ITEM_LIMIT_CMD"].Replace("%itemname%", item.Value.ItemName).Replace("%itemlimit%", $"{item.Value.MaxPerRound}"), "green");
                                                    }
                                                    return;
                                                }
                                            }
                                            List <string> its = new List <string>();
                                            foreach (var t in Config.categories[categoryId].BuyableItems)
                                            {
                                                its.Add($"[{t.Key}] {t.Value.ItemName}");
                                            }
                                            ev.Player.SendConsoleMessage(Config.messages["BUY_ITEM_NOTFOUND_CMD"].Replace("%itemid%", $"{itemId}").Replace("%items%", string.Join(", ", its)), "green");
                                            return;
                                        }
                                        else
                                        {
                                            ev.Player.SendConsoleMessage(Config.messages["BUY_ITEM_RESTRICTED_CMD"].Replace("%classname%", $"{ev.Player.Role}"), "green");
                                            return;
                                        }
                                    }
                                }
                                List <string> cats = new List <string>();
                                foreach (var t in Config.categories)
                                {
                                    cats.Add($"[{t.Key}] {t.Value.CategoryName}");
                                }
                                ev.Player.SendConsoleMessage(Config.messages["BUY_CATEGORY_NOTFOUND_CMD"].Replace("%id%", $"{categoryId}").Replace("%categories%", string.Join(", ", cats)), "green");
                            }
                            else
                            {
                                ev.Player.SendConsoleMessage(Config.messages["BUY_ITEM_SYNTAX_CMD"], "green");
                            }
                        }
                        else
                        {
                            ev.Player.SendConsoleMessage(Config.messages["BUY_ITEM_SYNTAX_CMD"], "green");
                        }
                        break;
                    }
                }
                break;

            case "BALANCE":
            case "BAL":
                ev.IsAllowed = false;
                ev.Player.SendConsoleMessage(Config.messages["BALANCE_CMD"].Replace("%bal%", $"{ecoController.GetPlayerBalance(ev.Player)}"), "green");
                break;
            }
        }