/// <summary> /// Handles the actual buying of an item. /// </summary> /// <param name="player">The player.</param> /// <param name="itemId">The item.</param> /// <param name="amount">The amount.</param> /// <param name="money">Boolean indicating whether the buying is by money or not.</param> /// <returns>True if the buy was a success.</returns> private static bool HandleBuy(Models.Entities.Player player, uint itemId, uint amount, bool money) { var tempItem = Collections.ItemCollection.CreateItemById(itemId); var price = money ? tempItem.DbItem.Price * amount : tempItem.DbItem.CPPrice * amount; if (money && player.Money < price || !money && player.CPs < price) { player.SendFormattedSystemMessage("LOW_MONEY", true, price, money ? "silvers" : "CPs", amount, tempItem.DbItem.Name); return(true); } player.AddActionLog("Buy", "IsMoney : " + money + " : " + itemId); if (money) { player.Money -= price; } else { player.CPs -= price; } for (int i = 0; i < amount; i++) { if (!player.Inventory.Add(itemId)) { player.ClientSocket.Disconnect(string.Format(Drivers.Messages.Errors.FAIL_BUY_ITEMS, itemId, amount, i, tempItem.DbItem.Price, price)); return(false); } } return(true); }
public static bool HandleQueryEquipments(Models.Entities.Player player, Models.Packets.Client.DataExchangePacket packet) { Models.Entities.Player viewPlayer = Collections.PlayerCollection.GetPlayerByClientId(packet.Data1); if (viewPlayer != null) { player.ClientSocket.Send(viewPlayer.GetSpawnPacket()); foreach (var item in viewPlayer.Equipments.GetAll()) { item.ViewItem(viewPlayer, player); } if (viewPlayer.LoggedIn) { viewPlayer.SendFormattedSystemMessage("VIEW_EQUIPMENTS", true, player.Name); } player.ClientSocket.Send(new Models.Packets.Misc.StringPacket { String = viewPlayer.Spouse, Action = Enums.StringAction.QueryMate }); } return(true); }
public static void Handle(Models.Entities.Player player) { player.AddActionLog("Login"); if (player.HP == 0) { player.Revive(false); } player.SendFormattedSystemMessage("MOTD", true, player.Name); Console.WriteLine(Drivers.Messages.LOGIN_SUCCESS, player.Name); }
public static bool Handle(Models.Entities.Player player, Models.Packets.Items.ItemActionPacket packet) { var arenaBattle = player.Battle as Controllers.Arena.ArenaBattleController; if (player.Battle != null && !(player.Battle is Controllers.Arena.ArenaBattleController)) { return(true); } Models.Items.Item item; if (!player.Inventory.TryGetItem(packet.ClientId, out item)) { Database.Dal.Accounts.Ban( player.DbPlayer.Account, Drivers.Messages.INVALID_USE_ITEM, Database.Models.DbAccount.BanRangeType.Perm); player.ClientSocket.Disconnect(Drivers.Messages.INVALID_USE_ITEM); return(false); } if (item.IsMisc) { player.AddActionLog("ItemUsage", item.DbItem.Id); if (!Collections.ItemScriptCollection.Invoke(player, item.DbItem.Id)) { player.SendFormattedSystemMessage("ITEM_USAGE_NOT_FOUND", true, item.DbItem.Name, item.DbItem.Id); } } else { var position = (Enums.ItemPosition)packet.Data1; if (position != Enums.ItemPosition.Inventory) { player.Equipments.Equip(item, position, true); } } return(true); }
public static bool Handle(Models.Entities.Player player, Models.Packets.Message.MessagePacket packet) { if (packet.To == player.Name) { return(true); } var whisperPlayer = Collections.PlayerCollection.GetPlayerByName(packet.To); if (whisperPlayer != null) { packet.FromMesh = player.Mesh; packet.ToMesh = whisperPlayer.Mesh; whisperPlayer.ClientSocket.Send(packet); } else { player.SendFormattedSystemMessage("PLAYER_NOT_FOUND_WHISPER", false, packet.To); if (Database.Dal.Players.GetPlayerByName(packet.To, Drivers.Settings.WorldSettings.Server) != null) { var dbWhisper = (new Database.Models.DbWhisper { From = player.Name, To = packet.To, Message = packet.Message, Mesh = player.Mesh, Server = Drivers.Settings.WorldSettings.Server }) .Create(); } } return(true); }
/// <summary> /// Invokes the dialog tied with the npc. /// </summary> /// <param name="player">The player.</param> /// <param name="option">The option.</param> public void Invoke(Models.Entities.Player player, byte option) { var invokeId = Npc.ClientId; if (player.Map.IsDynamic) { if (player.Houses.Count > 0 && invokeId != 200000) { var houseId = player.Houses.GetAll() .Where(house => house.DynamicMapId == player.MapId) .Select(house => house.DbPlayerHouse.MapId).FirstOrDefault() + 100000; if (houseId == Npc.ClientId) { invokeId = 100000; } } } if (!Collections.NPCScriptCollection.Invoke(player, invokeId, option)) { player.SendFormattedSystemMessage("NPC_NOT_FOUND", true, invokeId); } }