QQ炫舞分析 - 得分判断

音乐类的游戏第一次分析,随便找了个看看,这类游戏最关键的地方就是对于按键的判断。

具体可分为:miss , great , good , cool , perfect 


找到这个判断的函数直接可以修改命中的结果

老规矩,给出函数原型,这里不提供函数地址

Type
  FCheckHit = procedure (idx:Integer;P:Cardinal;def1:Single;def2:Cardinal);stdcall;

idx为判断的结果,def1的值是按键的时间与音乐时间轴的命中时间的差,最后就是进入这个函数进行分数的处理

根据调试结果可以确定:

    perfect = 0

    miss有2种,无按键未命中 = 5 ,错过命中时间 = 6

这样就显而易见,把Miss改成Perfect只要HOOK了改idx即可,下面就给出处理的例程

Function CheckMode(idx:Integer):Bool;Stdcall;
begin
  case GetMode() of
    0:begin//豆豆模式 *
       Result:=idx <> 5;
      end;
    1:Result:=True;    //炫舞模式 *
    2:Result:=True;    //欢乐斗模式 *
    3:Result:=True;    //练习模式 *
    4:Result:=True;    //传统模式 *
    5:Result:=True;    //太鼓模式 *
    6:Result:=True;    //动感模式 ???
    7:Result:=True;    //节奏模式 *
    8:Result:=True;    //舞会模式 *
    9:Result:=True;    //约会模式 *
    else
      Result:=False;   //未知模式
  end;
end;

Procedure MyCheckHit(idx:Integer;P:Cardinal;def1:Single;def2:Cardinal);Stdcall;
begin
 if CheckMode(idx) then  //这里要确定模式
   pOldCheckHit(0,P,Def1,Def2)
 else
   pOldCheckHit(idx,P,Def1,Def2);
end;

以上豆豆模式的Miss=5时候不能直接改,以及动感模式需要另外的处理,大家自己去研究吧

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值