Esempio n. 1
0
        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);
            //    }
            //}
        }
Esempio n. 2
0
        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);
        }