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

FREE Claimer : 0.0.1 0.0.1

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
// Reference: Oxide.Core.MySql
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using Oxide.Core;
using UnityEngine;
using Oxide.Core.Database;

namespace Oxide.Plugins
{
    [Info("Claimer", "sami37", "0.0.1")]
    [Description("Claim your donate!")]
    public class Claimer : RustPlugin
    {
        private readonly Core.MySql.Libraries.MySql _mySql = Interface.GetMod().GetLibrary<Core.MySql.Libraries.MySql>();
        private Connection _mySqlConnection;
        private string db_name = "rust";

        private string ipadress = "127.0.0.1";
        private string password = "";
        private int port = 3306;
        private string user = "rust";

        #region Oxide Hooks

        private void ReadFromConfig<T>(string Key, ref T var)
        {
            if (Config[Key] != null)
            {
                var = (T)Convert.ChangeType(Config[Key], typeof(T));
            }
            Config[Key] = var;
        }
        private static List<BasePlayer> FindPlayersOnline(string nameOrIdOrIp)
        {
            var players = new List<BasePlayer>();
            foreach (var activePlayer in BasePlayer.activePlayerList)
            {
                if (activePlayer.UserIDString.Equals(nameOrIdOrIp))
                    players.Add(activePlayer);
                else if (activePlayer.displayName.Contains(nameOrIdOrIp, CompareOptions.IgnoreCase))
                    players.Add(activePlayer);
                else if (activePlayer.net?.connection != null && activePlayer.net.connection.ipaddress.Equals(nameOrIdOrIp))
                    players.Add(activePlayer);
            }
            return players;
        }
        private static List<BasePlayer> FindPlayersOffline(string nameOrIdOrIp)
        {
            var players = new List<BasePlayer>();
            foreach (var activePlayer in BasePlayer.sleepingPlayerList)
            {
                if (activePlayer.UserIDString.Equals(nameOrIdOrIp))
                    players.Add(activePlayer);
                else if (activePlayer.displayName.Contains(nameOrIdOrIp, CompareOptions.IgnoreCase))
                    players.Add(activePlayer);
                else if (activePlayer.net?.connection != null && activePlayer.net.connection.ipaddress.Equals(nameOrIdOrIp))
                    players.Add(activePlayer);
            }
            return players;
        }

        private void OnServerInitialized()
        {
            permission.RegisterPermission("claimer.canclaim", this);
            permission.RegisterPermission("claimer.cantransform", this);
            permission.RegisterPermission("claimer.steamfind", this);
            ReadFromConfig("address", ref ipadress);
            ReadFromConfig("port", ref port);
            ReadFromConfig("db_name", ref db_name);
            ReadFromConfig("user", ref user);
            ReadFromConfig("password", ref password);
            SaveConfig();

            var messages = new Dictionary<string, string>
            {
                {
                    "Nothing", "There is nothing to take"
                },
                {
                    "Claimed", "You successfully claim {0} {1}."
                },
				{
					"NoPerm", "You don't have permission to do this."
				}
            };
            lang.RegisterMessages(messages, this);
        }

        private string GetMessage(string name, string sid = null)
        {
            return lang.GetMessage(name, this, sid);
        }

        [ChatCommand("claim")]
        private void ClaimCommand(BasePlayer player, string command, string[] args)
        {
            var playerid = player.userID;
            if (permission.UserHasPermission(playerid.ToString(), "claimer.canclaim"))
            {
                var packageClaimed = "";
                _mySqlConnection = _mySql.OpenDb(ipadress, port, db_name, user, password, this);
                var sql = Sql.Builder.Append("select * from payment where AccountUniqueNumber = '" + player.userID + "' AND Taked = 0 AND Status = 'Complete';");
                _mySql.Query(sql, _mySqlConnection, list =>
                {
                    if (list == null || list.Count == 0)
                    {
                        SendReply(player, GetMessage("Nothing"));
                        return;
                    }
                    foreach (var entry in list)
                    {
                        var inv = player.inventory.containerMain.capacity;
                        var length = player.inventory.containerMain.itemList.Count;
                        var available = inv - length;
                        var itemcount = entry["ItemName"].ToString().Split(',');
                        if (available < itemcount.Length)
                        {
                            SendReply(player, string.Format("You have {0} free space but you need {1} space to claim.", available, Convert.ToInt32(entry["Amount"])));
                            return;
                        }
                        var itemss = new StringBuilder();
                        var amountitem = new StringBuilder();
                        if (entry["ItemName"].ToString().Contains(","))
                        {
                            var items = entry["ItemName"].ToString().Split(',');
                            var amounts = entry["AmountSerie"].ToString().Split(',');
                            for (var i = 0; i < items.Length; i++)
                            {
                                var sb = new StringBuilder();
                                sb.AppendLine();
								if (((string) entry["ItemName"]).ToLower() == "evolution" ||
									((string) entry["ItemName"]).ToLower() == "donator" ||
									((string) entry["ItemName"]).ToLower() == "donator+")
								{
									sb.AppendFormat(" {0}\t{1}\t{2}", player.userID, entry["ItemName"], " 30d");
									sb.AppendLine();
									ConsoleSystem.Run(ConsoleSystem.Option.Server.Quiet(),
										$"addgroup \t{sb.ToString()}");
									SendReply(player, string.Format(GetMessage("Claimed"), (string) entry["ItemName"], ""));
								}
								else
								{
									itemss.AppendFormat("{0}", items[i]);
									amountitem.AppendFormat("{0}", amounts[i]);
									sb.AppendFormat(" {0}\t{1}\t{2}", player.userID, items[i], amounts[i]);
									sb.AppendLine();
									int amou;
									int.TryParse(amounts[i], out amou);
									var definition = ItemManager.FindItemDefinition(items[i]);
									Item item = ItemManager.CreateByItemID(definition.itemid, amou);
									if(!item.MoveToContainer(player.inventory.containerMain))
										item.Drop(player.eyes.position, player.eyes.BodyForward()*2f);
									//player.inventory.GiveItem(ItemManager.CreateByItemID(definition.itemid, amou), pref);
									SendReply(player, string.Format(GetMessage("Claimed"), item.info.displayName.english, item.amount.ToString()));
								}
                            }
                        }
                        else
                        {
                            var sb = new StringBuilder();
                            sb.AppendLine();
                            if (((string) entry["ItemName"]).ToLower() == "evolution" ||
                                ((string) entry["ItemName"]).ToLower() == "donator" ||
                                ((string) entry["ItemName"]).ToLower() == "donator+")
                            {
                                sb.AppendFormat(" {0}\t{1}\t{2}", player.userID, entry["ItemName"], " 30d");
                                sb.AppendLine();
                                ConsoleSystem.Run(ConsoleSystem.Option.Server.Quiet(),
                                    $"addgroup \t{sb.ToString()}");
								SendReply(player, string.Format(GetMessage("Claimed"), (string) entry["ItemName"], ""));
                            }
                            else
                            {
                                itemss.AppendFormat("{0}", entry["ItemName"]);
                                amountitem.AppendFormat("{0}", entry["Amount"]);
                                sb.AppendFormat(" {0}\t{1}\t{2}", player.userID, entry["ItemName"], entry["Amount"]);
                                sb.AppendLine();
								var definition = ItemManager.FindItemDefinition((string) entry["ItemName"]);
 								Item item = ItemManager.CreateByItemID(definition.itemid, (int) entry["Amount"]);
                                ConsoleSystem.Run(ConsoleSystem.Option.Server.Quiet(),
                                    $"inv.giveplayer\t{sb.ToString()}");
                                SendReply(player, string.Format(GetMessage("Claimed"), item.ToString(), entry["Amount"].ToString()));
                            }
                        }
                        var updatesql = Sql.Builder.Append("UPDATE payment SET Taked = 1 where PaymentID = '" + entry["PaymentID"] + "';");
                        _mySql.Update(updatesql, _mySqlConnection);
                    }
                });
            }
            else
            {
                SendReply(player, GetMessage("NoPerm"));
            }
        }

        [ChatCommand("steamfind")]
        private void steamfindCommand(BasePlayer player, string command, string[] args)
        {
			if(player.net?.connection?.authLevel == 0 && !permission.UserHasPermission(player.UserIDString, "claimer.steamfind")){
				SendReply(player, "You don't have permission to do it.");
				return;
			}
            if (args.Length != 1)
            {
                SendReply(player, "Please enter name or partial name.");
                return;
            }
            var targets = FindPlayersOnline(args[0]);
            var target = FindPlayersOffline(args[0]);
            if (targets.Count <= 0 && target.Count <= 0)
            {
                SendReply(player, "No player found.");
                return;
            }
            if (targets.Count >= 1)
            {
				SendReply(player, "=========");
				SendReply(player, "");
                for (int i = 0; i < targets.Count; i++)
                {
					// SendReply(player, string.Format("MultiplePlayers '{0}'", string.Join(", ", targets.ConvertAll(p => p.displayName).ToArray())));
                    SendReply(player, string.Format("Player '{0}' '{1}'", targets[i].displayName, targets[i].UserIDString));
                }
				SendReply(player, "");
				SendReply(player, "=========");
            }
            if (target.Count >= 1)
            {
				SendReply(player, "=========");
				SendReply(player, "");
                for (int i = 0; i < target.Count; i++)
                {
					// SendReply(player, string.Format("MultiplePlayers '{0}'", string.Join(", ", targets.ConvertAll(p => p.displayName).ToArray())));
                    SendReply(player, string.Format("Player '{0}' '{1}'", target[i].displayName, target[i].UserIDString));
                }
				SendReply(player, "");
				SendReply(player, "=========");
            }

        }

        [ChatCommand("transform")]
        private void TransformCommand(BasePlayer player, string command, string[] args)
        {
            var playerid = player.userID;
            if (permission.UserHasPermission(playerid.ToString(), "claimer.cantransform"))
            {
                var item = player.inventory.containerMain.FindItemByItemID(688032252);
                if (item != null)
                {
                    if (args.Length != 0)
                    {
                        int Num;
                        bool isNum = int.TryParse(args[0], out Num);
                        if (isNum)
                        {
                            int metals;
                            int.TryParse(args[0], out metals);
                            int metal = metals;
                            var deleted = item.amount - metal;
                            SendReply(player, String.Format("You transformed {0} metal fragments to {1} metal refined.", metal, (metal / 100)));
                            SendReply(player, String.Format("You got {0} metal fragments left.", deleted));
                            item.RemoveFromContainer();
                            item.Remove(0f);
                            player.inventory.GiveItem(ItemManager.CreateByItemID(374890416, (metals / 100)), player.inventory.containerMain);
                            if (deleted != 0)
                                player.inventory.GiveItem(ItemManager.CreateByItemID(688032252, deleted), player.inventory.containerMain);
                        }
                        else
                        {
                            var metal = item.amount % 100;
                            var deleted = item.amount - metal;
                            SendReply(player, String.Format("You transformed {0} metal fragments to {1} metal refined.", deleted, (item.amount / 100)));
                            SendReply(player, String.Format("You got {0} metal fragments left.", metal));
                            item.RemoveFromContainer();
                            item.Remove(0f);
                            player.inventory.GiveItem(ItemManager.CreateByItemID(374890416, (item.amount / 10)), player.inventory.containerMain);
                            if (metal != 0)
                                player.inventory.GiveItem(ItemManager.CreateByItemID(688032252, metal), player.inventory.containerMain);
                        }
                    }
                    else
                    {
                        var metal = item.amount % 100;
                        var deleted = item.amount - metal;
                        SendReply(player, String.Format("You transformed {0} metal fragments to {1} metal refined.", deleted, (item.amount / 100)));
                        SendReply(player, String.Format("You got {0} metal fragments left.", metal));
                        item.RemoveFromContainer();
                        item.Remove(0f);
                        player.inventory.GiveItem(ItemManager.CreateByItemID(374890416, (item.amount / 100)), player.inventory.containerMain);
                        if (metal != 0)
                            player.inventory.GiveItem(ItemManager.CreateByItemID(688032252, metal), player.inventory.containerMain);
                    }
                }
            }
            else
            {
                SendReply(player, GetMessage("NoPerm"));
            }
        }

        protected override void LoadDefaultConfig()
        {
            PrintWarning("Creating a new configuration file!");
            Config.Clear();
            Config["address"] = "127.0.0.1";
            Config["port"] = 3306;
            Config["db_name"] = "rust";
            Config["user"] = "root";
            Config["password"] = "";
            SaveConfig();
        }

        #endregion
    }
}

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