论坛: 编程破解 标题: 仙剑奇侠传DOS版迷宫穿越程序 复制本贴地址    
作者: scandisk [scandisk]    论坛用户   登录
;程序源代码
STGS SEGMENT STACK 'S'
ZSDJ DW 50 DUP(0)
STGS ENDS

JBXG STRUC    ;定义此结构名为脚本修改,存入欲修改成的新脚本内容。
JBBH DW ?      ;变量名:脚本编号

ZYCJ DW ?      ;转移场景脚本
ZCS1 DW ?      ;参数1
ZCS2 DW ?      ;参数2
ZCS3 DW ?      ;参数3

SZZB DW ?      ;设置座标脚本
SCS1 DW ?      ;参数1:X座标
SCS2 DW ?      ;参数2: Y座标
SCS3 DW ?      ;参数3:Z座标

JBXG ENDS

DATA SEGMENT

FILENAME DB 'D:\PAL\SSS.MKF',0    ;文件名
FILEHAND DW 0000H                ;文件句柄

ZJBBH DW @350F,@76A2,@8F48,@7D5E,@8842,@81B3,@0ED6,@65CA,@64C9,@64D1,@64D9,@689B,@68BE,@078C,@053F,@68A9,@3F7E,@4019,@3934
                                                                                                    ;指针数组,数组中每条指针存放每个结构变量的偏移地址。

COUNT EQU $-ZJBBH

@350F JBXG<350FH,0059H,0029H,0000H,0000H,0046H,0022H,0039H,0000H>  ;蛇妖洞(进洞即传送)
@76A2 JBXG<76A2H,0059H,00B9H,0000H,0000H,0046H,000AH,0011H,0000H>  ;凤凰巢(进洞即传送)
@8F48 JBXG<8F48H,0059H,00E7H,0000H,0000H,0046H,000DH,0058H,0000H>  ;水魔兽(通过水魔兽传送)
@7D5E JBXG<7D5EH,0059H,00AFH,0000H,0000H,0046H,002DH,0068H,0000H>  ;桃源村(通过第二个入口传送)
@8842 JBXG<8842H,0059H,00D5H,0000H,0000H,0046H,002EH,0049H,0000H>  ;试练窟(通过第二个入口传送)
@81B3 JBXG<81B3H,0059H,00C8H,0000H,0000H,0046H,002DH,0063H,0000H>  ;麒麟洞(进洞即传送)
@0ED6 JBXG<0ED6H,0059H,0115H,0000H,0000H,0046H,0019H,0063H,0000H>  ;无底深渊(进洞即传送)
@65CA JBXG<65CAH,0059H,008BH,0000H,0000H,0046H,0017H,0035H,0000H>  ;蜘蛛精(进洞即传送)
@64C9 JBXG<64C9H,0059H,0067H,0000H,0000H,0046H,001EH,003AH,0000H>  ;蛤蚂精前洞(进洞即传送)
@64D1 JBXG<64D1H,0059H,006AH,0000H,0000H,0046H,0034H,0021H,0000H>  ;蛤蚂精后洞一(进洞即传送)
@64D9 JBXG<64D9H,0059H,006AH,0000H,0000H,0046H,0034H,0021H,0000H>  ;蛤蚂精后洞二(进洞即传送)
@689B JBXG<689BH,0059H,00A3H,0000H,0000H,0046H,001AH,0031H,0000H>  ;蜀山后山直送锁妖塔外(进洞即传送),以下四行为锁妖塔内
@68BE JBXG<68BEH,0059H,0093H,0000H,0000H,0046H,0030H,004AH,0000H>  ;再通过一个八卦传到蜀山前辈前。
@078C JBXG<078CH,0059H,0094H,0000H,0000H,0046H,001EH,005CH,0000H>  ;再通过最近的一个蜂王蜜宝箱传到天鬼皇面前
@053F JBXG<053FH,0059H,009AH,0000H,0000H,0046H,0020H,0042H,0000H>  ;通过凤鸣刀宝箱传到沉思鬼前
@68A9 JBXG<68A9H,0059H,009CH,0000H,0000H,0046H,0010H,0070H,0000H>  ;进入第一层,则自动传送到八卦前,以便再下一层
@3F7E JBXG<3F7EH,0059H,0040H,0000H,0000H,0046H,0013H,0015H,0000H>  ;从进镇后不久的第一个入口传送到阴气逼人(黑水镇)
@4019 JBXG<4019H,0059H,0041H,0000H,0000H,0046H,000DH,0014H,0000H>  ;从第一个踏板传送到鬼将军处(将军坟)
@3934 JBXG<3934H,0059H,0045H,0000H,0000H,0046H,0029H,0036H,0000H>  ;从第一个入口到鬼阴坛(鬼阴山)
                        ;以上行为定义结构变量,并赋值。
DATA ENDS



CODE SEGMENT
    ASSUME CS:CODE,DS:DATA,SS:STGS
MAIN PROC FAR
    PUSH DS
    XOR AX,AX
    PUSH AX
START:
   
    MOV AX,DATA
    MOV DS,AX
    MOV AH,3DH           
    LEA DX,FILENAME
    MOV AL,02H
    INT 21H              ;打开文件
    MOV FILEHAND,AX
   
    CALL DWWJ
   
    LEA SI,ZJBBH     

    MOV CX,COUNT/2
    CLD

LOP:
    PUSH CX
    LODSW
    MOV BX,AX
    MOV AX,0008H
    MUL WORD PTR [BX]  ;在目前文件指针的基础上移动DX:AX个字节
    MOV CX,DX
    MOV DX,AX    ;参数,文件指针的位移量在CX:DX中
    MOV AH,42H
    MOV BX,FILEHAND
    MOV AL,1
     
    INT 21H        ;将指针移动到编号相对应对文件脚本位置
    MOV BX,-2[SI]
    INC BX
    INC BX          ;BX自加2,使其跳过结构的编号字段,指向脚本本身。
   
    MOV DX,BX
    MOV AH,40H
    MOV BX,FILEHAND
    MOV CX,16
    INT 21H        ;将结构变量中的16个字节即8个字写入文件指针所指处。
    CALL DWWJ      ;将指针重新定位到脚本开始处
    POP CX
LOOP LOP

    MOV AH,3EH
    MOV BX,FILEHAND
    INT 21H

    RETF
MAIN ENDP



DWWJ PROC NEAR            ;该过程名叫定位文件。
    MOV AH,42H
    MOV BX,FILEHAND
    MOV CX,0003H
    MOV DX,8788H
    MOV AL,0
    INT 21H            ;将文件指针定位到第5部份即脚本开始处:38788H
    RET
DWWJ ENDP 

CODE ENDS
    END MAIN
   




地主 发表时间: 20-04-02 03:58

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号