NL0bP / AAEmu

A server software for ArcheAge written in .Net Core
Other
16 stars 8 forks source link

[BUG] <Баг с экипировкой в последней ревизии emu 3.0> #73

Closed Black-Judge closed 3 months ago

Black-Judge commented 4 months ago

I confirm that:

Code branch that is affected by this issue

AAEmu-client_version-3.0_client(2017-03-15)+

Bug description

Проявился баг с экипировкой в последней ревизии emu 3.0. При создании персонажа в логе появляются ошибки о неверном предмете в неверном слоте, персонаж появляется в игровом мире со сломанным оружием, если попытаться создать оружие для персонажа то предмет создается сломанным, если попытаться починить оружие у кузнеца то ничего не происходит и предметы остаются сломанными, но нужное количество золота требует чтобы было у персонажа. В базе данных в таблице items создаются предметы для владельца 0, для каждого персонажа по два предмета, ИД предметов имеют значение, которое выдается в логе ошибок при создании персонажа. При попытке одеть на персонажа экипировку (предметы одежды) с уровнем улучшения отличным от нуля, клиент закрывается с ошибкой. Предметы одежды для примера (создать нужно все и одевать по очереди) /item add self 31522 1 11 эрнардский кожаный пояс охотника /item add self 31520 1 11 эрнардские кожаные сапоги охотника /item add self 31518 1 11 эрнардские кожаные поножи охотника /item add self 31519 1 11 эрнардские кожаные перчатки охотника /item add self 31521 1 11 эрнардские кожаные наручи охотника /item add self 31516 1 11 эрнардская фибула охотника /item add self 31517 1 11 эрнардская кожаная куртка охотника

Сообщения в логе:

при создании персонажа

09:24:17 [WARN] ItemContainer - Master (1) tried to equip a item in the wrong slot 첫걸음 활 (6127), Id:16777221, SlotType: Ranged, TargetSlot:Ranged 09:24:17 [WARN] ItemContainer - Master (1) tried to equip a item in the wrong slot 첫걸음 관악기 (6202), Id:16777222, SlotType: Musical, TargetSlot:Musical

для разных классов свои ошибки в логе, в примере ошибки при создании лучника


при попытке починить экипировку у кузнеца

09:35:47 [WARN] GameObject - Attempting to repair an item that has max durability, Item=16777230 09:35:47 [DEBUG] PacketMarshaler - GamePacket: S->C type [5:02D] C:[131:132] .G2C.SCItemTaskSuccessPacket 09:35:47 [DEBUG] PacketMarshaler - GamePacket: C->S type [5:10D] .C2G.CSRepairSingleEquipmentPacket 09:35:50 [DEBUG] PacketMarshaler - GamePacket: S->C type [5:214] C:[132:133] .G2C.SCTimeOfDayPacket


При попытке одеть на персонажа одежду с уровнем улучшения 11

10:00:48 [ERROR] PacketMarshaler - GamePacket: C->S type 124 .C2G.CSSwapItemsPacket 10:00:48 [FATAL] PacketMarshaler - System.NullReferenceException: Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object. at AAEmu.Game.Models.Game.Char.Character.ApplyArmorGradeBuff(Item itemAdded, Item itemRemoved) in /server/AAEmuDev/AAEmu.Game/Models/Game/Char/CharacterEquipment.cs:line 242 at AAEmu.Game.Models.Game.Char.Character.UpdateGearBonuses(Item itemAdded, Item itemRemoved) in /server/AAEmuDev/AAEmu.Game/Models/Game/Char/CharacterEquipment.cs:line 36 at AAEmu.Game.Models.Game.Items.Containers.EquipmentContainer.OnEnterContainer(Item item, ItemContainer lastContainer) in /server/AAEmuDev/AAEmu.Game/Models/Game/Items/Containers/EquipmentContainer.cs:line 205 at AAEmu.Game.Models.Game.Char.Inventory.SplitOrMoveItemEx(ItemTaskType taskType, ItemContainer sourceContainer, ItemContainer targetContainer, UInt64 fromItemId, SlotType fromType, Byte fromSlot, UInt64 toItemId, SlotType toType, Byte toSlot, Int32 count) in /server/AAEmuDev/AAEmu.Game/Models/Game/Char/Inventory.cs:line 667 at AAEmu.Game.Models.Game.Char.Inventory.SplitOrMoveItem(ItemTaskType taskType, UInt64 fromItemId, SlotType fromType, Byte fromSlot, UInt64 toItemId, SlotType toType, Byte toSlot, Int32 count) in /server/AAEmuDev/AAEmu.Game/Models/Game/Char/Inventory.cs:line 296 at AAEmu.Game.Core.Packets.C2G.CSSwapItemsPacket.Read(PacketStream stream) in /server/AAEmuDev/AAEmu.Game/Core/Packets/C2G/CSSwapItemsPacket.cs:line 24 at AAEmu.Game.Core.Network.Game.GamePacket.Decode(PacketStream ps) in /server/AAEmuDev/AAEmu.Game/Core/Network/Game/GamePacket.cs:line 149 at AAEmu.Game.Core.Network.Game.GameProtocolHandler.OnReceive(GameConnection connection, Byte[] buf, Int32 bytes) in /server/AAEmuDev/AAEmu.Game/Core/Network/Game/GameProtocolHandler.cs:line 171 10:00:48 [ERROR] GameProtocolHandler - System.NullReferenceException: Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object. at AAEmu.Game.Models.Game.Char.Character.ApplyArmorGradeBuff(Item itemAdded, Item itemRemoved) in /server/AAEmuDev/AAEmu.Game/Models/Game/Char/CharacterEquipment.cs:line 242 at AAEmu.Game.Models.Game.Char.Character.UpdateGearBonuses(Item itemAdded, Item itemRemoved) in /server/AAEmuDev/AAEmu.Game/Models/Game/Char/CharacterEquipment.cs:line 36 at AAEmu.Game.Models.Game.Items.Containers.EquipmentContainer.OnEnterContainer(Item item, ItemContainer lastContainer) in /server/AAEmuDev/AAEmu.Game/Models/Game/Items/Containers/EquipmentContainer.cs:line 205 at AAEmu.Game.Models.Game.Char.Inventory.SplitOrMoveItemEx(ItemTaskType taskType, ItemContainer sourceContainer, ItemContainer targetContainer, UInt64 fromItemId, SlotType fromType, Byte fromSlot, UInt64 toItemId, SlotType toType, Byte toSlot, Int32 count) in /server/AAEmuDev/AAEmu.Game/Models/Game/Char/Inventory.cs:line 667 at AAEmu.Game.Models.Game.Char.Inventory.SplitOrMoveItem(ItemTaskType taskType, UInt64 fromItemId, SlotType fromType, Byte fromSlot, UInt64 toItemId, SlotType toType, Byte toSlot, Int32 count) in /server/AAEmuDev/AAEmu.Game/Models/Game/Char/Inventory.cs:line 296 at AAEmu.Game.Core.Packets.C2G.CSSwapItemsPacket.Read(PacketStream stream) in /server/AAEmuDev/AAEmu.Game/Core/Packets/C2G/CSSwapItemsPacket.cs:line 24 at AAEmu.Game.Core.Network.Game.GamePacket.Decode(PacketStream ps) in /server/AAEmuDev/AAEmu.Game/Core/Network/Game/GamePacket.cs:line 149 at AAEmu.Game.Core.Network.Game.GameProtocolHandler.OnReceive(GameConnection connection, Byte[] buf, Int32 bytes) in /server/AAEmuDev/AAEmu.Game/Core/Network/Game/GameProtocolHandler.cs:line 171 10:03:42 [ERROR] PacketMarshaler - GamePacket: C->S type 097 .C2G.CSNotifyInGamePacket 10:03:42 [FATAL] PacketMarshaler - System.NullReferenceException: Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object. at AAEmu.Game.Models.Game.Char.Character.ApplyArmorGradeBuff(Item itemAdded, Item itemRemoved) in /server/AAEmuDev/AAEmu.Game/Models/Game/Char/CharacterEquipment.cs:line 242 at AAEmu.Game.Models.Game.Char.Character.UpdateGearBonuses(Item itemAdded, Item itemRemoved) in /server/AAEmuDev/AAEmu.Game/Models/Game/Char/CharacterEquipment.cs:line 36 at AAEmu.Game.Core.Packets.C2G.CSNotifyInGamePacket.Execute() in /server/AAEmuDev/AAEmu.Game/Core/Packets/C2G/CSNotifyInGamePacket.cs:line 37 at AAEmu.Game.Core.Network.Game.GamePacket.Decode(PacketStream ps) in /server/AAEmuDev/AAEmu.Game/Core/Network/Game/GamePacket.cs:line 177 at AAEmu.Game.Core.Network.Game.GameProtocolHandler.OnReceive(GameConnection connection, Byte[] buf, Int32 bytes) in /server/AAEmuDev/AAEmu.Game/Core/Network/Game/GameProtocolHandler.cs:line 171 10:03:42 [ERROR] GameProtocolHandler - System.NullReferenceException: Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object. at AAEmu.Game.Models.Game.Char.Character.ApplyArmorGradeBuff(Item itemAdded, Item itemRemoved) in /server/AAEmuDev/AAEmu.Game/Models/Game/Char/CharacterEquipment.cs:line 242 at AAEmu.Game.Models.Game.Char.Character.UpdateGearBonuses(Item itemAdded, Item itemRemoved) in /server/AAEmuDev/AAEmu.Game/Models/Game/Char/CharacterEquipment.cs:line 36 at AAEmu.Game.Core.Packets.C2G.CSNotifyInGamePacket.Execute() in /server/AAEmuDev/AAEmu.Game/Core/Packets/C2G/CSNotifyInGamePacket.cs:line 37 at AAEmu.Game.Core.Network.Game.GamePacket.Decode(PacketStream ps) in /server/AAEmuDev/AAEmu.Game/Core/Network/Game/GamePacket.cs:line 177 at AAEmu.Game.Core.Network.Game.GameProtocolHandler.OnReceive(GameConnection connection, Byte[] buf, Int32 bytes) in /server/AAEmuDev/AAEmu.Game/Core/Network/Game/GameProtocolHandler.cs:line 171

Steps to reproduce

Создать нового персонажа, зайти новым персонажем в игровой мир, создать предмет, например ИД 31409, подойти к кузнецу без золота в инвентаре, создать золото в инвентарь, подойти к кузнецу и попытаться починить экипировку. Создать предметы одежды с уровнем улучшения например 11 и попытаться одеть на персонажа.

Expected behavior

Screenshots

https://youtu.be/sQXH91zzZjQ

Предметы в Базе данных в таблице items

2024-04-30_13-13-11

Any additional context for this bug

NL0bP commented 3 months ago

Была ошибка в таблице "item_weapons". Требуется скачать новые базы. Смотрите сообщение дискорде.