public override bool SellItem(WorldClient Client, InventoryItemModel Item, ushort Quantity) { if (this.myEnd) { return(false); } if (Quantity > Item.Quantity) { Quantity = (ushort)Item.Quantity; } uint Refund = (uint)Math.Floor((double)ItemTemplateTable.GetTemplate(Item.TemplateID).Price / 10) * Quantity; Client.Character.InventoryCache.AddKamas(Refund); if (Quantity == Item.Quantity) { //DatabaseEntities.TryDeleteItem(Item); InventoryItemTable.removeItem(Item.ID); Client.Send(new ObjectRemoveMessage(Item.ID)); } else { Client.Character.InventoryCache.UpdateObjectquantity(Item, Item.Quantity - Quantity); } Client.Send(new AccountStatsMessage(Client.Character)); return(true); }
public override void Execute(WorldClient client, CommandParameters parameters) { if (parameters.Lenght > 0) { int itemID = 0; try { itemID = parameters.GetIntParameter(0); } catch (FormatException e) { client.Send(new ConsoleMessage("Parametres invalide !", ConsoleColorEnum.RED)); return; } var itemTemplate = ItemTemplateTable.GetTemplate(itemID); var quantity = 1; var style = false; if (itemTemplate != null) { if (parameters.Lenght > 1) { try { quantity = parameters.GetIntParameter(1); } catch (FormatException e) { client.Send(new ConsoleMessage("Parametres invalide !", ConsoleColorEnum.RED)); return; } } if (parameters.Lenght > 2) { var styleStr = parameters.GetParameter(2).ToLower(); if (styleStr == "max") { style = true; } } var item = InventoryItemTable.TryCreateItem(itemID, client.Character, 1, -1, null, style); client.Send(new ConsoleMessage("L'objet <b>'" + itemTemplate.Name + "'</b> a correctement ete generer !", ConsoleColorEnum.GREEN)); } else { client.Send(new ConsoleMessage("Impossible de trouver l'objet n°" + itemID, ConsoleColorEnum.RED)); } } else { client.Send(new ConsoleMessage("Parametres invalide !", ConsoleColorEnum.RED)); } }
public void Initialize(String ItemList) { if (this.myInitialized) { return; } this.mySerializedItems = new StringBuilder(); var Items = new List <ItemTemplateModel>(); foreach (String s in ItemList.Split(',')) { int templateId; if (!int.TryParse(s, out templateId)) { continue; } var Template = ItemTemplateTable.GetTemplate(templateId); if (Template != null) { Items.Add(Template); } } Items.OrderByDescending(x => x.Level); foreach (var Template in Items) { if (Template != null) { if (!this.myItems.ContainsKey(Template.ID)) { this.mySerializedItems.Append(Template.ID); this.mySerializedItems.Append(';'); this.mySerializedItems.Append(Template.StatsTemplate); this.mySerializedItems.Append('|'); this.myItems.Add(Template.ID, Template); } } } this.myInitialized = true; }
private void Initialize() { if (this.myInitialized) { return; } this.mySerializedItems = new StringBuilder(); if ((this.TemplateCache.Ventes != string.Empty || this.TemplateCache.Ventes != "-1") && this.TemplateCache.Ventes.Contains(',')) { var TemplateIds = this.TemplateCache.Ventes.Split(','); foreach (var TemplateId in TemplateIds) { try { var Template = ItemTemplateTable.GetTemplate(int.Parse(TemplateId)); if (Template != null) { if (!this.myItems.ContainsKey(Template.ID)) { this.mySerializedItems.Append(Template.ID); this.mySerializedItems.Append(';'); this.mySerializedItems.Append(Template.StatsTemplate); this.mySerializedItems.Append('|'); this.myItems.Add(Template.ID, Template); } } } catch (Exception e) { Logger.Error("Fail to Int::Parse " + TemplateId); } } } this.myInitialized = true; }
public void Initialize() { if (myInitialized) { return; } Items = new List <ItemTemplateModel>(); foreach (String str in StringItems.Split(',')) { try { Items.Add(ItemTemplateTable.GetTemplate(int.Parse(str))); } catch (NullReferenceException e) { Logger.Error("Item " + str + " Introuvable dans la panoplie " + ID); } catch (FormatException e) { Logger.Error("Echoue lors de la convertion de l'item " + str); } } Stats = new List <GenericStats>(); foreach (String str in StringBonus.Split(';')) { var stats = new GenericStats(); foreach (String str2 in str.Split(',')) { try { String[] infos = str2.Split(':'); if (infos.Length < 2) { continue; } stats.AddItem((EffectEnum)int.Parse(infos[0], NumberStyles.Number, CultureInfo.InvariantCulture), int.Parse(infos[1], NumberStyles.Number, CultureInfo.InvariantCulture)); } catch (FormatException e) { Logger.Error(str2.Split(':')[0] + "|" + str2.Split(':')[1] + ""); } } Stats.Add(stats); } myInitialized = true; }
public String SerializeStringItemID(int templateID) { int type = ItemTemplateTable.GetTemplate(templateID).Type; return(Categories[type].Items[templateID].SerializeLinePerObejct()); }
public void MoveItem(int Guid, ItemSlotEnum Slot, bool Packet, int Quantity = 1) { var Item = this.get(Guid); // Item inexistant if (Item == null) { return; } // Meme endroit ? if (Item.Slot == Slot) { return; } // Veu equiper un item if (Slot > ItemSlotEnum.SLOT_INVENTAIRE && Slot <= ItemSlotEnum.SLOT_BOUCLIER) { if (Item.Template.Type == 113) { if (this.GetItemInSlot(Slot) == null) { this.Player.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 161)); return; } if (Item.Quantity > 1) { if (Quantity > Item.Quantity) { Quantity = Item.Quantity; } int newQ = Item.Quantity - Quantity; if (newQ > 0) { InventoryItemTable.TryCreateItem(Item.TemplateID, this.Player, newQ, -1, Item.GetStats().ToItemStats()); UpdateObjectquantity(Item, Quantity); } } var EquipedItemB = this.GetItemInSlot(Slot); var SpeakingTestItem = SpeakingTable.Cache.Values.FirstOrDefault(x => x != null && x.LinkedItem == Item.ID && x.Associated == 0); if (SpeakingTestItem != null) { EquipedItemB.SpeakingID = SpeakingTestItem.ID; SpeakingTestItem.Stats = EquipedItemB.GetStats().ToItemStats(); SpeakingTestItem.LinkedItem = EquipedItemB.ID; SpeakingTestItem.Associated = 1; remove(Item.ID); Player.Send(new ObjectRemoveMessage(Item.ID)); Player.Send(new ObjectRefreshMessage(EquipedItemB)); Player.myMap.SendToMap(new ObjectActualiseMessage(Player)); if (Player.Client.GetFight() != null) { Player.Client.GetFight().SendToFight(new ObjectActualiseMessage(Player)); } return; } var ID = DatabaseCache.nextSpeakingId++; String Date = DateTime.Now.Month + "" + DateTime.Now.Day; String InterDate = (DateTime.Now.Month + 3) + "" + DateTime.Now.Day; String Time = DateTime.Now.Hour + "" + DateTime.Now.Minute; Speaking newItem = new Speaking(ID, DateTime.Now.Year, int.Parse(Date), int.Parse(Time), 1, 1, EquipedItemB.Template.Type, EquipedItemB.ID, 0, DateTime.Now.Year, int.Parse(InterDate), int.Parse(Time), DateTime.Now.Year, int.Parse(Date), int.Parse(Time), 1, Item.TemplateID, Item.ID, EquipedItemB.GetStats().ToItemStats()); SpeakingTable.New(newItem); EquipedItemB.SpeakingID = ID; remove(Item.ID); Player.Send(new ObjectRemoveMessage(Item.ID)); Player.Send(new ObjectRefreshMessage(EquipedItemB)); Player.myMap.SendToMap(new ObjectActualiseMessage(Player)); if (Player.Client.GetFight() != null) { Player.Client.GetFight().SendToFight(new ObjectActualiseMessage(Player)); } return; } // Il peu placer l'item dans le slot desiré ? if (!ItemTemplateModel.CanPlaceInSlot(ItemTemplateTable.GetTemplate(Item.TemplateID).ItemType, Slot)) { return; } // Level requis if (ItemTemplateTable.GetTemplate(Item.TemplateID).Level > Player.Level) { if (Packet) { Player.Send(new ObjectMoveFailMessage(ObjectMoveFailReasonEnum.REASON_LEVEL_REQUIRED)); } return; } if (!ItemTemplateTable.GetTemplate(Item.TemplateID).Criterions.Equals("") && !ConditionParser.validConditions(this.Player, ItemTemplateTable.GetTemplate(Item.TemplateID).Criterions)) { this.Player.Send(new ImMessage("119|43")); return; } var EquipedItem = this.GetItemInSlot(Slot); // Si item deja equipé dans le slot if (EquipedItem != null) { // Deplacement dans l'inventaire Player.GetStats().UnMerge(EquipedItem.GetStats()); this.Player.Life -= EquipedItem.GetStats().GetTotal(EffectEnum.AddVitalite); EquipedItem.Position = -1; Player.Send(new ObjectMoveSucessMessage(EquipedItem.ID, -1)); } // Template deja equipé if (this.HasTemplateEquiped(Item.TemplateID)) { if (Packet) { Player.Send(new ObjectMoveFailMessage(ObjectMoveFailReasonEnum.REASON_ALREADY_EQUIPED)); } return; } /*var simlarItem = this.getSimilarInventoryItem(Item); * if (simlarItem != null) * { * this.UpdateObjectquantity(simlarItem, simlarItem.Quantity + Item.Quantity); * remove(Item.ID); * InventoryItemTable.removeItem(Item.ID); * Player.Send(new ObjectRemoveMessage(Item.ID)); * * } * else*/ if (Item.Quantity > 1) { var NewItem = InventoryItemTable.TryCreateItem(Item.TemplateID, this.Player, 1, (short)Slot, Item.Effects); this.UpdateObjectquantity(Item, Item.Quantity - 1); } else { // On modifi la position et fusionne les stats Item.Position = (short)Slot; Player.Send(new ObjectMoveSucessMessage(Item.ID, (short)Slot)); Player.Send(new ObjectMoveSucessMessage(Item.ID, (short)Item.Position)); } if (GetItemInSlot(ItemSlotEnum.SLOT_ARME) != null) { Player.Send(new ObjectTaskMessage(-1)); } Player.GetStats().Merge(Item.GetStats()); this.Player.Life += Item.GetStats().GetTotal(EffectEnum.AddVitalite); this.Player.Life += Item.GetStats().GetTotal(EffectEnum.AddVie); if (Packet) { Player.Client.Send(new AccountStatsMessage(Player)); Player.myMap.SendToMap(new ObjectActualiseMessage(Player)); if (Player.Client.GetFight() != null) { Player.Client.GetFight().SendToFight(new ObjectActualiseMessage(Player)); } } } else { var NeedActualise = false; // Si l'item est equipé, on deduit les stats if (Item.Slot > ItemSlotEnum.SLOT_INVENTAIRE && Item.Slot < ItemSlotEnum.SLOT_BOUCLIER) { // Retire les stats Player.GetStats().UnMerge(Item.GetStats()); this.Player.Life -= Item.GetStats().GetTotal(EffectEnum.AddVitalite); this.Player.Life -= Item.GetStats().GetTotal(EffectEnum.AddVie); if (Player.Life <= 0) { Player.Life = 1; } if (Packet) { Player.Client.Send(new AccountStatsMessage(this.Player)); NeedActualise = true; } } // On tente de fusionner if (!this.TryMergeItem(Item.TemplateID, Item.Effects, Slot, Item.Quantity, Item)) { Item.Position = (short)Slot; if (Packet) { Player.Send(new ObjectMoveSucessMessage(Item.ID, (short)Item.Position)); } } if (NeedActualise) { Player.myMap.SendToMap(new ObjectActualiseMessage(Player)); if (Player.Client.GetFight() != null) { Player.Client.GetFight().SendToFight(new ObjectActualiseMessage(Player)); } } } onMoveItem(Item); }