Esempio n. 1
0
        void OnMapTeleport(NetConnection <NetSession> conn, MapTeleportRequest request)
        {
            Log.InfoFormat("MapTeleportRequest: TeleportID: {0}", request.teleporterId);

            TeleporterDefine from        = DataManager.Instance.Teleporters[request.teleporterId];
            TeleporterDefine destination = DataManager.Instance.Teleporters[from.LinkTo];

            if (from == null)
            {
                Log.ErrorFormat("TeleportID {0} cannot be found", request.teleporterId);
            }

            if (destination == null)
            {
                Log.ErrorFormat("TeleportID {0} cannot be found", from.LinkTo);
            }

            Log.InfoFormat("character {0} requests teleportation {1}", conn.Session.Character.Info.Name, from.Descript);

            MapManager.Instance[from.MapID].RemoveCharacter(conn.Session.Character);

            conn.Session.Character.Position  = destination.Position;
            conn.Session.Character.Direction = destination.Direction;

            MapManager.Instance[destination.MapID].CharacterEnter(conn, conn.Session.Character);
        }
Esempio n. 2
0
        void OnMapTeleport(NetConnection <NetSession> sender, MapTeleportRequest request)
        {
            Character character = sender.Session.Character;

            Log.InfoFormat("OnMapTeleport: characterID:{0}:{1} TeleporterId:{2}", character.Id, character.Data, request.teleporterId);

            if (!DataManager.Instance.Teleporters.ContainsKey(request.teleporterId))
            {
                Log.WarningFormat("Source TeleporterID [{0}] not existed", request.teleporterId);
                return;
            }
            TeleporterDefine source = DataManager.Instance.Teleporters[request.teleporterId];

            if (source.LinkTo == 0 || !DataManager.Instance.Teleporters.ContainsKey(source.LinkTo))
            {
                Log.WarningFormat("Source TeleporterID [{0}] LinkTo ID [{1}] not existed", request.teleporterId, source.LinkTo);
            }

            TeleporterDefine target = DataManager.Instance.Teleporters[source.LinkTo];

            MapManager.Instance[source.MapID].CharacterLeave(character);
            character.Position  = target.Position;
            character.Direction = target.Direction;
            MapManager.Instance[target.MapID].CharacterEnter(sender, character);
        }
Esempio n. 3
0
        private void OnMapTeleport(NetConnection <NetSession> sender, MapTeleportRequest message)
        {
            if (!DataManager.Instance.Teleporters.ContainsKey(message.teleporterId))
            {
                Log.WarningFormat("character {0} request teleport {1} not exist", sender.Session.Character.Info.Id, message.teleporterId);
                return;
            }
            TeleporterDefine sourse = DataManager.Instance.Teleporters[message.teleporterId];

            if (sourse.LinkTo == 0 || !DataManager.Instance.Teleporters.ContainsKey(sourse.LinkTo))
            {
                Log.WarningFormat("character {0} request teleport linkto {1} not exist", sender.Session.Character.Info.Id, message.teleporterId);
                return;
            }
            TeleporterDefine target = DataManager.Instance.Teleporters[sourse.LinkTo];

            MapManager.Instance[sourse.MapID].CharacterLeave(sender.Session.Character);
            sender.Session.Character.Info.mapId = target.MapID;
            sender.Session.Character.Position   = target.Position;
            sender.Session.Character.Direction  = target.Direction;
            MapManager.Instance[target.MapID].CharacterEnter(sender, sender.Session.Character);
        }
Esempio n. 4
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);
        }
Esempio n. 5
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);
        }