2012-2-21 17:54
star175
回复 #2 砖家叫兽 的帖子
五围2字节足够了,省下2字节可以用来存放功勋
5.8引擎已经把R形象放到exe里去了,所以这2个字节可以用来做其他的
还有就是SP,其实当初设计SP时就犯了一个大错误,当是设计每人的sp max都是255,所以没有单独保存这个数据,但是错就错在把SPcur和data挂钩了,结果白费了1024字节来存放SPcur,事实上,SPcur应该和战场编号挂钩才是正确的
2012-2-21 18:05
砖家叫兽
00408C07 /$ 55 PUSH EBP ; 读取DATA人物信息
00408C08 |. 8BEC MOV EBP,ESP
00408C0A |. 56 PUSH ESI
00408C0B |. 8BF1 MOV ESI,ECX
00408C0D |. 57 PUSH EDI
00408C0E |. 8B7D 0C MOV EDI,DWORD PTR SS:[EBP+C]
00408C11 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
00408C14 |. 80CC 10 OR AH,10
00408C17 |. 66:8906 MOV WORD PTR DS:[ESI],AX
00408C1A |. 8BCE MOV ECX,ESI
00408C1C |. 83C1 08 ADD ECX,8
00408C1F |. 51 PUSH ECX
00408C20 |. 6A 09 PUSH 9
00408C22 |. 6A 00 PUSH 0
00408C24 |. 6A 00 PUSH 0
00408C26 |. E8 05B10C00 CALL Ekd5.004D3D30
00408C2B |. 8BD7 MOV EDX,EDI
00408C2D |. 8BCE MOV ECX,ESI
00408C2F |. 83C1 08 ADD ECX,8
00408C32 |. 52 PUSH EDX
00408C33 |. 51 PUSH ECX
00408C34 |. 6A 00 PUSH 0
00408C36 |. E8 25AB0C00 CALL Ekd5.004D3760
00408C3B |. C646 10 00 MOV BYTE PTR DS:[ESI+10],0
00408C3F |. 8BCE MOV ECX,ESI
00408C41 |. E8 56E90200 CALL Ekd5.0043759C
00408C46 |. 83C7 0D ADD EDI,0D
00408C49 |. 0FB70F MOVZX ECX,WORD PTR DS:[EDI]
00408C4C |. 83C7 02 ADD EDI,2
00408C4F |. 837D 10 00 CMP DWORD PTR SS:[EBP+10],0
00408C53 |. 75 08 JNZ SHORT Ekd5.00408C5D
00408C55 |. 894E 04 MOV DWORD PTR DS:[ESI+4],ECX
00408C58 |. 8A07 MOV AL,BYTE PTR DS:[EDI]
00408C5A |. 8846 02 MOV BYTE PTR DS:[ESI+2],AL
去掉MOV 只从DATA取数据 不存 那么R形象的地址还是可以用原来位置 只是DATA指定无效
00408C5D |> 47 INC EDI
00408C5E |. 8A07 MOV AL,BYTE PTR DS:[EDI]
00408C60 |. 8846 26 MOV BYTE PTR DS:[ESI+26],AL
00408C63 |. 47 INC EDI
00408C64 |. 8A07 MOV AL,BYTE PTR DS:[EDI]
00408C66 |. 8846 2A MOV BYTE PTR DS:[ESI+2A],AL
00408C69 |. 47 INC EDI
00408C6A |. 33D2 XOR EDX,EDX
00408C6C |> 83FA 05 /CMP EDX,5
00408C6F |. 73 15 |JNB SHORT Ekd5.00408C86
00408C71 |. 0FB607 |MOVZX EAX,BYTE PTR DS:[EDI]
00408C74 |. 884432 21 |MOV BYTE PTR DS:[EDX+ESI+21],AL
00408C78 |. 6BC0 03 |IMUL EAX,EAX,3
00408C7B |. D1E8 |SHR EAX,1
00408C7D |. 66:894456 11 |MOV WORD PTR DS:[ESI+EDX*2+11],AX
00408C82 |. 47 |INC EDI
00408C83 |. 42 |INC EDX
00408C84 |.^ EB E6 \JMP SHORT Ekd5.00408C6C
00408C86 |> 0FB707 MOVZX EAX,WORD PTR DS:[EDI]
00408C89 |. 8A4F 02 MOV CL,BYTE PTR DS:[EDI+2]
00408C8C |. 8946 1C MOV DWORD PTR DS:[ESI+1C],EAX
00408C8F |. 884E 20 MOV BYTE PTR DS:[ESI+20],CL
00408C92 |. 83C7 03 ADD EDI,3
00408C95 |. 33D2 XOR EDX,EDX
00408C97 |> 83FA 05 /CMP EDX,5
00408C9A |. 73 0A |JNB SHORT Ekd5.00408CA6
00408C9C |. 8A07 |MOV AL,BYTE PTR DS:[EDI]
00408C9E |. 884432 2B |MOV BYTE PTR DS:[EDX+ESI+2B],AL
00408CA2 |. 47 |INC EDI
00408CA3 |. 42 |INC EDX
00408CA4 |.^ EB F1 \JMP SHORT Ekd5.00408C97
00408CA6 |> 33D2 XOR EDX,EDX
00408CA8 |. EB 01 JMP SHORT Ekd5.00408CAB
00408CAA |> 42 /INC EDX
00408CAB |> 83FA 01 CMP EDX,1
00408CAE |. 7F 23 |JG SHORT Ekd5.00408CD3
00408CB0 |. 8BCA |MOV ECX,EDX
00408CB2 |. 6BC9 03 |IMUL ECX,ECX,3
00408CB5 |. 0FB607 |MOVZX EAX,BYTE PTR DS:[EDI]
00408CB8 |. 884431 2E |MOV BYTE PTR DS:[ECX+ESI+2E],AL
00408CBC |. 2D FF000000 |SUB EAX,0FF
00408CC1 |. F7D8 |NEG EAX
00408CC3 |. 1BC0 |SBB EAX,EAX
00408CC5 |. 8AE0 |MOV AH,AL
00408CC7 |. 24 02 |AND AL,2
00408CC9 |. 80E4 01 |AND AH,1
00408CCC |. 66:894431 2F |MOV WORD PTR DS:[ECX+ESI+2F],AX
00408CD1 |.^ EB D7 \JMP SHORT Ekd5.00408CAA
00408CD3 |> 8A07 MOV AL,BYTE PTR DS:[EDI]
00408CD5 |. 8846 34 MOV BYTE PTR DS:[ESI+34],AL
00408CD8 |. C646 35 FF MOV BYTE PTR DS:[ESI+35],0FF
00408CDC |. C646 36 FF MOV BYTE PTR DS:[ESI+36],0FF
00408CE0 |. 807E 2C 00 CMP BYTE PTR DS:[ESI+2C],0
00408CE4 |. 75 03 JNZ SHORT Ekd5.00408CE9
00408CE6 |. FE46 2C INC BYTE PTR DS:[ESI+2C]
00408CE9 |> 47 INC EDI
00408CEA |. 8BC7 MOV EAX,EDI
00408CEC |. 5F POP EDI
00408CED |. 5E POP ESI
00408CEE |. 8BE5 MOV ESP,EBP
00408CF0 |. 5D POP EBP
00408CF1 \. C2 0C00 RETN 0C
像我已经把攻击力的初始值改到了1.5倍武力
00408F2E /$ 55 PUSH EBP ; 存档
00408F2F |. 8BEC MOV EBP,ESP
00408F31 |. 51 PUSH ECX
00408F32 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
00408F35 |. 53 PUSH EBX
00408F36 |. 33DB XOR EBX,EBX
00408F38 |> 83FB 48 /CMP EBX,48
00408F3B |. 73 09 |JNB SHORT Ekd5.00408F46
00408F3D |. 8A11 |MOV DL,BYTE PTR DS:[ECX]
00408F3F |. 8810 |MOV BYTE PTR DS:[EAX],DL
00408F41 |. 40 |INC EAX
00408F42 |. 41 |INC ECX
00408F43 |. 43 |INC EBX
00408F44 |.^ EB F2 \JMP SHORT Ekd5.00408F38
00408F46 |> 5B POP EBX
00408F47 |. 8BE5 MOV ESP,EBP
00408F49 |. 5D POP EBP
00408F4A \. C2 0400 RETN 4
存档也是 全部信息保存
00409018 /$ 55 PUSH EBP ; 读档
00409019 |. 8BEC MOV EBP,ESP
0040901B |. 51 PUSH ECX
0040901C |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
0040901F |. 53 PUSH EBX
00409020 |. 33DB XOR EBX,EBX
00409022 |> 83FB 48 /CMP EBX,48
00409025 |. 73 09 |JNB SHORT Ekd5.00409030
00409027 |. 8A10 |MOV DL,BYTE PTR DS:[EAX]
00409029 |. 8811 |MOV BYTE PTR DS:[ECX],DL
0040902B |. 40 |INC EAX
0040902C |. 41 |INC ECX
0040902D |. 43 |INC EBX
0040902E |.^ EB F2 \JMP SHORT Ekd5.00409022
00409030 |> 5B POP EBX
00409031 |. 8BE5 MOV ESP,EBP
00409033 |. 5D POP EBP
00409034 \. C2 0400 RETN 4
[color=Silver][[i] 本帖最后由 砖家叫兽 于 2012-2-21 18:12 编辑 [/i]][/color]