Иконка ресурса

FREE AchievementSystem : 2.7.4 2.7.4

Нет прав для скачивания
C#:
// https://modhub.to
// This is a user submitted Rust Plugin checked and verified by ModHub
// ModHub is the largest Server Owner Trading Platform Online
using System;
using System.Collections.Generic;
using System.Globalization;
using Network;
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using UnityEngine;
namespace Oxide.Plugins {
    [Info("Achievement System", "ModHub.to", "2.7.4")]
    [Description("An achievement system where players are rewarded")]
    public class AchievementSystem : RustPlugin {
#region Class Fields
        [PluginReference]
        private Plugin ImageLibrary, ServerRewards, Economics;
        private static AchievementSystem _plugin;
        private const string UsePermission = "achievementsystem.use";
        private const string UsePermissionVIP = "achievementsystem.vip";
        private const string AchievementFX = "assets/prefabs/tools/pager/effects/vibrate.prefab";
        private const string RewardsFX = "assets/prefabs/misc/easter/painted eggs/effects/gold_open.prefab";
#endregion
#region Hooks
        private void Init() {
            _plugin = this;
            LoadData();
            permission.RegisterPermission(UsePermission, this);
            permission.RegisterPermission(UsePermissionVIP, this);
        }
        private void OnServerInitialized() {
            ImageLibrary.Call("AddImage", "https://i.postimg.cc/1X5JcdrP/Achievement-System.png", "AchievementSystemUI");
            //Popup
            ImageLibrary.Call("AddImage", "https://i.postimg.cc/Ghytk6vh/noun-Lock-3041637.png", "Locked");
            //Locked
            ImageLibrary.Call("AddImage", "https://i.postimg.cc/DwJ9gTJG/unlock-512.png", "Redeemed");
            //Redeemed icon
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageHemps, "Cannabis");
            //Hemp
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imagePumpkins, "Pies");
            //Pumpkin
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageCorns, "Popcorn");
            //Corn
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageWoodPicked, "WoodLurker");
            //Wood Pick up
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageWoodGathered, "AxeMan");
            // Wood Gathered
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageHeadshots, "HeadHunter");
            //Headshots
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageSleepersKills, "Nightmare");
            //Sleepers Killed
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imagePVPKills, "Killer");
            //Kills
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageBulletsFired, "Maniac");
            //Bullets Fired
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageStonesPicked, "StoneAge");
            //Stone Pick up
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageMetalsPicked, "Metal");
            //Metal Pick up
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageSulfursPicked, "Raider");
            //Sulfur Pick up
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageBarrelsKills, "GoldenBarrel");
            //Barrels Destroyed
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageRocketsLaunched, "RPG");
            //Rockets Launched
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageExplosivesThrown, "Explosion");
            //Explosives Thrown
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageStonesGathered, "Miner");
            //Stone Gathered
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageMetalsGathered, "MetalGear");
            //Metal Gathered
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageSulfursGathered, "EvilMiner");
            //Sulfur Gathered
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageScientistsKills, "Outsmarted");
            //Scientists Killed
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageHeaviesKills, "Juggernaut");
            //Heavy Scientists Killed
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageBoarsKills, "Piggy");
            //Boars Killed
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageBearsKills, "Pookie");
            //Bears Killed
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageChickensKills, "ChickenDinner");
            //Chickens Klled
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageStagsKills, "Bambi");
            //Stags Killed
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageWolvesKills, "LoneWolf");
            //Wolves Killed
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageBradleysKills, "TankHunter");
            //Bradleys Destroyed
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageChoppersKills, "ChopperHunter");
            //Choppers Destroyed
            ImageLibrary.Call("AddImage", _config.AchievementsImg.imageClothSkinned, "Skinner");
            // Cloth Skinned
            foreach (BasePlayer player in BasePlayer.activePlayerList) {
                PlayerData data = GetPlayerData(player.userID);
                data.Name = player.displayName;
            }
        }
        private void Unload() {
            SaveData();
            foreach (BasePlayer player in BasePlayer.activePlayerList) {
                DestroyAllUi(player);
            }
            _plugin = null;
        }
        private void OnNewSave(string filename) {
            _data.PlayerDatas.Clear();
        }
        private void OnPlayerDeath(BasePlayer player, HitInfo info) {
            if (player == null) {
                return;
            }
            CuiHelper.DestroyUi(player, UiPanelName);
        }
        private void OnPlayerConnected(BasePlayer player) {
            PlayerData data = GetPlayerData(player.userID);
            data.Name = player.displayName;
            NextTick(() => SaveData());
        }
        private void AddPoints(BasePlayer player, int amount) {
            ServerRewards?.Call("AddPoints", player.userID, amount);
        }
        private void AddEconomics(BasePlayer player, double amount) {
            Economics?.Call("Deposit", player.userID, amount);
        }
        private void OnCollectiblePickup(Item item, BasePlayer player) {
            if (player == null || player.IsNpc) {
                return;
            }
            if (!HasPermission(player, UsePermission) && !HasPermission(player, UsePermissionVIP)) {
                return;
            }
            PlayerData data = GetPlayerData(player.userID);
            data.Name = player.displayName;
            if (item.info.itemid == -858312878) {
                data.HempPickedUp++;
                var minHemp = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minHempsVIP : _config.AchievementsSet.minHemps;
                if (_data.PlayerDatas[player.userID].HempPickedUp == minHemp) {
                    DisplayUI(player, "<color=#14ad00>CANNABIS</color>", "Cannabis");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#14ad00>CANNABIS</color>");
                    }
                }
            }
            if (item.info.itemid == -567909622) {
                data.PumpkinPickedUp++;
                var minPumpkin = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minPumpkinsVIP : _config.AchievementsSet.minPumpkins;
                if (_data.PlayerDatas[player.userID].PumpkinPickedUp == minPumpkin) {
                    DisplayUI(player, "<color=#ffa40a>PIES</color>", "Pies");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#ffa40a>PIES</color>");
                    }
                }
            }
            if (item.info.itemid == 1367190888) {
                data.CornPickedUp++;
                var minCorn = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minCornsVIP : _config.AchievementsSet.minCorns;
                if (_data.PlayerDatas[player.userID].CornPickedUp == minCorn) {
                    DisplayUI(player, "<color=#fff133>POPCORN</color>", "Popcorn");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#fff133>POPCORN</color>");
                    }
                }
            }
            if (item.info.shortname.Contains("stone")) {
                data.StonePickedUp++;
                var minStone = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minStonesVIP : _config.AchievementsSet.minStones;
                if (_data.PlayerDatas[player.userID].StonePickedUp == minStone) {
                    DisplayUI(player, "<color=#d6d6d6>STONE AGE</color>", "StoneAge");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#d6d6d6>STONE AGE</color>");
                    }
                }
            }
            if (item.info.shortname.Contains("wood")) {
                data.WoodPickedUp++;
                var minWood = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minWoodVIP : _config.AchievementsSet.minWood;
                if (_data.PlayerDatas[player.userID].WoodPickedUp == minWood) {
                    DisplayUI(player, "<color=#acfa58>WOOD LURKER</color>", "WoodLurker");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#acfa58>WOOD LURKER</color>");
                    }
                }
            }
            if (item.info.shortname.Contains("metal")) {
                data.MetalPickedUp++;
                var minMetal = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minMetalsVIP : _config.AchievementsSet.minMetals;
                if (_data.PlayerDatas[player.userID].MetalPickedUp == minMetal) {
                    DisplayUI(player, "<color=#bdbdbd>METAL MAN</color>", "Metal");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#bdbdbd>METAL MAN</color>");
                    }
                }
            }
            if (item.info.shortname.Contains("sulfur")) {
                data.SulfurPickedUp++;
                var minSulfur = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minSulfursVIP : _config.AchievementsSet.minSulfurs;
                if (_data.PlayerDatas[player.userID].SulfurPickedUp == minSulfur) {
                    DisplayUI(player, "<color=#eb0f00>RAIDER</color>", "Raider");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#eb0f00>RAIDER</color>");
                    }
                }
            }
        }
        private void OnEntityTakeDamage(BasePlayer victim, HitInfo info) {
            if (victim == null || info == null || info.InitiatorPlayer == null || !victim.userID.IsSteamId() || !info.InitiatorPlayer.userID.IsSteamId() || victim == info.InitiatorPlayer) {
                return;
            }
            var player = info.InitiatorPlayer;
            if (!HasPermission(player, UsePermission) && !HasPermission(player, UsePermissionVIP)) {
                return;
            }
            if (info.isHeadshot) {
                PlayerData data = GetPlayerData(player.userID);
                data.Name = player.displayName;
                data.HeadShots++;
                var minHeadShots = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minHeadshotsVIP : _config.AchievementsSet.minHeadshots;
                if (_data.PlayerDatas[player.userID].HeadShots == minHeadShots) {
                    DisplayUI(player, "<color=#4da6ff>HEAD HUNTER</color>", "HeadHunter");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#4da6ff>HEAD HUNTER</color>");
                    }
                }
            }
        }
        private void OnEntityDeath(BasePlayer victim, HitInfo info) {
            if (victim == null || info == null || info.InitiatorPlayer == null || !victim.userID.IsSteamId() || !info.InitiatorPlayer.userID.IsSteamId() || victim == info.InitiatorPlayer) {
                return;
            }
            BasePlayer attacker = info.InitiatorPlayer;
            if (!HasPermission(attacker, UsePermission) && !HasPermission(attacker, UsePermissionVIP)) {
                return;
            }
            ProcessPVPKills(attacker, victim);
        }
        private void OnEntityDeath(BaseEntity entity, HitInfo info) {
            if (entity == null || info == null || info.InitiatorPlayer == null || entity == info.InitiatorPlayer || info.Initiator.IsNpc || !info.InitiatorPlayer.userID.IsSteamId()) {
                return;
            }
            var player = info.InitiatorPlayer;
            if (!HasPermission(player, UsePermission) && !HasPermission(player, UsePermissionVIP)) {
                return;
            }
            PlayerData data = GetPlayerData(player.userID);
            data.Name = player.displayName;
            if (entity.name.Contains("barrel")) {
                data.BarrelsDestroyed++;
                var minBarrels = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minBarrelsDestroyedVIP : _config.AchievementsSet.minBarrelsDestroyed;
                if (_data.PlayerDatas[player.userID].BarrelsDestroyed == minBarrels) {
                    DisplayUI(player, "<color=#ffdb2e>GOLDEN BARREL</color>", "GoldenBarrel");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#ffdb2e>GOLDEN BARREL</color>");
                    }
                }
            }
            if (entity.ShortPrefabName == "boar") {
                data.BoarsKilled++;
                var minBoars = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minBoarsKillsVIP : _config.AchievementsSet.minBoarsKills;
                if (_data.PlayerDatas[player.userID].BoarsKilled == minBoars) {
                    DisplayUI(player, "<color=#ff9ee9>PIGGY</color>", "Piggy");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#ff9ee9>PIGGY</color>");
                    }
                }
            }
            if (entity.ShortPrefabName == "bear") {
                data.BearsKilled++;
                var minBears = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minBearsKillsVIP : _config.AchievementsSet.minBearsKills;
                if (_data.PlayerDatas[player.userID].BearsKilled == minBears) {
                    DisplayUI(player, "<color=#c8ff9e>POOKIE BEAR</color>", "Pookie");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#c8ff9e>POOKIE BEAR</color>");
                    }
                }
            }
            if (entity.ShortPrefabName == "chicken") {
                data.ChickensKilled++;
                var minChickens = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minChickensKillsVIP : _config.AchievementsSet.minChickensKills;
                if (_data.PlayerDatas[player.userID].ChickensKilled == minChickens) {
                    DisplayUI(player, "<color=#ba9eff>CHICKEN DINNER</color>", "ChickenDinner");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#ba9eff>CHICKEN DINNER</color>");
                    }
                }
            }
            if (entity.ShortPrefabName == "stag") {
                data.StagsKilled++;
                var minStags = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minStagsKillsVIP : _config.AchievementsSet.minStagsKills;
                if (_data.PlayerDatas[player.userID].StagsKilled == minStags) {
                    DisplayUI(player, "<color=#dc567c>BAMBI</color>", "Bambi");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#dc567c>BAMBI</color>");
                    }
                }
            }
            if (entity.ShortPrefabName == "wolf") {
                data.WolvesKilled++;
                var minWolves = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minWolvesKillsVIP : _config.AchievementsSet.minWolvesKills;
                if (_data.PlayerDatas[player.userID].WolvesKilled == minWolves) {
                    DisplayUI(player, "<color=#9f284a>LONE WOLF</color>", "LoneWolf");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#9f284a>LONE WOLF</color>");
                    }
                }
            }
            if (entity.ShortPrefabName == "bradleyapc") {
                data.BradleyDestroyed++;
                var minBradleys = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minBradleysKillsVIP : _config.AchievementsSet.minBradleysKills;
                if (_data.PlayerDatas[player.userID].BradleyDestroyed == minBradleys) {
                    DisplayUI(player, "<color=#28539f>TANK HUNTER</color>", "TankHunter");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#28539f>TANK HUNTER</color>");
                    }
                }
            }
            if (entity.ShortPrefabName == "patrolhelicopter") {
                data.HelicopterDestroyed++;
                var minHelicopters = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minChoppersKillsVIP : _config.AchievementsSet.minChoppersKills;
                if (_data.PlayerDatas[player.userID].HelicopterDestroyed == minHelicopters) {
                    DisplayUI(player, "<color=#cb6910>HELI HUNTER</color>", "ChopperHunter");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#cb6910>HELI HUNTER</color>");
                    }
                }
            }
        }
        private void OnEntityDeath(HumanNPC npc, HitInfo info) {
            if (npc == null || info == null || info.InitiatorPlayer == null || npc == info.InitiatorPlayer || info.Initiator.IsNpc || !info.InitiatorPlayer.userID.IsSteamId()) {
                return;
            }
            var player = info.InitiatorPlayer;
            if (!HasPermission(player, UsePermission) && !HasPermission(player, UsePermissionVIP)) {
                return;
            }
            PlayerData data = GetPlayerData(player.userID);
            data.Name = player.displayName;
            if (npc.name.Contains("scientist")) {
                data.ScientistsKilled++;
                var minScientists = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minScientistsKillsVIP : _config.AchievementsSet.minScientistsKills;
                if (_data.PlayerDatas[player.userID].ScientistsKilled == minScientists) {
                    DisplayUI(player, "<color=#73a6e8>OUTSMARTED</color>", "Outsmarted");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#73a6e8>OUTSMARTED</color>");
                    }
                }
            }
        }
        private void OnEntityDeath(ScientistNPC scientist, HitInfo info) {
            if (scientist == null || info == null || info.InitiatorPlayer == null || scientist == info.InitiatorPlayer || info.Initiator.IsNpc || !info.InitiatorPlayer.userID.IsSteamId()) {
                return;
            }
            var player = info.InitiatorPlayer;
            if (!HasPermission(player, UsePermission) && !HasPermission(player, UsePermissionVIP)) {
                return;
            }
            PlayerData data = GetPlayerData(player.userID);
            data.Name = player.displayName;
            if (scientist.name.Contains("heavy")) {
                data.HeaviesKilled++;
                var minHeavies = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minHeaviesKillsVIP : _config.AchievementsSet.minHeaviesKills;
                if (_data.PlayerDatas[player.userID].HeaviesKilled == minHeavies) {
                    DisplayUI(player, "<color=#e8d473>JUGGERNAUT</color>", "Juggernaut");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#e8d473>JUGGERNAUT</color>");
                    }
                }
            }
            else if (scientist.name.Contains("scientist")) {
                data.ScientistsKilled++;
                var minScientists = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minScientistsKillsVIP : _config.AchievementsSet.minScientistsKills;
                if (_data.PlayerDatas[player.userID].ScientistsKilled == minScientists) {
                    DisplayUI(player, "<color=#73a6e8>OUTSMARTED</color>", "Outsmarted");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#73a6e8>OUTSMARTED</color>");
                    }
                }
            }
        }
        private void OnDispenserGather(ResourceDispenser dispenser, BasePlayer player, Item item) {
            if (!HasPermission(player, UsePermission) && !HasPermission(player, UsePermissionVIP)) {
                return;
            }
            if (dispenser == null || player == null || item == null) {
                return;
            }
            PlayerData data = GetPlayerData(player.userID);
            data.Name = player.displayName;
            if (item.info.shortname == "wood") {
                data.WoodGathered += item.amount;
                var minWood = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minWoodGatheredVIP : _config.AchievementsSet.minWoodGathered;
                if (_data.PlayerDatas[player.userID].WoodGathered >= minWood && !_data.PlayerDatas[player.userID].DisplayWood) {
                    DisplayUI(player, "<color=#d66f00>AXE MAN</color>", "AxeMan");
                    SendEffectTo(AchievementFX, player);
                    _data.PlayerDatas[player.userID].DisplayWood = true;
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#d66f00>AXE MAN</color>");
                    }
                }
            }
            if (item.info.shortname == "stones") {
                data.StoneGathered += item.amount;
                var minStones = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minStonesGatheredVIP : _config.AchievementsSet.minStonesGathered;
                if (_data.PlayerDatas[player.userID].StoneGathered >= minStones && !_data.PlayerDatas[player.userID].DisplayStone) {
                    DisplayUI(player, "<color=#c4b382>MINER</color>", "Miner");
                    SendEffectTo(AchievementFX, player);
                    _data.PlayerDatas[player.userID].DisplayStone = true;
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#c4b382>MINER</color>");
                    }
                }
            }
            if (item.info.shortname == "metal.ore") {
                data.MetalGathered += item.amount;
                var minMetal = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minMetalsGatheredVIP : _config.AchievementsSet.minMetalsGathered;
                if (_data.PlayerDatas[player.userID].MetalGathered >= minMetal && !_data.PlayerDatas[player.userID].DisplayMetal) {
                    DisplayUI(player, "<color=#adadad>METAL GEAR</color>", "MetalGear");
                    SendEffectTo(AchievementFX, player);
                    _data.PlayerDatas[player.userID].DisplayMetal = true;
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#adadad>METAL GEAR</color>");
                    }
                }
            }
            if (item.info.shortname == "sulfur.ore") {
                data.SulfurGathered += item.amount;
                var minSulfur = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minSulfursGatheredVIP : _config.AchievementsSet.minSulfursGathered;
                if (_data.PlayerDatas[player.userID].SulfurGathered >= minSulfur && !_data.PlayerDatas[player.userID].DisplaySulfur) {
                    DisplayUI(player, "<color=#eb3e00>EVIL MINER</color>", "EvilMiner");
                    SendEffectTo(AchievementFX, player);
                    _data.PlayerDatas[player.userID].DisplaySulfur = true;
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#eb3e00>EVIL MINER</color>");
                    }
                }
            }
            if (item.info.shortname == "cloth") {
                data.ClothSkinned += item.amount;
                var minCloth = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minClothSkinnedVIP : _config.AchievementsSet.minClothSkinned;
                if (_data.PlayerDatas[player.userID].ClothSkinned >= minCloth && !_data.PlayerDatas[player.userID].DisplayCloth) {
                    DisplayUI(player, "<color=#95283b>SKINNER</color>", "Skinner");
                    SendEffectTo(AchievementFX, player);
                    _data.PlayerDatas[player.userID].DisplayCloth = true;
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#95283b>SKINNER</color>");
                    }
                }
            }
        }
        private void OnWeaponFired(BaseProjectile projectile, BasePlayer player, ItemModProjectile mod) {
            if (!HasPermission(player, UsePermission) && !HasPermission(player, UsePermissionVIP)) {
                return;
            }
            if (player != null) {
                if (mod != null) {
                    if (mod.ToString().Contains("ammo")) {
                        PlayerData data = GetPlayerData(player.userID);
                        data.Name = player.displayName;
                        data.BulletsFired++;
                        var minBullets = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minBulletsVIP : _config.AchievementsSet.minBullets;
                        if (_data.PlayerDatas[player.userID].BulletsFired == minBullets) {
                            DisplayUI(player, "<color=#ffea80>MANIAC</color>", "Maniac");
                            SendEffectTo(AchievementFX, player);
                            if (_config.AchievementsImg.achievementBroadcast) {
                                Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#ffea80>MANIAC</color>");
                            }
                        }
                    }
                }
            }
        }
        private void OnExplosiveThrown(BasePlayer player, BaseEntity entity, ThrownWeapon item) {
            if (!HasPermission(player, UsePermission) && !HasPermission(player, UsePermissionVIP)) {
                return;
            }
            if (player != null) {
                if (item != null) {
                    if (item.name.Contains("explosive.timed") || item.name.Contains("explosive.satchel") || item.name.Contains("grenade.beancan") || item.name.Contains("grenade.f1")) {
                        PlayerData data = GetPlayerData(player.userID);
                        data.Name = player.displayName;
                        data.ExplosivesThrown++;
                        var minExplosives = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minExplosivesVIP : _config.AchievementsSet.minExplosives;
                        if (_data.PlayerDatas[player.userID].ExplosivesThrown == minExplosives) {
                            DisplayUI(player, "<color=#ff9c42>BOOM</color>", "Explosion");
                            SendEffectTo(AchievementFX, player);
                            if (_config.AchievementsImg.achievementBroadcast) {
                                Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#ff9c42>BOOM</color>");
                            }
                        }
                    }
                }
            }
        }
        private void OnRocketLaunched(BasePlayer player, BaseEntity entity) {
            if (!HasPermission(player, UsePermission) && !HasPermission(player, UsePermissionVIP)) {
                return;
            }
            if (player != null) {
                PlayerData data = GetPlayerData(player.userID);
                data.Name = player.displayName;
                data.RocketsLaunched++;
                var minRockets = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minRocketsVIP : _config.AchievementsSet.minRockets;
                if (_data.PlayerDatas[player.userID].RocketsLaunched == minRockets) {
                    DisplayUI(player, "<color=#ff712e>RPG</color>", "RPG");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#ff712e>RPG</color>");
                    }
                }
            }
        }
#endregion
#region Core Methods
        private void ProcessPVPKills(BasePlayer player, BasePlayer victim) {
            PlayerData data = GetPlayerData(player.userID);
            data.Name = player.displayName;
            if (victim.IsSleeping()) {
                data.SleepersKilled++;
                var minSleepers = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minSleepersKillsVIP : _config.AchievementsSet.minSleepersKills;
                if (_data.PlayerDatas[player.userID].SleepersKilled == minSleepers) {
                    DisplayUI(player, "<color=#785959>NIGHTMARE</color>", "Nightmare");
                    SendEffectTo(AchievementFX, player);
                    if (_config.AchievementsImg.achievementBroadcast) {
                        Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#785959>NIGHTMARE</color>");
                    }
                }
                return;
            }
            data.PVPKills++;
            var minKills = HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minPVPKillsVIP : _config.AchievementsSet.minPVPKills;
            if (_data.PlayerDatas[player.userID].PVPKills == minKills) {
                DisplayUI(player, "<color=#ff5633>KILLER</color>", "Killer");
                SendEffectTo(AchievementFX, player);
                if (_config.AchievementsImg.achievementBroadcast) {
                    Server.Broadcast($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] <color=#54a3f2>{player.displayName}</color> unlocked an Achievement: <color=#ff5633>KILLER</color>");
                }
            }
        }
#endregion
#region Commands
        [ChatCommand("achievements")]
        private void AchievementsCommand(BasePlayer player) {
            if (!HasPermission(player, UsePermission) && !HasPermission(player, UsePermissionVIP)) {
                player.ChatMessage(Lang(LangKeys.NoPermission, player.UserIDString));
                return;
            }
            DisplayAchievements(player);
        }
        [ChatCommand("checkachievements")]
        private void AchievementsCheckCommand(BasePlayer player) {
            if (!HasPermission(player, UsePermission) && !HasPermission(player, UsePermissionVIP)) {
                player.ChatMessage(Lang(LangKeys.NoPermission, player.UserIDString));
                return;
            }
            player.ChatMessage($"<color=#e3e3e3>[<color=#ACFA58>Achievement System</color>] Your achievement stats are:\n" + $"PVP Kills: {_data.PlayerDatas[player.userID].PVPKills} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minPVPKillsVIP : _config.AchievementsSet.minPVPKills)}\n" + $"Scientists Killed: {_data.PlayerDatas[player.userID].ScientistsKilled} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minScientistsKillsVIP : _config.AchievementsSet.minScientistsKills)}\n" + $"Heavy Scientists Killed: {_data.PlayerDatas[player.userID].HeaviesKilled} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minHeaviesKillsVIP : _config.AchievementsSet.minHeaviesKills)}\n" + $"Boars Killed: {_data.PlayerDatas[player.userID].BoarsKilled} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minBoarsKillsVIP : _config.AchievementsSet.minBoarsKills)}\n" + $"Bears Killed: {_data.PlayerDatas[player.userID].BearsKilled} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minBearsKillsVIP : _config.AchievementsSet.minBearsKills)}\n" + $"Chickens Killed: {_data.PlayerDatas[player.userID].ChickensKilled} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minChickensKillsVIP : _config.AchievementsSet.minChickensKills)}\n" + $"Stags Killed: {_data.PlayerDatas[player.userID].StagsKilled} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minStagsKillsVIP : _config.AchievementsSet.minStagsKills)}\n" + $"Wolves Killed: {_data.PlayerDatas[player.userID].WolvesKilled} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minWolvesKillsVIP : _config.AchievementsSet.minWolvesKills)}\n" + $"Bradleys Destroyed: {_data.PlayerDatas[player.userID].BradleyDestroyed} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minBradleysKillsVIP : _config.AchievementsSet.minBradleysKills)}\n" + $"Choppers Destroyed: {_data.PlayerDatas[player.userID].HelicopterDestroyed} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minChoppersKillsVIP : _config.AchievementsSet.minChoppersKills)}\n" + $"Sleepers Killed: {_data.PlayerDatas[player.userID].SleepersKilled} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minSleepersKillsVIP : _config.AchievementsSet.minSleepersKills)}\n" + $"Headshots: {_data.PlayerDatas[player.userID].HeadShots} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minHeadshotsVIP : _config.AchievementsSet.minHeadshots)}\n" + $"Barrels Destroyed: {_data.PlayerDatas[player.userID].BarrelsDestroyed} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minBarrelsDestroyedVIP : _config.AchievementsSet.minBarrelsDestroyed)}\n" + $"Explosives Thrown: {_data.PlayerDatas[player.userID].ExplosivesThrown} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minExplosivesVIP : _config.AchievementsSet.minExplosives)}\n" + $"Bullets Fired: {_data.PlayerDatas[player.userID].BulletsFired} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minBulletsVIP : _config.AchievementsSet.minBullets)}\n" + $"Rockets Launched: {_data.PlayerDatas[player.userID].RocketsLaunched} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minRocketsVIP : _config.AchievementsSet.minRockets)}\n" + $"Hemps Picked up: {_data.PlayerDatas[player.userID].HempPickedUp} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minHempsVIP : _config.AchievementsSet.minHemps)}\n" + $"Pumpkins Picked up: {_data.PlayerDatas[player.userID].PumpkinPickedUp} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minPumpkinsVIP : _config.AchievementsSet.minPumpkins)}\n" + $"Corns Picked up: {_data.PlayerDatas[player.userID].CornPickedUp} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minCornsVIP : _config.AchievementsSet.minCorns)}\n" + $"Wood Picked up: {_data.PlayerDatas[player.userID].WoodPickedUp} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minWoodVIP : _config.AchievementsSet.minWood)}\n" + $"Stones Picked up: {_data.PlayerDatas[player.userID].StonePickedUp} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minStonesVIP : _config.AchievementsSet.minStones)}\n" + $"Metals Picked up: {_data.PlayerDatas[player.userID].MetalPickedUp} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minMetalsVIP : _config.AchievementsSet.minMetals)}\n" + $"Sulfurs Picked up: {_data.PlayerDatas[player.userID].SulfurPickedUp} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minSulfursVIP : _config.AchievementsSet.minSulfurs)}\n" + $"Stones Gathered: {_data.PlayerDatas[player.userID].StoneGathered} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minStonesGatheredVIP : _config.AchievementsSet.minStonesGathered)}\n" + $"Wood Gathered: {_data.PlayerDatas[player.userID].WoodGathered} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minWoodGatheredVIP : _config.AchievementsSet.minWoodGathered)}\n" + $"Metals Gathered: {_data.PlayerDatas[player.userID].MetalGathered} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minMetalsGatheredVIP : _config.AchievementsSet.minMetalsGathered)}\n" + $"Sulfurs Gathered: {_data.PlayerDatas[player.userID].SulfurGathered} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minSulfursGatheredVIP : _config.AchievementsSet.minSulfursGathered)}\n" + $"Cloth Skinned: {_data.PlayerDatas[player.userID].ClothSkinned} / {(HasPermission(player, UsePermissionVIP) ? _config.AchievementsSetVIP.minClothSkinnedVIP : _config.AchievementsSet.minClothSkinned)}</color>");
        }
#endregion
#region Configuration
        private Configuration _config;
        private class Configuration {
            [JsonProperty(PropertyName = "Achievements for Regular Players")]
            public AchievementsSettings AchievementsSet {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Achievements for VIP Players")]
            public AchievementsSettingsVIP AchievementsSetVIP {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Reward Settings for Regular Players")]
            public RewardSettings RewardSet {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Reward Settings for VIP Players")]
            public RewardSettingsVIP RewardSetVIP {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Achievements Image URL")]
            public AchievementsImage AchievementsImg {
                get;
                set;
            }
        }
        private class AchievementsSettings {
            [JsonProperty("PVP Kills Amount for Achievement")]
            public int minPVPKills {
                get;
                set;
            }
            [JsonProperty("Scientists Kills Amount for Achievement")]
            public int minScientistsKills {
                get;
                set;
            }
            [JsonProperty("Heavy Scientists Kills Amount for Achievement")]
            public int minHeaviesKills {
                get;
                set;
            }
            [JsonProperty("Boars Kills Amount for Achievement")]
            public int minBoarsKills {
                get;
                set;
            }
            [JsonProperty("Bears Kills Amount for Achievement")]
            public int minBearsKills {
                get;
                set;
            }
            [JsonProperty("Chickens Kills Amount for Achievement")]
            public int minChickensKills {
                get;
                set;
            }
            [JsonProperty("Stags Kills Amount for Achievement")]
            public int minStagsKills {
                get;
                set;
            }
            [JsonProperty("Wolves Kills Amount for Achievement")]
            public int minWolvesKills {
                get;
                set;
            }
            [JsonProperty("Bradleys Destroyed Amount for Achievement")]
            public int minBradleysKills {
                get;
                set;
            }
            [JsonProperty("Choppers Destroyed Amount for Achievement")]
            public int minChoppersKills {
                get;
                set;
            }
            [JsonProperty("Sleepers Kills Amount for Achievement")]
            public int minSleepersKills {
                get;
                set;
            }
            [JsonProperty("Headshots Amount for Achievement")]
            public int minHeadshots {
                get;
                set;
            }
            [JsonProperty("Barrels Destroyed Amount for Achievement")]
            public int minBarrelsDestroyed {
                get;
                set;
            }
            [JsonProperty("Explosives Thrown Amount for Achievement")]
            public int minExplosives {
                get;
                set;
            }
            [JsonProperty("Bullets Fired Amount for Achievement")]
            public int minBullets {
                get;
                set;
            }
            [JsonProperty("Rockets Launched Amount for Achievement")]
            public int minRockets {
                get;
                set;
            }
            [JsonProperty("Hemps Picked Up Amount for Achievement")]
            public int minHemps {
                get;
                set;
            }
            [JsonProperty("Pumpkins Picked Up Amount for Achievement")]
            public int minPumpkins {
                get;
                set;
            }
            [JsonProperty("Corns Picked Up Amount for Achievement")]
            public int minCorns {
                get;
                set;
            }
            [JsonProperty("Stones Picked Up Amount for Achievement")]
            public int minStones {
                get;
                set;
            }
            [JsonProperty("Wood Picked Up Amount for Ac
// ... [Code preview truncated due to length. Full source in attached file] ...

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху