From a3f536d6b955684d0149191089b1513c0cc9f8b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B0=B8=E5=AE=89404?= <101850798+YongAn404@users.noreply.github.com> Date: Sun, 13 Oct 2024 15:49:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=8E=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E7=BB=8F=E9=AA=8C=E7=B3=BB=E7=BB=9F=20(#17)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 忘改版本号力 * EX依赖更新 * 完善等级系统并进行代码清理 * 内嵌增加经验指令 * U README.md * 属性调成公开 * 添加AddExp方便调用 * 虚! --- Commands/ExpCommand.cs | 39 ++++++++++++++ Commands/MessageCommand.cs | 10 ++-- Commands/PlayerCommand.cs | 11 +--- Commands/SkillCommand.cs | 10 ++-- Components/CapacityList.cs | 14 ++--- .../FramePlayerInvalidingEventArgs.cs | 9 +--- Events/Handlers/FramePlayer.cs | 8 +++ Players/CustomPlayer.cs | 7 +++ Players/FramePlayer.cs | 54 +++++++++++++++++-- Players/HintManager.cs | 23 +++----- Players/ICustomAlgorithm.cs | 7 +++ Properties/AssemblyInfo.cs | 4 +- README.md | 20 ++++--- Roles/CustomRolePlus.cs | 3 +- Roles/Interfaces/ISkillActiveEnd.cs | 2 +- Roles/Interfaces/ISkillActiveStart.cs | 2 +- Roles/Interfaces/ISkillBurialEnd.cs | 2 +- Roles/MusicManager.cs | 10 ++-- Roles/SkillManager.cs | 2 +- YongAnFrame.csproj | 40 +++++++------- YongAnFrame.nuspec | 2 +- YongAnFrameConfig.cs | 3 +- packages.config | 2 +- 23 files changed, 182 insertions(+), 102 deletions(-) create mode 100644 Commands/ExpCommand.cs create mode 100644 Players/ICustomAlgorithm.cs diff --git a/Commands/ExpCommand.cs b/Commands/ExpCommand.cs new file mode 100644 index 0000000..fd0e992 --- /dev/null +++ b/Commands/ExpCommand.cs @@ -0,0 +1,39 @@ +using CommandSystem; +using Exiled.API.Features; +using Exiled.Permissions.Extensions; +using System; +using YongAnFrame; +using YongAnFrame.Commands; + +namespace BAPlugin.Command +{ + [CommandHandler(typeof(RemoteAdminCommandHandler))] + public class ExpCommand : ICommand + { + public string Command => "experience"; + + public string[] Aliases => ["pexp"]; + + public string Description => "用于经验的设置"; + + public bool Execute(ArraySegment arguments, ICommandSender sender, out string response) + { + response = "NO"; + if (sender.CheckPermission("yongan404.level.add")) + { + if (arguments.Array.Length > 2) + { + Player.Get(arguments.Array[1]).ToFPlayer().Level += ulong.Parse(arguments.Array[2]); + response = "OK"; + return true; + } + } + else + { + response = "请保证你有yongan404.level.add权限"; + } + + return false; + } + } +} diff --git a/Commands/MessageCommand.cs b/Commands/MessageCommand.cs index 26c7048..b3f6b50 100644 --- a/Commands/MessageCommand.cs +++ b/Commands/MessageCommand.cs @@ -11,15 +11,15 @@ namespace YongAnFrame.Commands /// 发送消息指令 /// [CommandHandler(typeof(RemoteAdminCommandHandler))] - public sealed class MessageCommand : CommandPlus + public sealed class MessageCommand : ICommand { - public override string Command => "message"; + public string Command => "message"; - public override string[] Aliases => ["mes", "msg"]; + public string[] Aliases => ["mes", "msg"]; - public override string Description => "用于发送消息"; + public string Description => "用于发送消息"; - public override bool Execute(ArraySegment arguments, ICommandSender sender, out string response) + public bool Execute(ArraySegment arguments, ICommandSender sender, out string response) { List choicePlayer = []; if (arguments.Count < 3) diff --git a/Commands/PlayerCommand.cs b/Commands/PlayerCommand.cs index e8f1b96..62debc1 100644 --- a/Commands/PlayerCommand.cs +++ b/Commands/PlayerCommand.cs @@ -1,10 +1,6 @@ using CommandSystem; using Exiled.API.Features; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using YongAnFrame.Players; namespace YongAnFrame.Commands @@ -30,14 +26,11 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s { FramePlayer fPlayer = FramePlayer.Get(player); fPlayer.HintManager.Clean(); - string[] text = new string[36]; - - fPlayer.ExPlayer.ShowHint($"{string.Join("\n", text)}\n\n\n\n\n\n\n\n\n\n\n\n\n\n", 10000f); + fPlayer.ExPlayer.ShowHint($"{YongAnFramePlugin.Instance.Config.BypassDoNotTrackText.Split('\n')}", 10000f); } - return true; } - + } return false; } diff --git a/Commands/SkillCommand.cs b/Commands/SkillCommand.cs index 3c51e52..3c7f3ed 100644 --- a/Commands/SkillCommand.cs +++ b/Commands/SkillCommand.cs @@ -8,15 +8,15 @@ namespace YongAnFrame.Commands /// 未完成请勿乱用 /// [CommandHandler(typeof(ClientCommandHandler))] - public sealed class SkillsCommand : CommandPlus + public sealed class SkillsCommand : ICommand { - public override string Command => "skills"; + public string Command => "skills"; - public override string[] Aliases => ["sk"]; + public string[] Aliases => ["sk"]; - public override string Description => "skills"; + public string Description => "skills"; - public override bool Execute(ArraySegment arguments, ICommandSender sender, out string response) + public bool Execute(ArraySegment arguments, ICommandSender sender, out string response) { response = "NO"; diff --git a/Components/CapacityList.cs b/Components/CapacityList.cs index e6bd390..fc4b157 100644 --- a/Components/CapacityList.cs +++ b/Components/CapacityList.cs @@ -1,10 +1,4 @@ -using Exiled.API.Features; -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Collections.Generic; namespace YongAnFrame.Components { @@ -16,9 +10,9 @@ public class CapacityList(int capacity) public int Count => list.Count; - public T this[int index] - { - get + public T this[int index] + { + get { if (Count > index) { diff --git a/Events/EventArgs/FramePlayer/FramePlayerInvalidingEventArgs.cs b/Events/EventArgs/FramePlayer/FramePlayerInvalidingEventArgs.cs index aaebef7..bff6f88 100644 --- a/Events/EventArgs/FramePlayer/FramePlayerInvalidingEventArgs.cs +++ b/Events/EventArgs/FramePlayer/FramePlayerInvalidingEventArgs.cs @@ -5,13 +5,8 @@ namespace YongAnFrame.Events.EventArgs.FramePlayer /// /// FramePlayer被无效时的事件数据 /// - public sealed class FramePlayerInvalidatingEventArgs : IExiledEvent + public sealed class FramePlayerInvalidatingEventArgs(Players.FramePlayer fPlayer) : IExiledEvent { - public Players.FramePlayer FPlayer { get; } - - public FramePlayerInvalidatingEventArgs(Players.FramePlayer fPlayer) - { - FPlayer = fPlayer; - } + public Players.FramePlayer FPlayer { get; } = fPlayer; } } diff --git a/Events/Handlers/FramePlayer.cs b/Events/Handlers/FramePlayer.cs index ca2f208..80845a7 100644 --- a/Events/Handlers/FramePlayer.cs +++ b/Events/Handlers/FramePlayer.cs @@ -13,11 +13,19 @@ public sealed class FramePlayer /// FramePlayer被无效时的事件 /// public static Event FramePlayerInvalidating { get; set; } = new Event(); + /// + /// FramePlayer提示刷新前的事件 + /// + public static Event FramePlayerHintUpdate { get; set; } = new Event(); public static void OnFramePlayerCreated(FramePlayerCreatedEventArgs args) { FramePlayerCreated.InvokeSafely(args); } + public static void OnFramerHintUpdate() + { + FramePlayerHintUpdate.InvokeSafely(); + } public static void OnFramePlayerInvalidating(FramePlayerInvalidatingEventArgs args) { FramePlayerInvalidating.InvokeSafely(args); diff --git a/Players/CustomPlayer.cs b/Players/CustomPlayer.cs index 48fe402..f03ab6f 100644 --- a/Players/CustomPlayer.cs +++ b/Players/CustomPlayer.cs @@ -4,11 +4,18 @@ public abstract class CustomPlayer(FramePlayer player) { public FramePlayer FramePlayer { get; private set; } = player; public bool IsInvalid => FramePlayer == null; + public float ExpMultiplier { get { return FramePlayer.ExpMultiplier; } set { FramePlayer.ExpMultiplier = value; } } + public ulong Exp { get { return FramePlayer.Exp; } set { FramePlayer.Exp = value; } } public ulong Level { get { return FramePlayer.Level; } set { FramePlayer.Level = value; } } public HintManager HintManager => FramePlayer.HintManager; public PlayerTitle UsingTitles { get { return FramePlayer.UsingTitles; } set { FramePlayer.UsingTitles = value; } } public PlayerTitle UsingRankTitles { get { return FramePlayer.UsingRankTitles; } set { FramePlayer.UsingRankTitles = value; } } + public void AddExp(ulong exp, string name = "未知原因") + { + FramePlayer.AddExp(exp, name); + } + public virtual void Invalid() { FramePlayer = null; diff --git a/Players/FramePlayer.cs b/Players/FramePlayer.cs index ba2d81f..4638ac1 100644 --- a/Players/FramePlayer.cs +++ b/Players/FramePlayer.cs @@ -3,14 +3,15 @@ using Exiled.Events.EventArgs.Player; using Exiled.Events.Features; using MEC; +using System; using System.Collections.Generic; -using System.Linq; using YongAnFrame.Events.EventArgs.FramePlayer; using YongAnFrame.Roles; +using static YongAnFrame.Players.HintManager; namespace YongAnFrame.Players { - public sealed class FramePlayer + public sealed class FramePlayer : ICustomAlgorithm { private PlayerTitle usingTitles = null; private PlayerTitle usingRankTitles = null; @@ -31,7 +32,8 @@ public sealed class FramePlayer /// /// 实例拥有的自定义角色 /// - public CustomRolePlus CustomRolePlus { + public CustomRolePlus CustomRolePlus + { get { if (ExPlayer.GetCustomRoles().Count != 0) @@ -45,11 +47,25 @@ public CustomRolePlus CustomRolePlus { /// 提示系统管理器 /// public HintManager HintManager { get; private set; } + + /// + /// 正在使用的主要自定义算法 + /// + public ICustomAlgorithm CustomAlgorithm { get; set; } + /// /// 玩家等级 /// public ulong Level { get; set; } /// + /// 玩家经验 + /// + public ulong Exp { get; set; } + /// + /// 玩家经验倍率 + /// + public float ExpMultiplier { get; set; } + /// /// 玩家批准绕过DNT /// public bool IsBDNT { get; set; } @@ -104,9 +120,36 @@ internal FramePlayer(Player player) ExPlayer = player; HintManager = new HintManager(this); dictionary.Add(ExPlayer.Id, this); + CustomAlgorithm = this; Events.Handlers.FramePlayer.OnFramePlayerCreated(new FramePlayerCreatedEventArgs(this)); } + public void AddExp(ulong exp, string name = "未知原因") + { + float globalExpMultiplier = YongAnFramePlugin.Instance.Config.GlobalExpMultiplier; + float expMultiplier = ExpMultiplier * globalExpMultiplier; + ulong addExp = (ulong)(exp * expMultiplier); + + Exp += addExp; + HintManager.MessageTexts.Add(new Text($"{name},获得{exp}+{addExp - exp}经验({expMultiplier}倍经验)", 5)); + + ulong needExp = CustomAlgorithm.GetNeedUpLevel(Level); + ulong oldLevel = Level; + while (Exp >= needExp) + { + Log.Debug($"{Exp}/{needExp}"); + Level++; + Exp -= needExp; + needExp = CustomAlgorithm.GetNeedUpLevel(Level); + } + if (oldLevel < Level) + { + UpdateShowInfoList(); + HintManager.MessageTexts.Add(new Text($"恭喜你从{oldLevel}级到达{Level}级,距离下一级需要{Exp}/{needExp}经验", 8)); + } + } + + #region ShowRank private readonly CoroutineHandle[] coroutines = new CoroutineHandle[2]; @@ -236,6 +279,11 @@ private IEnumerator DynamicTitlesShow() } #endregion + public ulong GetNeedUpLevel(ulong level) + { + return (ulong)(100 + Math.Floor(level / 10f) * 100); + } + /// /// 获取框架玩家 /// diff --git a/Players/HintManager.cs b/Players/HintManager.cs index 2fd367b..ab461a6 100644 --- a/Players/HintManager.cs +++ b/Players/HintManager.cs @@ -1,7 +1,5 @@ -using Exiled.API.Features; -using MEC; +using MEC; using System.Collections.Generic; -using System.Reflection; using YongAnFrame.Components; namespace YongAnFrame.Players @@ -31,23 +29,24 @@ public IEnumerator Update() { while (true) { + Events.Handlers.FramePlayer.OnFramerHintUpdate(); string[] text = new string[36]; int used = 0; - text[used] = $"YongAnFrame 1.0.0-alpha7"; + text[used] = $"YongAnFrame 1.0.0-Beta1"; if (fPlayer.ExPlayer.DoNotTrack && !fPlayer.IsBDNT) { text[used] = "[注意]已开启DoNotTrack(DNT),游戏数据不会被保存,想保存数据请控制台输入pl BDNT查看详情"; } - + used = 1; text[used] = ""; for (int i = 0; i < ChatTexts.Capacity; i++) { Text chatText = ChatTexts[i]; - if(chatText != null) + if (chatText != null) { text[used] += chatText; chatText.Duration--; @@ -109,16 +108,10 @@ public void Clean() Timing.KillCoroutines(coroutine); } - public class Text + public class Text(string text, float duration, int size = 0) { - public string Content { get; private set; } - public float Duration { get; internal set; } - - public Text(string text, float duration, int size = 0) - { - Content = text; - Duration = duration; - } + public string Content { get; private set; } = text; + public float Duration { get; internal set; } = duration; public override string ToString() { diff --git a/Players/ICustomAlgorithm.cs b/Players/ICustomAlgorithm.cs new file mode 100644 index 0000000..b0fe2ea --- /dev/null +++ b/Players/ICustomAlgorithm.cs @@ -0,0 +1,7 @@ +namespace YongAnFrame.Players +{ + public interface ICustomAlgorithm + { + public ulong GetNeedUpLevel(ulong level); + } +} diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index c1be3da..77da955 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.7")] -[assembly: AssemblyFileVersion("1.0.0.7")] +[assembly: AssemblyVersion("1.0.0.9")] +[assembly: AssemblyFileVersion("1.0.0.9")] diff --git a/README.md b/README.md index 2aba39a..3cd3440 100644 --- a/README.md +++ b/README.md @@ -2,20 +2,17 @@ 基于[EXILED](https://github.com/ExMod-Team/EXILED)写的框架,为国内服务器常见的插件需求简化开发 ## YongAnFrame是什么类型的插件/框架? -**YongAnFrame** 是一个集成了命令系统、整合了自定义角色及技能系统、称号系统、提示系统的免费框架,使用 **EXILED** 开发。\ +**YongAnFrame** 是一个集成了命令系统、整合了自定义角色及技能系统、称号系统、提示系统的免费框架,使用 **[EXILED](https://github.com/ExMod-Team/EXILED)** 开发。\ 您可以通过安装该插件并使用该框架开发插件,简化您的开发流程。 ## 功能 -- 称号系统,使用MySQL作为数据库存储,可配置动态命令 -- DNT检测提示和BDNT(Bypass DNT)请求,使信息获取符合VSR规则 -- 提示系统,可直接调用显示提示 -- 框架玩家对象,整合大量常用属性(DNT、称号、自定义技能等) -- 音频API - -## TODO List - --[ ] 聊天系统和聊天命令,使用.ac联系管理员,.bc公共聊天,.cc阵营聊天
--[ ] 玩家经验系统和经验命令,配置文件可调整经验获取倍率 +- 称号系统:提供动态指令运行集 +- DNT检测和BDNT(Bypass DNT)请求:使信息获取和保存符合VSR规则 +- 提示系统:提供可方便调用显示提示,拒绝冲突 +- 自定义角色:提供对[EXILED](https://github.com/ExMod-Team/EXILED)的自定义角色升级,部分兼容[EXILED](https://github.com/ExMod-Team/EXILED)自定义角色 +- 等级系统:提供整合统一的等级API,支持自定义算法 +- 自定义算法:提供一个可替换主要算法的属性(该功能不支持多元化,只能采用一个主要算法) +- 音频API:提供方便更好调用SCPSLAudioApi ## 为服务端安装框架 如图,下载 **Release下的最新压缩包** 全部解压并合并到**EXILED目录**,如C:\Users\Administrator\Appdata\Roaming\ ,安装后请启动一次服务端,并在EXILED\Config内根据提示调整配置文件. @@ -25,6 +22,7 @@ ## 使用YongAnFrame进行开发 如图,在您的项目的Nuget包管理器中,安装最新版的YongAnFrame即可 ![image](https://github.com/user-attachments/assets/afd10f37-eac1-4c4c-958c-2c4f655186e8) + 如果你要查询开发教程,请访问[Wiki](https://github.com/SCP-SL-Plugin-YongAnTeam/YongAnFrame/wiki) ## 联系我们 ## QQ:3489728203
diff --git a/Roles/CustomRolePlus.cs b/Roles/CustomRolePlus.cs index 98692bb..ee7f753 100644 --- a/Roles/CustomRolePlus.cs +++ b/Roles/CustomRolePlus.cs @@ -10,7 +10,6 @@ using PlayerRoles; using System; using System.Collections.Generic; -using System.Linq; using YongAnFrame.Players; using YongAnFrame.Role.Properties; using YongAnFrame.Roles.Enums; @@ -396,7 +395,7 @@ protected override void UnsubscribeEvents() protected override void ShowMessage(Player player) { - + } } diff --git a/Roles/Interfaces/ISkillActiveEnd.cs b/Roles/Interfaces/ISkillActiveEnd.cs index e43878d..b7870e4 100644 --- a/Roles/Interfaces/ISkillActiveEnd.cs +++ b/Roles/Interfaces/ISkillActiveEnd.cs @@ -9,6 +9,6 @@ public interface ISkillActiveEnd : ISkill /// /// /// 方法的音乐文件名称 - string ActiveEnd(FramePlayer yPlayer,byte id); + string ActiveEnd(FramePlayer yPlayer, byte id); } } diff --git a/Roles/Interfaces/ISkillActiveStart.cs b/Roles/Interfaces/ISkillActiveStart.cs index 1f895cf..c009897 100644 --- a/Roles/Interfaces/ISkillActiveStart.cs +++ b/Roles/Interfaces/ISkillActiveStart.cs @@ -9,6 +9,6 @@ public interface ISkillActiveStart : ISkill /// /// /// 方法的音乐文件名称 - string ActiveStart(FramePlayer yPlayer,byte id); + string ActiveStart(FramePlayer yPlayer, byte id); } } diff --git a/Roles/Interfaces/ISkillBurialEnd.cs b/Roles/Interfaces/ISkillBurialEnd.cs index 45c5a82..96af3da 100644 --- a/Roles/Interfaces/ISkillBurialEnd.cs +++ b/Roles/Interfaces/ISkillBurialEnd.cs @@ -9,6 +9,6 @@ public interface ISkillBurialEnd : ISkill /// /// /// 方法的音乐文件名称 - string BurialEnd(FramePlayer yPlayer,byte id); + string BurialEnd(FramePlayer yPlayer, byte id); } } diff --git a/Roles/MusicManager.cs b/Roles/MusicManager.cs index 61dfdb8..8004c79 100644 --- a/Roles/MusicManager.cs +++ b/Roles/MusicManager.cs @@ -96,7 +96,7 @@ public AudioPlayerBase Play(string musicFile, string npcName, FramePlayer source /// 音量大小 /// 是否循环 /// - public AudioPlayerBase Play(string musicFile, string npcName, TrackEvent trackEvent,FramePlayer source, float distance, FramePlayer[] extraPlay, bool isSole = false, float volume = 80, bool isLoop = false) + public AudioPlayerBase Play(string musicFile, string npcName, TrackEvent trackEvent, FramePlayer source, float distance, FramePlayer[] extraPlay, bool isSole = false, float volume = 80, bool isLoop = false) { AudioPlayerBase audioPlayerBase = null; try @@ -144,13 +144,9 @@ public AudioPlayerBase Play(string musicFile, string npcName, TrackEvent trackEv return audioPlayerBase; } - public readonly struct TrackEvent + public readonly struct TrackEvent(TrackLoaded trackLoaded) { - public TrackEvent(TrackLoaded trackLoaded) - { - TrackLoaded = trackLoaded; - } - public TrackLoaded TrackLoaded { get; } + public TrackLoaded TrackLoaded { get; } = trackLoaded; } } } diff --git a/Roles/SkillManager.cs b/Roles/SkillManager.cs index e032458..b1a96f8 100644 --- a/Roles/SkillManager.cs +++ b/Roles/SkillManager.cs @@ -99,7 +99,7 @@ private IEnumerator Timer() BurialRemainingTime--; yield return Timing.WaitForSeconds(1f); } - musicFileName = SkillBurialEnd?.BurialEnd(fPlayer,Id); + musicFileName = SkillBurialEnd?.BurialEnd(fPlayer, Id); if (musicFileName != null) Instance.Play(musicFileName, $"技能准备好语音", fPlayer, 10); } } diff --git a/YongAnFrame.csproj b/YongAnFrame.csproj index 7a9d60d..fe80bc7 100644 --- a/YongAnFrame.csproj +++ b/YongAnFrame.csproj @@ -39,42 +39,42 @@ lib\net48\Assembly-CSharp-firstpass.dll - packages\EXILEDOFFICIAL.8.11.0\lib\net48\Assembly-CSharp-Publicized.dll + packages\ExMod.Exiled.8.12.2\lib\net48\Assembly-CSharp-Publicized.dll False False - packages\EXILEDOFFICIAL.8.11.0\lib\net48\CommandSystem.Core.dll + packages\ExMod.Exiled.8.12.2\lib\net48\CommandSystem.Core.dll - - packages\EXILEDOFFICIAL.8.11.0\lib\net48\Exiled.API.dll + + packages\ExMod.Exiled.8.12.2\lib\net48\Exiled.API.dll - - packages\EXILEDOFFICIAL.8.11.0\lib\net48\Exiled.CreditTags.dll + + packages\ExMod.Exiled.8.12.2\lib\net48\Exiled.CreditTags.dll - - packages\EXILEDOFFICIAL.8.11.0\lib\net48\Exiled.CustomItems.dll + + packages\ExMod.Exiled.8.12.2\lib\net48\Exiled.CustomItems.dll - - packages\EXILEDOFFICIAL.8.11.0\lib\net48\Exiled.CustomRoles.dll + + packages\ExMod.Exiled.8.12.2\lib\net48\Exiled.CustomRoles.dll - - packages\EXILEDOFFICIAL.8.11.0\lib\net48\Exiled.Events.dll + + packages\ExMod.Exiled.8.12.2\lib\net48\Exiled.Events.dll - - packages\EXILEDOFFICIAL.8.11.0\lib\net48\Exiled.Loader.dll + + packages\ExMod.Exiled.8.12.2\lib\net48\Exiled.Loader.dll - - packages\EXILEDOFFICIAL.8.11.0\lib\net48\Exiled.Permissions.dll + + packages\ExMod.Exiled.8.12.2\lib\net48\Exiled.Permissions.dll lib\net48\Mirror.dll - packages\EXILEDOFFICIAL.8.11.0\lib\net48\NorthwoodLib.dll + packages\ExMod.Exiled.8.12.2\lib\net48\NorthwoodLib.dll - packages\EXILEDOFFICIAL.8.11.0\lib\net48\PluginAPI.dll + packages\ExMod.Exiled.8.12.2\lib\net48\PluginAPI.dll lib\net48\SCPSLAudioApi.dll @@ -94,15 +94,17 @@ lib\net48\UnityEngine.PhysicsModule.dll - packages\EXILEDOFFICIAL.8.11.0\lib\net48\YamlDotNet.dll + packages\ExMod.Exiled.8.12.2\lib\net48\YamlDotNet.dll + + diff --git a/YongAnFrame.nuspec b/YongAnFrame.nuspec index e694b65..099a32c 100644 --- a/YongAnFrame.nuspec +++ b/YongAnFrame.nuspec @@ -2,7 +2,7 @@ $id$ - 1.0.0-alpha7 + 1.0.0-beta1 $title$ $author$ false diff --git a/YongAnFrameConfig.cs b/YongAnFrameConfig.cs index 086f6a5..8038cd6 100644 --- a/YongAnFrameConfig.cs +++ b/YongAnFrameConfig.cs @@ -6,6 +6,7 @@ public sealed class YongAnFrameConfig : IConfig { public bool IsEnabled { get; set; } = true; public bool Debug { get; set; } - public string BypassDoNotTrackText { get; set; } = "BDNT(Bypass Do Not Track)协议\r\n根据VSR(Verified Server Rules) 8.11,开启DNT(Do Not Track)的玩家不会进行非服务器安全性的游戏数据收集或保存。\r\n根据VSR 8.11.5,只有签署BDNT的玩家才会对DNT相关的规则不适用。\r\n根据VSR 8.11.5.3,欲签署BDNT的玩家有知晓收集或保存数据内容的权利。\r\n|||如果你看不懂BDNT协议的条例请不要签署|||\r\n1.你将会被收集SteamID用来保存等级和称号数据,这个条例收集的数据是公开展示的,任何人都可以访问!\r\n2.签署玩家依然有请求删除收集或保存数据的权利,请求之后你依然有24小时可以撤销请求(注意!删除数据是不可逆的)!"; + public float GlobalExpMultiplier { get; set; } = 1; + public string BypassDoNotTrackText { get; set; } = "BDNT(Bypass Do Not Track)协议\n根据VSR(Verified Server Rules) 8.11,开启DNT(Do Not Track)的玩家不会进行非服务器安全性的游戏数据收集或保存。\n根据VSR 8.11.5,只有签署BDNT的玩家才会对DNT相关的规则不适用。\n根据VSR 8.11.5.3,欲签署BDNT的玩家有知晓收集或保存数据内容的权利。\n|||如果你看不懂BDNT协议的条例请不要签署|||\n1.你将会被收集SteamID用来保存等级和称号数据,这个条例收集的数据是公开展示的,任何人都可以访问!\n2.签署玩家依然有请求删除收集或保存数据的权利,请求之后你依然有24小时可以撤销请求(注意!删除数据是不可逆的)!"; } } diff --git a/packages.config b/packages.config index feb7711..f286a37 100644 --- a/packages.config +++ b/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file