mirror of
https://github.com/rafi1212122/BLHX.Server.git
synced 2025-12-14 07:24:50 +01:00
added all params to player database
This commit is contained in:
50
BLHX.Server.Game/Commands/SetPlayerDataCommand.cs
Normal file
50
BLHX.Server.Game/Commands/SetPlayerDataCommand.cs
Normal file
@@ -0,0 +1,50 @@
|
||||
using BLHX.Server.Common.Database;
|
||||
using BLHX.Server.Common.Utils;
|
||||
using BLHX.Server.Game.Handlers;
|
||||
using System.ComponentModel;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
|
||||
|
||||
namespace BLHX.Server.Game.Commands;
|
||||
|
||||
// Chatbox has 40 character limit, original command is setplayerdata shortened -> spd
|
||||
[CommandHandler("spd", "set a player's data", "spd property=level value=20")]
|
||||
public class SetPlayerDataCommand : Command {
|
||||
|
||||
[Argument("property")]
|
||||
public string? Property { get; set; }
|
||||
|
||||
[Argument("value")]
|
||||
public string? Value { get; set; }
|
||||
|
||||
public override void Execute(Dictionary<string, string> args, Connection connection) {
|
||||
base.Execute(args);
|
||||
|
||||
if (Property is null || Value is null) {
|
||||
connection.SendSystemMsg($"Usage: /spd property=<Level|Name|Exp|ShipBagMax|...> value=1");
|
||||
return;
|
||||
}
|
||||
|
||||
PropertyInfo? targetProperty = typeof(Player).GetProperty(Property);
|
||||
TypeConverter converter = TypeDescriptor.GetConverter(targetProperty.PropertyType);
|
||||
|
||||
if (converter != null && converter.CanConvertFrom(typeof(string))) {
|
||||
try {
|
||||
object targetValue = converter.ConvertFromInvariantString(Value);
|
||||
|
||||
targetProperty.SetValue(connection.player, targetValue);
|
||||
} catch (Exception) {
|
||||
connection.SendSystemMsg("Invalid Value");
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
connection.SendSystemMsg($"Invalid Player Property!");
|
||||
return;
|
||||
}
|
||||
|
||||
DBManager.PlayerContext.Save();
|
||||
connection.NotifyPlayerData();
|
||||
connection.SendSystemMsg($"Set Player with UID {connection.player.Uid}'s {Property} to {Value}");
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@ namespace BLHX.Server.Game.Commands {
|
||||
base.Execute(args);
|
||||
|
||||
if (Unlock is null) {
|
||||
Logger.c.Log($"Usage: /ship unlock=<all|clear|shipId> rarity=1-6");
|
||||
connection.SendSystemMsg($"Usage: /ship unlock=<all|clear|shipId> rarity=1-6");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace BLHX.Server.Game.Commands {
|
||||
all_ship_ids = Data.ShipDataStatistics.Where(ship_data => all_ship_ids.Contains(ship_data.Key) && ship_data.Value.Rarity == rarity).ToDictionary().Keys.ToList();
|
||||
}
|
||||
|
||||
List<PlayerShip> all_ships = all_ship_ids.Select(ship_id => CreateShipFromId((uint)ship_id, connection.player.Uid)).ToList();
|
||||
List<PlayerShip> all_ships = all_ship_ids.Select(ship_id => CreateShipFromId((uint)ship_id, connection.player.Uid)).Take(amount).ToList();
|
||||
|
||||
all_ships.AddRange(GetDefaultShips(connection.player.Ships)); // add the defaults
|
||||
connection.player.Ships = all_ships;
|
||||
|
||||
Reference in New Issue
Block a user