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

FREE EMSQL : 0.0.5 0.0.5

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System.Collections.Generic;
using System;
using System.Text;
using Oxide.Core;
using Oxide.Core.MySql;
using Oxide.Core.Plugins;
using Oxide.Core.Database;
using MySql.Data.MySqlClient;
namespace Oxide.Plugins {
    [Info("EMSQL", "Steenamaroo", "0.0.5", ResourceId = 2442)]
    class EMSQL : RustPlugin {
        class DataStorage {
            public Dictionary<ulong, EMDATA> stats = new Dictionary<ulong, EMDATA>();
            public DataStorage() {
            }
        }
        class EMDATA {
            public string Name;
            public int Kills;
            public int Deaths;
            public int GamesPlayed;
            public int GamesWon;
            public int GamesLost;
            public double Score;
            public int Rank;
            public int FlagsCaptured;
            public int ShotsFired;
            public int ChoppersKilled;
        }
        DataStorage data;
        void OnServerInitialized() {
            LoadData();
            LoadConfigVariables();
            SaveConfig();
            LoadMySQL();
            timer.Once(savetimer * 60, () => OnServerInitialized());
        }
        public static string RemoveSurrogatePairs(string str, string replacementCharacter = "?") {
            if (str == null) {
                return null;
            }
            StringBuilder sb = null;
            for (int i = 0; i < str.Length; i++) {
                char ch = str[i];
                if (char.IsSurrogate(ch)) {
                    if (sb == null) {
                        sb = new StringBuilder(str, 0, i, str.Length);
                    }
                    sb.Append(replacementCharacter);
                    if (i + 1 < str.Length && char.IsHighSurrogate(ch) && char.IsLowSurrogate(str[i + 1])) {
                        i++;
                    }
                }
                else if (sb != null) {
                    sb.Append(ch);
                }
            }
            return sb == null ? str : sb.ToString();
        }
        protected override void LoadDefaultConfig() {
            Puts("Creating a new config file");
            Config.Clear();
            LoadConfigVariables();
            SaveConfig();
        }
        Core.MySql.Libraries.MySql Sql = Interface.GetMod().GetLibrary<Core.MySql.Libraries.MySql>();
        Connection Sql_conn;
        void LoadMySQL() {
            try {
                Sql_conn = Sql.OpenDb(sql_host, sql_port, sql_db, sql_user, sql_pass, this);
                if (Sql_conn == null || Sql_conn.Con == null) {
                    Puts("SQL connection is not open.");
                    return;
                }
                Sql.Insert(Core.Database.Sql.Builder.Append($"CREATE TABLE IF NOT EXISTS {tablename} ( `UserID` VARCHAR(40) NOT NULL, `Name` VARCHAR(40) NOT NULL, `Kills` INT(11) NOT NULL, `Deaths` INT(11) NOT NULL, `GamesPlayed` INT(11) NOT NULL, `GamesWon` INT(11) NOT NULL, `GamesLost` INT(11) NOT NULL, `Score` INT(11) NOT NULL, `Rank` INT(11) NOT NULL, `FlagsCaptured` INT(11) NOT NULL, `ShotsFired` INT(11) NOT NULL, `ChoppersKilled` INT(11) NOT NULL, PRIMARY KEY (`UserID`) );"), Sql_conn);
                Puts("Creating or Updating EM Stats Table");
            }
            catch (Exception e) {
                Puts("SQL Save failed.");
            }
            foreach(var c in data.stats) {
                Sql.Insert(Core.Database.Sql.Builder.Append($"INSERT INTO {tablename} ( `UserID`, `Name`, `Kills`, `Deaths`, `GamesPlayed`, `GamesWon`, `GamesLost`, `Score`, `Rank`, `FlagsCaptured`, `ShotsFired`, `ChoppersKilled`) VALUES ( @0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11) ON DUPLICATE KEY UPDATE UserID = @0, Name = @1, Kills = @2, Deaths = @3, GamesPlayed = @4, GamesWon = @5, GamesLost = @6, Score = @7, Rank = @8, FlagsCaptured = @9, ShotsFired = @10, ChoppersKilled = @11", c.Key, RemoveSurrogatePairs(c.Value.Name, ""), c.Value.Kills, c.Value.Deaths, c.Value.GamesPlayed, c.Value.GamesWon, c.Value.GamesLost, c.Value.Score, c.Value.Rank, c.Value.FlagsCaptured, c.Value.ShotsFired, c.Value.ChoppersKilled), Sql_conn);
            }
        }
#region config
        string sql_host = "";
        int sql_port = 3306;
        string sql_db = "";
        string sql_user = "";
        string sql_pass = "";
        int savetimer = 15;
        string tablename = "emstatsdb";
        private void LoadConfigVariables() {
            CheckCfg("MySQL - Host", ref sql_host);
            CheckCfg("MySQL - Port", ref sql_port);
            CheckCfg("MySQL - Database Name", ref sql_db);
            CheckCfg("MySQL - Table Name", ref tablename);
            CheckCfg("MySQL - Username", ref sql_user);
            CheckCfg("MySQL - Password", ref sql_pass);
            CheckCfg("MySQL - Save Timer", ref savetimer);
        }
        private void CheckCfg<T>(string Key, ref T var) {
            if (Config[Key] is T) var = (T)Config[Key];
            else Config[Key] = var;
        }
#endregion
        void LoadData() {
            data = Interface.GetMod().DataFileSystem.ReadObject<DataStorage>("EventManager/Statistics");
        }
    }
}

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