Esempio n. 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
         },
Esempio n. 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 },
Esempio n. 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));
    }
Esempio n. 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));
    }
Esempio n. 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
     });
 }
Esempio n. 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);
    }
Esempio n. 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));
    }
    /// <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)
        });
    }