diff --git a/GameServer/Controllers/CreatureController.cs b/GameServer/Controllers/CreatureController.cs index 24726d3..66f182f 100644 --- a/GameServer/Controllers/CreatureController.cs +++ b/GameServer/Controllers/CreatureController.cs @@ -254,11 +254,7 @@ internal class CreatureController : Controller entity.ComponentSystem.Get().SetAll(_modelManager.Roles.GetRoleById(roleId)!.GetAttributeList()); CreateConcomitants(entity); - - // Give weapon to entity - RoleInfoConfig roleConfig = _configManager.GetConfig(entity.ConfigId)!; - WeaponConfig weaponConfig = _configManager.GetConfig(roleConfig.InitWeaponItemId)!; - entity.WeaponId = weaponConfig.ItemId; + entity.WeaponId = _modelManager.Inventory.GetEquippedWeapon(roleId)?.Id ?? 0; if (i == 0) _modelManager.Creature.PlayerEntityId = entity.Id; } diff --git a/GameServer/Controllers/InventoryController.cs b/GameServer/Controllers/InventoryController.cs index 0bde569..51c719b 100644 --- a/GameServer/Controllers/InventoryController.cs +++ b/GameServer/Controllers/InventoryController.cs @@ -91,32 +91,8 @@ internal class InventoryController : Controller }); } - // Notify to take off previous one - { - EquipTakeOnNotify equipTakeOnNotify = new() - { - DataList = - { - new RoleLoadEquipData - { - EquipIncId = weapon.IncrId, - RoleId = role.RoleId - } - } - }; - - if (prevWeapon != null) - { - equipTakeOnNotify.DataList.Add(new RoleLoadEquipData - { - EquipIncId = prevWeapon.IncrId - }); - } - - await Session.Push(MessageId.EquipTakeOnNotify, equipTakeOnNotify); - } - - return Response(MessageId.EquipTakeOnResponse, new EquipTakeOnResponse + // Response + EquipTakeOnResponse response = new() { DataList = { @@ -127,7 +103,17 @@ internal class InventoryController : Controller EquipIncId = request.Data.EquipIncId } } - }); + }; + + if (prevWeapon != null) + { + response.DataList.Add(new RoleLoadEquipData + { + EquipIncId = prevWeapon.IncrId + }); + } + + return Response(MessageId.EquipTakeOnResponse, response); } [GameEvent(GameEventType.EnterGame)] diff --git a/GameServer/Models/InventoryModel.cs b/GameServer/Models/InventoryModel.cs index a7bea3c..5f9c41a 100644 --- a/GameServer/Models/InventoryModel.cs +++ b/GameServer/Models/InventoryModel.cs @@ -8,6 +8,11 @@ internal class InventoryModel public List WeaponList { get; } = []; + public WeaponItem? GetEquippedWeapon(int roleId) + { + return WeaponList.SingleOrDefault(weapon => weapon.RoleId == roleId); + } + public WeaponItem? GetWeaponById(int incrId) { return WeaponList.SingleOrDefault(weapon => weapon.IncrId == incrId);