public static void GameMapMovementMessageTreatment(Message message, byte[] packetDatas, AccountUC account) { GameMapMovementMessage msg = (GameMapMovementMessage)message; using (BigEndianReader reader = new BigEndianReader(packetDatas)) { msg.Deserialize(reader); } List <uint> keys = new List <uint>(); foreach (short s in msg.keyMovements) { keys.Add((uint)s); } MovementPath clientMovement = MapMovementAdapter.GetClientMovement(keys); BlueSheep.Core.Fight.Entity entity = null; foreach (BlueSheep.Core.Fight.Entity en in account.Map.Entities) { if (en.Id == msg.actorId) { entity = en; } } if (entity != null) { (account.Map.Entities[account.Map.Entities.IndexOf(entity)]).CellId = clientMovement.CellEnd.CellId; } //GameRolePlayGroupMonsterInformations e = null; foreach (MonsterGroup en in account.Map.List) { if (en.m_contextualId == msg.actorId) { en.m_cellId = clientMovement.CellEnd.CellId; } } //if (e != null) //{ // account.Map.List.RemoveAt(i); // account.Map.List.Add(new GameRolePlayGroupMonsterInformations(msg.actorId, e.look, new EntityDispositionInformations((short)clientMovement.CellEnd.CellId, e.disposition.direction), e.keyRingBonus, e.hasHardcoreDrop, e.hasAVARewardToken, e.staticInfos, e.ageBonus, e.lootShare, e.alignmentSide)); //} //if (msg.actorId == account.Map.Character.Id) //{ // account.Wait(100, 200); // using (BigEndianWriter writer = new BigEndianWriter()) // { // GameMapMovementConfirmMessage newmsg = new GameMapMovementConfirmMessage(); // newmsg.Serialize(writer); // MessagePackaging pack = new MessagePackaging(writer); // pack.Pack((int)newmsg.ProtocolID); // account.SocketManager.Send(pack.Writer.Content); // } //} // if (account.Fight.flag != 0) // { // account.Fight.LaunchFight(account.Fight.flag); // } //} }
public static void GameMapMovementConfirmMessageTreatment(Message message, byte[] packetDatas, AccountUC account) { GameMapMovementConfirmMessage msg = (GameMapMovementConfirmMessage)message; using (BigEndianReader reader = new BigEndianReader(packetDatas)) { msg.Deserialize(reader); } BlueSheep.Core.Fight.Entity Character = null; foreach (BlueSheep.Core.Fight.Entity e in account.Map.Entities) { if (e.Id == account.CharacterBaseInformations.id) { Character = e; } } int mapChangeData = ((BlueSheep.Data.D2p.Map)account.Map.Data).Cells[Character.CellId].MapChangeData; if (mapChangeData != 0) { int neighbourId = 0; if (neighbourId == -2) { if ((mapChangeData & 64) > 0) { neighbourId = ((BlueSheep.Data.D2p.Map)account.Map.Data).TopNeighbourId; } if ((mapChangeData & 16) > 0) { neighbourId = ((BlueSheep.Data.D2p.Map)account.Map.Data).LeftNeighbourId; } if ((mapChangeData & 4) > 0) { neighbourId = ((BlueSheep.Data.D2p.Map)account.Map.Data).BottomNeighbourId; } if ((mapChangeData & 1) > 0) { neighbourId = ((BlueSheep.Data.D2p.Map)account.Map.Data).RightNeighbourId; } } if (neighbourId >= 0) { account.Map.LaunchChangeMap(neighbourId); } } account.SetStatus(Status.None); }