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");
     }
 }
示例#2
0
文件: path.cs 项目: mywebext/DOL
        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);
        }
示例#3
0
        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");
            }
        }
示例#4
0
        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");
                    }
                }
            }
        }
示例#5
0
 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");
     }
 }
示例#6
0
        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
            }
        }
示例#7
0
 public virtual bool OnPlayerBuy(GamePlayer player, int item_slot, int number)
 {
     GameMerchant.OnPlayerBuy(player, item_slot, number, HouseTemplateMgr.GetLotMarkerItems(this));
     return(true);
 }
示例#8
0
 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");
     }
 }