public ShopItem(int uid, bool auto_preview_equip, string category, byte flag, int guild_trophy, int item_id, byte item_rank, int price, short quantity, int required_achievement_grade, int required_achievement_id, byte required_championship_grade, short required_championship_join_count, int required_fame_grade, short required_guild_merchant_level, byte required_guild_merchant_type, int required_item_id, short required_quest_alliance, int sale_price, int stock_count, int stock_purchased, string template_name, byte token_type)
 {
     Uid = uid;
     AutoPreviewEquip              = auto_preview_equip;
     Category                      = category;
     Flag                          = (ShopItemFlag)flag;
     GuildTrophy                   = guild_trophy;
     ItemId                        = item_id;
     ItemRank                      = item_rank;
     Price                         = price;
     RequiredAchievementGrade      = required_achievement_grade;
     RequiredAchievementId         = required_achievement_id;
     RequiredChampionshipGrade     = required_championship_grade;
     RequiredChampionshipJoinCount = required_championship_join_count;
     RequiredFameGrade             = required_fame_grade;
     RequiredGuildMerchantLevel    = required_guild_merchant_level;
     RequiredGuildMerchantType     = required_guild_merchant_type;
     RequiredItemId                = required_item_id;
     RequiredQuestAlliance         = required_quest_alliance;
     SalePrice                     = sale_price;
     StockCount                    = stock_count;
     StockPurchased                = stock_purchased;
     TemplateName                  = template_name;
     TokenType                     = (ShopCurrencyType)token_type;
     Quantity                      = quantity;
 }
Пример #2
0
 public ShopItem(dynamic data)
 {
     Uid = data.uid;
     AutoPreviewEquip              = data.auto_preview_equip;
     Category                      = data.category;
     Flag                          = (ShopItemFlag)data.flag;
     GuildTrophy                   = data.guild_trophy;
     ItemId                        = data.item_id;
     ItemRank                      = data.item_rank;
     Price                         = data.price;
     RequiredAchievementGrade      = data.required_achievement_grade;
     RequiredAchievementId         = data.required_achievement_id;
     RequiredChampionshipGrade     = data.required_championship_grade;
     RequiredChampionshipJoinCount = data.required_championship_join_count;
     RequiredFameGrade             = data.required_fame_grade;
     RequiredGuildMerchantLevel    = data.required_guild_merchant_level;
     RequiredGuildMerchantType     = data.required_guild_merchant_type;
     RequiredItemId                = data.required_item_id;
     RequiredQuestAlliance         = data.required_quest_alliance;
     SalePrice                     = data.sale_price;
     StockCount                    = data.stock_count;
     StockPurchased                = data.stock_purchased;
     TemplateName                  = data.template_name;
     TokenType                     = (ShopCurrencyType)data.token_type;
     Quantity                      = data.quantity;
 }
Пример #3
0
        public static Packet Buy(int itemId, int quantity, int price, ShopCurrencyType shopCurrencyType)
        {
            PacketWriter pWriter = PacketWriter.Of(SendOp.SHOP);

            pWriter.WriteEnum(ShopMode.Buy);
            pWriter.WriteInt(itemId);
            pWriter.WriteInt(quantity);
            pWriter.WriteInt(price * quantity);
            pWriter.WriteEnum(shopCurrencyType);
            pWriter.WriteByte();

            return(pWriter);
        }
Пример #4
0
 public BeautyShopItem(dynamic data)
 {
     Uid                      = data.uid;
     ItemId                   = data.item_id;
     Gender                   = (Gender)data.gender;
     Flag                     = (ShopItemFlag)data.flag;
     RequiredLevel            = data.required_level;
     RequiredAchievementId    = data.required_achievement_id;
     RequiredAchievementGrade = (byte)data.required_achievement_grade;
     RequiredItemId           = data.required_item_id;
     CurrencyType             = (ShopCurrencyType)data.currency_type;
     CurrencyCost             = data.currency_cost;
 }
Пример #5
0
 public BeautyShop(dynamic data, List <BeautyShopItem> items)
 {
     Id             = data.id;
     UniqueId       = data.unique_id;
     BeautyCategory = (BeautyCategory)data.beauty_category;
     BeautyType     = (BeautyShopType)data.beauty_type;
     VoucherId      = data.voucher_id;
     CurrencyType   = (ShopCurrencyType)data.currency_type;
     CurrencyCost   = data.currency_cost;
     RequiredItemId = data.required_item_id;
     SpecialCost    = data.special_cost;
     Items          = items;
 }
Пример #6
0
    private static bool Pay(GameSession session, ShopCurrencyType type, int tokenCost, int requiredItemId)
    {
        switch (type)
        {
        case ShopCurrencyType.Meso:
            return(session.Player.Wallet.Meso.Modify(-tokenCost));

        case ShopCurrencyType.ValorToken:
            return(session.Player.Wallet.ValorToken.Modify(-tokenCost));

        case ShopCurrencyType.Treva:
            return(session.Player.Wallet.Treva.Modify(-tokenCost));

        case ShopCurrencyType.Rue:
            return(session.Player.Wallet.Rue.Modify(-tokenCost));

        case ShopCurrencyType.HaviFruit:
            return(session.Player.Wallet.HaviFruit.Modify(-tokenCost));

        case ShopCurrencyType.Meret:
        case ShopCurrencyType.GameMeret:
        case ShopCurrencyType.EventMeret:
            return(session.Player.Account.RemoveMerets(tokenCost));

        case ShopCurrencyType.Item:
            Item itemCost = session.Player.Inventory.GetById(requiredItemId);
            if (itemCost == null)
            {
                return(false);
            }

            if (itemCost.Amount < tokenCost)
            {
                return(false);
            }

            session.Player.Inventory.ConsumeItem(session, itemCost.Uid, tokenCost);
            return(true);

        default:
            session.SendNotice($"Unknown currency: {type}");
            return(false);
        }
    }
Пример #7
0
        private static bool Pay(GameSession session, ShopCurrencyType type, int tokenCost, int requiredItemId)
        {
            switch (type)
            {
            case ShopCurrencyType.Meso:
                if (!session.Player.Wallet.Meso.Modify(-tokenCost))
                {
                    return(false);
                }
                break;

            case ShopCurrencyType.ValorToken:
                if (!session.Player.Wallet.ValorToken.Modify(-tokenCost))
                {
                    return(false);
                }
                break;

            case ShopCurrencyType.Treva:
                if (!session.Player.Wallet.Treva.Modify(-tokenCost))
                {
                    return(false);
                }
                break;

            case ShopCurrencyType.Rue:
                if (!session.Player.Wallet.Rue.Modify(-tokenCost))
                {
                    return(false);
                }
                break;

            case ShopCurrencyType.HaviFruit:
                if (!session.Player.Wallet.HaviFruit.Modify(-tokenCost))
                {
                    return(false);
                }
                break;

            case ShopCurrencyType.Meret:
            case ShopCurrencyType.GameMeret:
            case ShopCurrencyType.EventMeret:
                if (!session.Player.Wallet.RemoveMerets(tokenCost))
                {
                    return(false);
                }
                break;

            case ShopCurrencyType.Item:
                Item itemCost = session.Player.Inventory.Items.FirstOrDefault(x => x.Value.Id == requiredItemId).Value;
                if (itemCost.Amount < tokenCost)
                {
                    return(false);
                }
                InventoryController.Consume(session, itemCost.Uid, tokenCost);
                break;

            default:
                session.SendNotice($"Unknown currency: {type}");
                return(false);
            }
            return(true);
        }