很早以前就想自己做个《仙剑奇侠传DOS版》的存档修改器了,可惜以前不会编程。现在学习了编程,终于可以一了心愿了。
修改项目:做为大侠,行走江湖,怎么能没有好的装备呢?所以,我为游戏中主公翁们修改出了最强装备,另外再把金钱修改到了65535元,这应该够了。
感谢众多网友给我提供了仙剑存档文件的结构资料。使我的这项工作能够得以顺利的完成。
程序如下:
DATA SEGMENT
FILE DB 'D:\PAL\1.RPG',0 ;仙剑存档文件存放路径
JQZ DW 0FFFFH
HANDLE DW ?
LXY DW 00CFH,0001H,0000H,00E9H,0001H,0000H,00DFH,0001H,0000H,00BFH,0001H,0000H
LX0 DW 00F7H,0001H,0000H,0105H,0001H,0000H ;以上数据是李逍遥的装备,例如00CF是装备名,0001是现有数量,0000,已用数量
ZLE DW 00CDH,0001H,0000H,00EAH,0001H,0000H,00DDH,0001H,0000H,00C3H,0001H,0000H
ZL0 DW 00F6H,0001H,0000H,0104H,0001H,0000H ;这是赵灵儿的装备
MAL DW 00CDH,0001H,0000H,00E8H,0001H,0000H,00E0H,0001H,0000H,00BCH,0001H,0000H
MA0 DW 0105H,0001H,0000H,00F7H,0001H,0000H ;这是苗阿奴的装备
LYR DW 00A5H,0001H,0000H,00CDH,0001H,0000H,00E8H,0001H,0000H,00DEH,0001H,0000H
LY0 DW 0105H,0001H,0000H,00F7H,0001H,0000H ;这是林月如的装备
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET FILE
MOV AH,3DH
MOV AL,01H
INT 21H ;打开文件
MOV HANDLE,AX ;保存文件句柄
MOV BX,HANDLE
MOV CX,0
MOV DX,0028H
MOV AL,00H
MOV AH,42H
INT 21H ;将文件指针移动到地址0028H处,这里是存放金钱数据的地方。
MOV AH,40H
MOV CX,2
LEA DX,JQZ
INT 21H ;将金钱值写入,达到修改金钱之目的。
MOV AH,3EH
INT 21H ;修改完后先关闭文件。
MOV AH,3DH
MOV DX,OFFSET FILE
MOV AL,01H
INT 21H ;然后再打开,以达到使文件指针重新定位到0000H处的目的。
MOV AH,42H
MOV AL,00H
MOV CX,0
MOV DX,06C0H
INT 21H ;将文件指针移动到06C0处,这里是存放装备数据的地方。
MOV CX,4 ;这里表示分4次写入文件,4代表4个人。
MOV DX,OFFSET LXY
KSXR:
CALL WRIT
ADD DX,36 ;由于每个人的装备数据为36字节,所以每写完一次文件后,缓冲区地址须加36。表示写入下一个人的装备数据。
LOOP KSXR
JMP EXIT
WRIT PROC NEAR
PUSH CX
MOV AH,40H
MOV CX,36 ;这里的36代表写入由(DS:DX)指定的缓冲区的36字节。
INT 21H
POP CX
RET
WRIT ENDP
EXIT:
MOV AH,41H
INT 21H ;完成所有操作后关闭文件。
MOV AH,4CH
INT 21H
CODE ENDS
END START
以上程序,由MASM5.0编译通过,在DOSBOX环境成功执行。
------解决思路----------------------
建议写成博客,要不以后就难找了。
------解决思路----------------------
就是的呀
