只要修改其中的判断条件和跳转条件就可以实现限制几个地图pk的目的 还可以实现魔头不可以继续杀人 对懂汇编的朋友来说这个不是难事 比如把: 00454FE0 . 83FA 0B CMP EDX,0B 改为 00454FE0 . 83FA 00 CMP EDX,00 就可以实现所有地图禁止pk了 将 0045501A > 833D D4780407 00>CMP DWORD PTR DS:[<LanguageCode>],0 改为 0045501A > 833D D4780407 03>CMP DWORD PTR DS:[<LanguageCode>],3 可以实现魔头不可以继续杀人 不过pkcount可能会出现问题:) 声明:条件有限,我没有进行测试 如果测试没有通过的话,请回帖说明一下
希望有人可以写出修改程序来,方便那些不会汇编的朋友 时间有限,请大家原谅 另::[<IsNonPK>]永远为0 我这里复制的机器码有一部分没有复制过来,请参照左边的地址
00454F99 . 83F9 05 CMP ECX,5 比较对方人物等级 00454F9C . 7F 07 JG SHORT GameServ.00454FA5 等级大于5,则 00454F9E > 33C0 XOR EAX,EAX 清0 00454FA0 . E9 8B130000 JMP GameServ.00456330 直接返回,不pk 00454FA5 > 833D 38790407 >CMP DWORD PTR DS:[<IsNonPK>],0 判断是否为Non-PK服务器 00454FAC . 74 10 JE SHORT GameServ.00454FBE 如果是则, 00454FAE . 833D D4780407 >CMP DWORD PTR DS:[<LanguageCode>],0 判断语言代码,0为kor 00454FB5 . 75 07 JNZ SHORT GameServ.00454FBE 如果国家代码为0,则 00454FB7 . 33C0 XOR EAX,EAX 00454FB9 . E9 72130000 JMP GameServ.00456330 直接返回 00454FBE > 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8] 00454FC1 . 33C0 XOR EAX,EAX 00454FC3 . 8A82 D9000000 MOV AL,BYTE PTR DS:[EDX+D9] 00454FC9 . 83F8 09 CMP EAX,9 如果是在恶魔广场,则不允许pk 00454FCC . 75 07 JNZ SHORT GameServ.00454FD5 00454FCE . 33C0 XOR EAX,EAX 00454FD0 . E9 5B130000 JMP GameServ.00456330 00454FD5 > 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8] 00454FD8 . 33D2 XOR EDX,EDX 00454FDA . 8A91 D9000000 MOV DL,BYTE PTR DS:[ECX+D9] 00454FE0 . 83FA 0B CMP EDX,0B 如果在血色城堡,则不能pk 00454FE3 . 7D 0C JGE SHORT GameServ.00454FF1 00454FE5 . C785 60FFFFFF >MOV DWORD PTR SS:[EBP-A0],0 00454FEF . EB 19 JMP SHORT GameServ.0045500A 判断地图号,从11到16,不允许pk 00454FF1 > 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] 00454FF4 . 33C9 XOR ECX,ECX 00454FF6 . 8A88 D9000000 MOV CL,BYTE PTR DS:[EAX+D9] 00454FFC . 33D2 XOR EDX,EDX 00454FFE . 83F9 10 CMP ECX,10 10,即10进制的16,16号地图为血6 00455001 . 0F9EC2 SETLE DL 00455004 . 8995 60FFFFFF MOV DWORD PTR SS:[EBP-A0],EDX 0045500A > 83BD 60FFFFFF >CMP DWORD PTR SS:[EBP-A0],0 00455011 . 74 07 JE SHORT GameServ.0045501A 00455013 . 33C0 XOR EAX,EAX 00455015 . E9 16130000 JMP GameServ.00456330 0045501A > 833D D4780407 >CMP DWORD PTR DS:[<LanguageCode>],0 在韩国,或者日本,魔头不可以杀人 00455021 . 74 09 JE SHORT GameServ.0045502C 00455023 . 833D D4780407 >CMP DWORD PTR DS:[<LanguageCode>],2 0045502A . 75 4A JNZ SHORT GameServ.00455076 0045502C > 8B45 D8 MOV EAX,DWORD PTR SS:[EBP-28] 0045502F . 0FBE88 CD00000>MOVSX ECX,BYTE PTR DS:[EAX+CD] 00455036 . 83F9 06 CMP ECX,6 判断pklevel是否大于6 00455039 . 7C 16 JL SHORT GameServ.00455051 0045503B . 8B55 D8 MOV EDX,DWORD PTR SS:[EBP-28] 0045503E . 0FBE82 CC00000>MOVSX EAX,BYTE PTR DS:[EDX+CC] 00455045 . 83F8 03 CMP EAX,3 判断pkcount是否大于3 00455048 . 7C 07 JL SHORT GameServ.00455051 0045504A . 33C0 XOR EAX,EAX 0045504C . E9 DF120000 JMP GameServ.00456330 00455051 > 8B4D D4 MOV ECX,DWORD PTR SS:[EBP-2C] 00455054 . 0FBE91 CD00000>MOVSX EDX,BYTE PTR DS:[ECX+CD] 0045505B . 83FA 06 CMP EDX,6 0045505E . 7C 16 JL SHORT GameServ.00455076 00455060 . 8B45 D4 MOV EAX,DWORD PTR SS:[EBP-2C] 00455063 . 0FBE88 CC00000>MOVSX ECX,BYTE PTR DS:[EAX+CC] 0045506A . 83F9 03 CMP ECX,3 0045506D . 7C 07 JL SHORT GameServ.00455076 0045506F . 33C0 XOR EAX,EAX 00455071 . E9 BA120000 JMP GameServ.00456330 。。。。 后面代码即为pk的计算 (出处:PcOnline) |