标题: 基于STAR 5.6 、5.7 的[原创武将] 修改, [10月25日更新] 修正dll 用于5.7 版时可选兵种范围大于53 时被忽略的一个BUG,感谢‘狂煞∑小星’提供!
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-3-12 22:41 资料 短消息 只看该作者
基于STAR 5.6 、5.7 的[原创武将] 修改

基于STAR 5.6 、5.7 的[原创武将] 修改

    支持创建6 名原创武将并且能够由玩家自由设定五围能力、头像、兵种,
    另一个方面MOD 作者则可以根据玩家所选择的兵种职业来为原创武将指定不同的R、S 造型、必杀与成长方向等等。
    由外部DLL 链接实现,游戏引擎只需少量修改(5.7 与 5.6 版的修改方法完全一样)


   
    *. 注: 1. 通过改造[71H: 特效请求] 指令, 特效值指定为原创武将的DATA 编号(若指定大于1023 的值会导致指令不被执行,
               MOD 作者可以自由定制这些值的处理)。

            2. 使用了[4050]、[4051]号整型变量来设置8 种玩家可选兵种职业,数值为修改器里看到的值加1,每一字节表示一种
               可选职业(如: 轻步兵的兵种编号为3,则这里应设置为4),若不指定可选职业则默认为群雄玩家将无其它选择。

            3. [71H: 特效请求] 指令处理函数返回时会在[4050]号整型变量返回玩家选择的职业项目,MOD作者可以测试这个变量
               的结果,若为0 表示玩家选择的是第一种职业(如:剧本设置了四种可选职业分别为群雄、轻骑兵、弓弩手和刺客
               当71H 指令返回后4050 号整型变量的值为1 表示玩家选择的职业为轻骑兵)。

            4. [71H: 特效请求] 指令处理函数返回时会在[4051]号整型变量返回原创武将的性别(0表示男性,1表示女性),MOD
               作者可以使用[77H: 变量运算] 指令针对[4051]号整型变量修改战场特殊形象编号。如:77: 整型变量 4051 += 5,
               若原创为男性则战场特殊形象编号将被指定为5,若原创为男性则战场特殊形象编号将被指定为6。

            5. 通过修改创建[原创武将] 对话框时压入的三个参数可以对自创武将能力范围加以控制,数据长度为有符号单字节:
               0051814B   6A 5A        push   5A        ; 极限能力值(取值范围:0 ~ 100)对应UE 地址:  0xE814C
               0051814D   6A 46        push   46        ; 标准能力值(取值范围:0 ~ 90 )对应UE 地址:  0xE814E
               0051814F   6A 28        push   28        ; 可分配点数(取值范围:标准+1 ~ 120)对应UE 地址:  0xE8150

            6. 剧本中少不免会使用武将名来作一些编排(最明显的就是S 剧本的[19H: 胜利条件]指令,如:“失败条件:XXX死亡
               ,若XXX 为原创武将时MOD 作者将无法知道玩家实际的输入的名字),所以为剧本中一些指令者都作了格式化处理
               只要剧本指令内容中包括*.x (x 的取值范围为1 ~6 对应1 ~6号原创武将)都可以自动转换为真实武将名。

               通过测试的指令包括:
               [12H: 选择框]
               [14H: 对话](如:&*.2\n你好!我的名字是*.2。)
               [15H: 战场对话2]
               [16H: 信息]
               [17H: 场所名]
               [18H: 事件名设定]
               [19H: 胜利条件]
               [1AH: 显示胜利条件]
               [2CH: 地图文字显示]
               [63H: 单挑对话]
               [67H: 章名]
               [69H: 旁白]
               (若测试中发现还有其它指令无法格式化的话请各位回复本贴子)

            7. 由于游戏程序不会主动刷新武将SAV 映射中的武将名和R 剧本武将名这两个字段,所以使用了一个name.e5 的文件
               来保存玩家输入的人物姓名,在游戏存档时写入到这个文件,读档时则先从data.e5 中读出存档中所有原创武将的姓
               名到SAV 映射,之后再从name.e5 文件中读入武将原创名,这样做目的是防止A 存档中有DATA 号XX 武将为原创武将
               ,而B 存档没有XX 号原创武将导致的武将名显示错误。

            8. 原创武将的真彩头像男女各10张,编号安排到600 (908 - 301 - 7) 处,所以Tou.dll 文件要增加头像了,与之对应
               的小头像 Face.e5 文件则应该增加导入到608 ~ 627 处

               对于Tou.dll 由于是借用别人MOD 里的我没有BMP 文件而一张一张重新导入十分浪费时间,我的做法是使用ResHacker
               将DLL 文件中的所有位图全部导出再修改资源脚本后重新编译,若想使用这种方法可以下载《源代码与旧版修改说明》
               真彩头像工程文件(编写语言为Win32asm)或者到岱大新引擎发布贴中下载VC 工程。

            9. 使用[71H: 特效请求] 指令之前必须先使用[3BH: 武将加入],另外本系统是基于五围能力单数显示的,大家测试代码
               前请先将引擎改为单数显示。

            10. STAR 5.7 版扩展了兵种数量到80种,如果用于5.6 版时要对dll 文件的兵种可选范围进行调整
                 源代码:           mov   dbMaxOccupCount, 80      ; 默认为5.7 版使用
                 反汇编形式:     C705 XXXXXXXX 50000000         mov     dword ptr [XXXXXXXX], 50
                 UE地址:          0x406    50(十进制:80)STAR5.6 版应改为 35(十进制:53)

                                                                                                                                  (详细语法请参照剧本事例)

[ 本帖最后由 蛇夫座 于 2010-10-25 20:20 编辑 ]


图片附件: _01.jpg (2010-10-4 14:57, 41.54 K)



图片附件: _02.jpg (2010-10-4 14:57, 28.19 K)



图片附件: _03.jpg (2010-10-4 14:57, 66.37 K)



附件: _test2文件与修改说明.rar (2010-10-25 20:20, 5.74 K)
该附件被下载次数 344


附件: 测试引擎与必备文件.rar (2010-10-25 20:20, 489.89 K)
该附件被下载次数 520


附件: 扩展过的Face文件.part1.rar (2010-10-4 14:57, 975 K)
该附件被下载次数 473


附件: 扩展过的Face文件.part2.rar (2010-10-4 14:57, 34.9 K)
该附件被下载次数 388


附件: Tou.part01.rar (2010-10-4 14:57, 975 K)
该附件被下载次数 354


附件: Tou.part02.rar (2010-10-4 14:57, 975 K)
该附件被下载次数 341


附件: Tou.part03.rar (2010-10-4 14:57, 975 K)
该附件被下载次数 358


附件: Tou.part04.rar (2010-10-4 14:57, 975 K)
该附件被下载次数 346


附件: Tou.part05.rar (2010-10-4 14:57, 507.45 K)
该附件被下载次数 309


附件: 全部源代码与旧版修改说明.rar (2010-10-25 20:20, 173.8 K)
该附件被下载次数 347


附件: 武将能力调整程序附源代码.rar (2010-10-18 17:30, 8.96 K)
该附件被下载次数 309

本帖最近评分记录
godtype 2010-3-13 08:04 +100 先奖励,慢慢再看。


顶部
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-3-12 22:45 资料 短消息 只看该作者
;--------------------------------------------------------------------------------------------------------------------
第一部分修改: 装配 _test2.bin 文件

    1. 运行LordPE ==> [选项] ==> 在[PE 编辑器] 一栏中选上[区段表:自动修正镜像大小] ==> [确定]

    2. 点[PE编辑器] ==> 打开Ekd5.exe ==> [区段] ==> 右键 ==> [从磁盘载入段] ==> 打开 _test2.bin 文件
       ==>   提示:区段载入成功 :)


    3. 在[_test2.b] 区块上右键 ==> [编辑区段] ==> 将[名称] 改为:.test2

    4. 点[标志] 傍边的[ ..] 按钮设置[区段标志] ==> 取消[包含未初始化数据] 的勾选 ==> [确定]
       (此时[标志] 值为:E0000060) ==> [保存] ==> 退出LordPE


;--------------------------------------------------------------------------------------------------------------------

第二部分修改: 反汇编修改

    (1). 游戏启动成功时装载DkOriPer.dll

       004755CF    - E9 042B0A00   jmp     005180D8

    (2). 游戏退出时卸载DkOriPer.dll

       00409239    - E9 BAEE1000   jmp     005180F8

    (3). 更改[武将情报]时真彩头像显示控制

       00407660     /E9 00010000   jmp     00407765

    (4). 注册[71H: 特效请求] 指令处理函数入口地址

       拷贝二进数据于00410C02 处: 10 81 51 00

    (6). 原创武将名存档写入处理

       0041B22E    - E9 39CF0F00   jmp     0051816C

    (7). 原创武将名存档读出处理

       0041ADC1    - E9 D4D30F00   jmp     0051819A

    (8). 从EEX 剧本映射中读取文字格式化处理

       004179C3     80FA 2A       |cmp     dl, 2A
       004179C6     75 06         |jnz     short 004179CE
       004179C8     FF15 A0805100 |call    dword ptr [5180A0]
       004179CE     80FA 20       cmp     dl, 20
       004179D1     7D 35         jge     short 00417A08
       004179D3     80FA 0A       cmp     dl, 0A
       004179D6     75 12         |jnz     short 004179EA
       004179D8     90            nop
       004179D9     90            |nop
       004179DA     90            nop

         二进制数据:

         80 FA 2A 75 06 FF 15 A0 80 51 00 80 FA 20 7D 35 80 FA 0A 75 12 90 90 90

    (9). [14H: 对话] 指令武将真彩头像显示格式化处理

       004137F3    80F9 0A           ||cmp     cl, 0A
       004137F6    74 26             ||je      short 0041381E
       004137F8    80F9 2A           ||cmp     cl, 2A
       004137FB    75 06             ||jnz     short 00413803
       004137FD    FF15 A4805100     call    dword ptr [5180A4]
       00413803    8B55 F4           mov     edx, dword ptr [ebp-C]
       00413806    888C2A F0FBFFFF   mov     byte ptr [edx+ebp-410], cl
       0041380D    FF45 F4           ||inc     dword ptr [ebp-C]


         二进制数据:

         80 F9 0A 74 26 80 F9 2A 75 06 FF 15 A4 80 51 00 8B 55 F4 88 8C 2A F0 FB FF FF FF 45 F4

    (10). [1AH: 显示胜利条件] 指令内容格式化处理

       0044BF23    0FB602          ||movzx   eax, byte ptr [edx]
       0044BF26    84C0            test    al, al
       0044BF28    74 37           je      short 0044BF61
       0044BF2A    3C 2A           cmp     al, 2A
       0044BF2C    75 06           jnz     short 0044BF34
       0044BF2E    FF15 A8805100   call    dword ptr [5180A8]
       0044BF34    3C 0A           ||cmp     al, 0A
       0044BF36    75 0C           jnz     short 0044BF44
       0044BF38    90              nop


         二进制数据:

         0F B6 02 84 C0 74 37 3C 2A 75 06 FF 15 A8 80 51 00 3C 0A 75 0C 90

    (11). [18H: 事件名设定] 指令内容格式化处理
       0040BB4B   B8 28114A00     mov   eax, 004A1128
       0040BB50   50              push  eax
       0040BB51   FF75 08         push  dword ptr [ebp+8]
       0040BB54   50              push  eax
       0040BB55   E8 4BBE0000     call  004179A5
       0040BB5A   90              nop
       0040BB5B   90              nop
       0040BB5C   90              nop
       0040BB5D   90              nop
       0040BB5E   90              nop
       0040BB5F   90              nop
       0040BB60 |.E8 AAA90600     call  0047650F
       0040BB65   90              nop
       0040BB66   90              nop
       0040BB67   90              nop
       0040BB68   90              nop
       0040BB69   90              nop
       0040BB6A   90              nop
       0040BB6B   90              nop


         二进制数据:

         B8 28 11 4A 00 50 FF 75 08 50 E8 4B BE 00 00 90 90 90 90 90 90 E8 AA A9 06 00 90 90 90 90 90 90
         90

;-----------------------------------------------------------------------------------------------------------

[ 本帖最后由 蛇夫座 于 2010-10-4 15:02 编辑 ]


顶部
性别:未知-离线 雨影`

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 79
编号 298791
注册 2008-11-14


发表于 2010-3-12 22:46 资料 短消息 只看该作者
頂啊~~這個就無敵了
顶部
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-3-12 22:47 资料 短消息 只看该作者
;-----------------------------------------------------------------------------------------------------------
DkOriPer.dll 与游戏引擎接口的数据说明,非常重要!


    *. 注: 1. 这部分数据位于 _DkOriPerInitInsVar 函数内,当 DkOriPer.dll 被装入内存时被初始化为指定值,
               游戏改动导致无法自创武将、读写自创武将名失败、格式化自创武将名失败等时参考修改
            2. 提供DkOriPer.dll 源代码下载参考
            3. 源代码未经太大改动,未注释部分请参考旧版文本

mov     ecx, 004B6A60H
mov     eax, dword ptr [ecx]  ; 主模块句柄
mov hInstanceMain, eax
mov     eax, dword ptr [ecx+8H]  ; 主窗口句柄
mov hWinMain, eax
mov ecx, 500EF5H   ; TouDll模块句柄存放地址
mov eax, [ecx]
mov hTouDll, eax
mov ecx, 4CEA00H   ; 武将SAV映射指针
mov eax, [ecx]
mov lpSavImage, eax
mov lpNameImage, 518010H  ; 用于检索新建武将以及格式化武将名
mov _48BEA8H, 48BEA8H  ; 兵种名地址数组
mov     eax, 505F48H   ; 4050号整型变量地址
mov lpGalVar_4050, eax
mov _4179B4H, 4179B4H  ; 从EEX 剧本映射中读取文字格式化处理时成功返回
mov _417A08H, 417A08H  ; 从EEX 剧本映射中读取文字格式化处理时非自创武将返回
mov _41383CH, 41383CH  ; [14H: 对话] 指令武将真彩头像显示格式化处理时成功返回
mov _413801H, 413801H  ; [14H: 对话] 指令武将真彩头像显示格式化处理时非自创武将返回
mov _44BEF5H, 44BEF5H  ; [1AH: 显示胜利条件] 指令内容格式化处理时成功返回
mov _44BF44H, 44BF44H  ; [1AH: 显示胜利条件] 指令内容格式化处理时非自创武将返回

         反汇编形式:

B9 606A4B00              mov     ecx, 4B6A60
8B01                     mov     eax, dword ptr [ecx]
A3 26300502              mov     dword ptr [2053026], eax
8B41 08                  mov     eax, dword ptr [ecx+8]
A3 2A300502              mov     dword ptr [205302A], eax
B9 F50E5000              mov     ecx, 500EF5
8B01                     mov     eax, dword ptr [ecx]
A3 2E300502              mov     dword ptr [205302E], eax
B9 00EA4C00              mov     ecx, 4CEA00
8B01                     mov     eax, dword ptr [ecx]
A3 32300502              mov     dword ptr [2053032], eax
C705 36300502 10805100   mov     dword ptr [2053036], 518010
C705 3A300502 A8BE4800   mov     dword ptr [205303A], 48BEA8
B8 485F5000              mov     eax, 505F48
A3 3E300502              mov     dword ptr [205303E], eax
C705 56300502 B4794100   mov     dword ptr [2053056], 4179B4
C705 5A300502 087A4100   mov     dword ptr [205305A], 417A08
C705 5E300502 3C384100   mov     dword ptr [205305E], 41383C
C705 62300502 01384100   mov     dword ptr [2053062], 413801
C705 66300502 F5BE4400   mov     dword ptr [2053066], 44BEF5
C705 6A300502 44BF4400   mov     dword ptr [205306A], 44BF44

;-----------------------------------------------------------------------------------------------------------

_test2.bin 内容文件说明:

    *. 注: 1. 游戏改动导致无法自创武将、读写自创武将名失败、格式化自创武将名失败等时参考修改

一: 初始化原创武将检索区域内存,增加DkOriPer.dll 名字符串,初始化导入函数地址表
    (00 数据进入游戏时会被映射)

00518000  CE E4 BD AB BC EC CB F7 C7 F8 D3 F2 CA BC 00 00  武将检索区域始..
00518010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00518020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00518030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00518040  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00518050  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00518060  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00518070  44 6B 4F 72 69 50 65 72 2E 64 6C 6C 00 00 00 00  DkOriPer.dll....
00518080  B5 BC C8 EB BA AF CA FD B5 D8 D6 B7 B1 ED 00 00  导入函数地址表..
00518090  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
005180A0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
005180B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
005180C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
005180D0  B4 FA C2 EB C7 F8 00 00                          代码区..

二: 反汇编代码部分

    (1). 游戏启动成功时装载DkOriPer.dll

005180D8    68 70805100     push    00518070                               ; ASCII "DkOriPer.dll"
005180DD    FF15 24614800   call    dword ptr [<&KERNEL32.LoadLibraryA>]   ; kernel32.LoadLibraryA
005180E3    BA 90805100     mov     edx, 00518090
005180E8    8902            mov     dword ptr [edx], eax
005180EA    68 A74B4700     push    00474BA7                               ; 入口地址
005180EF  - E9 E0D4F5FF     jmp     004755D4

    (2). 游戏退出时卸载DkOriPer.dll

005180F8    B8 90805100     mov     eax, 00518090
005180FD    FF30            push    dword ptr [eax]
005180FF    FF15 1C614800   call    dword ptr [<&KERNEL32.FreeLibrary>]    ; kernel32.FreeLibrary
00518105  - E9 F534F1FF     jmp     0042B5FF

    (3). [71H: 特效请求] 指令处理函数

00518110    55              push    ebp
00518111    8BEC            mov     ebp, esp
00518113    83C4 FC         add     esp, -4
00518116    6A 04           push    4
00518118    8B4D 08         mov     ecx, dword ptr [ebp+8]
0051811B    E8 D702F0FF     call    004183F7
00518120    3D 00000080     cmp     eax, 80000000
00518125    75 02           jnz     short 00518129
00518127    EB 34           jmp     short 0051815D
00518129    3D FF030000     cmp     eax, 3FF
0051812E    76 02           jbe     short 00518132
00518130    EB 2B           jmp     short 0051815D
00518132    8945 FC         mov     dword ptr [ebp-4], eax
00518135    B8 90805100     mov     eax, 00518090
0051813A    B9 03000000     mov     ecx, 3
0051813F    C1E1 02         shl     ecx, 2
00518142    03C1            add     eax, ecx
00518144    8B00            mov     eax, dword ptr [eax]
00518146    90              nop
00518147    0BC0            or      eax, eax
00518149    74 12           je      short 0051815D
0051814B    6A 5A           push    5A
0051814D    6A 46           push    46
0051814F    6A 28           push    28
00518151    FF75 FC         push    dword ptr [ebp-4]
00518154    FFD0            call    eax
00518156    B8 01000000     mov     eax, 1
0051815B    EB 05           jmp     short 00518162
0051815D    B8 05000000     mov     eax, 5
00518162    C9              leave
00518163    C2 0400         retn    4

    (4). 原创武将名存档写入处理

0051816C    FF75 08         push    dword ptr [ebp+8]
0051816F    E8 566DFBFF     call    004CEECA
00518174    B8 90805100     mov     eax, 00518090
00518179    B9 02000000     mov     ecx, 2
0051817E    C1E1 02         shl     ecx, 2
00518181    03C1            add     eax, ecx
00518183    8B00            mov     eax, dword ptr [eax]
00518185    09C0            or      eax, eax
00518187    74 05           je      short 0051818E
00518189    FF75 08         push    dword ptr [ebp+8]
0051818C    FFD0            call    eax
0051818E  - E9 A330F0FF     jmp     0041B236

    (5). 原创武将名存档读出处理

0051819A    B8 90805100     mov     eax, 00518090
0051819F    B9 01000000     mov     ecx, 1
005181A4    C1E1 02         shl     ecx, 2
005181A7    03C1            add     eax, ecx
005181A9    8B00            mov     eax, dword ptr [eax]
005181AB    09C0            or      eax, eax
005181AD    74 05           je      short 005181B4
005181AF    FF75 08         push    dword ptr [ebp+8]
005181B2    FFD0            call    eax
005181B4  - E9 9971FBFF     jmp     004CF352

    (6). 005181BA 以后未使用,可自由发挥

;-----------------------------------------------------------------------------------------------------------


[ 本帖最后由 蛇夫座 于 2010-10-4 15:07 编辑 ]
顶部
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-3-12 22:48 资料 短消息 只看该作者
备用

[ 本帖最后由 蛇夫座 于 2010-10-4 15:06 编辑 ]
顶部
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-3-12 22:48 资料 短消息 只看该作者
备用

[ 本帖最后由 蛇夫座 于 2010-10-4 15:05 编辑 ]
顶部
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-3-12 22:49 资料 短消息 只看该作者
备用

[ 本帖最后由 蛇夫座 于 2010-10-4 15:05 编辑 ]
顶部
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-3-12 22:49 资料 短消息 只看该作者
备用

[ 本帖最后由 蛇夫座 于 2010-10-4 15:05 编辑 ]
顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2010-3-13 08:40 资料 个人空间 短消息 只看该作者
data.e5用这个就可以了,无需要另外改一个出来。
PUSH Ekd5a.0048BB60                      ; |Arg1 = 0048BB60 ASCII "DATA.E5"
文中有好多字母+“)”的地方变成了表情了,改一改,加个空格之类的。

消化这些要些时间啊,看一下Q的留言,有空帮我搞。
顶部
性别:男-离线 tydea
(tydea)

Rank: 4
组别 士兵
级别 裨将军
功绩 3
帖子 337
编号 336036
注册 2009-8-23
来自 圣诞岛
家族 轩辕学院


发表于 2010-3-13 09:51 资料 个人空间 短消息 只看该作者
好帖,顶
顶部
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-3-14 13:45 资料 短消息 只看该作者
补充一下:
刚才在帮论坛上的朋友试改一下引擎,发现他的资源数据已经修改过并且区块的空间基本用完了但又未超过原来的文件对齐大小,
按照我的方法转存资源区块后再装配PE 文件的话可能无法使新的资源区块物理大小增大,从而无法迁移数据。
其实解决方法很简单,就是让资源区块增大就可以。
1. 运行Stud_PE ==> 打开Ekd5.exe ==> 点[区段] ==> 在列表框最后一个区块[右键] ==> [New Section]
       ==> [原始大小]与[虚拟大小]设置为一样, 选择[用 NULL 字节填充区段] ==> [添加]  (图:_01)
2. 运行LordPE ==> [PE 编辑器] ==> 打开已添加区块的引擎文件 ==> 点[区段] ==> 在刚新增的区块上[右键]
       ==> [清除区段] ==> 在最后一个区块(这时应该为 .rsrc) [右键] ==> [编辑区块]
       ==> 调整[虚拟大小]与[物理大小]为原来的大小 + 第一步新添加区块的大小 ==> [确定](图:_02)


图片附件: _01.jpg (2010-3-14 13:45, 40.4 K)



图片附件: _02.jpg (2010-3-14 13:45, 56.25 K)

顶部
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-3-15 06:47 资料 短消息 只看该作者
回复 #12 cronnin 的帖子

可以更换啊,需要重新导入一下或者使用我说的方法重新编译
顶部
性别:未知-离线 GA_Frank

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 3
帖子 283
编号 175975
注册 2007-6-13


发表于 2010-3-15 13:07 资料 短消息 只看该作者
想问下楼主可不可以实现由MOD制作人固定新人物的‘姓’?
假如要做二代武将的话…………玩家起一个姓不同的就比较囧了……
顶部
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-3-15 20:29 资料 短消息 只看该作者
回复 #14 GA_Frank 的帖子

可以这样改代码:
1. 将你想要的武将姓氏的ASCII编码写到一个全局变量作为参数
2. 减少编辑框最大可输入字符数
3. 修改[确定]按钮响应函数,在获取玩家输入前先将武将姓氏的ASCII编码拷至缓冲区,
  再将当前缓冲区指针作为参数调用USER32.GetWindowTextA
顶部
性别:未知-离线 david8593

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 56
编号 87374
注册 2006-10-15


发表于 2010-3-25 17:14 资料 短消息 只看该作者
用大大所提供的引擎是不是 不用再弄ob修改?
顶部
性别:男-离线 魏王孟德
(太祖武皇帝)

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 2
帖子 229
编号 289050
注册 2008-7-29


发表于 2010-3-27 23:02 资料 个人空间 短消息 只看该作者
支持啊,自创武将,顶一个
顶部
性别:未知-离线 Axie89

Rank: 4
组别 士兵
级别 牙门将军
功绩 6
帖子 559
编号 312058
注册 2009-2-21
家族 瓦岗寨


发表于 2010-5-4 20:12 资料 短消息 只看该作者
夫大哥啊.你得先告诉我们怎么增加exe的对话框啊..`我搞了几个小时拉.阴公.~
顶部
性别:男-离线 天翼之神
(信心第一, 成功跟随)

Rank: 4
组别 士兵
级别 牙门将军
功绩 5
帖子 546
编号 281131
注册 2008-6-7
家族 圣剑兄弟会


发表于 2010-9-4 03:41 资料 短消息 只看该作者 QQ
这个帖子看的有点晕, 慢慢研究下, 不太懂反汇编.
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-9-22 11:52 资料 个人空间 短消息 只看该作者 QQ
蛇夫同学啊,能不能做个5.7的,让我们这些不懂OB的同学能在5.7里实现自创武将,最好多扩展几个职业供选择,再多加点点数,50点差不多了吧,40感觉少了点。

[ 本帖最后由 狂煞∑小星 于 2010-9-22 15:18 编辑 ]
顶部
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-9-22 14:22 资料 短消息 只看该作者
回复 #20 狂煞∑小星 的帖子

顶楼已更新~~,由外部DLL 链接实现,游戏引擎只需少量修改(5.7 与 5.6 版的修改方法完全一样)

修改原理是:在DkOriPer.dll 中编写代码并预先填写好所涉及的引擎内存地址,在游戏主程序
                  运行时使用LoadLibrary  函数装入DLL,再使用GetProcAddress 函数动态获取
                  所需导出函数地址,当剧本指令触发时引擎线执行线程会转到DLL  内部执行代
                  码,DLL 与EXE 一样也是PE 文件同样可以有资源数据

[ 本帖最后由 蛇夫座 于 2010-10-4 15:37 编辑 ]
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-9-22 15:17 资料 个人空间 短消息 只看该作者 QQ
好吧,QQ被盗了,请求再加次你的QQ,OK?
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-9-22 23:22 资料 个人空间 短消息 只看该作者 QQ
好像不能用唉。求解,自创武将时出现异常退出。
顶部
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-9-23 10:35 资料 短消息 只看该作者
回复 #23 狂煞∑小星 的帖子

顶楼已更新~~,由外部DLL 链接实现,游戏引擎只需少量修改(5.7 与 5.6 版的修改方法完全一样)



修改原理是:在DkOriPer.dll 中编写代码并预先填写好所涉及的引擎内存地址,在游戏主程序
                  运行时使用LoadLibrary  函数装入DLL,再使用GetProcAddress 函数动态获取
                  所需导出函数地址,当剧本指令触发时引擎线执行线程会转到DLL  内部执行代
                  码,DLL 与EXE 一样也是PE 文件同样可以有资源数据

[ 本帖最后由 蛇夫座 于 2010-10-4 15:37 编辑 ]
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-9-23 16:23 资料 个人空间 短消息 只看该作者 QQ
还差哪些工作呢?
顶部
性别:男-离线 天翼之神
(信心第一, 成功跟随)

Rank: 4
组别 士兵
级别 牙门将军
功绩 5
帖子 546
编号 281131
注册 2008-6-7
家族 圣剑兄弟会


发表于 2010-9-27 08:57 资料 短消息 只看该作者 QQ
看来很麻烦啊, 期待5.7版修改法.
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-9-27 22:44 资料 个人空间 短消息 只看该作者 QQ
好久都不能上轩辕了,提个建议吧,希望下次来的时候蛇夫同学能改好它。
1.应该加个头像的变量,根据大头像设置小头像,否则选择了大头像,小头像还是原来的,囧。
2.男的和女的也应该搞个变量,否则男的形象是男的,女的形象是男的。。。
3.职业个数应该再增加点,4个有点少
4.分配点数应当适量加多一些
5.引擎加个显示人物特技的系统,自创主角加入绝招设定,这样自创的主角就有自己的绝招了。
当然,实现不了也罢了,要求不能太高,是吧,呵呵。
顶部
性别:男-离线 天翼之神
(信心第一, 成功跟随)

Rank: 4
组别 士兵
级别 牙门将军
功绩 5
帖子 546
编号 281131
注册 2008-6-7
家族 圣剑兄弟会


发表于 2010-9-28 23:00 资料 短消息 只看该作者 QQ
希望楼主能实现更多的功能, 我支持下.
PS: 我看不太懂代码, 但是能不能把自创武将弄成DATA里另外的一些武将, 而不是0号武将呢?
顶部
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-9-28 23:00 资料 短消息 只看该作者
回复 #27 狂煞∑小星 的帖子

回复29楼:
          可以指定0~1023任一个武将,还可以同时创作6个


顶楼已更新~~,由外部DLL 链接实现,游戏引擎只需少量修改(5.7 与 5.6 版的修改方法完全一样)


修改原理是:在DkOriPer.dll 中编写代码并预先填写好所涉及的引擎内存地址,在游戏主程序
                  运行时使用LoadLibrary  函数装入DLL,再使用GetProcAddress 函数动态获取
                  所需导出函数地址,当剧本指令触发时引擎线执行线程会转到DLL  内部执行代
                  码,DLL 与EXE 一样也是PE 文件同样可以有资源数据

[ 本帖最后由 蛇夫座 于 2010-10-4 15:36 编辑 ]
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-9-29 20:41 资料 个人空间 短消息 只看该作者 QQ
好的,支持下,希望尽快完成5.7的,或者把方法告诉我吧,我来做做看哈。
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-10-1 09:10 资料 个人空间 短消息 只看该作者 QQ
不好意思哈,QQ设成拒绝加好友了,重加一遍吧,顺便祝国庆快乐!


顶部

正在浏览此帖的会员 - 共 1 人在线




当前时区 GMT+8, 现在时间是 2025-7-31 13:46
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.019718 second(s), 10 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP