Ejemplo n.º 1
0
            public void HandleCurrencyAccountAdd(ICommandContext context,
                                                 [Parameter("Account currency id to grant.", ParameterFlags.None, typeof(EnumParameterConverter <AccountCurrencyType>))]
                                                 AccountCurrencyType currencyId,
                                                 [Parameter("Amount of currency to grant.")]
                                                 uint amount)
            {
                AccountCurrencyTypeEntry entry = GameTableManager.Instance.AccountCurrencyType.GetEntry((uint)currencyId);

                if (entry == null || currencyId == AccountCurrencyType.MaxLevelToken) // Disabled Character Token for now due to causing server errors if the player tries to use it. TODO: Fix level 50 creation
                {
                    context.SendMessage("Invalid currencyId. Please try again.");
                    return;
                }

                context.GetTargetOrInvoker <Player>().Session.AccountCurrencyManager.CurrencyAddAmount(currencyId, amount);
            }
        /// <summary>
        /// Create a new <see cref="CharacterCurrency"/>.
        /// </summary>
        private AccountCurrency CreateAccountCurrency(AccountCurrencyType currencyType, ulong amount = 0)
        {
            AccountCurrencyTypeEntry currencyEntry = GameTableManager.AccountCurrencyType.GetEntry((ulong)currencyType);

            if (currencyEntry == null)
            {
                throw new ArgumentNullException($"AccountCurrencyTypeEntry not found for currencyId {currencyType}");
            }

            if (currencies.TryAdd(currencyType, new AccountCurrency(session.Account.Id, currencyType, amount)))
            {
                return(currencies[currencyType]);
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 3
0
        public Task HandleAccountCurrencyAdd(CommandContext context, string command, string[] parameters)
        {
            if (context.Session.Account == null)
            {
                context.SendMessageAsync("Account not found. Please try again.");
                return(Task.CompletedTask);
            }

            if (parameters.Length != 2)
            {
                context.SendMessageAsync("Parameters are invalid. Please try again.");
                return(Task.CompletedTask);
            }

            bool currencyParsed = byte.TryParse(parameters[0], out byte currencyId);

            if (!currencyParsed || currencyId == 13) // Disabled Character Token for now due to causing server errors if the player tries to use it. TODO: Fix level 50 creation
            {
                context.SendMessageAsync("Invalid currencyId. Please try again.");
                return(Task.CompletedTask);
            }

            AccountCurrencyTypeEntry currencyEntry = GameTableManager.Instance.AccountCurrencyType.GetEntry(currencyId);

            if (currencyEntry == null)
            {
                context.SendMessageAsync("Invalid currencyId. Please try again.");
                return(Task.CompletedTask);
            }

            if (!uint.TryParse(parameters[1], out uint amount))
            {
                context.SendMessageAsync("Unable to parse amount. Please try again.");
                return(Task.CompletedTask);
            }

            context.Session.AccountCurrencyManager.CurrencyAddAmount((AccountCurrencyType)currencyId, amount);
            return(Task.CompletedTask);
        }