Ejemplo n.º 1
0
        public static void QuestListMessageTreatment(Message message, byte[] packetDatas, AccountUC account)
        {
            if (!account.IsMITM)
            {
                MapInformationsRequestMessage mapInformationsRequestMessage
                    = new MapInformationsRequestMessage(account.MapID);

                account.SocketManager.Send(mapInformationsRequestMessage);
            }
        }
        public static void HandleMapInformationsRequestMessage(WorldClient client, MapInformationsRequestMessage message)
        {
            ContextRoleplayHandler.SendMapComplementaryInformationsDataMessage(client);
            short fightCount = client.Character.Map.GetFightCount();

            if (fightCount > 0)
            {
                ContextRoleplayHandler.SendMapFightCountMessage(client, fightCount);
            }
        }
Ejemplo n.º 3
0
        public static void HandleMapGetInformation(MapInformationsRequestMessage message, WorldClient client)
        {
            client.Character.Map = MapRecord.GetMap(message.mapId);

            if (client.Character.Map == null)
            {
                client.Character.SpawnPoint();
                client.Character.Reply("Unknown Map...(" + message.mapId + ")");
                return;
            }

            client.Character.Map.Instance.AddEntity(client.Character);
            client.Character.Map.Instance.MapComplementary(client, message.mapId, client.Character.Map.SubAreaId);
        }
Ejemplo n.º 4
0
        public static void HandleMapGetInformation(MapInformationsRequestMessage message, WorldClient client)
        {
            if (client.Character.Record.MapId == message.mapId)
            {
                client.Character.Map = MapRecord.GetMap(message.mapId);

                if (client.Character.Map == null)
                {
                    client.Character.SpawnPoint();
                    client.Character.Reply("Unknown Map...(" + message.mapId + ")");
                    return;
                }

                client.Character.OnEnterMap();
            }
        }
Ejemplo n.º 5
0
        public static void HandleMapInformations(MapInformationsRequestMessage message, WorldClient client)
        {
            client.Character.Map = MapRecord.GetMap(message.mapId);
            if (client.Character.Map == null)
            {
                client.Character.TeleportToSpawnPoint();
                client.Character.NotificationError("Unknown Map...(" + message.mapId + ")");
                return;
            }
            client.Character.Map.Instance.SyncMonsters();
            client.Character.SubAreaId = MapRecord.GetSubAreaId(message.mapId);

            client.Send(new MapComplementaryInformationsDataMessage(client.Character.SubAreaId, message.mapId, new List <HouseInformations>(),
                                                                    client.Character.Map.Instance.GetActors(), client.Character.Map.Instance.GetInteractiveElements(), new List <StatedElement>(),
                                                                    new List <MapObstacle>(), client.Character.Map.Instance.Fights));

            client.Character.Map.Instance.ShowFightsCount(client);
            client.Character.CheckMapTip(message.mapId);
            client.Character.Map.Instance.AddClient(client);
            client.Character.RefreshMap();
        }
Ejemplo n.º 6
0
        public static void CurrentMapMessageTreatment(Message message, byte[] packetDatas, AccountUC account)
        {
            CurrentMapMessage currentMapMessage = (CurrentMapMessage)message;

            using (BigEndianReader reader = new BigEndianReader(packetDatas))
            {
                currentMapMessage.Deserialize(reader);
            }

            account.MapID = currentMapMessage.MapId;
            if (account.MapID == account.MapData.LastMapId && account.Fight != null)
            {
                account.FightData.winLoseDic["Gagné"]++;
                account.ActualizeFightStats(account.FightData.winLoseDic, account.FightData.xpWon);
            }
            if (!account.IsMITM)
            {
                MapInformationsRequestMessage mapInformationsRequestMessage
                    = new MapInformationsRequestMessage(account.MapID);
                account.SocketManager.Send(mapInformationsRequestMessage);
            }
        }
Ejemplo n.º 7
0
        public static void HandleMapInformationsRequestMessage(WorldClient client, MapInformationsRequestMessage message)
        {
            SendMapComplementaryInformationsDataMessage(client);

            var objectItems = client.Character.Map.GetObjectItems();

            if (client.Character.Map.Id == ArenaManager.KolizeumMapId)
            {
                var arenaCount = ArenaManager.Instance.Arenas.Sum(x => x.Value.Map.GetFightCount());

                if (arenaCount > 0)
                {
                    SendMapFightCountMessage(client, (short)arenaCount);
                }
            }
            else if (client.Character.Map.GetFightCount() > 0)
            {
                SendMapFightCountMessage(client, client.Character.Map.GetFightCount());
            }

            foreach (var objectItem in objectItems.ToArray())
            {
                SendObjectGroundAddedMessage(client, objectItem);
            }

            var paddock = PaddockManager.Instance.GetPaddockByMap(message.mapId);

            if (paddock != null)
            {
                client.Send(paddock.GetPaddockPropertiesMessage());
            }

            var skills = client.Character.Map.GetInteractiveObjects().SelectMany(x => x.GetSkills().Where(y => (y is SkillCraft || y is SkillRuneCraft) && y.IsEnabled(client.Character)).Select(y => y.SkillTemplate)).Distinct();

            SendJobMultiCraftAvailableSkillsMessage(client, client.Character, skills, true);
        }
Ejemplo n.º 8
0
        public void MapInformationsRequestMessageFrame(WorldClient client, MapInformationsRequestMessage mapInformationsRequestMessage)
        {
            var map = MapManager.Instance.GetMap(client.ActiveCharacter.MapId);

            // interative elements
            List <InteractiveElement> interactiveElements = new List <InteractiveElement>();

            foreach (var iElement in map.InteractiveElementList)
            {
                InteractiveElement interactiveElement = new InteractiveElement((uint)iElement.ElementId, iElement.TypeId, new List <InteractiveElementSkill>()
                {
                    new InteractiveElementSkill((uint)iElement.SkillId, 0)
                }, new List <InteractiveElementSkill>(), true);

                /*
                 * if(iElement.TypeId == 43)
                 * {
                 *  interactiveElement = new InteractiveElementWithAgeBonus((uint)iElement.ElementId, iElement.TypeId, new List<InteractiveElementSkill>() { new InteractiveElementSkill((uint)iElement.SkillId, 0) }, new List<InteractiveElementSkill>(), true, 0);
                 * }*/



                interactiveElements.Add(interactiveElement);
            }



            // stated elements
            List <StatedElement> statedElements = new List <StatedElement>();

            foreach (var sElement in map.StatedElementList)
            {
                StatedElement statedElement = new StatedElement();
                statedElement.elementCellId = (uint)sElement.CellId;
                statedElement.elementId     = (uint)sElement.ElementId;
                statedElement.elementState  = 0;
                statedElement.onCurrentMap  = true;

                statedElements.Add(statedElement);
            }


            List <uint> elementIds = new List <uint>();

            //quand joueur entre sur la carte
            map.EnterMap(client);

            List <GameRolePlayActorInformations> gameRolePlayActorInformations = map.GetGameRolePlayActorInformations(client);

            //npc
            List <GameRolePlayActorInformations> gameRolePlayNpcs = new List <GameRolePlayActorInformations>();

            foreach (var npc in map.NpcSpawnList)
            {
                gameRolePlayNpcs.Add(new GameRolePlayNpcInformations(npc.Id * -1, new EntityDispositionInformations(npc.CellId, (uint)npc.Orientation), Look.Parse(npc.EntityLook).GetEntityLook(), (uint)npc.NpcId, true, 1));
            }

            //monsters
            foreach (var monsterGroup in map.MonstersGroups)
            {
                gameRolePlayNpcs.Add(monsterGroup.RolePlayGroupMonsterInformations);
            }

            client.SendPacket(new MapComplementaryInformationsDataMessage((uint)map.MapData.SubAreaId, client.ActiveCharacter.MapId, new List <HouseInformations>(), gameRolePlayActorInformations, interactiveElements,
                                                                          statedElements, new List <MapObstacle>(), map.GetFightInformationsOnMap(), true, map.FightStartingPosition));

            client.SendPacket(new GameRolePlayShowMultipleActorsMessage(gameRolePlayNpcs));
            client.SendPacket(new SetCharacterRestrictionsMessage(client.ActiveCharacter.Id, new ActorRestrictionsInformations()));
        }
Ejemplo n.º 9
0
 public void MapInformationsRequestMessageFrame(GameClient client, MapInformationsRequestMessage mapInformationsRequestMessage)
 {
     Container.Instance().Resolve <IMapManager>().SendMapInformationsRequest(client, mapInformationsRequestMessage);
 }
Ejemplo n.º 10
0
 public static void HandleMapInformationsRequestMessage(Client client, MapInformationsRequestMessage message)
 {
     client.Send(new MapComplementaryInformationsDataMessage(client.Character.Map.Id, (short)client.Character.Map.SubAreaId, new HouseInformations[0], new GameRolePlayActorInformations[0], Common.Data.Interactive.GetInteractiveElements(client.Character.Map.Id), new StatedElement[0], new MapObstacle[0], new FightCommonInformations[0]));
     client.Character.CurrentMap.AddClient(client);
 }
Ejemplo n.º 11
0
        /**
         * Send map informations request (actors, interactives, house, fights)
         */
        public async Task SendMapInformationsRequest(GameClient client,
                                                     MapInformationsRequestMessage mapInformationsRequestMessage)
        {
            var map = await this.GetMapById(mapInformationsRequestMessage.mapId);

            if (map == null)
            {
                client.Disconnect();
                return;
            }

            var actors = new List <GameRolePlayInformations>();

            //characters
            foreach (var character in map.Characters.Values)
            {
                //client character
                actors.Add(new GameRolePlayCharacterInformations(character.Id, character.EntityLook,
                                                                 new EntityDispositionInformations(character.CellId, 3), character.Name,
                                                                 new HumanInformations(), character.AccountId, new ActorAlignmentInformations(0, 0, 0, 3956606)));
            }

            //npcs
            foreach (var npc in map.NpcSpawns)
            {
                actors.Add(new GameRolePlayNpcInformations(npc.Id * -1, !npc.OverridedEntityLook.IsEmpty() ? EntityLookHelper.DecodeStringLook(npc.OverridedEntityLook) : EntityLookHelper.DecodeStringLook(npc.Npc.Look),
                                                           new EntityDispositionInformations(npc.CellId, npc.DirectionId), npc.NpcId, false, 0, npc.Npc));
            }

            //interactive => @TODO do it on Map object in future
            var layers = map.MidgroundLayer
                         .Where(x => x.Value.FirstOrDefault(midLayer => midLayer.Id != null) != null)
                         .ToList();

            List <InteractiveElement> interactiveElements = new List <InteractiveElement>();
            List <StatedElement>      statedElements      = new List <StatedElement>();

            foreach (var layer in layers)
            {
                foreach (var cell in layer.Value.Where(x => x.Id != null))
                {
                    if (Map.ZAAP_GFX_ID.Contains(Convert.ToInt32(cell.G)))
                    {
                        interactiveElements.Add(new InteractiveElement((int)cell.Id, 16, new InteractiveElementSkill[]
                        {
                            new InteractiveElementSkill(114, 53040312, 0, "Utiliser", 1, 1, "Base"),
                            new InteractiveElementSkill(44, 53040310, 0, "Sauvegarder", 1, 1, "Base"),
                        }, new InteractiveElementSkill[] { }, "Zaap"));
                    }
                    else
                    {
                        //statedElements
                        statedElements.Add(new StatedElement((int)cell.Id, Convert.ToInt32(layer.Key), 0));

                        interactiveElements.Add(new InteractiveElement((int)cell.Id, 38, new InteractiveElementSkill[]
                        {
                            new InteractiveElementSkill(45, 53040310, 4, "Faucher", 1, 1, "Faucher"),
                        }, new InteractiveElementSkill[] { }, "Blé"));
                    }
                }
            }

            client.Send(new MapComplementaryInformationsDataMessage(778, map.Id, new int[] { }, actors.ToArray(),
                                                                    interactiveElements.ToArray(), statedElements.ToArray(), new int[] { }, new int[] { }));
        }
Ejemplo n.º 12
0
 public static void OnMapInformationsRequest(INetworkClient client, MapInformationsRequestMessage mirm)
 {
     client.Send(new MapComplementaryInformationsDataMessage(mirm.MapId, client.GetEntity()));
 }