add girl skin command

This commit is contained in:
Naruse
2026-05-11 19:29:32 +08:00
parent f053359c41
commit a7a68418db
6 changed files with 55 additions and 1 deletions

View File

@@ -35,6 +35,7 @@ public class ServerTextCHS
/// </summary>
public class WordTextCHS
{
public string Skin => "Skin";
public string WeaponPart => "武器部件";
public string CallItem => "召唤道具";
public string SkinPart => "皮肤部件";

View File

@@ -35,6 +35,7 @@ public class ServerTextCHT
/// </summary>
public class WordTextCHT
{
public string Skin => "皮膚";
public string WeaponPart => "武器部件";
public string CallItem => "召喚道具";
public string SkinPart => "外觀部件";

View File

@@ -35,6 +35,7 @@ public class ServerTextEN
/// </summary>
public class WordTextEN
{
public string Skin => "Skin";
public string WeaponPart => "Weapon Part";
public string CallItem => "Call Item";
public string SkinPart => "Skin Part";

View File

@@ -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<GameSkinInfo> 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()));
}
}

View File

@@ -68,6 +68,21 @@ public class PacketNtfCallScript : BasePacket
SetData(proto);
}
public PacketNtfCallScript(List<GameSkinInfo> 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

View File

@@ -1 +1 @@
v=2.1
v=2.2