From a7a68418dbf9018c6961f86028243ea01250e857 Mon Sep 17 00:00:00 2001 From: Naruse <71993948+DevilProMT@users.noreply.github.com> Date: Mon, 11 May 2026 19:29:32 +0800 Subject: [PATCH] add girl skin command --- .../Message/LanguageCHS.cs | 1 + .../Message/LanguageCHT.cs | 1 + .../Message/LanguageEN.cs | 1 + GameServer/Command/Commands/CommandGiveAll.cs | 36 +++++++++++++++++++ .../Packet/Send/Misc/PacketNtfCallScript.cs | 15 ++++++++ version.txt | 2 +- 6 files changed, 55 insertions(+), 1 deletion(-) diff --git a/Common/Internationalization/Message/LanguageCHS.cs b/Common/Internationalization/Message/LanguageCHS.cs index fa28529..5680e3d 100644 --- a/Common/Internationalization/Message/LanguageCHS.cs +++ b/Common/Internationalization/Message/LanguageCHS.cs @@ -35,6 +35,7 @@ public class ServerTextCHS /// public class WordTextCHS { + public string Skin => "Skin"; public string WeaponPart => "武器部件"; public string CallItem => "召唤道具"; public string SkinPart => "皮肤部件"; diff --git a/Common/Internationalization/Message/LanguageCHT.cs b/Common/Internationalization/Message/LanguageCHT.cs index ac39b25..1764272 100644 --- a/Common/Internationalization/Message/LanguageCHT.cs +++ b/Common/Internationalization/Message/LanguageCHT.cs @@ -35,6 +35,7 @@ public class ServerTextCHT /// public class WordTextCHT { + public string Skin => "皮膚"; public string WeaponPart => "武器部件"; public string CallItem => "召喚道具"; public string SkinPart => "外觀部件"; diff --git a/Common/Internationalization/Message/LanguageEN.cs b/Common/Internationalization/Message/LanguageEN.cs index e218531..6cb5cf6 100644 --- a/Common/Internationalization/Message/LanguageEN.cs +++ b/Common/Internationalization/Message/LanguageEN.cs @@ -35,6 +35,7 @@ public class ServerTextEN /// public class WordTextEN { + public string Skin => "Skin"; public string WeaponPart => "Weapon Part"; public string CallItem => "Call Item"; public string SkinPart => "Skin Part"; diff --git a/GameServer/Command/Commands/CommandGiveAll.cs b/GameServer/Command/Commands/CommandGiveAll.cs index 52c39cf..8e68009 100644 --- a/GameServer/Command/Commands/CommandGiveAll.cs +++ b/GameServer/Command/Commands/CommandGiveAll.cs @@ -258,4 +258,40 @@ public class CommandGiveAll : ICommands await arg.SendMsg(I18NManager.Translate("Game.Command.GiveAll.GiveAllItems", I18NManager.Translate("Word.WeaponPart"), weaponPartItems.Count.ToString())); } + + [CommandMethod("skin")] + public async ValueTask GiveAllSkin(CommandArg arg) + { + if (!await arg.CheckOnlineTarget()) return; + if (await arg.GetOption('p') is not int particular) return; + if (await arg.GetOption('l') is not int level) return; + if (await arg.GetOption('g') is not int genre) return; + + var detail = arg.GetInt(0); + var player = arg.Target!.Player!; + List skinItems = []; + if (detail == -1) + { + // add all + foreach (var config in GameData.CardSkinData.Values) + { + var skin = await player.InventoryManager! + .AddSkinItem((ItemTypeEnum)config.Genre, config.Detail, config.Particular, config.Level, false); + if (skin != null) skinItems.Add(skin); + } + } + else + { + var skin = await player.InventoryManager!.AddSkinItem((ItemTypeEnum)genre, (uint)detail, (uint)particular, (uint)level, false); + if (skin == null) + { + await arg.SendMsg(I18NManager.Translate("Game.Command.GiveAll.NotFound", I18NManager.Translate("Word.Skin"))); + return; + } + skinItems.Add(skin); + } + if (skinItems.Count > 0) await player.SendPacket(new PacketNtfCallScript(skinItems)); + await arg.SendMsg(I18NManager.Translate("Game.Command.GiveAll.GiveAllItems", + I18NManager.Translate("Word.Skin"), skinItems.Count.ToString())); + } } \ No newline at end of file diff --git a/GameServer/Server/Packet/Send/Misc/PacketNtfCallScript.cs b/GameServer/Server/Packet/Send/Misc/PacketNtfCallScript.cs index 0fde531..e73c800 100644 --- a/GameServer/Server/Packet/Send/Misc/PacketNtfCallScript.cs +++ b/GameServer/Server/Packet/Send/Misc/PacketNtfCallScript.cs @@ -68,6 +68,21 @@ public class PacketNtfCallScript : BasePacket SetData(proto); } + public PacketNtfCallScript(List skins) : base(CmdIds.NtfScript) + { + var proto = new NtfCallScript + { + Api = "", + Arg = "{}", + ExtraSync = new NtfSyncPlayer + { + Items = { skins.Select(x => x.ToProto()) } + } + }; + + SetData(proto); + } + public PacketNtfCallScript(InventoryData inventory) : base(CmdIds.NtfScript) { var proto = new NtfCallScript diff --git a/version.txt b/version.txt index 0705f05..c7e7580 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -v=2.1 \ No newline at end of file +v=2.2 \ No newline at end of file