Esempio n. 1
0
        public async Task fgo_followerlist()
        {
            var table = new Hashtable
            {
                { "ac", "action" },
                { "key", "followerlist" },
                { "deviceid", Constant.DeviceId },
                { "os", Constant.OS },
                { "ptype", Constant.Ptype },
                { "usk", usk },
                { "umk", "" },
                { "rgsid", 1001 },
                { "rkchannel", Constant.RKChannel },
                { "userId", sguid },
                { "appVer", Constant.GameVersion },
                { "dateVer", Constant.DateVer },
                { "lastAccessTime", FgoHelper.get_timestamp_fgo() },
                { "try", "" },
                { "developmentAuthCode", Constant.DevelopmentAuthCode },
                { "refresh", 1 },
                { "userAgent", 1 },
                { "dataVer", Constant.DataVer }
            };

            var response = await FGoResponse(GetAddress("ac"), table);

            //var follower = new Dictionary<string, FollowerServant[]>();
            //foreach (var jToken in (JArray)response["cache"]["updated"]["userFollower"][0]["followerInfo"])
        }
Esempio n. 2
0
        public async Task fgo_shopsellsvt(string str)
        {
            var table = new Hashtable
            {
                { "ac", "action" },
                { "key", "shopsellsvt" },
                { "deviceid", Constant.DeviceId },
                { "os", Constant.OS },
                { "ptype", Constant.Ptype },
                { "usk", usk },
                { "umk", "" },
                { "rgsid", 1001 },
                { "rkchannel", Constant.RKChannel },
                { "userId", sguid },
                { "appVer", Constant.GameVersion },
                { "dateVer", Constant.DateVer },
                { "lastAccessTime", FgoHelper.get_timestamp_fgo() },
                { "try", "" },
                { "developmentAuthCode", Constant.DevelopmentAuthCode },
                { "userAgent", 1 },
                { "dataVer", Constant.DataVer },
                { "sellData", $"[{str}]" }
            };

            var response = await FGoResponse(GetAddress("ac"), table);

            Helper.Extensions.ReplacedData(this, response["cache"]["replaced"].ToString());
            Helper.Extensions.UpdateData(this, response["cache"]["updated"].ToString());
        }
Esempio n. 3
0
        public async Task fgo_gachadraw(int gachaId, int num, int ticketItemId = 0, int shopId = 1)
        {
            var table = new Hashtable
            {
                { "ac", "action" },
                { "key", "gachadraw" },
                { "deviceid", Constant.DeviceId },
                { "os", Constant.OS },
                { "ptype", Constant.Ptype },
                { "usk", usk },
                { "umk", "" },
                { "rgsid", 1001 },
                { "rkchannel", Constant.RKChannel },
                { "userId", sguid },
                { "appVer", Constant.GameVersion },
                { "dateVer", Constant.DateVer },
                { "lastAccessTime", FgoHelper.get_timestamp_fgo() },
                { "try", "" },
                { "developmentAuthCode", Constant.DevelopmentAuthCode },
                { "userAgent", 1 },
                { "gachaId", gachaId },
                { "num", num },
                { "ticketItemId", ticketItemId },
                { "shopIdIndex", shopId },
                { "gachaSubId", 0 },
                { "dataVer", Constant.DataVer }
            };

            var response = await FGoResponse(GetAddress("ac"), table);

            Helper.Extensions.ReplacedData(this, response["cache"]["replaced"].ToString());
            Helper.Extensions.UpdateData(this, response["cache"]["updated"].ToString());
        }
Esempio n. 4
0
        public async Task fgo_login()
        {
            var table = new Hashtable
            {
                { "deviceid", Constant.DeviceId },
                { "os", Constant.OS },
                { "ptype", Constant.Ptype },
                { "rgsid", 1001 },
                { "rguid", rguid },
                { "rgusk", rgusk },
                { "idfa", "" },
                { "v", "1.0.1" },
                { "mac", 0 },
                { "imei", "" },
                { "type", "login" },
                { "nickname", "XXXXXX" },
                { "rkchannel", Constant.RKChannel },
                { "assetbundleFolder", "" },
                { "appVer", Constant.GameVersion },
                { "dateVer", Constant.DateVer },
                { "lastAccessTime", FgoHelper.get_timestamp_fgo() },
                { "try", "" },
                { "developmentAuthCode", Constant.DevelopmentAuthCode },
                { "userAgent", 1 },
                { "t", 20399 },
                { "s", 1 },
                { "rksdkid", 1 },
                { "dataVer", Constant.DataVer }
            };

            var response = await FGoResponse(GetAddress("login"), table);

            sguid    = response["response"][0]["success"]["sguid"].ToString();
            nickname = response["response"][0]["success"]["nickname"].ToString();
        }
Esempio n. 5
0
        public async Task fgo_logintomembercenter()
        {
            var table = new Hashtable
            {
                { "deviceid", Constant.DeviceId },
                { "t", 22360 },
                { "v", "1.0.1" },
                { "s", 1 },
                { "mac", "00000000000000E0" },
                { "os", Constant.OS },
                { "ptype", Constant.Ptype },
                { "imei", "aaaaa" },
                { "username", uname },
                { "type", "token" },
                { "bundleid", "com.bilibili.fatego" },
                { "rkuid", uid },
                { "access_token", access_key },
                { "rksdkid", 1 },
                { "rkchannel", Constant.RKChannel },
                { "appVer", Constant.GameVersion },
                { "dateVer", Constant.DataVer },
                { "lastAccessTime", FgoHelper.get_timestamp_fgo() },
                { "try", "" },
                { "developmentAuthCode", Constant.DevelopmentAuthCode },
                { "version", Constant.DataVer },
                { "dataVer", Constant.DataVer }
            };
            var response = await FGoResponse($"{MainAddress}/rongame_beta/rgfate/60_member/logintomembercenter.php", table);

            Constant.DateVer = response["response"][0]["success"]["dateVer"].ToString();
            rguid            = response["response"][0]["success"]["rguid"].ToString();
            rgusk            = response["response"][0]["success"]["rgusk"].ToString();
        }
Esempio n. 6
0
        private async Task <JObject> FGoResponse(string url, Hashtable table)
        {
            var response = JObject.Parse(FgoHelper.convert_response(await Network.HttpPostAsync(url, table)));
            var resCode  = FgoHelper.parse_rescode(response);

            if (resCode != "00")
            {
                throw new Exception(response["response"][0]["fail"]["detail"].ToString());
            }

            if (response["response"][0]["usk"] != null)
            {
                usk = await EncryptMD5Usk(response["response"][0]["usk"].ToString());
            }

            return(response);
        }
Esempio n. 7
0
        public async Task bili_login()
        {
            var login = new Hashtable
            {
                { "sdk_type", 1 },
                { "isRoot", 0 },
                { "sign", "" },
                { "merchant_id", Constant.MerchantId },
                { "dp", "1920*1080" },
                { "uid", 0 },
                { "support_abis", "x86,armeabi-v7a" },
                { "platform_type", 3 },
                { "operators", 2 },
                { "model", "MIX 2" },
                { "udid", "agltXWQCYANmAjIBfQF9" },
                { "net", 4 },
                { "app_id", Constant.AppId },
                { "game_id", Constant.AppId },
                { "timestamp", FgoHelper.get_timestamp_fgo() },
                { "ver", Constant.GameVersion },
                { "c", 0 },
                { "server_id", Constant.ServerId },
                { "version", 1 },
                { "domain_switch_count", 0 },
                { "pf_ver", "8.0.0" },
                { "user_id", UserName },
                { "domain", "p.biligame.com" },
                { "original_domain", "" },
                { "sdk_log_type", 1 },
                { "sdk_ver", "1.6.7.1" },
                { "pwd", RsaHelper.RSAEncrypt(Token + Password, RSAKey) },
                { "channel_id", 1 }
            };

            GetSign(login);

            var jo = JObject.Parse(await Network.HttpPostAsync("http://p.biligame.com/api/client/login", login));

            if (!jo["code"].ToString().Equals("0"))
            {
                throw new Exception("pwd_error");
            }

            uid        = jo["uid"].ToString();
            access_key = jo["access_key"].ToString();
        }
Esempio n. 8
0
        public async Task fgo_recover(int item)
        {
            var table = new Hashtable
            {
                { "ac", "action" },
                { "key", item == 0 ? "shoppurchasebystone" : "itemrecover" },
                { "deviceid", Constant.DeviceId },
                { "os", Constant.OS },
                { "ptype", Constant.Ptype },
                { "usk", usk },
                { "umk", "" },
                { "rgsid", 1001 },
                { "rkchannel", Constant.RKChannel },
                { "userId", sguid },
                { "appVer", Constant.GameVersion },
                { "dateVer", Constant.DateVer },
                { "lastAccessTime", FgoHelper.get_timestamp_fgo() },
                { "try", "" },
                { "developmentAuthCode", Constant.DevelopmentAuthCode },
                { "userAgent", 1 }
            };

            if (item == 0)
            {
                table.Add("id", 2);
                table.Add("num", 1);
            }
            else
            {
                table.Add("recoverId", item + 1);
                table.Add("num", 1);
                table.Add("questId", 0);
            }

            table.Add("dataVer", Constant.DataVer);

            var response = await FGoResponse(GetAddress("ac"), table);

            Helper.Extensions.ReplacedData(this, response["cache"]["replaced"].ToString());
            Helper.Extensions.UpdateData(this, response["cache"]["updated"].ToString());
        }
Esempio n. 9
0
        public async Task bili_userinfo()
        {
            var user = new Hashtable
            {
                { "sdk_type", 1 },
                { "isRoot", 0 },
                { "sign", "" },
                { "merchant_id", Constant.MerchantId },
                { "dp", "1920*1080" },
                { "uid", uid },
                { "support_abis", "x86,armeabi-v7a" },
                { "platform_type", 3 },
                { "operators", 2 },
                { "model", "MIX 2" },
                { "udid", "agltXWQCYANmAjIBfQF9" },
                { "net", 4 },
                { "app_id", Constant.AppId },
                { "game_id", Constant.AppId },
                { "timestamp", FgoHelper.get_timestamp_fgo() },
                { "ver", Constant.GameVersion },
                { "c", 0 },
                { "server_id", Constant.ServerId },
                { "version", 1 },
                { "domain_switch_count", 0 },
                { "pf_ver", "8.0.0" },
                { "domain", "line3-sdkcenter-login.bilibiligame.net" },
                { "access_key", access_key },
                { "original_domain", "" },
                { "sdk_log_type", 1 },
                { "sdk_ver", "1.6.7.1" },
                { "channel_id", 1 }
            };

            GetSign(user);

            var jo = JObject.Parse(await Network.GetWebAsync($"http://line3-sdkcenter-login.bilibiligame.net/api/client/user.info?{ConvertToParameters(user)}"));

            uname      = jo["uname"].ToString();
            PlayerFace = jo["face"].ToString();
        }
Esempio n. 10
0
        public async Task bili_rsa()
        {
            var rsa = new Hashtable
            {
                { "sdk_type", 1 },
                { "isRoot", 0 },
                { "sign", "" },
                { "merchant_id", Constant.MerchantId },
                { "dp", "1920*1080" },
                { "uid", "" },
                { "support_abis", "x86,armeabi-v7a" },
                { "platform_type", 3 },
                { "operators", 2 },
                { "model", "MIX 2" },
                { "udid", "agltXWQCYANmAjIBfQF9" },
                { "net", 4 },
                { "app_id", Constant.AppId },
                { "game_id", Constant.AppId },
                { "timestamp", FgoHelper.get_timestamp_fgo() },
                { "ver", Constant.GameVersion },
                { "c", 0 },
                { "server_id", Constant.ServerId },
                { "version", 1 },
                { "domain_switch_count", 0 },
                { "pf_ver", "8.0.0" },
                { "domain", "p.biligame.com" },
                { "original_domain", "" },
                { "sdk_log_type", 1 },
                { "sdk_ver", "1.6.7.1" },
                { "channel_id", 1 }
            };

            GetSign(rsa);

            var jo = JObject.Parse(await Network.GetWebAsync($"http://p.biligame.com/api/client/rsa?{ConvertToParameters(rsa)}"));

            Token  = jo["hash"].ToString();
            RSAKey = jo["rsa_key"].ToString();
        }
Esempio n. 11
0
        public async Task fgo_toplogin()
        {
            var table = new Hashtable
            {
                { "ac", "action" },
                { "key", "toplogin" },
                { "deviceid", Constant.DeviceId },
                { "os", Constant.OS },
                { "ptype", Constant.Ptype },
                { "usk", usk },
                { "umk", "" },
                { "rgsid", 1001 },
                { "rkchannel", Constant.RKChannel },
                { "nickname", nickname },
                { "sgtype", 2 },
                { "sgtag", 20161108 },
                { "userId", sguid },
                { "appVer", Constant.GameVersion },
                { "dateVer", Constant.DateVer },
                { "lastAccessTime", FgoHelper.get_timestamp_fgo() },
                { "try", "" },
                { "developmentAuthCode", Constant.DevelopmentAuthCode },
                { "userAgent", 1 },
                { "dataVer", Constant.DataVer }
            };

            var response = await FGoResponse(GetAddress("ac"), table);

            if (response["response"][0]["success"]["loginbonus"] != null)
            {
                var s = JsonConvert.DeserializeObject <Loginbonus>(response["response"][0]["success"]["loginbonus"].ToString());
                MessagingCenter.Send(new LogMessage(this, $"连续登陆{s.seqLogin}天,总共登陆{s.totalLogin}天"), "Log");
            }

            Helper.Extensions.ReplacedData(this, response["cache"]["replaced"].ToString());
            Helper.Extensions.UpdateData(this, response["cache"]["updated"].ToString());
        }
Esempio n. 12
0
        public async Task fgo_battleresult(BattleInfo bi)
        {
            var table = new Hashtable
            {
                { "ac", "action" },
                { "key", "battleresult" },
                { "deviceid", Constant.DeviceId },
                { "os", Constant.OS },
                { "ptype", Constant.Ptype },
                { "usk", usk },
                { "umk", "" },
                { "rgsid", 1001 },
                { "rkchannel", Constant.RKChannel },
                { "raidResult", "[]" },
                { "superBossResult", "[]" },
                {
                    "result",
                    "{\"battleId\":" + bi.battleId + ",\"battleResult\":1,\"scores\":\"\",\"action\":\"\",\"elapsedTurn\":" + new Random().Next(4, 12) +
                    ",\"aliveUniqueIds\":[],\"battleStatus\":" + calc_battleStatus(bi.battleId) + ",\"voicePlayedList\":\"[]\"}"
                },
                { "userId", sguid },
                { "appVer", Constant.GameVersion },
                { "dateVer", Constant.DateVer },
                { "lastAccessTime", FgoHelper.get_timestamp_fgo() },
                { "try", "" },
                { "developmentAuthCode", Constant.DevelopmentAuthCode },
                { "userAgent", 1 },
                { "isBattleError", 0 },
                { "dataVer", Constant.DataVer }
            };

            var response = await FGoResponse(GetAddress("ac"), table);

            Helper.Extensions.ReplacedData(this, response["cache"]["replaced"].ToString());
            Helper.Extensions.UpdateData(this, response["cache"]["updated"].ToString());
        }
Esempio n. 13
0
        public static async Task fgo_member()
        {
            var table = new Hashtable
            {
                { "deviceid", Constant.DeviceId },
                { "t", 22360 },
                { "v", "1.0.1" },
                { "s", 1 },
                { "mac", "00000000000000E0" },
                { "os", Constant.OS },
                { "ptype", Constant.Ptype },
                { "imei", "aaaaa" },
                { "username", "lv9999" },
                { "type", "login" },
                { "password", "111111" },
                { "rksdkid", 1 },
                { "rkchannel", Constant.RKChannel },
                { "appVer", Constant.GameVersion },
                { "dateVer", Constant.DataVer },
                { "lastAccessTime", FgoHelper.get_timestamp_fgo() },
                { "try", "" },
                { "developmentAuthCode", Constant.DevelopmentAuthCode },
                { "version", Constant.DataVer },
                { "dataVer", Constant.DataVer }
            };

            var response = JObject.Parse(FgoHelper.convert_response(await Network.HttpPostAsync("https://line3-s2-bili-fate.bilibiligame.net/rongame_beta/rgfate/60_member/member.php", table)));
            var resCode  = FgoHelper.parse_rescode(response);

            if (resCode != "00")
            {
                throw new Exception(response["response"][0]["fail"]["detail"].ToString());
            }

            Constant.DataVer = response["response"][0]["success"]["version"].ToString();
        }
Esempio n. 14
0
        public async Task <BattleInfo> fgo_battlesetup(string questId, string questPhase, string deckId, string followerId, int followerClass)
        {
            var table = new Hashtable
            {
                { "activeDeckId", deckId },
                { "followerId", followerId },
                { "userEquipId", "0" },
                { "ac", "action" },
                { "key", "battlesetup" },
                { "deviceid", Constant.DeviceId },
                { "os", Constant.OS },
                { "ptype", Constant.Ptype },
                { "usk", usk },
                { "umk", "" },
                { "rgsid", 1001 },
                { "rkchannel", Constant.RKChannel },
                { "userId", sguid },
                { "appVer", Constant.GameVersion },
                { "dateVer", Constant.DateVer },
                { "lastAccessTime", FgoHelper.get_timestamp_fgo() },
                { "try", "" },
                { "developmentAuthCode", Constant.DevelopmentAuthCode },
                { "questId", questId },
                { "questPhase", questPhase },
                { "followerClassId", followerClass },
                { "battleMode", 1 },
                { "itemId", 0 },
                { "enemySelect", 1 },
                { "userAgent", 1 },
                { "dataVer", Constant.DataVer }
            };
            var response = await FGoResponse(GetAddress("ac"), table);

            var bi = new BattleInfo();

            bi.battleResCode = "00";
            bi.battleExtra   = "{}";

            JToken cache;

            try
            {
                cache = JToken.Parse(CryptData.ResponseCacheDecrypt(response["cache"].ToString()));
            }
            catch (Exception e)
            {
                cache = response["cache"];
            }

            bi.battleId  = cache["replaced"]["battle"][0]["id"].ToString();
            bi.rewardExp = Int32.Parse(cache["replaced"]["battle"][0]["resultInfo"]["rewardExp"].ToString());
            bi.rewardQp  = Int32.Parse(cache["replaced"]["battle"][0]["resultInfo"]["rewardQp"].ToString());
            var drop      = new Dictionary <string, int>();
            var enemyDeck = (JArray)cache["replaced"]["battle"][0]["battleInfo"]["enemyDeck"];

            foreach (var jToken in enemyDeck)
            {
                var ed   = (JObject)jToken;
                var svts = (JArray)ed["svts"];
                foreach (var jToken1 in svts)
                {
                    var ed2       = (JObject)jToken1;
                    var dropInfos = (JArray)ed2["dropInfos"];
                    foreach (var jToken2 in dropInfos)
                    {
                        var dropJO = (JObject)jToken2;
                        var id     = dropJO["objectId"].ToString();
                        if (drop.ContainsKey(id))
                        {
                            drop[id] = Int32.Parse(drop[id].ToString()) + Int32.Parse(dropJO["num"].ToString());
                        }
                        else
                        {
                            drop.Add(id, Int32.Parse(dropJO["num"].ToString()));
                        }
                    }
                }
            }

            bi.dropInfo = drop;
            return(bi);
        }