建立我们自己的Non-pk服务器
只要修改其中的判断条件和跳转条件就可以实现限制几个地图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的计算 本文出自 7j45 > 奇迹一条龙