07-30-2017, 08:54 PM
Я же сказал, что нужно вначале разобраться с тем, что ты считываешь.
Реализуй как-то так (пример):
[SRC="csharp"]public override void ReadImpl()
{
var count = Read<byte>();
for (var i = 0; i < count; i++)
{
ReadAndUpdateCharacterEquipment();
}
}
private void ReadAndUpdateCharacterEquipment()
{
var index = Read<byte>();
var character = Account.Characters[index]; // Диапазон желательно проверить.
for (var i = 0; i < 14; i++)
{
var itemId = Read<uint>();
var storedId = Read<uint>(); // INCREMENT_ID
var item = Account.Items.FirstOrDefault(x => x.StoredId == storedId);
// Проверяешь, что такой предмет имеется у активного аккаунта.
if (item != null)
{
var equiped = character.Equipment.Find(itemId);
// Если предмет не экипирован или экипирован но другой.
if (equiped == null || equiped.StoredId != storedId)
{
// Можешь хоть здесь сохранять.
character.Equipment.AddOrUpdate(item);
}
}
}
}
[/SRC]
Главное помнить, что предметы принадлежат аккаунту, как и персонажи, которые могут использовать один и тот же предмет. Поэтому здесь нужна связь many to many, посмотри как у других это сделано (не обязательно именно в данной игре).
Реализуй как-то так (пример):
[SRC="csharp"]public override void ReadImpl()
{
var count = Read<byte>();
for (var i = 0; i < count; i++)
{
ReadAndUpdateCharacterEquipment();
}
}
private void ReadAndUpdateCharacterEquipment()
{
var index = Read<byte>();
var character = Account.Characters[index]; // Диапазон желательно проверить.
for (var i = 0; i < 14; i++)
{
var itemId = Read<uint>();
var storedId = Read<uint>(); // INCREMENT_ID
var item = Account.Items.FirstOrDefault(x => x.StoredId == storedId);
// Проверяешь, что такой предмет имеется у активного аккаунта.
if (item != null)
{
var equiped = character.Equipment.Find(itemId);
// Если предмет не экипирован или экипирован но другой.
if (equiped == null || equiped.StoredId != storedId)
{
// Можешь хоть здесь сохранять.
character.Equipment.AddOrUpdate(item);
}
}
}
}
[/SRC]
Главное помнить, что предметы принадлежат аккаунту, как и персонажи, которые могут использовать один и тот же предмет. Поэтому здесь нужна связь many to many, посмотри как у других это сделано (не обязательно именно в данной игре).