| 
 0046E1AC  /$  55            PUSH EBP 
0046E1AD  |.  8BEC          MOV EBP,ESP 
0046E1AF  |.  51            PUSH ECX 
0046E1B0  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8] 
0046E1B3  |.  33D2          XOR EDX,EDX 
0046E1B5  |.  F771 48       DIV DWORD PTR DS:[ECX+48] 
0046E1B8  |.  8955 08       MOV DWORD PTR SS:[EBP+8],EDX 
0046E1BB  |.  803D CA7C4D00>CMP BYTE PTR DS:[4D7CCA],0 
做标记的用途 
0046E1C2  |.  0F85 91000000 JNZ Ekd5.0046E259 
0046E1C8  |.  837D 0C 00    CMP DWORD PTR SS:[EBP+C],0 
0046E1CC  |.  0F84 96000000 JE Ekd5.0046E268 
0046E1D2  |.  837D 08 00    CMP DWORD PTR SS:[EBP+8],0 
0046E1D6  |.  0F8E 8C000000 JLE Ekd5.0046E268 
0046E1DC  |>  8B4D FC       /MOV ECX,DWORD PTR SS:[EBP-4] 
0046E1DF  |.  0FB641 41     |MOVZX EAX,BYTE PTR DS:[ECX+41] 
0046E1E3  |.  3B45 08       |CMP EAX,DWORD PTR SS:[EBP+8] 
0046E1E6  |.  7D 10         |JGE SHORT Ekd5.0046E1F8 
0046E1E8  |.  8B41 48       |MOV EAX,DWORD PTR DS:[ECX+48] 
0046E1EB  |.  99            |CDQ 
0046E1EC  |.  B9 0A000000   |MOV ECX,0A 
0046E1F1  |.  F7F1          |DIV ECX 
0046E1F3  |.  2945 08       |SUB DWORD PTR SS:[EBP+8],EAX 
0046E1F6  |.^ EB E4         \JMP SHORT Ekd5.0046E1DC 
0046E1F8  |>  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4] 
0046E1FB  |.  8A45 08       MOV AL,BYTE PTR SS:[EBP+8] 
0046E1FE  |.  8841 40       MOV BYTE PTR DS:[ECX+40],AL 
0046E201  |.  6A 00         PUSH 0                                   ; /IsSigned = FALSE 
0046E203  |.  0FB641 40     MOVZX EAX,BYTE PTR DS:[ECX+40]           ; | 
0046E207  |.  50            PUSH EAX                                 ; |Value 
0046E208  |.  68 9D050000   PUSH 59D                                 ; |ControlID = 59D (1437.) 
0046E20D  |.  8B51 04       MOV EDX,DWORD PTR DS:[ECX+4]             ; | 
0046E210  |.  52            PUSH EDX                                 ; |hWnd 
0046E211  |.  FF15 E4624800 CALL DWORD PTR DS:[<&USER32.SetDlgItemIn>; \SetDlgItemInt 
0046E217  |.  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4] 
0046E21A  |.  0FB641 4C     MOVZX EAX,BYTE PTR DS:[ECX+4C] 
0046E21E  |.  50            PUSH EAX                                 ; /lParam 
0046E21F  |.  50            PUSH EAX                                 ; |wParam 
0046E220  |.  68 B1000000   PUSH 0B1                                 ; |Message = EM_SETSEL 
0046E225  |.  68 9D050000   PUSH 59D                                 ; |ControlID = 59D (1437.) 
0046E22A  |.  8B51 04       MOV EDX,DWORD PTR DS:[ECX+4]             ; | 
0046E22D  |.  52            PUSH EDX                                 ; |hWnd 
0046E22E  |.  FF15 90634800 CALL DWORD PTR DS:[<&USER32.SendDlgItemM>; \SendDlgItemMessageA 
0046E234  |.  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4] 
0046E237  |.  E8 A4FBFFFF   CALL Ekd5.0046DDE0 
0046E23C  |.  6A 01         PUSH 1                                   ; /Enable = TRUE 
0046E23E  |.  6A 01         PUSH 1                                   ; |/ControlID = 1 
0046E240  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ; || 
0046E243  |.  8B48 04       MOV ECX,DWORD PTR DS:[EAX+4]             ; || 
0046E246  |.  51            PUSH ECX                                 ; ||hWnd 
0046E247  |.  FF15 DC624800 CALL DWORD PTR DS:[<&USER32.GetDlgItem>] ; |\GetDlgItem 
0046E24D  |.  50            PUSH EAX                                 ; |hWnd 
0046E24E  |.  FF15 E8624800 CALL DWORD PTR DS:[<&USER32.EnableWindow>; \EnableWindow 
0046E254  |.  E9 CF000000   JMP Ekd5.0046E328 
0046E259  |>  90            NOP 
0046E25A  |.  90            NOP 
0046E25B  |.  90            NOP 
0046E25C  |.  90            NOP 
0046E25D  |.  90            NOP 
0046E25E  |.  90            NOP 
0046E25F  |.  817D 04 4FE04>CMP DWORD PTR SS:[EBP+4],Ekd5.0046E04F 
0046E266  |.  75 1E         JNZ SHORT Ekd5.0046E286 
0046E268  |>  90            NOP 
此处的判断 完全是为了消除一开始对话框会显示数字1 的BUG 
 
0046E269  |.  90            NOP 
0046E26A  |.  90            NOP 
0046E26B  |.  90            NOP 
0046E26C  |.  90            NOP 
0046E26D  |.  90            NOP 
0046E26E  |.  90            NOP 
0046E26F  |.  68 28694B00   PUSH Ekd5.004B6928                       ; /Text = "" 
这个地址内容就是空白 所以当你输入非法数字 (比方说 汉字 英文) 就会清空信息  由于前面设置了 CMP  所以 做了标记后 跳过这一段了 
0046E274  |.  68 9D050000   PUSH 59D                                 ; |ControlID = 59D (1437.) 
0046E279  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]             ; | 
0046E27C  |.  8B42 04       MOV EAX,DWORD PTR DS:[EDX+4]             ; | 
0046E27F  |.  50            PUSH EAX                                 ; |hWnd 
0046E280  |.  FF15 D8624800 CALL DWORD PTR DS:[<&USER32.SetDlgItemTe>; \SetDlgItemTextA 
 
 
 
第一个函数算是接口,我是接到了剧本指令的相应位置来调用的,因此跟蛇夫座与剧本接口处修改差不太多 
 
唯一不同的是,我这个接收文字机制全部在本引擎完成   获取了一个地址来存储信息  还需要配合剧本使用 
 
 
当然 配合剧本 也有个好处   设置场景名 (比方为主角家设置个性名称,额,这是指金庸群侠传的情况)  
 
总之 配合剧本是比较自由的 
 
另  附两个有用信息 
 
0046DC1C  /$  55            PUSH EBP 
0046DC1D  |.  8BEC          MOV EBP,ESP 
0046DC1F  |.  51            PUSH ECX 
0046DC20  |.  8B45 14       MOV EAX,DWORD PTR SS:[EBP+14] 
0046DC23  |.  8941 3C       MOV DWORD PTR DS:[ECX+3C],EAX 
0046DC26  |.  8B0D 00605000 MOV ECX,DWORD PTR DS:[506000] 
0046DC2C  |.  E8 3C3D0100   CALL Ekd5.0048196D 
0046DC31  |.  50            PUSH EAX                                 ; /人物 
0046DC32  |.  8B55 0C       MOV EDX,DWORD PTR SS:[EBP+C]             ; | 
0046DC35  |.  52            PUSH EDX                                 ; |上限 
0046DC36  |.  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4]             ; | 
0046DC39  |.  83C1 0C       ADD ECX,0C                               ; | 
0046DC3C  |.  E8 91F7FFFF   CALL Ekd5.0046D3D2                       ; \说话 
0046DC41  |.  50            PUSH EAX 
0046DC42  |.  8B45 10       MOV EAX,DWORD PTR SS:[EBP+10] 
0046DC45  |.  85C0          TEST EAX,EAX 
0046DC47  |.  74 0C         JE SHORT Ekd5.0046DC55 
0046DC49  |.  50            PUSH EAX                                 ; /Arg1 
0046DC4A  |.  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4]             ; | 
0046DC4D  |.  83C1 0C       ADD ECX,0C                               ; | 
0046DC50  |.  E8 E5F7FFFF   CALL Ekd5.0046D43A                       ; \Ekd5.0046D43A 
0046DC55  |>  8B4D F8       MOV ECX,DWORD PTR SS:[EBP-8] 
0046DC58  |.  51            PUSH ECX                                 ; /Arg2 
0046DC59  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]             ; | 
0046DC5C  |.  52            PUSH EDX                                 ; |Arg1 
0046DC5D  |.  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4]             ; | 
0046DC60  |.  E8 33F4FFFF   CALL Ekd5.0046D098                       ; \Ekd5.0046D098 
0046DC65  |.  50            PUSH EAX 
0046DC66  |.  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4] 
0046DC69  |.  8379 38 00    CMP DWORD PTR DS:[ECX+38],0 
0046DC6D  |.  74 12         JE SHORT Ekd5.0046DC81 
0046DC6F  |.  83C1 0C       ADD ECX,0C 
0046DC72  |.  E8 60F8FFFF   CALL Ekd5.0046D4D7 
0046DC77  |.  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4] 
0046DC7A  |.  C741 38 00000>MOV DWORD PTR DS:[ECX+38],0 
0046DC81  |>  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4] 
0046DC84  |.  83C1 0C       ADD ECX,0C 
0046DC87  |.  E8 6DF7FFFF   CALL Ekd5.0046D3F9 
0046DC8C  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C] 
0046DC8F  |.  8BE5          MOV ESP,EBP 
0046DC91  |.  5D            POP EBP 
0046DC92  \.  C2 1000       RETN 10 
这个是买入卖出对话框的修改 
 
特别注明一点 
0046DC26  |.  8B0D 00605000 MOV ECX,DWORD PTR DS:[506000] 
DATA信息本人已经不用,而采用指针变量0指向首地址,此处需根据实际情况处理 
 
004DC900    55              PUSH EBP 
004DC901    8BEC            MOV EBP,ESP 
004DC903    51              PUSH ECX 
004DC904    8B55 08         MOV EDX,DWORD PTR SS:[EBP+8] 
004DC907    53              PUSH EBX 
004DC908    33DB            XOR EBX,EBX 
004DC90A    83FB 49         CMP EBX,49 
004DC90D    73 0D           JNB SHORT Ekd5.004DC91C 
004DC90F    8B02            MOV EAX,DWORD PTR DS:[EDX] 
004DC911    8901            MOV DWORD PTR DS:[ECX],EAX 
004DC913    83C1 04         ADD ECX,4 
004DC916    83C2 04         ADD EDX,4 
004DC919    43              INC EBX 
004DC91A  ^ EB EE           JMP SHORT Ekd5.004DC90A 
004DC91C    5B              POP EBX 
004DC91D    8BE5            MOV ESP,EBP 
004DC91F    5D              POP EBP 
004DC920    C2 0400         RETN 4 
 
这个函数就是复制信息 
 
而 对话框的二进制信息  大家可以在EXESCOPE等等中间 设置好 
 
主要是设置 XY 坐标等等 还有就是 取消这个文字 我改成了 确定 
 
不需要的控件  设置大小 X Y =0  或者 坐标 超出范围就可以了 
 
[ 本帖最后由 砖家叫兽 于 2012-2-21 17:49 编辑 ] 
 |