public AncientTransmuterSpellHandler(GameLiving caster, Spell spell, SpellLine line) : base(caster, spell, line) { if (caster is GamePlayer) { GamePlayer casterPlayer = caster as GamePlayer; merchant = new GameMerchant(); //Fill the object variables merchant.X = casterPlayer.X + Util.Random(20, 40) - Util.Random(20, 40); merchant.Y = casterPlayer.Y + Util.Random(20, 40) - Util.Random(20, 40); merchant.Z = casterPlayer.Z; merchant.CurrentRegion = casterPlayer.CurrentRegion; merchant.Heading = (ushort)((casterPlayer.Heading + 2048) % 4096); merchant.Level = 1; merchant.Realm = casterPlayer.Realm; merchant.Name = "Travelling Salesman"; merchant.Model = 947; merchant.CurrentSpeed = 0; merchant.MaxSpeedBase = 0; merchant.GuildName = ""; merchant.Size = 50; merchant.Flags |= GameNPC.eFlags.PEACE; merchant.TradeItems = new MerchantTradeItems("chriswf"); } }
private void PathAssignTaxiRoute(GameClient client, string[] args) { PathPoint path = (PathPoint)client.Player.TempProperties.getProperty <object>(TEMP_PATH_LAST, null); if (args.Length < 2) { DisplayMessage(client, "Usage: /path assigntaxiroute <destination>"); return; } if (path == null) { DisplayMessage(client, "No path created yet! Use /path create first!"); return; } GameMerchant merchant = null; if (client.Player.TargetObject is GameStableMaster) { merchant = client.Player.TargetObject as GameStableMaster; } if (client.Player.TargetObject is GameBoatStableMaster) { merchant = client.Player.TargetObject as GameBoatStableMaster; } if (merchant == null) { DisplayMessage(client, "You must select a stable master to assign a taxi route!"); return; } string target = String.Join(" ", args, 2, args.Length - 2);; bool ticketFound = false; string ticket = "Ticket to " + target; // Most // // With the new horse system, the stablemasters are using the item.Id_nb to find the horse route in the database // So we have to save a path in the database with the Id_nb as a PathID // The following string will contain the item Id_nb if it is found in the merchant list string pathname = ""; if (merchant.TradeItems != null) { foreach (ItemTemplate template in merchant.TradeItems.GetAllItems().Values) { if (template != null && template.Name.ToLower() == ticket.ToLower()) { ticketFound = true; pathname = template.Id_nb; break; } } } if (!ticketFound) { DisplayMessage(client, "Stablemaster has no {0}!", ticket); return; } MovementMgr.SavePath(pathname, path); DisplayMessage(client, "Taxi route set to path '{0}'!", pathname); }
public AncientTransmuterSpellHandler(GameLiving caster, Spell spell, SpellLine line) : base(caster, spell, line) { if (caster is GamePlayer casterPlayer) { merchant = new GameMerchant { X = casterPlayer.X + Util.Random(20, 40) - Util.Random(20, 40), Y = casterPlayer.Y + Util.Random(20, 40) - Util.Random(20, 40), Z = casterPlayer.Z, CurrentRegion = casterPlayer.CurrentRegion, Heading = (ushort)((casterPlayer.Heading + 2048) % 4096), Level = 1, Realm = casterPlayer.Realm, Name = "Ancient Transmuter", Model = 993, CurrentSpeed = 0, MaxSpeedBase = 0, GuildName = string.Empty, Size = 50 }; merchant.Flags |= GameNPC.eFlags.PEACE; merchant.TradeItems = new MerchantTradeItems("ML_transmuteritems"); } }
public void CreateMoneyTask() { GamePlayer player = CreateMockGamePlayer(); GameMerchant merchant = new GameMerchant(); merchant.Name = "Tester"; merchant.Realm = eRealm.Albion; Console.WriteLine(player.Name); if (MoneyTask.CheckAvailability(player, merchant)) { if (MoneyTask.BuildTask(player, merchant)) { MoneyTask task = (MoneyTask)player.Task; Assert.IsNotNull(task); Console.WriteLine("XP" + task.RewardXP); Console.WriteLine("Item:" + task.ItemName); Console.WriteLine("Item:" + task.Name); Console.WriteLine("Item:" + task.Description); // Check Notify Event handling InventoryItem item = GameInventoryItem.Create(new ItemTemplate()); item.Name = task.ItemName; GameNPC npc = new GameNPC(); npc.Name = task.RecieverName; task.Notify(GamePlayerEvent.GiveItem, player, new GiveItemEventArgs(player, npc, item)); if (player.Task.TaskActive || player.Task == null) { Assert.Fail("Task did not finished proper in Notify"); } } } }
public AncientTransmuterSpellHandler(GameLiving caster, Spell spell, SpellLine line) : base(caster, spell, line) { if (caster is GamePlayer) { GamePlayer casterPlayer = caster as GamePlayer; merchant = new GameMerchant(); //Fill the object variables merchant.Position = casterPlayer.Position + new Vector3(Util.Random(20, 40) - Util.Random(20, 40), Util.Random(20, 40) - Util.Random(20, 40), 0); merchant.CurrentRegion = casterPlayer.CurrentRegion; merchant.Heading = (ushort)((casterPlayer.Heading + 2048) % 4096); merchant.Level = 1; merchant.Realm = casterPlayer.Realm; merchant.Name = "Ancient Transmuter"; merchant.Model = 993; merchant.CurrentSpeed = 0; merchant.MaxSpeedBase = 0; merchant.GuildName = ""; merchant.Size = 50; merchant.Flags |= GameNPC.eFlags.PEACE; merchant.TradeItems = new MerchantTradeItems("ML_transmuteritems"); } }
public void OnCommand(GameClient client, string[] args) { if (args.Length == 1) { DisplaySyntax(client); return; } string param = ""; if (args.Length > 2) { param = String.Join(" ", args, 2, args.Length - 2); } GameMerchant targetMerchant = null; if (client.Player.TargetObject != null && client.Player.TargetObject is GameMerchant) { targetMerchant = (GameMerchant)client.Player.TargetObject; } if (args[1].ToLower() != "create" && targetMerchant == null) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.CommandOverview")); return; } switch (args[1].ToLower()) { #region Create case "create": { string theType = "DOL.GS.GameMerchant"; if (args.Length > 2) { theType = args[2]; } //Create a new merchant GameMerchant merchant = null; ArrayList asms = new ArrayList(ScriptMgr.Scripts); asms.Add(typeof(GameServer).Assembly); foreach (Assembly script in asms) { try { client.Out.SendDebugMessage(script.FullName); merchant = (GameMerchant)script.CreateInstance(theType, false); if (merchant != null) { break; } } catch (Exception e) { client.Out.SendMessage(e.ToString(), eChatType.CT_System, eChatLoc.CL_PopupWindow); } } if (merchant == null) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.ErrorCreateInstance", theType)); return; } //Fill the object variables merchant.X = client.Player.X; merchant.Y = client.Player.Y; merchant.Z = client.Player.Z; merchant.CurrentRegion = client.Player.CurrentRegion; merchant.Heading = client.Player.Heading; merchant.Level = 1; merchant.Realm = client.Player.Realm; merchant.Name = LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "GMCommands.Merchant.NewName"); merchant.Model = 9; //Fill the living variables merchant.CurrentSpeed = 0; merchant.MaxSpeedBase = 200; merchant.GuildName = LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "GMCommands.Merchant.NewGuildName"); merchant.Size = 50; merchant.AddToWorld(); merchant.SaveIntoDatabase(); DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Create.Created", merchant.ObjectID)); break; } #endregion Create #region Info case "info": { if (args.Length == 2) { if (targetMerchant.TradeItems == null) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Info.ArtListIsEmpty")); } else { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Info.ArtList", targetMerchant.TradeItems.ItemsListID)); } } break; } #endregion Info #region Save case "save": { targetMerchant.SaveIntoDatabase(); DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Save.SavedInDB")); break; } #endregion Save #region SaveList case "savelist": { string currentID = targetMerchant.TradeItems.ItemsListID; var itemList = GameServer.Database.SelectObjects <MerchantItem>("ItemListID = '" + currentID + "'"); foreach (MerchantItem merchantItem in itemList) { MerchantItem item = new MerchantItem(); item.ItemListID = GameServer.Database.Escape(args[2]); item.ItemTemplateID = merchantItem.ItemTemplateID; item.PageNumber = merchantItem.PageNumber; item.SlotPosition = merchantItem.SlotPosition; GameServer.Database.AddObject(item); } DisplayMessage(client, "New MerchantItems list saved as '" + GameServer.Database.Escape(args[2]) + "'"); break; } #endregion SaveList #region Remove case "remove": { targetMerchant.DeleteFromDatabase(); targetMerchant.Delete(); DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Remove.RemovedFromDB")); break; } #endregion Remove #region Sell case "sell": { switch (args[2].ToLower()) { #region Add case "add": { if (args.Length == 4) { try { string templateID = args[3]; targetMerchant.TradeItems = new MerchantTradeItems(templateID); targetMerchant.SaveIntoDatabase(); DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Sell.Add.Loaded")); } catch (Exception) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.CommandOverview")); return; } } break; } #endregion Add #region Remove case "remove": { if (args.Length == 3) { targetMerchant.TradeItems = null; targetMerchant.SaveIntoDatabase(); DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Sell.Remove.Removed")); } break; } #endregion Remove #region Default default: { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.CommandOverview")); return; } #endregion Default } break; } #endregion Sell #region Articles case "articles": { if (args.Length < 3) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.CommandOverview")); return; } switch (args[2].ToLower()) { #region Add case "add": { if (args.Length <= 6) { try { string templateID = args[3]; int page = Convert.ToInt32(args[4]); eMerchantWindowSlot slot = eMerchantWindowSlot.FirstEmptyInPage; if (targetMerchant.TradeItems == null) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Articles.ListNoFound")); return; } ItemTemplate template = GameServer.Database.FindObjectByKey <ItemTemplate>(templateID); if (template == null) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Articles.Add.ItemTemplateNoFound", templateID)); return; } if (args.Length == 6) { slot = (eMerchantWindowSlot)Convert.ToInt32(args[5]); } slot = targetMerchant.TradeItems.GetValidSlot(page, slot); if (slot == eMerchantWindowSlot.Invalid) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Articles.Add.PageAndSlotInvalid", page, (MerchantTradeItems.MAX_PAGES_IN_TRADEWINDOWS - 1), slot, (MerchantTradeItems.MAX_ITEM_IN_TRADEWINDOWS - 1))); return; } MerchantItem item = GameServer.Database.SelectObject <MerchantItem>("ItemListID = '" + GameServer.Database.Escape(targetMerchant.TradeItems.ItemsListID) + "' AND PageNumber = '" + page + "' AND SlotPosition = '" + slot + "'"); if (item == null) { item = new MerchantItem(); item.ItemListID = targetMerchant.TradeItems.ItemsListID; item.ItemTemplateID = templateID; item.SlotPosition = (int)slot; item.PageNumber = page; GameServer.Database.AddObject(item); } else { item.ItemTemplateID = templateID; GameServer.Database.SaveObject(item); } DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Articles.Add.ItemAdded")); } catch (Exception) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.CommandOverview")); return; } } else { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.CommandOverview")); } break; } #endregion Add #region Remove case "remove": { if (args.Length == 5) { try { int page = Convert.ToInt32(args[3]); int slot = Convert.ToInt32(args[4]); if (page < 0 || page >= MerchantTradeItems.MAX_PAGES_IN_TRADEWINDOWS) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Articles.Remove.PageInvalid", page, (MerchantTradeItems.MAX_PAGES_IN_TRADEWINDOWS - 1))); return; } if (slot < 0 || slot >= MerchantTradeItems.MAX_ITEM_IN_TRADEWINDOWS) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Articles.Remove.SlotInvalid", slot, (MerchantTradeItems.MAX_ITEM_IN_TRADEWINDOWS - 1))); return; } if (targetMerchant.TradeItems == null) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Articles.ListNoFound")); return; } MerchantItem item = GameServer.Database.SelectObject <MerchantItem>("ItemListID = '" + GameServer.Database.Escape(targetMerchant.TradeItems.ItemsListID) + "' AND PageNumber = '" + page + "' AND SlotPosition = '" + slot + "'"); if (item == null) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Articles.Remove.SlotInPageIsAEmpty", slot, page)); return; } GameServer.Database.DeleteObject(item); DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Articles.Remove.SlotInPageCleaned", slot, page)); } catch (Exception) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.CommandOverview")); return; } } else { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.CommandOverview")); } break; } #endregion Remove #region Delete case "delete": { if (args.Length == 3) { try { if (targetMerchant.TradeItems == null) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Articles.ListNoFound")); return; } DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Articles.Delete.DeletingListTemp")); var merchantitems = GameServer.Database.SelectObjects <MerchantItem>("ItemsListID = '" + GameServer.Database.Escape(targetMerchant.TradeItems.ItemsListID) + "'"); if (merchantitems.Count > 0) { foreach (MerchantItem item in merchantitems) { GameServer.Database.DeleteObject(item); } } DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Articles.Delete.ListDeleted")); } catch (Exception) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.CommandOverview")); return; } } break; } #endregion Delete #region Default default: { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.CommandOverview")); return; } #endregion Default } break; } #endregion Articles #region Type case "type": { string theType = param; if (args.Length > 2) { theType = args[2]; } //Create a new merchant GameMerchant merchant = null; ArrayList asms = new ArrayList(ScriptMgr.Scripts); asms.Add(typeof(GameServer).Assembly); foreach (Assembly script in asms) { try { client.Out.SendDebugMessage(script.FullName); merchant = (GameMerchant)script.CreateInstance(theType, false); if (merchant != null) { break; } } catch (Exception e) { client.Out.SendMessage(e.ToString(), eChatType.CT_System, eChatLoc.CL_PopupWindow); } } if (merchant == null) { DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.ErrorCreateInstance", theType)); return; } //Fill the object variables merchant.X = targetMerchant.X; merchant.Y = targetMerchant.Y; merchant.Z = targetMerchant.Z; merchant.CurrentRegion = targetMerchant.CurrentRegion; merchant.Heading = targetMerchant.Heading; merchant.Level = targetMerchant.Level; merchant.Realm = targetMerchant.Realm; merchant.Name = targetMerchant.Name; merchant.Model = targetMerchant.Model; //Fill the living variables merchant.CurrentSpeed = targetMerchant.CurrentSpeed;; merchant.MaxSpeedBase = targetMerchant.MaxSpeedBase;; merchant.GuildName = targetMerchant.GuildName; merchant.Size = targetMerchant.Size; merchant.Inventory = targetMerchant.Inventory; merchant.EquipmentTemplateID = targetMerchant.EquipmentTemplateID; merchant.TradeItems = targetMerchant.TradeItems; merchant.AddToWorld(); merchant.SaveIntoDatabase(); targetMerchant.Delete(); targetMerchant.DeleteFromDatabase(); DisplayMessage(client, LanguageMgr.GetTranslation(client.Account.Language, "GMCommands.Merchant.Type.Changed", param)); break; } #endregion Type } }
public virtual bool OnPlayerBuy(GamePlayer player, int item_slot, int number) { GameMerchant.OnPlayerBuy(player, item_slot, number, HouseTemplateMgr.GetLotMarkerItems(this)); return(true); }
public AncientTransmuterSpellHandler(GameLiving caster, Spell spell, SpellLine line) : base(caster, spell, line) { if (caster is GamePlayer) { GamePlayer casterPlayer = caster as GamePlayer; merchant = new GameMerchant(); //Fill the object variables merchant.X = casterPlayer.X + Util.Random(20, 40) - Util.Random(20, 40); merchant.Y = casterPlayer.Y + Util.Random(20, 40) - Util.Random(20, 40); merchant.Z = casterPlayer.Z; merchant.CurrentRegion = casterPlayer.CurrentRegion; merchant.Heading = (ushort)((casterPlayer.Heading + 2048) % 4096); merchant.Level = 1; merchant.Realm = casterPlayer.Realm; merchant.Name = "Ancient Transmuter"; merchant.Model = 993; merchant.CurrentSpeed = 0; merchant.MaxSpeedBase = 0; merchant.GuildName = ""; merchant.Size = 50; merchant.Flags |= GameNPC.eFlags.PEACE; merchant.TradeItems = new MerchantTradeItems("ML_transmuteritems"); } }