mirror of
https://github.com/MikuLeaks/KianaBH3.git
synced 2025-12-13 05:14:46 +01:00
feat: add more valk command
This commit is contained in:
@@ -66,7 +66,7 @@ public class AvatarInfo
|
|||||||
avatarSkill.SubSkillList.AddRange(skill.SubSkillList.Select(x => new Proto.AvatarSubSkill
|
avatarSkill.SubSkillList.AddRange(skill.SubSkillList.Select(x => new Proto.AvatarSubSkill
|
||||||
{
|
{
|
||||||
SubSkillId = (uint)x.SubSkillId,
|
SubSkillId = (uint)x.SubSkillId,
|
||||||
Level = x.Level,
|
Level = (uint)x.Level,
|
||||||
IsMask = x.IsMask
|
IsMask = x.IsMask
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ public class AvatarSkill
|
|||||||
public class AvatarSubSkill
|
public class AvatarSubSkill
|
||||||
{
|
{
|
||||||
public int SubSkillId { get; set; }
|
public int SubSkillId { get; set; }
|
||||||
public uint Level { get; set; }
|
public int Level { get; set; }
|
||||||
public bool IsMask { get; set; }
|
public bool IsMask { get; set; }
|
||||||
}
|
}
|
||||||
public class AvatarArtifactDetail
|
public class AvatarArtifactDetail
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ public class HelpTextEN
|
|||||||
"Usage: /help [cmd]";
|
"Usage: /help [cmd]";
|
||||||
public string Commands => "Commands: ";
|
public string Commands => "Commands: ";
|
||||||
public string CommandUsage => "Usage: ";
|
public string CommandUsage => "Usage: ";
|
||||||
public string CommandPermission => "Level Permission Untuk Access: ";
|
public string CommandPermission => "Level Permission For Access: ";
|
||||||
public string CommandAlias => "Command Alias:";
|
public string CommandAlias => "Command Alias:";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,14 +219,23 @@ public class HelpTextEN
|
|||||||
public class ValkTextEN
|
public class ValkTextEN
|
||||||
{
|
{
|
||||||
public string Desc => "Set attributes for owned characters\n" +
|
public string Desc => "Set attributes for owned characters\n" +
|
||||||
"Note: -1 means all owned characters";
|
"Note: -1 means all owned characters\n";
|
||||||
|
|
||||||
public string Usage =>
|
public string Usage =>
|
||||||
"Usage: /valk add [AvatarID/-1] l<Level> s<Star>\n\n";
|
"Usage: /valk add [ValkID/-1] l<Level> s<Star>\n\n" +
|
||||||
|
"Usage: /valk level [ValkID/-1] [Level]\n\n" +
|
||||||
|
"Usage: /valk star [ValkID/-1] [Star]\n\n" +
|
||||||
|
"Usage: /valk skill [ValkID/-1] for max skill level";
|
||||||
|
|
||||||
public string ValkNotFound => "Character does not exist!";
|
public string ValkNotFound => "Character does not exist!";
|
||||||
public string ValkAddedAll => "Granted all characters to player!";
|
public string ValkAddedAll => "Granted all characters to player!";
|
||||||
public string ValkAdded => "Granted character {0} to player!";
|
public string ValkAdded => "Granted character {0} to player!";
|
||||||
|
public string ValkSetLevelAll => "Set all characters to level {0}!";
|
||||||
|
public string ValkSetLevel => "Set character {0} to level {1}!";
|
||||||
|
public string ValkSetStarAll => "Set all characters' Resonance to {0}!";
|
||||||
|
public string ValkSetStar => "Set character {0}'s Resonance to {1}!";
|
||||||
|
public string ValkSetSkillLevelAll => "Set all characters' skill levels to max!";
|
||||||
|
public string ValkSetSkillLevel => "Set character {0}'s skill levels to max!";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using KianaBH.Data;
|
using KianaBH.Data;
|
||||||
|
using KianaBH.Database.Avatar;
|
||||||
using KianaBH.Enums.Player;
|
using KianaBH.Enums.Player;
|
||||||
using KianaBH.Internationalization;
|
using KianaBH.Internationalization;
|
||||||
|
|
||||||
@@ -8,7 +9,7 @@ namespace KianaBH.GameServer.Command.Commands;
|
|||||||
public class CommandValk : ICommands
|
public class CommandValk : ICommands
|
||||||
{
|
{
|
||||||
[CommandMethod("add")]
|
[CommandMethod("add")]
|
||||||
public async ValueTask GetRole(CommandArg arg)
|
public async ValueTask GetValk(CommandArg arg)
|
||||||
{
|
{
|
||||||
if (!await arg.CheckOnlineTarget()) return;
|
if (!await arg.CheckOnlineTarget()) return;
|
||||||
|
|
||||||
@@ -39,4 +40,149 @@ public class CommandValk : ICommands
|
|||||||
valk!.FaceAnimationGroupName ?? valkId.ToString()));
|
valk!.FaceAnimationGroupName ?? valkId.ToString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[CommandMethod("level")]
|
||||||
|
public async ValueTask SetValkLevel(CommandArg arg)
|
||||||
|
{
|
||||||
|
if (!await arg.CheckOnlineTarget()) return;
|
||||||
|
if (!await arg.CheckArgCnt(2)) return;
|
||||||
|
|
||||||
|
var valkId = arg.GetInt(0);
|
||||||
|
var level = Math.Max(1, Math.Min(80, arg.GetInt(1))); // Limit level to 1-80
|
||||||
|
|
||||||
|
if (valkId == -1)
|
||||||
|
{
|
||||||
|
// set level for all valk
|
||||||
|
foreach (var config in arg.Target!.Player!.AvatarManager!.AvatarData.Avatars)
|
||||||
|
{
|
||||||
|
config.Level = level;
|
||||||
|
}
|
||||||
|
await arg.SendMsg(I18NManager.Translate("Game.Command.Valk.ValkSetLevelAll", level.ToString()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var valk = arg.Target!.Player!.AvatarManager!.GetAvatar(valkId);
|
||||||
|
if (valk == null)
|
||||||
|
{
|
||||||
|
await arg.SendMsg(I18NManager.Translate("Game.Command.Valk.ValkNotFound"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
valk.Level = level;
|
||||||
|
await arg.SendMsg(I18NManager.Translate("Game.Command.Valk.ValkSetLevel",
|
||||||
|
valkId.ToString(), level.ToString()));
|
||||||
|
}
|
||||||
|
await arg.Target!.Player!.SyncValk();
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandMethod("star")]
|
||||||
|
public async ValueTask SetValkStar(CommandArg arg)
|
||||||
|
{
|
||||||
|
if (!await arg.CheckOnlineTarget()) return;
|
||||||
|
if (!await arg.CheckArgCnt(2)) return;
|
||||||
|
|
||||||
|
var valkId = arg.GetInt(0);
|
||||||
|
var star = Math.Max(1, Math.Min(5, arg.GetInt(1))); // Limit star to 1-5
|
||||||
|
|
||||||
|
if (valkId == -1)
|
||||||
|
{
|
||||||
|
// set star for all valk
|
||||||
|
foreach (var config in arg.Target!.Player!.AvatarManager!.AvatarData.Avatars)
|
||||||
|
{
|
||||||
|
config.Star = star;
|
||||||
|
}
|
||||||
|
await arg.SendMsg(I18NManager.Translate("Game.Command.Valk.ValkSetStarAll", star.ToString()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var valk = arg.Target!.Player!.AvatarManager!.GetAvatar(valkId);
|
||||||
|
if (valk == null)
|
||||||
|
{
|
||||||
|
await arg.SendMsg(I18NManager.Translate("Game.Command.Valk.ValkNotFound"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
valk.Star = star;
|
||||||
|
await arg.SendMsg(I18NManager.Translate("Game.Command.Valk.ValkSetStar",
|
||||||
|
valkId.ToString(), star.ToString()));
|
||||||
|
}
|
||||||
|
await arg.Target!.Player!.SyncValk();
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandMethod("skill")]
|
||||||
|
public async ValueTask SetValkSkill(CommandArg arg)
|
||||||
|
{
|
||||||
|
if (!await arg.CheckOnlineTarget()) return;
|
||||||
|
if (!await arg.CheckArgCnt(1)) return;
|
||||||
|
|
||||||
|
var valkId = arg.GetInt(0);
|
||||||
|
if (valkId == -1)
|
||||||
|
{
|
||||||
|
foreach (var valk in arg.Target!.Player!.AvatarManager!.AvatarData.Avatars)
|
||||||
|
{
|
||||||
|
foreach (var skill in valk.SkillList)
|
||||||
|
{
|
||||||
|
var subSkillList = GameData.AvatarSubSkillData.Values
|
||||||
|
.Where(x => x.SkillId == skill.SkillId);
|
||||||
|
|
||||||
|
foreach (var subSkillData in subSkillList)
|
||||||
|
{
|
||||||
|
var subSkill = skill.SubSkillList
|
||||||
|
.Find(x => x.SubSkillId == subSkillData.AvatarSubSkillId);
|
||||||
|
|
||||||
|
if (subSkill != null)
|
||||||
|
{
|
||||||
|
subSkill.Level = subSkillData.MaxLv;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
skill.SubSkillList.Add(new AvatarSubSkill
|
||||||
|
{
|
||||||
|
SubSkillId = subSkillData.AvatarSubSkillId,
|
||||||
|
Level = subSkillData.MaxLv
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await arg.SendMsg(I18NManager.Translate("Game.Command.Valk.ValkSetSkillLevelAll"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var valk = arg.Target!.Player!.AvatarManager!.GetAvatar(valkId);
|
||||||
|
if (valk == null)
|
||||||
|
{
|
||||||
|
await arg.SendMsg(I18NManager.Translate("Game.Command.Valk.ValkNotFound"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var skill in valk.SkillList)
|
||||||
|
{
|
||||||
|
var subSkillList = GameData.AvatarSubSkillData.Values
|
||||||
|
.Where(x => x.SkillId == skill.SkillId);
|
||||||
|
|
||||||
|
foreach (var subSkillData in subSkillList)
|
||||||
|
{
|
||||||
|
var subSkill = skill.SubSkillList
|
||||||
|
.Find(x => x.SubSkillId == subSkillData.AvatarSubSkillId);
|
||||||
|
|
||||||
|
if (subSkill != null)
|
||||||
|
{
|
||||||
|
subSkill.Level = subSkillData.MaxLv;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
skill.SubSkillList.Add(new AvatarSubSkill
|
||||||
|
{
|
||||||
|
SubSkillId = subSkillData.AvatarSubSkillId,
|
||||||
|
Level = subSkillData.MaxLv
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await arg.SendMsg(I18NManager.Translate("Game.Command.Valk.ValkSetSkillLevel",
|
||||||
|
valkId.ToString()));
|
||||||
|
}
|
||||||
|
await arg.Target!.Player!.SyncValk();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -54,9 +54,8 @@ public class AvatarManager(PlayerInstance player) : BasePlayerManager(player)
|
|||||||
return avatarExcel;
|
return avatarExcel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AvatarInfo? GetAvatar(uint avatarId)
|
public AvatarInfo? GetAvatar(int avatarId)
|
||||||
{
|
{
|
||||||
|
|
||||||
return AvatarData.Avatars.Find(avatar => avatar.AvatarId == avatarId);
|
return AvatarData.Avatars.Find(avatar => avatar.AvatarId == avatarId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -111,6 +111,11 @@ public class PlayerInstance(PlayerData data)
|
|||||||
return Data.ToProto();
|
return Data.ToProto();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async ValueTask SyncValk()
|
||||||
|
{
|
||||||
|
await SendPacket(new PacketGetAvatarDataRsp(AvatarManager!.AvatarData!.Avatars!.ToList(), true));
|
||||||
|
}
|
||||||
|
|
||||||
public async ValueTask SyncAll()
|
public async ValueTask SyncAll()
|
||||||
{
|
{
|
||||||
await SendPacket(new PacketGetEquipmentDataRsp(this));
|
await SendPacket(new PacketGetEquipmentDataRsp(this));
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ public class HandlerGetAvatarDataReq : Handler
|
|||||||
var player = connection.Player!;
|
var player = connection.Player!;
|
||||||
var avatars = req.AvatarIdList.Any(id => id != 0)
|
var avatars = req.AvatarIdList.Any(id => id != 0)
|
||||||
? req.AvatarIdList
|
? req.AvatarIdList
|
||||||
.Select(id => player.AvatarManager!.GetAvatar(id))
|
.Select(id => player.AvatarManager!.GetAvatar((int)id))
|
||||||
.Where(avatar => avatar != null)
|
.Where(avatar => avatar != null)
|
||||||
.ToList()!
|
.ToList()!
|
||||||
: player.AvatarManager?.AvatarData?.Avatars?.ToList();
|
: player.AvatarManager?.AvatarData?.Avatars?.ToList();
|
||||||
|
|||||||
Reference in New Issue
Block a user