add item handling and some gacha stuff

This commit is contained in:
raphaeIl
2024-04-04 05:02:15 -04:00
parent 91042d06eb
commit d9602a58f3
7 changed files with 185 additions and 67 deletions

View File

@@ -10,4 +10,8 @@
<ProjectReference Include="..\BLHX.Server.Common\BLHX.Server.Common.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="zlib.net" Version="1.0.4" />
</ItemGroup>
</Project>

View File

@@ -16,38 +16,44 @@ namespace BLHX.Server.Game.Commands {
public override void Execute(Dictionary<string, string> args, Connection connection) {
base.Execute(args);
uint amount = 1;
//uint amount = 1;
if (Amount is not null) {
uint.TryParse(Amount, out uint parsedAmount);
amount = parsedAmount;
}
//if (Amount is not null) {
// uint.TryParse(Amount, out uint parsedAmount);
// amount = parsedAmount;
//}
if (Unlock is not null) {
if (Unlock.Equals("all", StringComparison.CurrentCultureIgnoreCase)) {
// ...
} else if (uint.TryParse(Unlock, out uint itemId)) {
//connection.player.DoResource(itemId, amount);
PlayerResource? item = DBManager.PlayerContext.Resources.Where(res => res.Id == itemId).FirstOrDefault();
//if (Unlock is not null) {
// if (Unlock.Equals("all", StringComparison.CurrentCultureIgnoreCase)) {
// // ...
// } else if (uint.TryParse(Unlock, out uint itemId)) {
// //connection.player.DoResource(itemId, amount);
// PlayerResource? item = DBManager.PlayerContext.Resources.Where(res => res.Id == itemId).FirstOrDefault();
if (item is null) {
DBManager.PlayerContext.Resources.Add(new PlayerResource() { Id = itemId, PlayerUid = connection.player.Uid, Num = 1 });
//connection.player.DoResource(itemId, 1);
// if (item is null) {
// DBManager.PlayerContext.Resources.Add(new PlayerResource() { Id = itemId, PlayerUid = connection.player.Uid, Num = 1 });
// //connection.player.DoResource(itemId, 1);
//item = DBManager.PlayerContext.Resources.Where(res => res.Id == itemId).FirstOrDefault();
} else {
item.Num += amount;
connection.SendSystemMsg($"{amount} item of itemid: {itemId} added!");
}
// //item = DBManager.PlayerContext.Resources.Where(res => res.Id == itemId).FirstOrDefault();
// } else {
// item.Num += amount;
// connection.SendSystemMsg($"{amount} item of itemid: {itemId} added!");
// }
// } else {
// connection.SendSystemMsg($"Invalid ItemId: {itemId}");
// }
//}
connection.player.DoResource(1, 938493849);
connection.player.DoResource(4, 39843294);
} else {
connection.SendSystemMsg($"Invalid ItemId: {itemId}");
}
}
DBManager.PlayerContext.Save();
connection.NotifyPlayerData();
connection.NotifyBagData();
base.NotifySuccess(connection);
}
}

View File

@@ -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)).Take(amount).ToList();
List<PlayerShip> all_ships = all_ship_ids.Select(ship_id => CreateShipFromId((uint)ship_id, connection.player.Uid)).ToList();
all_ships.AddRange(GetDefaultShips(connection.player.Ships)); // add the defaults
connection.player.Ships = all_ships;

View File

@@ -1,13 +1,12 @@
using BLHX.Server.Common.Proto;
using BLHX.Server.Common.Proto.p12;
using BLHX.Server.Common.Utils;
using BLHX.Server.Common.Proto.common;
namespace BLHX.Server.Game.Handlers
{
internal static class P12
{
namespace BLHX.Server.Game.Handlers {
internal static class P12 {
[PacketHandler(Command.Cs12102, SaveDataAfterRun = true)]
static void UpdateFleetHandler(Connection connection, Packet packet)
{
static void UpdateFleetHandler(Connection connection, Packet packet) {
var fleet = packet.Decode<Cs12102>();
var toUpdate = connection.player.Fleets.Find(x => x.Id == fleet.Id);
@@ -20,47 +19,63 @@ namespace BLHX.Server.Game.Handlers
}
[PacketHandler(Command.Cs12202, SaveDataAfterRun = true)]
static void SetShipSkinHandler(Connection connection, Packet packet)
{
static void SetShipSkinHandler(Connection connection, Packet packet) {
var req = packet.Decode<Cs12202>();
if (connection.player.Ships.Any(x => x.Id == req.ShipId))
connection.player.Ships.First(x => x.Id == req.ShipId).SkinId = req.SkinId;
connection.Send(new Sc12203());
}
[PacketHandler(Command.Cs12002, SaveDataAfterRun = true)]
static void UseResourceHandler(Connection connection, Packet packet) {
var req = packet.Decode<Cs12002>();
Logger.c.Log("Id: " + req.Id);
Logger.c.Log("Cost Type: " + req.Costtype);
Logger.c.Log("Count: " + req.Count);
connection.Send(new Sc12003() {
BuildInfoes = [
new Buildinfo() { BuildId = req.Id, FinishTime = 0, Time = 0 },
]
});
}
[PacketHandler(Command.Cs12008, SaveDataAfterRun = true)]
static void FinishAllBuildHandler(Connection connection, Packet packet) {
var req = packet.Decode<Cs12008>();
connection.Send(new Sc12009() { PosLists = req.PosLists });
}
}
static class P12ConnectionNotifyExtensions
{
public static void NotifyShipData(this Connection connection)
{
if (connection.player is not null)
{
connection.Send(new Sc12001()
{
static class P12ConnectionNotifyExtensions {
public static void NotifyShipData(this Connection connection) {
if (connection.player is not null) {
connection.Send(new Sc12001() {
Shiplists = connection.player.Ships.Select(x => x.ToProto()).ToList()
});
}
}
public static void NotifyShipSkinData(this Connection connection)
{
public static void NotifyShipSkinData(this Connection connection) {
connection.Send(new Sc12201() { SkinLists = connection.player.ShipSkins });
}
public static void NotifyFleetData(this Connection connection)
{
if (connection.player is not null)
{
connection.Send(new Sc12101()
{
public static void NotifyFleetData(this Connection connection) {
if (connection.player is not null) {
connection.Send(new Sc12101() {
GroupLists = connection.player.Fleets
});
}
}
public static void NotifyBuildShipData(this Connection connection)
{
public static void NotifyBuildShipData(this Connection connection) {
connection.Send(new Sc12024());
}
}

View File

@@ -1,24 +1,28 @@
using BLHX.Server.Common.Proto.p15;
using BLHX.Server.Common.Data;
using BLHX.Server.Common.Utils;
namespace BLHX.Server.Game.Handlers
{
internal static class P15
{
namespace BLHX.Server.Game.Handlers {
internal static class P15 {
}
static class P15ConnectionNotifyExtensions
{
public static void NotifyBagData(this Connection connection)
{
connection.Send(new Sc15001()
{
ItemLists = [
new Iteminfo() { Id = 20001, Count = 5 },
new Iteminfo() { Id = 15003, Count = 10 },
new Iteminfo() { Id = 50002, Count = 10 },
new Iteminfo() { Id = 50001, Count = 10 }
]
});
static class P15ConnectionNotifyExtensions {
public static void NotifyBagData(this Connection connection) {
//List<int> AllItemsKeys = Data.ItemDataStatistics.Where(data => data.Value.Type == 2 && data.Value.Rarity >= 6).ToDictionary().Keys.ToList();
List<int> AllItemsKeys = Data.ItemDataStatistics.ToDictionary().Keys.ToList();
List<Iteminfo> ItemLists = AllItemsKeys.Select(item_id => new Iteminfo { Id = (uint)item_id, Count = 3954783433 }).ToList();
connection.Send(new Sc15001() { ItemLists = ItemLists });
//connection.Send(new Sc15001() {
// ItemLists = [
// new Iteminfo() { Id = 20001, Count = 8394785 },
// new Iteminfo() { Id = 15003, Count = 10 },
// new Iteminfo() { Id = 50002, Count = 10 },
// new Iteminfo() { Id = 50001, Count = 10 }
// ]
//});
}
}
}