Compare commits

..

8 Commits

Author SHA1 Message Date
xiaodo
9f12d5a81f Merge c5e219b445 into 3929a43e46 2024-10-23 20:21:41 +03:00
xiaodoxd
c5e219b445 Fix 2024-03-17 20:31:55 +08:00
xiaodoxd
5c75616060 Fix 2024-03-10 04:17:41 +08:00
xiaodoxd
3ddf8f23ac Fix 2024-03-10 04:16:12 +08:00
xiaodoxd
7d185825ff Fix 2024-03-10 04:14:41 +08:00
xiaodoxd
48acbd3fa8 Fix 2024-03-10 04:13:51 +08:00
xiaodoxd
6842861f55 Fix 2024-03-10 04:12:44 +08:00
xiaodoxd
53cadcff40 zh-cn.json Locallyized. 2024-03-10 04:08:25 +08:00
7 changed files with 59 additions and 61 deletions

View File

@@ -181,7 +181,7 @@ public partial class WeaponPaints
.Where(pair => pair.Key.StartsWith("weapon_knife") || pair.Key.StartsWith("weapon_bayonet")) .Where(pair => pair.Key.StartsWith("weapon_knife") || pair.Key.StartsWith("weapon_bayonet"))
.ToDictionary(pair => pair.Key, pair => pair.Value); .ToDictionary(pair => pair.Key, pair => pair.Value);
var giveItemMenu = Utility.CreateMenu(Localizer["wp_knife_menu_title"]); var giveItemMenu = MenuApi?.NewMenu(Localizer["wp_knife_menu_title"]);
var handleGive = (CCSPlayerController player, ChatMenuOption option) => var handleGive = (CCSPlayerController player, ChatMenuOption option) =>
{ {
@@ -265,7 +265,7 @@ public partial class WeaponPaints
.Except([new KeyValuePair<string, string>("weapon_knife", "Default Knife")]) .Except([new KeyValuePair<string, string>("weapon_knife", "Default Knife")])
.ToDictionary(kvp => kvp.Value, kvp => kvp.Key); .ToDictionary(kvp => kvp.Value, kvp => kvp.Key);
var weaponSelectionMenu = Utility.CreateMenu(Localizer["wp_skin_menu_weapon_title"]); var weaponSelectionMenu = MenuApi?.NewMenu(Localizer["wp_skin_menu_weapon_title"]);
// Function to handle skin selection for a specific weapon // Function to handle skin selection for a specific weapon
var handleWeaponSelection = (CCSPlayerController? player, ChatMenuOption option) => var handleWeaponSelection = (CCSPlayerController? player, ChatMenuOption option) =>
@@ -280,7 +280,7 @@ public partial class WeaponPaints
weaponName?.ToString() == selectedWeaponClassname weaponName?.ToString() == selectedWeaponClassname
)?.ToList(); )?.ToList();
var skinSubMenu = Utility.CreateMenu(Localizer["wp_skin_menu_skin_title", selectedWeapon]); var skinSubMenu = MenuApi?.NewMenu(Localizer["wp_skin_menu_skin_title", selectedWeapon]);
// Function to handle skin selection for the chosen weapon // Function to handle skin selection for the chosen weapon
var handleSkinSelection = (CCSPlayerController p, ChatMenuOption opt) => var handleSkinSelection = (CCSPlayerController p, ChatMenuOption opt) =>
@@ -416,7 +416,7 @@ public partial class WeaponPaints
private void SetupGlovesMenu() private void SetupGlovesMenu()
{ {
var glovesSelectionMenu = Utility.CreateMenu(Localizer["wp_glove_menu_title"]); var glovesSelectionMenu = MenuApi?.NewMenu(Localizer["wp_glove_menu_title"]);
if (glovesSelectionMenu == null) return; if (glovesSelectionMenu == null) return;
glovesSelectionMenu.PostSelectAction = PostSelectAction.Close; glovesSelectionMenu.PostSelectAction = PostSelectAction.Close;
@@ -625,7 +625,7 @@ public partial class WeaponPaints
if (!CommandsCooldown.TryGetValue(player.Slot, out DateTime cooldownEndTime) || if (!CommandsCooldown.TryGetValue(player.Slot, out DateTime cooldownEndTime) ||
DateTime.UtcNow >= (CommandsCooldown.TryGetValue(player.Slot, out cooldownEndTime) ? cooldownEndTime : DateTime.UtcNow)) DateTime.UtcNow >= (CommandsCooldown.TryGetValue(player.Slot, out cooldownEndTime) ? cooldownEndTime : DateTime.UtcNow))
{ {
var agentsSelectionMenu = Utility.CreateMenu(Localizer["wp_agent_menu_title"]); var agentsSelectionMenu = MenuApi?.NewMenu(Localizer["wp_agent_menu_title"]);
if (agentsSelectionMenu == null) return; if (agentsSelectionMenu == null) return;
agentsSelectionMenu.PostSelectAction = PostSelectAction.Close; agentsSelectionMenu.PostSelectAction = PostSelectAction.Close;
@@ -665,7 +665,7 @@ public partial class WeaponPaints
private void SetupMusicMenu() private void SetupMusicMenu()
{ {
var musicSelectionMenu = Utility.CreateMenu(Localizer["wp_music_menu_title"]); var musicSelectionMenu = MenuApi?.NewMenu(Localizer["wp_music_menu_title"]);
if (musicSelectionMenu == null) return; if (musicSelectionMenu == null) return;
musicSelectionMenu.PostSelectAction = PostSelectAction.Close; musicSelectionMenu.PostSelectAction = PostSelectAction.Close;
@@ -800,7 +800,7 @@ public partial class WeaponPaints
private void SetupPinsMenu() private void SetupPinsMenu()
{ {
var pinsSelectionMenu = Utility.CreateMenu(Localizer["wp_pins_menu_title"]); var pinsSelectionMenu = MenuApi?.NewMenu(Localizer["wp_pins_menu_title"]);
if (pinsSelectionMenu == null) return; if (pinsSelectionMenu == null) return;
pinsSelectionMenu.PostSelectAction = PostSelectAction.Close; pinsSelectionMenu.PostSelectAction = PostSelectAction.Close;

View File

@@ -99,8 +99,5 @@ namespace WeaponPaints
[JsonPropertyName("Additional")] [JsonPropertyName("Additional")]
public Additional Additional { get; set; } = new(); public Additional Additional { get; set; } = new();
[JsonPropertyName("MenuType")]
public string MenuType { get; set; } = "selectable";
} }
} }

View File

@@ -1,8 +1,6 @@
using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Core.Translations; using CounterStrikeSharp.API.Core.Translations;
using CounterStrikeSharp.API.Modules.Menu;
using Dapper; using Dapper;
using MenuManager;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
@@ -190,32 +188,10 @@ namespace WeaponPaints
Console.WriteLine("[WeaponPaints] " + message); Console.WriteLine("[WeaponPaints] " + message);
Console.ResetColor(); Console.ResetColor();
} }
internal static IMenu? CreateMenu(string title) internal static string ReplaceTags(string message)
{ {
var menuType = WeaponPaints.Instance.Config.MenuType.ToLower(); return message.ReplaceColorTags();
var menu = menuType switch
{
_ when menuType.Equals("selectable", StringComparison.CurrentCultureIgnoreCase) =>
WeaponPaints.MenuApi?.NewMenu(title),
_ when menuType.Equals("dynamic", StringComparison.CurrentCultureIgnoreCase) =>
WeaponPaints.MenuApi?.NewMenuForcetype(title, MenuType.ButtonMenu),
_ when menuType.Equals("center", StringComparison.CurrentCultureIgnoreCase) =>
WeaponPaints.MenuApi?.NewMenuForcetype(title, MenuType.CenterMenu),
_ when menuType.Equals("chat", StringComparison.CurrentCultureIgnoreCase) =>
WeaponPaints.MenuApi?.NewMenuForcetype(title, MenuType.ChatMenu),
_ when menuType.Equals("console", StringComparison.CurrentCultureIgnoreCase) =>
WeaponPaints.MenuApi?.NewMenuForcetype(title, MenuType.ConsoleMenu),
_ => WeaponPaints.MenuApi?.NewMenu(title)
};
return menu;
} }
internal static async Task CheckVersion(string version, ILogger logger) internal static async Task CheckVersion(string version, ILogger logger)

View File

@@ -1 +1 @@
3.1b 3.0c

View File

@@ -20,10 +20,8 @@ namespace WeaponPaints
bool isKnife = weapon.DesignerName.Contains("knife") || weapon.DesignerName.Contains("bayonet"); bool isKnife = weapon.DesignerName.Contains("knife") || weapon.DesignerName.Contains("bayonet");
if (isKnife && (!GPlayersKnife.ContainsKey(player.Slot) || if (isKnife && !GPlayersKnife.ContainsKey(player.Slot) ||
!GPlayersKnife[player.Slot].ContainsKey(player.Team) || isKnife && GPlayersKnife[player.Slot][player.Team] == "weapon_knife") return;
GPlayersKnife[player.Slot][player.Team] == "weapon_knife"))
return;
if (isKnife) if (isKnife)
{ {
@@ -54,9 +52,7 @@ namespace WeaponPaints
bool isLegacyModel; bool isLegacyModel;
if (_config.Additional.GiveRandomSkin && if (_config.Additional.GiveRandomSkin &&
GPlayerWeaponsInfo.ContainsKey(player.Slot) && !GPlayerWeaponsInfo[player.Slot][player.Team].ContainsKey(weaponDefIndex))
(!GPlayerWeaponsInfo[player.Slot].ContainsKey(player.Team) ||
!GPlayerWeaponsInfo[player.Slot][player.Team].ContainsKey(weaponDefIndex)))
{ {
// Random skins // Random skins
weapon.FallbackPaintKit = GetRandomPaint(weaponDefIndex); weapon.FallbackPaintKit = GetRandomPaint(weaponDefIndex);
@@ -107,7 +103,14 @@ namespace WeaponPaints
weapon.AttributeManager.Item.CustomName = weaponInfo.Nametag; weapon.AttributeManager.Item.CustomName = weaponInfo.Nametag;
weapon.FallbackPaintKit = weaponInfo.Paint; weapon.FallbackPaintKit = weaponInfo.Paint;
weapon.FallbackSeed = weaponInfo is { Paint: 38, Seed: 0 } ? _fadeSeed++ : weaponInfo.Seed; if (weaponInfo is { Paint: 38, Seed: 0 })
{
weapon.FallbackSeed = _fadeSeed++;
}
else
{
weapon.FallbackSeed = weaponInfo.Seed;
}
weapon.FallbackWear = weaponInfo.Wear; weapon.FallbackWear = weaponInfo.Wear;
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle, "set item texture prefab", weapon.FallbackPaintKit); CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle, "set item texture prefab", weapon.FallbackPaintKit);
@@ -183,13 +186,15 @@ namespace WeaponPaints
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle, CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
$"sticker slot {stickerSlot} id", ViewAsFloat(sticker.Id)); $"sticker slot {stickerSlot} id", ViewAsFloat(sticker.Id));
if (sticker.OffsetX != 0 || sticker.OffsetY != 0) // CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle, // $"sticker slot {stickerSlot} schema", stickerSlot);
$"sticker slot {stickerSlot} schema", 0); // if (stickerSlot == 5)
// {
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle, CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
$"sticker slot {stickerSlot} offset x", sticker.OffsetX); $"sticker slot {stickerSlot} offset x", sticker.OffsetX);
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle, CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
$"sticker slot {stickerSlot} offset y", sticker.OffsetY); $"sticker slot {stickerSlot} offset y", sticker.OffsetY);
// }
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle, CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
$"sticker slot {stickerSlot} wear", sticker.Wear); $"sticker slot {stickerSlot} wear", sticker.Wear);
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle, CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
@@ -212,11 +217,8 @@ namespace WeaponPaints
int weaponDefIndex = weapon.AttributeManager.Item.ItemDefinitionIndex; int weaponDefIndex = weapon.AttributeManager.Item.ItemDefinitionIndex;
if (!GPlayerWeaponsInfo.TryGetValue(player.Slot, out var playerWeaponsInfo) || if (!GPlayerWeaponsInfo.TryGetValue(player.Slot, out var playerWeaponsInfo) ||
!playerWeaponsInfo.TryGetValue(player.Team, out var teamWeaponsInfo) || !playerWeaponsInfo[player.Team].TryGetValue(weaponDefIndex, out var value) ||
!teamWeaponsInfo.TryGetValue(weaponDefIndex, out var value) || value.KeyChain == null) return;
value.KeyChain == null)
return;
var keyChain = value.KeyChain; var keyChain = value.KeyChain;
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle, CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
@@ -404,12 +406,9 @@ namespace WeaponPaints
return; return;
if (!GPlayersGlove.TryGetValue(player.Slot, out var gloveInfo) || if (!GPlayersGlove.TryGetValue(player.Slot, out var gloveInfo) ||
!gloveInfo.TryGetValue(player.Team, out var gloveId) || !gloveInfo.TryGetValue(player.Team, out var gloveId) || gloveId == 0) return;
gloveId == 0 ||
!GPlayerWeaponsInfo.TryGetValue(player.Slot, out var playerWeaponsInfo) || WeaponInfo weaponInfo = GPlayerWeaponsInfo[player.Slot][player.Team][gloveId];
!playerWeaponsInfo.TryGetValue(player.Team, out var teamWeaponsInfo) ||
!teamWeaponsInfo.TryGetValue(gloveId, out var weaponInfo))
return;
item.ItemDefinitionIndex = gloveId; item.ItemDefinitionIndex = gloveId;
item.ItemIDLow = 16384 & 0xFFFFFFFF; item.ItemIDLow = 16384 & 0xFFFFFFFF;
@@ -543,6 +542,7 @@ namespace WeaponPaints
var weapon = handle.Value; var weapon = handle.Value;
if (weapon == null || !weapon.IsValid) continue; if (weapon == null || !weapon.IsValid) continue;
if (myWeapons.Count == 1) if (myWeapons.Count == 1)
{ {
var newWeapon = new CBasePlayerWeapon(player.GiveNamedItem(CsItem.USP)); var newWeapon = new CBasePlayerWeapon(player.GiveNamedItem(CsItem.USP));

View File

@@ -17,7 +17,7 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
public override string ModuleAuthor => "Nereziel & daffyy"; public override string ModuleAuthor => "Nereziel & daffyy";
public override string ModuleDescription => "Skin, gloves, agents and knife selector, standalone and web-based"; public override string ModuleDescription => "Skin, gloves, agents and knife selector, standalone and web-based";
public override string ModuleName => "WeaponPaints"; public override string ModuleName => "WeaponPaints";
public override string ModuleVersion => "3.1b"; public override string ModuleVersion => "3.0c";
public override void Load(bool hotReload) public override void Load(bool hotReload)
{ {

25
lang/zh-Hans.json Normal file
View File

@@ -0,0 +1,25 @@
{
"wp_prefix": "{lightblue}[WeaponPaints] {default}",
"wp_info_website": "您可以在浏览器访问 {lime}{0}{default} 来更改您的饰品",
"wp_info_refresh": "输入 {lime}!wp{default} 来刷新武器皮肤",
"wp_info_knife": "输入 {lime}!knife{default} 来打开选刀菜单",
"wp_info_glove": "输入 {lime}!gloves{default} 来打开手套菜单",
"wp_info_agent": "输入 {lime}!agents{default} 来打开探员菜单",
"wp_info_music": "输入 {lime}!music{default} 来打开音乐盒菜单",
"wp_command_cooldown": "{lightred}饰品刷新冷却中!请稍后再试!",
"wp_command_refresh_done": "{lime}饰品已刷新",
"wp_knife_menu_select": "您的刀已更改为 {lime}{0}{default}",
"wp_knife_menu_kill": "",
"wp_knife_menu_title": "选刀菜单",
"wp_glove_menu_select": "您的手套已更改为 {lime}{0}{default}",
"wp_glove_menu_title": "手套菜单",
"wp_agent_menu_select": "您的探员已更改为 {lime}{0}{default}",
"wp_agent_menu_title": "探员菜单",
"wp_music_menu_title": "音乐盒菜单",
"wp_music_menu_select": "您的音乐盒已更改为 {lime}{0}{default}",
"wp_skin_menu_weapon_title": "武器菜单",
"wp_skin_menu_skin_title": "为 {lime}{0}{default} 更换皮肤",
"wp_skin_menu_select": "皮肤已更换为 {lime}{0}{default} ",
"None": "无"
}