public void PreqPacket(PreqPacket packet) { ScriptManager.Instance.Portal1 = ScriptManager.Instance.Map1 != null ? ScriptManager.Instance.Map1.MapPortals.FirstOrDefault(s => { if (s.PosX != ScriptManager.Instance.PosX && s.PosX != (ScriptManager.Instance.PosX - 1) && s.PosX != (ScriptManager.Instance.PosX + 1)) { return(false); } if (s.PosY != ScriptManager.Instance.PosY && s.PosY != (ScriptManager.Instance.PosY - 1)) { return(s.PosY != (ScriptManager.Instance.PosY + 1)); } return(true); }) : null; ScriptManager.Instance.Target = ScriptManager.Instance.Portal1; }
/// <summary> /// PreqPacket packet /// </summary> /// <param name="packet"></param> public void Preq([UsedImplicitly] PreqPacket packet) { var currentRunningSeconds = (DateTime.Now - Process.GetCurrentProcess().StartTime).TotalSeconds; var timeSpanSinceLastPortal = currentRunningSeconds - Session.Character.LastPortal; if (!(timeSpanSinceLastPortal >= 4)) { return; } var portal = Session.Character.MapInstance.Portals.Find(port => Heuristic.Octile(Math.Abs(Session.Character.PositionX - port.SourceX), Math.Abs(Session.Character.PositionY - port.SourceY)) <= 1); if (portal == null) { return; } if (portal.DestinationMapInstanceId == default(Guid)) { return; } Session.Character.LastPortal = currentRunningSeconds; if (ServerManager.Instance.GetMapInstance(portal.SourceMapInstanceId).MapInstanceType != MapInstanceType.BaseMapInstance && ServerManager.Instance.GetMapInstance(portal.DestinationMapInstanceId).MapInstanceType == MapInstanceType.BaseMapInstance) { Session.ChangeMap(Session.Character.MapId, Session.Character.MapX, Session.Character.MapY); } else { Session.ChangeMapInstance(portal.DestinationMapInstanceId, portal.DestinationX, portal.DestinationY); } }
/// <summary> /// PreqPacket packet /// </summary> /// <param name="_"></param> public void Preq(PreqPacket _) { if ((SystemTime.Now() - Session.Character.LastPortal).TotalSeconds < 4 || Session.Character.LastPortal > Session.Character.LastMove) { return; } var portal = Session.Character.MapInstance.Portals.Find(port => Heuristic.Octile(Math.Abs(Session.Character.PositionX - port.SourceX), Math.Abs(Session.Character.PositionY - port.SourceY)) <= 1); if (portal == null) { return; } if (portal.DestinationMapInstanceId == default) { return; } Session.Character.LastPortal = SystemTime.Now(); if (_mapInstanceProvider.GetMapInstance(portal.SourceMapInstanceId).MapInstanceType != MapInstanceType.BaseMapInstance && _mapInstanceProvider.GetMapInstance(portal.DestinationMapInstanceId).MapInstanceType == MapInstanceType.BaseMapInstance) { Session.ChangeMap(Session.Character.MapId, Session.Character.MapX, Session.Character.MapY); } else { Session.ChangeMapInstance(portal.DestinationMapInstanceId, portal.DestinationX, portal.DestinationY); } }