wushaominkk 发表于 2018-3-29 16:04

[原创教程]魔性游戏-熱血!胴上げ(举高高)破解教程

本帖最后由 wushaominkk 于 2018-3-30 10:50 编辑

最近玩了一款日文游戏熱血!胴上げ,觉得挺有意思,闲来无事就研究研究随便来个破解!
废话不多说,上图:


游戏很简单,就是个无脑游戏,将人跑到空中,一直刷新最高纪录!大概玩了几把,游戏有等级系统,到达了一定经验后会升级,等级越高,将人跑出去的速度越快,抛的越高,下降的速度也越来越快!
那么就开始爆破吧!
工具:AndroidKiller,Dnspy
首先用AndroidKiller将游戏反编译

反编译后发现是unity3d的游戏
接下来用工具Dnspy编译Assembly-CSharp.dll文件,整理下思路既然是居高高的游戏那就全局搜索jump试下看如图:

_tapToJumpLimit看字面意思亲点跳跃什么限制,也不知道是啥,点进去看看吧

类中Ctrl+F搜索_tapToJumpLimit
private void Start()
      {
                this._player = SingletonMonoBehaviour<GameManager>.Instance.Player;//首先初始化角色
                this._liftLv = SingletonMonoBehaviour<GameDataManager>.Instance.LoadLiftLV();//读取上升等级LoadLiftLv();
                global::Debug.Log("レベル:" + this._liftLv, null);
                this._tapToJumpLimit = 0.5f;
                foreach (Lift lift in this._liftList)
                {
                        lift.Init(this._liftLv);//初始化上升等级
                        lift.ChangeLiftImage(LiftState.LoweringArm);//下面一帮损友手臂放下动作
                }
                SingletonMonoBehaviour<FallThroughCatcher>.Instance.onPressStart += this.OnPressStart;
      }
点击LoadLiftLv()进去看看;
public int LoadLiftLV()
      {
                int result = 1;
                decimal d = this.LoadExp();
                int num = 0;
                while ((float)num < 10f)
                {
                        if (d >= ValueData.EXP_BORDER_LIST)
                        {
                              result = num + 1;
                        }
                        num++;
                }
                return result;
      }
代码已经很清楚了,读取经验值赋值给变量d,判断是否满足升级条件,最后将最终的结果赋值给result,这个就是当前Lv等级,
继续深入分析:
我们再来看下这个类GameDataManager中文意思是游戏数据管理类,看看里面有什么东西
看到有个UpdateHighScore()方法,看上去是不是不开心更新最高分
public bool UpdateHighScore(decimal score)
      {
                decimal num = this.LoadHighScore();
                base.Save("HIGH_SCORE_KEY", (!(num >= score)) ? score : num);
                return score > num;
      }
代码也很简单读取最高分,将最高分缓存到"HIGH_SCORE_KEY"参数中,这里就是修改最高分的关键点!
继续深入挖掘:
我们来挖掘下人物飞升的算法逻辑:
回到最开始_tapToJumpLimit参数,
类中Ctrl+F搜索_tapToJumpLimit上下选择
private void LateUpdate()
      {
                if (!SingletonMonoBehaviour<GameManager>.Instance.IsPlayingGame)
                {
                        return;
                }
                if (this._player.PostionY <= this._liftLine.transform.position.y)
                {
                        this.Toss();
                }
                this._player.CheckGameOver();
                if (this._canTap)
                {
                        return;
                }
                this._tapToJumpTime += Time.deltaTime;
                if (this._tapToJumpTime >= this._tapToJumpLimit)
                {
                        this._canTap = true;
                        this._tapToJumpTime = 0f;
                }
      }
发现这段代码,判断PostionY是否小于或则等于this._liftLine.transform.position.y,然后执行Toss();抛出方法否则就gameOver,那么我们就可以猜出如果下面的损友接住人就将起抛出,没接住就游戏结束了!
我们继续看下Toss()这个方法;
private void Toss()
      {
                if (this._canTap)
                {
                        return;
                }
                this.PlayLiftAnimation();//执行抛出动画
                float num = 1.2f + 0.05f * (float)(this._liftLv - 1);
                float num2 = (num - 0.8f) * (1f - this._tapToJumpTime / this._tapToJumpLimit);
                num2 += 0.8f;
                this._player.Toss(num2);//
                float num3 = Mathf.Min(1f, this._player.Speed / this.SPEED_LIMIT_LIST);
                this._tapToJumpLimit = 0.5f - 0.48f * num3;
                this._canTap = true;
                this._tapToJumpTime = 0f;
      }
这段方法就是整个游戏最核心的算法了
_liftLv参数是当前等级
_tapToJumpTime 点击跳跃的时间
_tapToJumpLimit 点击跳跃的最大限制
_player.Speed 人物速度
this.SPEED_LIMIT_LIST);最大速度
成品我就不发了,自己动手更有乐趣!

1051496412 发表于 2018-6-8 20:22

wushaominkk 发表于 2018-3-29 16:27
可以的,3万米以上可以到太空了,限制是9999999米

这游戏似乎被TX厘米秀Copy了一下{:1_918:}

wushaominkk 发表于 2018-3-29 16:27

xyz989 发表于 2018-3-29 16:24
要是游戏有设定能弹出银河系就给力了

可以的,3万米以上可以到太空了,限制是9999999米{:1_918:}

peterq521 发表于 2018-3-29 16:15

哈哈 这个游戏看着好好玩 有点像当年校内的踢人游戏

xyz989 发表于 2018-3-29 16:24

要是游戏有设定能弹出银河系就给力了 :lol

hearne 发表于 2018-3-29 16:41

这个游戏看起来好清奇

q6687898 发表于 2018-3-29 16:59

发帖回复,是种美德。感谢楼主分享

崑崑爱吃包子 发表于 2018-3-29 17:45

厉害呦大神

minjun2046 发表于 2018-3-29 19:23

想下载玩啊 链接呢?

luyumeng 发表于 2018-3-29 19:36

谢谢分享

唐伯虎点蚊香AQA 发表于 2018-3-29 19:48

这类游戏居然也有, 也是无聊没谁了。。。。。。
页: [1] 2 3
查看完整版本: [原创教程]魔性游戏-熱血!胴上げ(举高高)破解教程