public void CItemsChangeReq(GameSession session, CItemsChangeReqMessage message) { var plr = session.Player; Logger.Debug() .Account(session) .Message($"Item sync - {JsonConvert.SerializeObject(message.Unk1, Formatting.Indented)}") .Write(); if (message.Unk2.Length > 0) { Logger.Warn() .Account(session) .Message($"Unk2: {JsonConvert.SerializeObject(message.Unk2, Formatting.Indented)}") .Write(); } var @char = plr.CharacterManager.CurrentCharacter; var unk1 = new ChangeItemsUnkDto { AccountId = plr.Account.Id, Skills = @char.Skills.GetItems().Select(item => item?.ItemNumber ?? 0).ToArray(), Weapons = @char.Weapons.GetItems().Select(item => item?.ItemNumber ?? 0).ToArray(), Unk4 = message.Unk1.Unk4, Unk5 = message.Unk1.Unk5, Unk6 = message.Unk1.Unk6, HP = plr.GetMaxHP(), Unk8 = message.Unk1.Unk8 }; plr.Room.Broadcast(new SItemsChangeAckMessage(unk1, message.Unk2)); }
public void CItemsChangeReq(GameSession session, CItemsChangeReqMessage message) { var plr = session.Player; Logger.ForAccount(session) .Debug("Item sync - {unk1}", message.Unk1); if (message.Unk2.Length > 0) { Logger.ForAccount(session) .Warning("{unk2}", message.Unk2); } var @char = plr.CharacterManager.CurrentCharacter; var unk1 = new ChangeItemsUnkDto { AccountId = plr.Account.Id, Skills = @char.Skills.GetItems().Select(item => item?.ItemNumber ?? 0).ToArray(), Weapons = @char.Weapons.GetItems().Select(item => item?.ItemNumber ?? 0).ToArray(), Unk4 = message.Unk1.Unk4, Unk5 = message.Unk1.Unk5, Unk6 = message.Unk1.Unk6, HP = plr.GetMaxHP(), Unk8 = message.Unk1.Unk8 }; plr.Room.Broadcast(new SItemsChangeAckMessage(unk1, message.Unk2)); }
public Task <bool> OnHandle(MessageContext context, CItemsChangeReqMessage message) { var session = context.GetSession <Session>(); var plr = session.Player; var room = plr.Room; var logger = plr.AddContextToLogger(_logger); // Can only change items in lobby and when not ready if (plr.State != PlayerState.Lobby || plr.IsReady) { plr.Disconnect(); return(Task.FromResult(true)); } logger.Debug("Item sync unk1={Unk1}", message.Unk1); if (message.Unk2.Length > 0) { logger.Warning("Item sync unk2={Unk2}", (object)message.Unk2); } room.Broadcast(new SItemsChangeAckMessage(message.Unk1, message.Unk2)); return(Task.FromResult(true)); }