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); }
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); }