diff --git a/src/NosCore.Controllers/DefaultPacketController.cs b/src/NosCore.Controllers/DefaultPacketController.cs index 9a613b847..c4ad1acf6 100644 --- a/src/NosCore.Controllers/DefaultPacketController.cs +++ b/src/NosCore.Controllers/DefaultPacketController.cs @@ -244,12 +244,13 @@ public void Preq(PreqPacket _) if ((SystemTime.Now() - Session.Character.LastPortal).TotalSeconds < 4 || Session.Character.LastPortal > Session.Character.LastMove) { + Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(LanguageKey.PORTAL_DELAY, Session.Account.Language), SayColorType.Yellow)); 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); + Math.Abs(Session.Character.PositionY - port.SourceY)) <= 2); if (portal == null) { return; diff --git a/src/NosCore.Controllers/GroupPacketController.cs b/src/NosCore.Controllers/GroupPacketController.cs index ff85c9fcb..df9306444 100644 --- a/src/NosCore.Controllers/GroupPacketController.cs +++ b/src/NosCore.Controllers/GroupPacketController.cs @@ -258,7 +258,7 @@ public void ManageGroup(PjoinPacket pjoinPacket) Broadcaster.Instance.GetCharacter(s => s.VisualId == member.Item2.VisualId); session?.SendPacket(currentGroup.GeneratePinit()); - session?.SendPackets(currentGroup.GeneratePst()); + session?.SendPackets(currentGroup.GeneratePst().Where(p=>p.VisualId != session.VisualId)); } GroupAccess.Instance.Groups[currentGroup.GroupId] = currentGroup; @@ -328,9 +328,10 @@ public void LeaveGroup(PleavePacket __) if (group.Count > 2) { + var isLeader = group.IsGroupLeader(Session.Character.CharacterId); Session.Character.LeaveGroup(); - if (group.IsGroupLeader(Session.Character.CharacterId)) + if (isLeader) { var session = Broadcaster.Instance.GetCharacter(s => s.VisualId == group.Values.First().Item2.VisualId); @@ -340,10 +341,10 @@ public void LeaveGroup(PleavePacket __) return; } - Broadcaster.Instance.Sessions.SendPacket(new InfoPacket + session.SendPacket(new InfoPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.NEW_LEADER, Session.Account.Language) - }, new EveryoneBut(session.Channel.Id)); + }); } if (group.Type != GroupType.Group) diff --git a/src/NosCore.Data/Enumerations/I18N/LanguageKey.cs b/src/NosCore.Data/Enumerations/I18N/LanguageKey.cs index da9a59347..8e755b64d 100644 --- a/src/NosCore.Data/Enumerations/I18N/LanguageKey.cs +++ b/src/NosCore.Data/Enumerations/I18N/LanguageKey.cs @@ -256,5 +256,6 @@ public enum LanguageKey TOO_RICH_SELLER, UPDATE_GOLD, SP_ADDPOINTS_FULL, + PORTAL_DELAY } } \ No newline at end of file diff --git a/src/NosCore.GameObject/Group.cs b/src/NosCore.GameObject/Group.cs index 74541dace..2f73202ba 100644 --- a/src/NosCore.GameObject/Group.cs +++ b/src/NosCore.GameObject/Group.cs @@ -72,7 +72,7 @@ public List GeneratePst() { var i = 0; - return Values.Select(s => s.Item2).Select(member => new PstPacket + return Values.OrderBy(s => s.Item1).Select(s => s.Item2).Select(member => new PstPacket { Type = member.VisualType, VisualId = member.VisualId, diff --git a/src/NosCore.GameObject/Providers/ExchangeProvider/ExchangeProvider.cs b/src/NosCore.GameObject/Providers/ExchangeProvider/ExchangeProvider.cs index 848d1fb42..f9e4845d3 100644 --- a/src/NosCore.GameObject/Providers/ExchangeProvider/ExchangeProvider.cs +++ b/src/NosCore.GameObject/Providers/ExchangeProvider/ExchangeProvider.cs @@ -173,7 +173,7 @@ public bool CheckExchange(long visualId) public long? GetTargetId(long visualId) { var id = _exchangeRequests.FirstOrDefault(k => k.Key == visualId || k.Value == visualId); - if (id.Equals(default)) + if (id.Equals(default(KeyValuePair))) { return null; }