Пример #1
0
 public Account(long accountId, dynamic data, BankInventory bankInventory, MushkingRoyaleStats royaleStats, List <Medal> medals, AuthData authData, GameSession gameSession)
 {
     Id                         = accountId;
     Username                   = data.username;
     PasswordHash               = data.password_hash;
     CreationTime               = data.creation_time;
     LastLoginTime              = data.last_login_time;
     CharacterSlots             = data.character_slots;
     Meret                      = new(CurrencyType.Meret, data.meret, gameSession);
     GameMeret                  = new(CurrencyType.GameMeret, data.game_meret, gameSession);
     EventMeret                 = new(CurrencyType.EventMeret, data.event_meret, gameSession);
     MesoToken                  = new(CurrencyType.MesoToken, data.meso_token, gameSession);
     BankInventory              = bankInventory;
     MushkingRoyaleStats        = royaleStats;
     VIPExpiration              = data.vip_expiration;
     HomeId                     = data.home_id ?? 0;
     MesoMarketDailyListings    = data.meso_market_daily_listings;
     MesoMarketMonthlyPurchases = data.meso_market_monthly_purchases;
     AuthData                   = authData;
     EquippedMedals             = new()
     {
         {
             MedalSlot.Tail,
             null
         },
         {
             MedalSlot.GroundMount,
             null
         },
Пример #2
0
 public Account(long accountId, string username, string passwordHash,
                long creationTime, long lastLoginTime, int characterSlots, long meretAmount,
                long gameMeretAmount, long eventMeretAmount, long mesoTokens, long homeId, long vipExpiration, int mesoMarketDailyListings, int mesoMarketMonthlyPurchases,
                BankInventory bankInventory, MushkingRoyaleStats royaleStats, List <Medal> medals, AuthData authData, GameSession gameSession)
 {
     Id                         = accountId;
     Username                   = username;
     PasswordHash               = passwordHash;
     CreationTime               = creationTime;
     LastLoginTime              = lastLoginTime;
     CharacterSlots             = characterSlots;
     Meret                      = new(CurrencyType.Meret, meretAmount, gameSession);
     GameMeret                  = new(CurrencyType.GameMeret, gameMeretAmount, gameSession);
     EventMeret                 = new(CurrencyType.EventMeret, eventMeretAmount, gameSession);
     MesoToken                  = new(CurrencyType.MesoToken, mesoTokens, gameSession);
     BankInventory              = bankInventory;
     MushkingRoyaleStats        = royaleStats;
     VIPExpiration              = vipExpiration;
     HomeId                     = homeId;
     MesoMarketDailyListings    = mesoMarketDailyListings;
     MesoMarketMonthlyPurchases = mesoMarketMonthlyPurchases;
     AuthData                   = authData;
     EquippedMedals             = new()
     {
         { MedalSlot.Tail, null },
         { MedalSlot.GroundMount, null },
Пример #3
0
    private static Account ReadAccount(dynamic data)
    {
        BankInventory       bankInventory = DatabaseManager.BankInventories.FindById(data.bank_inventory_id);
        MushkingRoyaleStats royaleStats   = DatabaseManager.MushkingRoyaleStats.FindById(data.mushking_royale_id);
        List <Medal>        medals        = DatabaseManager.MushkingRoyaleMedals.FindAllByAccountId(data.id);

        return(new(data.id, data, bankInventory, royaleStats, medals, null, null));
    }
Пример #4
0
    private static Account ReadAccount(dynamic data)
    {
        BankInventory       bankInventory = DatabaseManager.BankInventories.FindById(data.bank_inventory_id);
        MushkingRoyaleStats royaleStats   = DatabaseManager.MushkingRoyaleStats.FindById(data.mushking_royale_id);
        List <Medal>        medals        = DatabaseManager.MushkingRoyaleMedals.FindAllByAccountId(data.id);

        return(new Account(data.id, data.username, data.password_hash, data.creation_time, data.last_login_time,
                           data.character_slots, data.meret, data.game_meret, data.event_meret, data.meso_token, data.home_id ?? 0,
                           data.vip_expiration, data.meso_market_daily_listings, data.meso_market_monthly_purchases, bankInventory, royaleStats, medals, null));
    }
Пример #5
0
 public void Update(MushkingRoyaleStats stats)
 {
     QueryFactory.Query(TableName).Where("id", stats.Id).Update(new
     {
         exp          = stats.Exp,
         royale_level = stats.Level,
         silver_level_claimed_rewards = stats.SilverLevelClaimedRewards,
         gold_level_claimed_rewards   = stats.GoldLevelClaimedRewards,
         active_gold_pass             = stats.IsGoldPassActive
     });
 }
Пример #6
0
 public long Insert(MushkingRoyaleStats stats)
 {
     return(QueryFactory.Query(TableName).InsertGetId <long>(new
     {
         id = stats.Id,
         exp = stats.Exp,
         royale_level = stats.Level,
         silver_level_claimed_rewards = stats.SilverLevelClaimedRewards,
         gold_level_claimed_rewards = stats.GoldLevelClaimedRewards,
         active_gold_pass = stats.IsGoldPassActive
     }));
 }
    public static PacketWriter LoadStats(MushkingRoyaleStats stats, long expGained = 0)
    {
        PacketWriter pWriter = PacketWriter.Of(SendOp.MUSHKING_ROYALE_SYSTEM);

        pWriter.Write(MushkingRoyaleSystemPacketMode.LoadStats);
        pWriter.WriteLong(stats.Id);
        pWriter.WriteInt();
        pWriter.WriteBool(stats.IsGoldPassActive);
        pWriter.WriteLong(stats.Exp);
        pWriter.WriteInt(stats.Level);
        pWriter.WriteInt(stats.SilverLevelClaimedRewards);
        pWriter.WriteInt(stats.GoldLevelClaimedRewards);
        pWriter.WriteLong(expGained);

        return(pWriter);
    }
Пример #8
0
    private static void HandleClaimRewards(GameSession session, PacketReader packet)
    {
        int silverLevelAmount = packet.ReadInt();
        int goldLevelAmount   = packet.ReadInt();

        MushkingRoyaleStats stats = session.Player.Account.MushkingRoyaleStats;

        int silverStartLevel = stats.SilverLevelClaimedRewards;
        int goldStartLevel   = stats.GoldLevelClaimedRewards;

        List <SurvivalSilverPassRewardMetadata> metadatas = SurvivalSilverPassRewardMetadataStorage.GetMetadatas(silverLevelAmount, stats.SilverLevelClaimedRewards);

        foreach (SurvivalSilverPassRewardMetadata metadata in metadatas)
        {
            GetReward(session, metadata.Type1, metadata.Id1, metadata.Value1, metadata.Count1);
        }
        stats.SilverLevelClaimedRewards += silverLevelAmount;

        if (session.Player.Account.MushkingRoyaleStats.IsGoldPassActive)
        {
            List <SurvivalGoldPassRewardMetadata> goldMetadatas = SurvivalGoldPassRewardMetadataStorage.GetMetadatas(goldLevelAmount, stats.GoldLevelClaimedRewards);
            foreach (SurvivalGoldPassRewardMetadata metadata in goldMetadatas)
            {
                GetReward(session, metadata.Type1, metadata.Id1, metadata.Value1, metadata.Count1);
                if (!metadata.Type2.Equals(""))
                {
                    GetReward(session, metadata.Type2, metadata.Id2, metadata.Value2, metadata.Count2);
                }
            }
            stats.GoldLevelClaimedRewards += goldLevelAmount;
        }

        DatabaseManager.MushkingRoyaleStats.Update(stats);
        session.Send(MushkingRoyaleSystemPacket.ClaimRewards(silverStartLevel, stats.SilverLevelClaimedRewards, goldStartLevel, stats.GoldLevelClaimedRewards));
        session.Send(MushkingRoyaleSystemPacket.LoadStats(stats));
    }
Пример #9
0
    /// <summary>
    /// Return the full player with the given id, with Hotbars, SkillTabs, Inventories, etc.
    /// </summary>
    /// <returns>Player</returns>
    public Player FindPlayerById(long characterId, GameSession session)
    {
        dynamic data = QueryFactory.Query(TableName).Where("character_id", characterId)
                       .Join("levels", "levels.id", "characters.levels_id")
                       .Join("accounts", "accounts.id", "characters.account_id")
                       .Join("game_options", "game_options.id", "characters.game_options_id")
                       .Join("wallets", "wallets.id", "characters.wallet_id")
                       .Join("auth_data", "auth_data.account_id", "characters.account_id")
                       .LeftJoin("homes", "homes.account_id", "accounts.id")
                       .Select(
            "characters.{*}",
            "levels.{level, exp, rest_exp, prestige_level, prestige_exp, mastery_exp}",
            "accounts.{username, password_hash, creation_time, last_log_time, character_slots, meret, game_meret, event_meret, meso_token, bank_inventory_id, mushking_royale_id, vip_expiration, meso_market_daily_listings, meso_market_monthly_purchases}",
            "game_options.{keybinds, active_hotbar_id}",
            "wallets.{meso, valor_token, treva, rue, havi_fruit}",
            "homes.id as home_id",
            "auth_data.{token_a, token_b, online_character_id}")
                       .FirstOrDefault();

        List <Hotbar>            hotbars         = DatabaseManager.Hotbars.FindAllByGameOptionsId(data.game_options_id);
        List <Macro>             macros          = DatabaseManager.Macros.FindAllByCharacterId(data.character_id);
        List <SkillTab>          skillTabs       = DatabaseManager.SkillTabs.FindAllByCharacterId(data.character_id, data.job);
        IInventory               inventory       = DatabaseManager.Inventories.FindById(data.inventory_id);
        BankInventory            bankInventory   = DatabaseManager.BankInventories.FindById(data.bank_inventory_id);
        MushkingRoyaleStats      royaleStats     = DatabaseManager.MushkingRoyaleStats.FindById(data.mushking_royale_id);
        List <Medal>             medals          = DatabaseManager.MushkingRoyaleMedals.FindAllByAccountId(data.account_id);
        Dictionary <int, Trophy> trophies        = DatabaseManager.Trophies.FindAllByCharacterId(data.character_id);
        List <ClubMember>        clubMemberships = DatabaseManager.ClubMembers.FindAllClubIdsByCharacterId(data.character_id);

        foreach (KeyValuePair <int, Trophy> trophy in DatabaseManager.Trophies.FindAllByAccountId(data.account_id))
        {
            trophies.Add(trophy.Key, trophy.Value);
        }

        Dictionary <int, QuestStatus> questList = DatabaseManager.Quests.FindAllByCharacterId(data.character_id);
        AuthData authData = new(data.token_a, data.token_b, data.account_id, data.online_character_id ?? 0);

        return(new()
        {
            Session = session,
            CharacterId = data.character_id,
            AccountId = data.account_id,
            Account = new(data.account_id, data, bankInventory, royaleStats, medals, authData, session),
            CreationTime = data.creation_time,
            Birthday = data.birthday,
            Name = data.name,
            Gender = (Gender)data.gender,
            Awakened = data.awakened,
            ChannelId = data.channel_id,
            InstanceId = data.instance_id,
            IsMigrating = data.is_migrating,
            Job = (Job)data.job,
            Levels = new(data.level, data.exp, data.rest_exp, data.prestige_level, data.prestige_exp,
                         JsonConvert.DeserializeObject <List <MasteryExp> >(data.mastery_exp), session, data.levels_id),
            MapId = data.map_id,
            TitleId = data.title_id,
            InsigniaId = data.insignia_id,
            Titles = JsonConvert.DeserializeObject <List <int> >(data.titles),
            PrestigeRewardsClaimed = JsonConvert.DeserializeObject <List <int> >(data.prestige_rewards_claimed),
            PrestigeMissions = JsonConvert.DeserializeObject <List <PrestigeMission> >(data.prestige_missions),
            GearScore = data.gear_score,
            MaxSkillTabs = data.max_skill_tabs,
            ActiveSkillTabId = data.active_skill_tab_id,
            GameOptions = new GameOptions(JsonConvert.DeserializeObject <Dictionary <int, KeyBind> >(data.keybinds),
                                          hotbars, data.active_hotbar_id, data.game_options_id),
            Macros = macros,
            Wallet = new Wallet(data.meso, data.valor_token, data.treva, data.rue, data.havi_fruit, session, data.wallet_id),
            Inventory = inventory,
            ChatSticker = JsonConvert.DeserializeObject <List <ChatSticker> >(data.chat_sticker),
            SavedCoord = JsonConvert.DeserializeObject <CoordF>(data.coord),
            Emotes = JsonConvert.DeserializeObject <List <int> >(data.emotes),
            FavoriteStickers = JsonConvert.DeserializeObject <List <int> >(data.favorite_stickers),
            GuildApplications = JsonConvert.DeserializeObject <List <GuildApplication> >(data.guild_applications),
            GuildId = data.guild_id ?? 0,
            ClubMembers = clubMemberships,
            IsDeleted = data.is_deleted,
            Motto = data.motto,
            ProfileUrl = data.profile_url,
            ReturnCoord = JsonConvert.DeserializeObject <CoordF>(data.return_coord),
            ReturnMapId = data.return_map_id,
            SkinColor = JsonConvert.DeserializeObject <SkinColor>(data.skin_color),
            StatPointDistribution = JsonConvert.DeserializeObject <StatDistribution>(data.statpoint_distribution),
            Stats = JsonConvert.DeserializeObject <Stats>(data.stats),
            TrophyCount = JsonConvert.DeserializeObject <int[]>(data.trophy_count),
            UnlockedMaps = JsonConvert.DeserializeObject <List <int> >(data.unlocked_maps),
            UnlockedTaxis = JsonConvert.DeserializeObject <List <int> >(data.unlocked_taxis),
            VisitingHomeId = data.visiting_home_id,
            SkillTabs = skillTabs,
            TrophyData = trophies,
            QuestData = questList,
            GatheringCount = JsonConvert.DeserializeObject <List <GatheringCount> >(data.gathering_count),
            ActivePet = DatabaseManager.Items.FindByUid(data.active_pet_item_uid)
        });
    }