关于暗杀技能的研究报告\[全职业可用,PK可用\]


  • 管理员

    暗杀技能由于自身的变态性被限定只许忍者与士兵学习,且只能在普通战斗中使用本文将通过对gmsv的研究来尝试修改暗杀技能让其达到以下效果
    1. 全职业可使用
    2. PK中可用
    3. 暗杀几率调整

    首先说第一和第二点,全职业可使用和PK中可用
    打开IDA,调用gmsv,跳到函数BATTLE_MOVE
    该函数调用了两个关于暗杀技能的函数
    分别是
    BATTLE_CheckAssassin(player,unk1)和BATTLE_Assassin(player,unk1)
    执行BATTLE_CheckAssassin的条件改写成白话为
    如果(((玩家职业基础编号为150 或者 50) 并且 玩家当前执行的命令是普通攻击) 或者 (是NPC))
    那么很显然,我们需要修改条件为
    **如果((**玩家当前执行的命令是普通攻击) 或者 (是NPC))
    既可让所有玩家触发BATTLE_CheckAssassin这个函数了
    开始修改:
    首先转移到gmsv文件偏移0x00062351
    可以看到汇编代码
    ```
    mov eax, [edx+0D8h] '取玩家的职业ID
    cmp eax, 096h
    jz loc_80AD101

    ```
    这里将代码修改为

    mov     eax, [edx+0Ch] 
    cmp     eax, 1
    jz      loc_80AD101
    

    同样0x6235C也修改为

    cmp     eax, 1
    

    既可
    这样所有职业使用普通攻击都会触发BATTLE_CheckAssassin这个函数,接下来进入BATTLE_CheckAssassin函数,来看看具体的内容
    BATTLE_CheckAssassin这个函数主要有以下几个功能:
    1. 判定是否处于可触发暗杀的环境
    2. 判定暗杀是否成功释放[几率判定]

    对于判定是否处于可触发暗杀的环境,程序中设定的判定是
    如果 (战斗类型是普通战斗 或者 被攻击目标是NPC) [这个限定局限了暗杀只会在普通战斗中触发]
    对于这个判定,我们只需要修改为
    如果 (战斗类型是PK 或者 战斗类型是普通战斗)既可但是方便起见,我们直接废掉这个判定就行了
    开始修改
    gmsv文件偏移0x00086E17

    cmp     dword ptr [ecx+eax*4+10h], 2
    jz      short loc_80CEE3D
    

    改为

    cmp     dword ptr [ecx+eax*4+10h], 0
    jnz      short loc_80CEE3D
    

    既可

    除此之外,还有一个函数需要修改,即BATTLE_Assasin_check,这个函数在BATTLE_GetExpGold中被调用,作用是普通战斗结束后的技能经验奖励
    这里的判定与BATTLE_CheckAssassin的调用判定一样,只是判定职业代码
    可见gmsv文件偏移0x849DE

    cmp     edx, 32h
    jz      short loc_80CC9F8
    

    修改为

    cmp     edx, 0
    jnz      short loc_80CC9F8
    

    既可

    总结:1. 0x6234B 8B 82 D8 -> 8B 82 0C
    2. 0x62351 3D 96 -> 3D 01
    3. 0x6235C 83 F8 32 -> 83 F8 01
    4. 0x86E17 83 7C 81 10 02 74 -> 83 7C 81 10 00 75
    5. 0x849DE 83 FA 32 74 -> 83 FA 00 75

    以上修改后即可实现暗杀的全职业可用以及PK可用

    测试结果如下: PK时可以触发,非忍者和士兵也可以触发,未出现挂端

    P.S. 本修改未经过完整的个人试验,请谨慎测试,如有问题,请回帖交流


    • 想着从别人那获取什么之前,请先自己做出点什么贡献。

    • 技术不是可以衣来伸手饭来张口的。

    • 在你开口问别人为什么之前,请先自己问问搜索引擎。

    • 自由和分享是需要建立在你自身的基础之上的。

    0


  • :o不知道会不会出挂端的bug呢,乱来服务器到期了。。。没法测试了,我汗



  • 不会,不过就是不知道他说的这个是不是根据个人的GMSV来写的


  • 管理员

    好了 本地测试正常


    • 想着从别人那获取什么之前,请先自己做出点什么贡献。

    • 技术不是可以衣来伸手饭来张口的。

    • 在你开口问别人为什么之前,请先自己问问搜索引擎。

    • 自由和分享是需要建立在你自身的基础之上的。

    0


  • 都聚来了啊:loveliness::loveliness:



  • 回复 Free 的帖子

    暗杀几率方面

    Num: Value Size Type Bind Vis Ndx Name
    4291: 080ced2c 1315 FUNC GLOBAL DEFAULT 12 BATTLE_CheckAssassin

    跳转来到BATTLE_CheckAssassin
    直接看到这个地方
    cmp eax, LV
    jg short loc_80.
    mov [ebp+var_29C], 0-11D

    这里的意思是对应级别范围赋值(乱数因子)
    LV 0-9 10-19 20-29 30-39 ... 100-119 还有一个情况是大于等于120级
    对应赋值 0 1 2 3 ... 10 11 和?
    下面我们谈谈暗杀发动公式

    乱数因子1=(0 to 暗杀等级
    乱数因子2= (0 to 级别对应值)

    当乱数因子1>乱数因子2时 就能发动暗杀
    例如1级暗杀 那么对0-9级的怪物
    L1 = 0 to 1
    L2 = 0
    则发动率为50%
    又例2级暗杀 对0-9级的怪物
    L1 = 0 to 2
    L2 = 0
    则发动率为66%

    又例10级暗杀 对90-99级的怪物
    L1 = 0 to 10
    L2 = 0 to 9
    则发动率为55%



  • 好东西支持下



  • 干看不懂啊。怎么样修啊GMSV啊?UE的会,LZ修改的方法不会。能教一下吗?



  • 很强大
    :o


  • 管理员

    回复 deiwr123 的帖子

    帖子最后不是写了UE修改的方式了么


    • 想着从别人那获取什么之前,请先自己做出点什么贡献。

    • 技术不是可以衣来伸手饭来张口的。

    • 在你开口问别人为什么之前,请先自己问问搜索引擎。

    • 自由和分享是需要建立在你自身的基础之上的。

    0

  • 管理员

    回复 bq00167 的帖子

    你可以看看BOSS战斗和普通战斗的区别,从这个点开始分析就ok了,我的修改已经实现了全职业可用,pk可用


    • 想着从别人那获取什么之前,请先自己做出点什么贡献。

    • 技术不是可以衣来伸手饭来张口的。

    • 在你开口问别人为什么之前,请先自己问问搜索引擎。

    • 自由和分享是需要建立在你自身的基础之上的。

    0


  • 看完这个帖子我在思考学习汇编的重要性



  • :lol学了很多东西啊 开拓思路了



  • ide不太会用,要是ue就好了



  • _本帖最后由 小狐狸 于 2011-7-15 06:07 编辑 _

    Free 发表于 2011-6-13 11:50
    回复 bq00167 的帖子

    你可以看看BOSS战斗和普通战斗的区别,从这个点开始分析就ok了,我的修改已经实现了全职 ...

    PK不是一直就可以用吗?难道是主动暗杀?还是打BOSS暗杀?



  • 看的头疼痛 郁闷 多多学习啊



  • 有的时候PK对方用乾坤,就会挂端貌似。如果都什么技能不用会出暗杀,也不挂端。这个方法乾坤不会挂端麽?



  • 一看就明白了~很简明扼要



  • 给力啊。;P

    --- 很后悔、当初没有告诉你,我有多爱你。

    0


  • 确实看不懂啊~!~!~!



  • 我试试看啊~~~~~~


登录后回复