Пример #1
0
        private void OnMapTeleportRequest(NetConnection <NetSession> sender, MapTeleportRequest message)
        {
            int TeleportId = message.teleporterId;

            if (!DataManager.Instance.Teleporters.ContainsKey(TeleportId))
            {
                return;
            }
            Common.Data.TeleporterDefine from = DataManager.Instance.Teleporters[TeleportId];
            if (from.LinkTo == 0 || !DataManager.Instance.Teleporters.ContainsKey(from.LinkTo))
            {
                return;
            }
            Common.Data.TeleporterDefine to = DataManager.Instance.Teleporters[from.LinkTo];

            Character character = sender.Session.Character;

            Managers.MapManager.Instance[from.MapID].CharacterLeave(character);
            character.Position  = to.Position;
            character.Direction = to.Direction;
            Managers.MapManager.Instance[to.MapID].CharacterEnter(sender, character);
            EntityManager.Instance.TransEntityMap(from.MapID, to.MapID, character);
        }
Пример #2
0
        private void OnMapTeleport(NetConnection <NetSession> sender, MapTeleportRequest message)
        {
            Character character = sender.Session.Character;

            Common.Data.TeleporterDefine td = DataManager.Instance.Teleporters[message.teleporterId];
            if (td == null)
            {
                Log.WarningFormat("OnMapTeleport not exist character name{0}, teleporterId id:{1}", character.Info.Name, message.teleporterId);
                return;
            }

            Common.Data.MapDefine targetMap = DataManager.Instance.Maps[td.LinkTo];
            if (targetMap == null)
            {
                Log.WarningFormat("OnMapTeleport target map not exist teleporterId:{0}", message.teleporterId);
                return;
            }
            MapManager.Instance[td.MapID].CharacterLeave(character);
            MapManager.Instance[targetMap.ID].CharacterEnter(sender, character);


            //Common.Data.TeleporterDefine taget = DataManager.Instance.Teleporters[td.LinkTo];

            //if (taget == null)
            //{
            //    Log.WarningFormat("OnMapTeleport target not exist teleporterId:{0}", td.LinkTo);
            //    return;
            //}
            //MapManager.Instance[td.MapID].CharacterLeave(character);
            //MapManager.Instance[taget.MapID].CharacterEnter(sender, character);
            NetMessage res = new NetMessage();

            res.Response = new NetMessageResponse();
            res.Response.mapTeleportRes = new MapTeleportResponse();
            res.Response.mapTeleportRes.teleporterId = message.teleporterId;
            sender.SendData(res);
        }