From 803abc6aa83248f9f1f82b6dcca76d6af0450f6c Mon Sep 17 00:00:00 2001 From: samyyc <3356207189@qq.com> Date: Wed, 24 Jul 2024 20:40:41 +0800 Subject: [PATCH] v1.7.0 - instant update, thirdperson preview --- Cache.cs | 5 +- Config.cs | 4 + PlayerModelChanger.cs | 34 +++++--- README.md | 12 +++ README_CN.md | 15 +++- Service.cs | 33 ++++++- Storage.cs | 2 +- ThirdPerson.cs | 110 ++++++++++++++++++++++++ Utils.cs | 97 ++++++++++++++------- bin/Debug/net8.0/PlayerModelChanger.dll | Bin 69120 -> 75264 bytes bin/Debug/net8.0/PlayerModelChanger.pdb | Bin 33964 -> 36732 bytes bin/Debug/net8.0/lang/en.json | 2 + bin/Debug/net8.0/lang/zh-Hans.json | 4 +- commands/CommandModelMenu.cs | 31 ++++++- commands/PlayerCommand.cs | 10 +-- lang/en.json | 2 + lang/zh-Hans.json | 4 +- storage/MySQL.cs | 9 +- 18 files changed, 312 insertions(+), 62 deletions(-) create mode 100644 ThirdPerson.cs diff --git a/Cache.cs b/Cache.cs index 5b12105..8a0c34c 100644 --- a/Cache.cs +++ b/Cache.cs @@ -22,7 +22,10 @@ public ModelCacheManager(IStorage storage) { this.storage = storage; } public void ResyncCache() { - cache = storage.GetAllPlayerModel(); + var data = storage.GetAllPlayerModel(); + if (data != null) { + cache = data; + } } public void SetAllTModels(string tmodel, bool permissionBypass) { diff --git a/Config.cs b/Config.cs index 1d26291..92c1c38 100644 --- a/Config.cs +++ b/Config.cs @@ -29,10 +29,14 @@ public class ModelConfig : BasePluginConfig [JsonPropertyName("MySQL_Table")] public string MySQLTable { get; set; } = "playermodelchanger"; [JsonPropertyName("ModelForBots")] public BotsConfig ModelForBots { get; set; } = new BotsConfig(); + [JsonPropertyName("ModelChangeCooldownSecond")] public float ModelChangeCooldownSecond { get; set; } = 0f; + [JsonPropertyName("DisableInstantUpdate")] public bool DisableInstantUpdate { get; set; } = false; + [JsonPropertyName("DisableThirdPersonPreview")] public bool DisableThirdPersonPreview { get; set; } = false; [JsonPropertyName("DisablePrecache")] public bool DisablePrecache { get; set; } = false; [JsonPropertyName("DisableRandomModel")] public bool DisableRandomModel { get; set; } = false; [JsonPropertyName("DisableAutoCheck")] public bool DisableAutoCheck { get; set; } = false; [JsonPropertyName("DisablePlayerSelection")] public bool DisablePlayerSelection { get; set; } = false; [JsonPropertyName("AutoResyncCache")] public bool AutoResyncCache { get; set; } = false; + [JsonPropertyName("ConfigVersion")] public override int Version { get; set; } = 1; } diff --git a/PlayerModelChanger.cs b/PlayerModelChanger.cs index 1ccf170..699572a 100644 --- a/PlayerModelChanger.cs +++ b/PlayerModelChanger.cs @@ -8,12 +8,14 @@ using Service; using System.Drawing; using CounterStrikeSharp.API.Modules.Config; +using System.Reflection; +using System.Text.Json; namespace PlayerModelChanger; public partial class PlayerModelChanger : BasePlugin, IPluginConfig { public override string ModuleName => "Player Model Changer"; - public override string ModuleVersion => "1.6.1"; + public override string ModuleVersion => "1.7.0"; public override string ModuleAuthor => "samyyc"; public required ModelConfig Config { get; set; } @@ -21,10 +23,13 @@ public partial class PlayerModelChanger : BasePlugin, IPluginConfig public required DefaultModelManager DefaultModelManager { get;set; } + public static PlayerModelChanger? INSTANCE; + public bool Enable = true; public override void Load(bool hotReload) { + INSTANCE = this; IStorage? Storage = null; switch (Config.StorageType) { case "sqlite": @@ -43,7 +48,7 @@ public override void Load(bool hotReload) RegisterListener(PrecacheResource); } RegisterEventHandler(OnPlayerSpawnEvent); - RegisterListener(() => Unload(true)); + RegisterListener(OnTick); Console.WriteLine($"Player Model Changer loaded {Service.GetModelCount()} model(s) successfully."); } @@ -56,10 +61,12 @@ private void PrecacheResource(ResourceManifest manifest) { } } - public override void Unload(bool hotReload) - { - RemoveListener(PrecacheResource); - DeregisterEventHandler(OnPlayerSpawnEvent); + public override void Unload(bool hotReload) { + INSTANCE = null; + RemoveListener(PrecacheResource); + RemoveListener(OnTick); + DeregisterEventHandler(OnPlayerSpawnEvent); + Console.WriteLine("Player Model Changer unloaded successfully."); } public void ReloadConfig() { @@ -113,10 +120,13 @@ public void OnConfigParsed(ModelConfig config) Config = config; } + public void OnTick() { + ThirdPerson.UpdateCamera(); + } + // from https://github.com/Challengermode/cm-cs2-defaultskins/ [GameEventHandler] public HookResult OnPlayerSpawnEvent(EventPlayerSpawn @event, GameEventInfo info) { - if (!Enable) { return HookResult.Continue; } @@ -148,7 +158,7 @@ public HookResult OnPlayerSpawnEvent(EventPlayerSpawn @event, GameEventInfo info } var botmodel = Service.GetModel(modelindex); if (botmodel != null) { - SetModelNextServerFrame(player.Pawn.Value, botmodel.path, botmodel.disableleg); + SetModelNextServerFrame(player, botmodel.path, botmodel.disableleg); } else { Server.NextFrame(() => { var originalRender = player.Pawn.Value.Render; @@ -190,7 +200,7 @@ public HookResult OnPlayerSpawnEvent(EventPlayerSpawn @event, GameEventInfo info var model = Service.GetPlayerNowTeamModel(player); if (model != null) { - SetModelNextServerFrame(player.PlayerPawn.Value, model.path, model.disableleg); + SetModelNextServerFrame(player, model.path, model.disableleg); } else { Server.NextFrame(() => { var originalRender = player.PlayerPawn.Value.Render; @@ -206,10 +216,10 @@ public HookResult OnPlayerSpawnEvent(EventPlayerSpawn @event, GameEventInfo info return HookResult.Continue; } - public static void SetModelNextServerFrame(CBasePlayerPawn pawn, string model, bool disableleg) + public void SetModelNextServerFrame(CCSPlayerController player, string model, bool disableleg) { - Server.NextFrame(() => - { + Server.NextFrame(() => { + var pawn = player.Pawn.Value!; pawn.SetModel(model); var originalRender = pawn.Render; pawn.Render = Color.FromArgb(disableleg ? 254 : 255, originalRender.R, originalRender.G, originalRender.B); diff --git a/README.md b/README.md index 97b9534..dea214b 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ If you like this plugin, please give a star :) ### This plugin can cause a GSLT ban, please use at your own risk. [中文教程请点这里](https://github.com/samyycX/CS2-PlayerModelChanger/blob/master/README_CN.md) - **[Before you use](#before-you-use)** +- [Feature](#feature) - [Installation Guide](#installation-guide) - [Optional Dependencies](#optional-dependencies) - [Commands](#commands) @@ -21,6 +22,16 @@ Custom model parts: ## Before you use 1. **this plugin can cause a GSLT ban, use at your own risk** +## Feature +- a model select menu (support wasd menu) +- can set different model for T and CT +- random model +- update model after change instantly +- thirdperson preview +- can set default model +- can provide special models for specified permission or player +- can disable the display of leg model + ## Installation Guide Download the plugin from latest [Release](https://github.com/samyycX/CS2-PlayerModelChanger/releases), then put it into your counterstrikesharp plugin folder. @@ -69,6 +80,7 @@ See the [Configuration](#configuration) ## Credits - Method to change model: [DefaultSkins](https://github.com/Challengermode/cm-cs2-defaultskins) by ChallengerMode +- Thirdperson preview code: [ThirdPerson-WIP](https://github.com/UgurhanK/ThirdPerson-WIP) by UgurhanK ## TODOs 1. Translation diff --git a/README_CN.md b/README_CN.md index 1a97c24..26f8018 100644 --- a/README_CN.md +++ b/README_CN.md @@ -4,6 +4,7 @@ 如果你喜欢这个插件请给个Star :) ### 此插件可能导致GSLT封禁,请自行承担风险 - **[用前须知](#用前须知)** +- [功能](#功能) - [自定义模型依赖插件](#自定义模型依赖插件) - [安装指南](#安装指南) - [命令](#命令) @@ -17,10 +18,19 @@ - [如何添加原版或创意工坊模型](#如何添加原版或创意工坊模型) - [如何把你的模型打包并上传到创意工坊](#如何把你的模型打包并上传到创意工坊) - ## 用前须知 1. **此插件可能导致GSLT封禁,请自行承担风险** +## 功能 +- 菜单式选择模型 (支持wasd菜单) +- 可为T/CT阵营设置不同模型 +- 随机模型 +- 选择后可立刻更新 +- 第三人称预览 +- 可设置默认模型 +- 可按照权限和玩家设置特殊模型 +- 可禁用腿部模型 + ## 自定义模型依赖插件 **如果你不使用自定义模型,不用安装这些插件** 1. [MultiAddonManager](https://github.com/Source2ZE/MultiAddonManager) @@ -70,7 +80,8 @@ 请看 [配置](#配置) 部分 ## 感谢 -- 替换模型的方法: [DefaultSkins](https://github.com/Challengermode/cm-cs2-defaultskins), 作者 ChallengerMode +- 替换模型的方法: [DefaultSkins](https://github.com/Challengermode/cm-cs2-defaultskins) by ChallengerMode +- 第三人称预览代码: [ThirdPerson-WIP](https://github.com/UgurhanK/ThirdPerson-WIP) by UgurhanK ## TODOs 1. 翻译 diff --git a/Service.cs b/Service.cs index 5be999e..af5f3f3 100644 --- a/Service.cs +++ b/Service.cs @@ -1,3 +1,5 @@ +using System.Drawing; +using System.Net.Http.Headers; using Config; using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; @@ -21,6 +23,9 @@ public class ModelService { private ModelCacheManager cacheManager; + + private Dictionary ModelChangeCooldown = new Dictionary(); + public ModelService(ModelConfig Config, IStorage storage, IStringLocalizer localizer, DefaultModelManager defaultModelManager) { this.config = Config; this.storage = storage; @@ -85,6 +90,12 @@ public void SetPlayerModel(ulong steamid, string? modelIndex, string side, bool storage.SetPlayerCTModel(steamid, modelIndex, permissionBypass); } ); + if (!config.DisableInstantUpdate) { + var player = Utilities.GetPlayerFromSteamId(steamid); + if (Utils.isUpdatingSameTeam(player, side)) { + Utils.RespawnPlayer(player, config.DisableThirdPersonPreview); + } + } } public void SetPlayerAllModel(ulong steamid, string? tModel, string? ctModel, bool permissionBypass) { @@ -95,6 +106,10 @@ public void SetPlayerAllModel(ulong steamid, string? tModel, string? ctModel, bo storage.SetPlayerTModel(steamid, tModel, permissionBypass).ContinueWith((_) => { storage.SetPlayerCTModel(steamid, ctModel, permissionBypass); }); + if (!config.DisableInstantUpdate) { + var player = Utilities.GetPlayerFromSteamId(steamid); + Utils.RespawnPlayer(player, config.DisableThirdPersonPreview); + } } public void SetPlayerModel(ulong steamid, string? modelIndex, CsTeam team, bool permissionBypass) { var side = team == CsTeam.Terrorist ? "t" : "ct"; @@ -176,7 +191,6 @@ public bool CheckModel(CCSPlayerController player, string side, ModelCache? mode if (modelIndex == "" || modelIndex == "@random") { return true; } - CsTeam team = side.ToLower() == "t" ? CsTeam.Terrorist : CsTeam.CounterTerrorist; var model = GetModel(modelIndex!); if (model == null) { @@ -186,6 +200,14 @@ public bool CheckModel(CCSPlayerController player, string side, ModelCache? mode } public void SetPlayerModelWithCheck(CCSPlayerController player, string modelIndex, string side) { + if (ModelChangeCooldown.ContainsKey(player.SteamID)) { + var lastTime = ModelChangeCooldown[player.SteamID]; + if (DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() - lastTime < (config.ModelChangeCooldownSecond*1000)) { + player.PrintToChat(localizer["command.model.cooldown"]); + return; + } + } + var isSpecial = modelIndex == "" || modelIndex == "@random"; if (modelIndex == "@default") { @@ -196,7 +218,9 @@ public void SetPlayerModelWithCheck(CCSPlayerController player, string modelInde () => SetPlayerModel(player!.AuthorizedSteamID!.SteamId64, tDefault == null ? "" : tDefault.index, side, false), () => SetPlayerModel(player!.AuthorizedSteamID!.SteamId64, ctDefault == null ? "" : ctDefault.index, side, false) ); - player.PrintToChat(localizer["command.model.success", localizer["side."+side]]); + if (config.DisableInstantUpdate || !Utils.isUpdatingSameTeam(player, side)) { + player.PrintToChat(localizer["command.model.success", localizer["side."+side]]); + } return; } @@ -221,7 +245,10 @@ public void SetPlayerModelWithCheck(CCSPlayerController player, string modelInde var steamid = player!.AuthorizedSteamID!.SteamId64; SetPlayerModel(steamid, modelIndex, side, false); - player.PrintToChat(localizer["command.model.success", localizer["side."+side]]); + ModelChangeCooldown[steamid] = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + if (config.DisableInstantUpdate || !Utils.isUpdatingSameTeam(player, side)) { + player.PrintToChat(localizer["command.model.success", localizer["side."+side]]); + } } public Model? GetPlayerModel(CCSPlayerController player, string side) { diff --git a/Storage.cs b/Storage.cs index 9d2aa7a..2d02a8b 100644 --- a/Storage.cs +++ b/Storage.cs @@ -5,7 +5,7 @@ namespace Storage; public interface IStorage { public string? GetPlayerTModel(ulong SteamID); public string? GetPlayerCTModel(ulong SteamID); - public List GetAllPlayerModel(); + public List? GetAllPlayerModel(); public Task SetPlayerTModel(ulong SteamID, string modelName, bool permissionBypass); public Task SetPlayerCTModel(ulong SteamID, string modelName, bool permissionBypass); diff --git a/ThirdPerson.cs b/ThirdPerson.cs new file mode 100644 index 0000000..3bfad1d --- /dev/null +++ b/ThirdPerson.cs @@ -0,0 +1,110 @@ +using System.Drawing; +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Entities.Constants; +using CounterStrikeSharp.API.Modules.Utils; + +namespace PlayerModelChanger; + +public class ThirdPerson { + + private static List cameraStatuses = new List(); + const int MAX_ROTATION_TIMES = 300; + const float DISTANCE = 80; + const float Z_DISTANCE = 80; + + class CameraStatus { + public CCSPlayerController Player { get; set; } + public CPhysicsPropMultiplayer CameraProp { get; set; } + public float Times { get; set; } + } + + public static Vector CalculatePositionInFront(CCSPlayerController player, float offSetXY, float offSetZ = 0) + { + var pawn = player.PlayerPawn.Value; + // Extract yaw angle from player's rotation QAngle + float yawAngle = pawn!.EyeAngles!.Y; + + // Convert yaw angle from degrees to radians + float yawAngleRadians = (float)(yawAngle * Math.PI / 180.0); + + // Calculate offsets in x and y directions + float offsetX = offSetXY * (float)Math.Cos(yawAngleRadians); + float offsetY = offSetXY * (float)Math.Sin(yawAngleRadians); + + // Calculate position in front of the player + var positionInFront = new Vector + { + X = pawn!.AbsOrigin!.X + offsetX, + Y = pawn!.AbsOrigin!.Y + offsetY, + Z = pawn!.AbsOrigin!.Z + offSetZ + }; + + return positionInFront; + } + + public static void UpdateCamera() { + // rotation is not working + for (int i = 0; i < cameraStatuses.Count; i++) { + var cameraStatus = cameraStatuses[i]; + var player = cameraStatus.Player; + var playerPawn = player.PlayerPawn.Value!; + + var origin = playerPawn.AbsOrigin!; + float rotationAngle = cameraStatus.Times / MAX_ROTATION_TIMES * 2 * float.Pi - float.Pi; // - float.PI = from back + // float posX = origin.X + float.Cos(rotationAngle) * DISTANCE; + // float posY = origin.Y + float.Sin(rotationAngle) * DISTANCE; + + // var cameraOrigin = new Vector(posX, posY, origin.Z + Z_DISTANCE); + + // var cameraAngle = new QAngle(Z_DISTANCE / DISTANCE, 360 * (cameraStatus.Times / MAX_ROTATION_TIMES), 0); + cameraStatus.CameraProp.Teleport(CalculatePositionInFront(player, -110, 90), playerPawn.V_angle, Vector.Zero); + if (cameraStatus.Times >= MAX_ROTATION_TIMES) { + playerPawn.CameraServices!.ViewEntity.Raw = uint.MaxValue; + Utilities.SetStateChanged(playerPawn, "CBasePlayerPawn", "m_pCameraServices"); + cameraStatus.CameraProp.Remove(); + cameraStatuses.RemoveAt(i); + } + cameraStatus.Times += 1; + + } + + } + + public static void ThirdPersonPreviewForPlayer(CCSPlayerController player) { + + for (int i = 0; i < cameraStatuses.Count; i++) { + var oldCameraStatus = cameraStatuses[i]; + var oldPlayer = oldCameraStatus.Player; + var oldPlayerPawn = oldPlayer.PlayerPawn.Value!; + oldPlayerPawn.CameraServices!.ViewEntity.Raw = uint.MaxValue; + Utilities.SetStateChanged(oldPlayerPawn, "CBasePlayerPawn", "m_pCameraServices"); + oldCameraStatus.CameraProp.Remove(); + cameraStatuses.RemoveAt(i); + break; + } + + var _cameraProp = Utilities.CreateEntityByName("prop_physics_multiplayer"); + + if (_cameraProp == null || !_cameraProp.IsValid) return; + + _cameraProp.DispatchSpawn(); + + _cameraProp.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_NEVER; + _cameraProp.Collision.SolidFlags = 12; + _cameraProp.Collision.SolidType = SolidType_t.SOLID_VPHYSICS; + + _cameraProp.Render = Color.FromArgb(0, 255, 255,255); + var playerPawn = player.PlayerPawn.Value!; + playerPawn.CameraServices!.ViewEntity.Raw = _cameraProp.EntityHandle.Raw; + Utilities.SetStateChanged(playerPawn, "CBasePlayerPawn", "m_pCameraServices"); + + CameraStatus cameraStatus = new CameraStatus { + Player = player, + CameraProp = _cameraProp, + Times = 0 + }; + + cameraStatuses.Add(cameraStatus); + } +} \ No newline at end of file diff --git a/Utils.cs b/Utils.cs index 624fc6a..d7d76eb 100644 --- a/Utils.cs +++ b/Utils.cs @@ -1,5 +1,11 @@ +using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Modules.Admin; +using CounterStrikeSharp.API.Modules.Entities.Constants; +using CounterStrikeSharp.API.Modules.Timers; +using CounterStrikeSharp.API.Modules.Utils; +using Timer = CounterStrikeSharp.API.Modules.Timers.Timer; +using Vector = CounterStrikeSharp.API.Modules.Utils.Vector; namespace PlayerModelChanger; @@ -32,25 +38,25 @@ public static void ExecuteSide(string side, Action? whenAll, Action whenT, Actio public static bool PlayerHasPermission(CCSPlayerController player, string[] permissions, string[] permissionsOr) { foreach (string perm in permissions) { - if (perm.StartsWith("@")) { - if (!AdminManager.PlayerHasPermissions(player, new string[]{perm})) { - return false; + if (perm.StartsWith("@")) { + if (!AdminManager.PlayerHasPermissions(player, new string[]{perm})) { + return false; + } } - } else if (perm.StartsWith("#")) { - if (!AdminManager.PlayerInGroup(player, new string[]{perm})) { - return false; - } + if (!AdminManager.PlayerInGroup(player, new string[]{perm})) { + return false; + } } else { - ulong steamId; - if (!ulong.TryParse(perm, out steamId)) { - throw new FormatException($"Unknown SteamID64 format: {perm}"); - } else { - if (player.SteamID != steamId) { - return false; + ulong steamId; + if (!ulong.TryParse(perm, out steamId)) { + throw new FormatException($"Unknown SteamID64 format: {perm}"); + } else { + if (player.SteamID != steamId) { + return false; + } } - } } @@ -58,29 +64,58 @@ public static bool PlayerHasPermission(CCSPlayerController player, string[] perm foreach (string perm in permissionsOr) { if (perm.StartsWith("@")) { - if (AdminManager.PlayerHasPermissions(player, perm)) { - return true; - } + if (AdminManager.PlayerHasPermissions(player, perm)) { + return true; + } } else if (perm.StartsWith("#")) { - if (AdminManager.PlayerInGroup(player, perm)) { - return true; - } - } else { - ulong steamId; - if (!ulong.TryParse(perm, out steamId)) { - throw new FormatException($"Unknown SteamID64 format: {perm}"); + if (AdminManager.PlayerInGroup(player, perm)) { + return true; + } } else { - if (player.SteamID == steamId) { - return true; - } - } - + ulong steamId; + if (!ulong.TryParse(perm, out steamId)) { + throw new FormatException($"Unknown SteamID64 format: {perm}"); + } else { + if (player.SteamID == steamId) { + return true; + } + } } + } + return true; + } - + public static bool isUpdatingSameTeam(CCSPlayerController player, string side) { + side = side.ToLower(); + if (side == "all") { + return true; } + return (side == "t" && player.Team == CsTeam.Terrorist) || (side == "ct" && player.Team == CsTeam.CounterTerrorist); + } - return true; + public static void RespawnPlayer(CCSPlayerController player, bool disableThirdPersonPreview) { + Server.NextFrame(() => { + var playerPawn = player.PlayerPawn.Value!; + var absOrigin = new Vector(playerPawn.AbsOrigin?.X, playerPawn.AbsOrigin?.Y, playerPawn.AbsOrigin?.Z); + var absAngle = new QAngle(playerPawn.AbsRotation?.X, playerPawn.AbsRotation?.Y, playerPawn.AbsRotation?.Z); + var health = playerPawn.Health; + var armor = playerPawn.ArmorValue; + CCSPlayer_ItemServices services = new CCSPlayer_ItemServices(playerPawn.ItemServices!.Handle); + var armorHelmet = services.HasHelmet; + var defuser = services.HasDefuser; + + player.Respawn(); + playerPawn.Teleport(absOrigin, absAngle); + playerPawn.Health = health; + Utilities.SetStateChanged(playerPawn, "CBaseEntity", "m_iHealth"); + playerPawn.ArmorValue = armor; + services.HasHelmet = armorHelmet; + services.HasDefuser = defuser; + Utilities.SetStateChanged(playerPawn, "CBasePlayerPawn", "m_pItemServices"); + if (!disableThirdPersonPreview) { + ThirdPerson.ThirdPersonPreviewForPlayer(player); + } + }); } } diff --git a/bin/Debug/net8.0/PlayerModelChanger.dll b/bin/Debug/net8.0/PlayerModelChanger.dll index 2338b126c1a431ea5677fda4e1a68f1841964d3b..72fcbbd3adf83a8b8403f24f74e7ddd368961a9a 100644 GIT binary patch literal 75264 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 literal 69120 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 eF-mst&*ax^`R}tK82=(EkHJuKsxd diff --git a/bin/Debug/net8.0/lang/en.json b/bin/Debug/net8.0/lang/en.json index 0db9798..6d5a301 100644 --- a/bin/Debug/net8.0/lang/en.json +++ b/bin/Debug/net8.0/lang/en.json @@ -11,6 +11,7 @@ "command.model.hint2": "Type {green}!md {default}or {green}!models {default}to select model.", "command.model.notfound": "{red}Model name {default}{0} {red}not found.", "command.model.success": "{green}Your model on {0} will be set after next spawn.", + "command.model.cooldown": "{red}You need to wait for a while before changing model.", "command.resetmodel.success": "{green}Your model will be reseted from next spawn.", "command.models": "{green}Available models ({0}): {default}", "command.modeladmin.hint": "{green}!modeladmin [all/steamid] reset [all/ct/t] {default}Reset player's model.\u2029{green}!modeladmin [all/steamid] set [all/ct/t] [model index] {default}Set player's model.\u2029{green}!modeladmin [steamid] check {default}Check if player's model is not allowed to have, if not then reset it.\u2029{green}!modeladmin reload {default}Reload the config.", @@ -21,6 +22,7 @@ "random.notavailable": "{red}No available model.", "modelmenu.title": "({0}) Current model: {1}", "modelmenu.nomodel": "{red}No available model.", + "modelmenu.forced": "{red}Your model had been forced.", "modelmenu.selectside": "Please select a side", "modelmenu.unset": "Unset", "modelmenu.random": "Random", diff --git a/bin/Debug/net8.0/lang/zh-Hans.json b/bin/Debug/net8.0/lang/zh-Hans.json index 997cc71..497abf5 100644 --- a/bin/Debug/net8.0/lang/zh-Hans.json +++ b/bin/Debug/net8.0/lang/zh-Hans.json @@ -9,8 +9,9 @@ "command.unknownside": "{red}未知的阵营: {default}{0}", "command.model.hint1": "输入 {green}!model <@random/模型名> {default} 切换模型 (@random代表随机, 推荐使用{green}!models{default})。", "command.model.hint2": "输入 {green}!md {default}或 {green}!models {default} 选择模型。", - "command.model.notfound": "{red}模型名 {default}{0} {red}不存在.", + "command.model.notfound": "{red}模型名 {default}{0} {red}不存在。", "command.model.success": "{green}您在{0}的模型会在下一次重生后生效。", + "command.model.cooldown": "{red}您需要再等待一会才可更改模型。", "command.modeladmin.hint": "{green}!modeladmin [all/steamid] reset [all/ct/t] {default}重置玩家的模型\u2029{green}!modeladmin [all/steamid] set [all/ct/t] [model index] {default}设置玩家的模型\u2029{green}!modeladmin [steamid] check {default}检查玩家是否可以使用当前使用的模型,如果不可以则重置.\u2029{green}!modeladmin reload {default}重载配置文件.", "command.modeladmin.playernotfound": "{red}未找到steamid.", "command.modeladmin.success": "{green}成功执行.", @@ -20,6 +21,7 @@ "random.notavailable": "{red}没有可用的模型。", "modelmenu.title": "({0}) 当前模型: {1}", "modelmenu.nomodel": "{red}没有可用的模型。", + "modelmenu.forced": "{red}您的模型已被强制设置,无法更改。", "modelmenu.selectside": "请选择阵营", "modelmenu.unset": "重置", "modelmenu.random": "随机", diff --git a/commands/CommandModelMenu.cs b/commands/CommandModelMenu.cs index 53ec5c0..db87978 100644 --- a/commands/CommandModelMenu.cs +++ b/commands/CommandModelMenu.cs @@ -1,5 +1,6 @@ using System.Runtime.CompilerServices; using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Entities; using Service; namespace PlayerModelChanger; @@ -37,10 +38,27 @@ private ModelMenuData GenerateModelMenuData(CCSPlayerController player) { return data; } - private TeamMenuData GenerateTeamMenuData(CCSPlayerController player) { + private TeamMenuData? GenerateTeamMenuData(CCSPlayerController player) { TeamMenuData data = new(); data.title = Localizer["modelmenu.selectside"]; - foreach(var side in new string[]{"t", "ct", "all"}) { + var sides = new List(); + + var tDefault = DefaultModelManager.GetPlayerDefaultModel(player, "t"); + var ctDefault = DefaultModelManager.GetPlayerDefaultModel(player, "ct"); + if (tDefault == null || !tDefault.force) { + sides.Add("t"); + } + if (ctDefault == null || !ctDefault.force) { + sides.Add("ct"); + } + if (sides.Count == 2) { + sides.Append("all"); + } + if (sides.Count == 0) { + return null; + } + + foreach(var side in sides) { var playerModel = Service.GetPlayerModel(player, side); string selection = playerModel != null ? $"{Localizer["side."+side]}: {playerModel.name}" : $"{Localizer["side."+side]}"; @@ -65,6 +83,10 @@ private WasdMenuManager GetWasdMenuManager() { public void OpenSelectSideMenu(CCSPlayerController player) { var modelData = GenerateModelMenuData(player); var teamData = GenerateTeamMenuData(player); + if (teamData == null) { + player.PrintToChat(Localizer["modelmenu.forced"]); + return; + } if (Config.MenuType == "interactive" || Config.MenuType == "wasd") { GetWasdMenuManager().OpenSelectSideMenu(player, teamData, modelData); } else { @@ -74,6 +96,11 @@ public void OpenSelectSideMenu(CCSPlayerController player) { public void OpenSelectModelMenu(CCSPlayerController player, string side, Model? model) { var modelData = GenerateModelMenuData(player); + var defaultModel = DefaultModelManager.GetPlayerDefaultModel(player, side); + if (defaultModel != null && defaultModel.force) { + player.PrintToChat(Localizer["modelmenu.forced"]); + return; + } if (Config.MenuType == "interactive" || Config.MenuType == "wasd") { GetWasdMenuManager().OpenSelectModelMenu(player, side, modelData); } else { diff --git a/commands/PlayerCommand.cs b/commands/PlayerCommand.cs index 15f7f51..3109473 100644 --- a/commands/PlayerCommand.cs +++ b/commands/PlayerCommand.cs @@ -1,6 +1,10 @@ +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics.X86; +using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core.Attributes.Registration; using CounterStrikeSharp.API.Modules.Commands; +using CounterStrikeSharp.API.Modules.Memory; using CounterStrikeSharp.API.Modules.Menu; using CounterStrikeSharp.API.Modules.Utils; using Service; @@ -64,18 +68,12 @@ public void GetAllModelsCommand(CCSPlayerController? player, CommandInfo command if (Config.DisablePlayerSelection) { return; } - if (commandInfo.ArgCount == 1) { OpenSelectSideMenu(player); return; } - string side = commandInfo.GetArg(1); OpenSelectModelMenu(player, side, Service.GetPlayerModel(player, side)); - - - - } diff --git a/lang/en.json b/lang/en.json index 0db9798..6d5a301 100644 --- a/lang/en.json +++ b/lang/en.json @@ -11,6 +11,7 @@ "command.model.hint2": "Type {green}!md {default}or {green}!models {default}to select model.", "command.model.notfound": "{red}Model name {default}{0} {red}not found.", "command.model.success": "{green}Your model on {0} will be set after next spawn.", + "command.model.cooldown": "{red}You need to wait for a while before changing model.", "command.resetmodel.success": "{green}Your model will be reseted from next spawn.", "command.models": "{green}Available models ({0}): {default}", "command.modeladmin.hint": "{green}!modeladmin [all/steamid] reset [all/ct/t] {default}Reset player's model.\u2029{green}!modeladmin [all/steamid] set [all/ct/t] [model index] {default}Set player's model.\u2029{green}!modeladmin [steamid] check {default}Check if player's model is not allowed to have, if not then reset it.\u2029{green}!modeladmin reload {default}Reload the config.", @@ -21,6 +22,7 @@ "random.notavailable": "{red}No available model.", "modelmenu.title": "({0}) Current model: {1}", "modelmenu.nomodel": "{red}No available model.", + "modelmenu.forced": "{red}Your model had been forced.", "modelmenu.selectside": "Please select a side", "modelmenu.unset": "Unset", "modelmenu.random": "Random", diff --git a/lang/zh-Hans.json b/lang/zh-Hans.json index 997cc71..497abf5 100644 --- a/lang/zh-Hans.json +++ b/lang/zh-Hans.json @@ -9,8 +9,9 @@ "command.unknownside": "{red}未知的阵营: {default}{0}", "command.model.hint1": "输入 {green}!model <@random/模型名> {default} 切换模型 (@random代表随机, 推荐使用{green}!models{default})。", "command.model.hint2": "输入 {green}!md {default}或 {green}!models {default} 选择模型。", - "command.model.notfound": "{red}模型名 {default}{0} {red}不存在.", + "command.model.notfound": "{red}模型名 {default}{0} {red}不存在。", "command.model.success": "{green}您在{0}的模型会在下一次重生后生效。", + "command.model.cooldown": "{red}您需要再等待一会才可更改模型。", "command.modeladmin.hint": "{green}!modeladmin [all/steamid] reset [all/ct/t] {default}重置玩家的模型\u2029{green}!modeladmin [all/steamid] set [all/ct/t] [model index] {default}设置玩家的模型\u2029{green}!modeladmin [steamid] check {default}检查玩家是否可以使用当前使用的模型,如果不可以则重置.\u2029{green}!modeladmin reload {default}重载配置文件.", "command.modeladmin.playernotfound": "{red}未找到steamid.", "command.modeladmin.success": "{green}成功执行.", @@ -20,6 +21,7 @@ "random.notavailable": "{red}没有可用的模型。", "modelmenu.title": "({0}) 当前模型: {1}", "modelmenu.nomodel": "{red}没有可用的模型。", + "modelmenu.forced": "{red}您的模型已被强制设置,无法更改。", "modelmenu.selectside": "请选择阵营", "modelmenu.unset": "重置", "modelmenu.random": "随机", diff --git a/storage/MySQL.cs b/storage/MySQL.cs index 2336233..6c24869 100644 --- a/storage/MySQL.cs +++ b/storage/MySQL.cs @@ -57,8 +57,13 @@ SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS """); } - public List GetAllPlayerModel() { - return conn.Query($"select * from {table};").ToList(); + public List? GetAllPlayerModel() { + try { + return conn.Query($"select * from {table};").ToList(); + } catch (InvalidOperationException e) { + + } + return null; } public dynamic? GetPlayerModel(ulong SteamID, string modelfield)