public static bool HandleRequestInvite(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet) { if (player.Team == null) { return(true); } if (!player.Team.IsLeader(player)) { return(true); } Models.Maps.IMapObject mapObject; if (player.GetFromScreen(packet.ClientId, out mapObject)) { var newMember = mapObject as Models.Entities.Player; if (newMember != null && newMember.Team == null) { player.Team.PendingInvite = newMember.ClientId; packet.ClientId = player.ClientId; newMember.ClientSocket.Send(packet); } } return(true); }
public static bool HandleCourt(Models.Entities.Player player, Models.Packets.Entities.InteractionPacket packet) { if (packet.TargetClientId == player.ClientId) { return(false); } if (player.Spouse != "None") { return(true); } Models.Maps.IMapObject obj; if (player.GetFromScreen(packet.TargetClientId, out obj)) { var marriageTarget = obj as Models.Entities.Player; if (marriageTarget != null) { if (marriageTarget.Spouse != "None") { return(true); } player.PendingSpouse = marriageTarget.ClientId; marriageTarget.ClientSocket.Send(packet); } } return(true); }
public static bool HandleAcceptJoin(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet) { if (player.Team == null) { return(true); } if (!player.Team.IsLeader(player)) { return(true); } Models.Maps.IMapObject mapObject; if (packet.ClientId == player.Team.PendingJoin && player.GetFromScreen(packet.ClientId, out mapObject)) { var newMember = mapObject as Models.Entities.Player; if (newMember != null && newMember.Team == null) { if (player.Team.Add(newMember)) { var newTeamMemberPacket = new Models.Packets.Team.TeamMemberPacket { Name = newMember.Name, ClientId = newMember.ClientId, Mesh = newMember.Mesh, MaxHP = newMember.MaxHP, HP = newMember.HP }; foreach (var member in player.Team.GetMembers()) { if (member.ClientId != newMember.ClientId) { newMember.ClientSocket.Send(new Models.Packets.Team.TeamMemberPacket { Name = member.Name, ClientId = member.ClientId, Mesh = member.Mesh, MaxHP = member.MaxHP, HP = member.HP }); member.ClientSocket.Send(newTeamMemberPacket); } } newMember.ClientSocket.Send(newTeamMemberPacket); packet.ClientId = player.ClientId; newMember.ClientSocket.Send(packet); } } } return(true); }
public static bool Handle(Models.Entities.Player player, Models.Packets.Trade.TradePacket packet) { if (player.Trade.Trading && player.Trade.Partner == null) { player.SendSystemMessage("SELF_ALREADY_TRADE"); return(true); } else if (player.Trade.Trading) { if (!player.Trade.Requesting) { packet.Action = Enums.TradeAction.ShowTable; packet.TargetClientId = player.Trade.Partner.ClientId; player.ClientSocket.Send(packet); packet.TargetClientId = player.ClientId; player.Trade.Partner.ClientSocket.Send(packet); player.Trade.WindowOpen = true; player.Trade.Partner.Trade.WindowOpen = true; } return(true); } Models.Maps.IMapObject obj; if (player.GetFromScreen(packet.TargetClientId, out obj)) { var target = obj as Models.Entities.Player; if (!target.Trade.Trading) { player.Trade.Begin(target); target.Trade.Begin(player); target.Trade.Requesting = false; player.Trade.Requesting = true; packet.TargetClientId = player.ClientId; target.ClientSocket.Send(packet); } else { player.SendSystemMessage("TARGET_ALREADY_TRADE"); } } else { player.ClientSocket.Disconnect(Drivers.Messages.Errors.INVALID_TRADE_TARGET); } return(true); }
public static bool HandleQueryPlayer(Models.Entities.Player player, Models.Packets.Client.DataExchangePacket packet) { Models.Maps.IMapObject obj; if (packet.Data1 > 1000000 && player.GetFromScreen(packet.Data1, out obj)) { var objPlayer = (obj as Models.Entities.Player); objPlayer.ClientSocket.Send(player.GetSpawnPacket()); player.ClientSocket.Send(objPlayer.GetSpawnPacket()); } return(true); }
public static bool HandlePacket(Models.Entities.Player player, Models.Packets.Items.GroundItemPacket packet) { if (packet.Action == Enums.GroundItemAction.Pickup && player.Map != null) { Models.Maps.IMapObject mapObject; if (player.GetFromScreen(packet.ClientId, out mapObject)) { var item = mapObject as Models.Items.Item; if (item != null && Tools.RangeTools.GetDistanceU(player.X, player.Y, item.X, item.Y) < 2) { if (!item.PlayerDrop && DateTime.UtcNow < item.DropTime.AddMilliseconds(Data.Constants.Time.DropTimeShare) && item.DropClientId != player.ClientId) { player.SendSystemMessage("NOT_OWNER_ITEM"); } else { Task.Run(async() => await item .ResetLocationAsync(true, () => { if (item.DropMoney > 0) { player.AddActionLog("PickUpMoney", item.DropMoney); player.Money += item.DropMoney; } else { player.AddActionLog("PickUpItem", item.DbItem.Id); player.Inventory.Add(item); } }, (e) => { player.ClientSocket.LastException = e; player.ClientSocket.Disconnect(Drivers.Messages.Errors.FATAL_ERROR_TITLE); })); } } } return(true); } return(false); }
public static bool HandleRequestJoin(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet) { if (player.Team != null) { return(true); } Models.Maps.IMapObject mapObject; if (player.GetFromScreen(packet.ClientId, out mapObject)) { var leader = mapObject as Models.Entities.Player; if (leader != null && leader.Team != null && leader.Team.IsLeader(leader)) { leader.Team.PendingJoin = player.ClientId; packet.ClientId = player.ClientId; leader.ClientSocket.Send(packet); } } return(true); }
public static bool HandleNpcRequest(Models.Entities.Player player, Models.Packets.Entities.NpcRequestPacket packet) { if (!player.Alive) { return(true); } if (packet.Option == 255) { player.CurrentNpc = null; return(true); } if (Collections.ShopCollection.ContainsShop(packet.NpcId)) { player.AddActionLog("OpenShop", packet.NpcId); if (player.ContainsInScreen(packet.NpcId)) { Helpers.Packets.Npc.Dialog.OpenShop(player, packet.NpcId); } } else { Models.Maps.IMapObject mapObject; if (player.GetFromScreen(packet.NpcId, out mapObject)) { var npc = mapObject as Models.Entities.Npc; if (npc != null) { player.AddActionLog("NpcRequest", packet.NpcId + " " + packet.Option); player.CurrentNpc = npc; npc.Invoke(player, packet.Option); } } } return(true); }
public static bool HandleMarry(Models.Entities.Player player, Models.Packets.Entities.InteractionPacket packet) { if (packet.TargetClientId == player.ClientId) { return(false); } if (player.Spouse != "None") { return(true); } Models.Maps.IMapObject obj; if (player.GetFromScreen(packet.TargetClientId, out obj)) { var marriageTarget = obj as Models.Entities.Player; if (marriageTarget != null) { if (marriageTarget.Spouse != "None") { return(true); } if (marriageTarget.PendingSpouse != player.ClientId) { return(true); } player.AddActionLog("Marriage", player.Name + " : " + marriageTarget.Name); marriageTarget.Spouse = player.Name; player.Spouse = marriageTarget.Name; player.ClientSocket.Send(new Models.Packets.Misc.StringPacket { Action = Enums.StringAction.Mate, Data = player.ClientId, String = marriageTarget.Name }); marriageTarget.ClientSocket.Send(new Models.Packets.Misc.StringPacket { Action = Enums.StringAction.Mate, Data = marriageTarget.ClientId, String = player.Name }); var fireworks = new Models.Packets.Misc.StringPacket { Action = Enums.StringAction.MapEffect, PositionX = player.X, PositionY = player.Y, String = "firework-2love" }; player.ClientSocket.Send(fireworks); fireworks.PositionX = marriageTarget.X; fireworks.PositionY = marriageTarget.Y; marriageTarget.ClientSocket.Send(fireworks); Collections.PlayerCollection.BroadcastFormattedMessage("MARRIAGE_CONGRATZ", player.Name, marriageTarget.Name); } } return(true); }
public static bool HandleApplyJoin(Models.Entities.Player player, Models.Packets.Guilds.GuildPacket packet) { if (player.Battle != null) { return(true); } if (packet.Data == player.ClientId) { return(false); } if (player.Guild != null) { return(false); } Models.Maps.IMapObject mapObject = null; if (player.ApplyGuildMemberClientId == 0) { if (player.GetFromScreen(packet.Data, out mapObject)) { var requestPlayer = mapObject as Models.Entities.Player; if (requestPlayer != null) { if (requestPlayer.Guild != null && ( requestPlayer.GuildMember.Rank == Enums.GuildRank.GuildLeader || requestPlayer.GuildMember.Rank == Enums.GuildRank.DeputyLeader )) { requestPlayer.ApplyGuildMemberClientId = player.ClientId; requestPlayer.ClientSocket.Send(new Models.Packets.Guilds.GuildPacket { Action = Enums.GuildAction.ApplyJoin, Data = player.ClientId }); } } } return(true); } if (player.ApplyGuildMemberClientId != packet.Data) { return(true); } player.ApplyGuildMemberClientId = 0; if (player.GetFromScreen(packet.Data, out mapObject)) { var invitePlayer = mapObject as Models.Entities.Player; if (invitePlayer != null) { if (invitePlayer.Guild != null && ( invitePlayer.GuildMember.Rank == Enums.GuildRank.GuildLeader || invitePlayer.GuildMember.Rank == Enums.GuildRank.DeputyLeader )) { invitePlayer.Guild.AddMember(player, Enums.GuildRank.Member); } } } return(true); }