2014-8-2 14:09
墨叶
有難度的MOD顯示當前難度
好多MOD都有難度選擇。
但是玩家在玩的過程中想知道當前難度很不方便。能否在遊戲中設定方便查找難度
2014-8-2 14:43
szwd1997
强力人物往前冲,被围殴致死,这是噩梦难度。
一般人物往前冲,被围殴致死,这是困难难度。
一般人物往前冲,被围殴喘气,这是一般难度。
一般人物往前冲,横刀立马,秒杀一切,这是简单难度。
2014-8-2 15:01
godtype
可以考虑将SL界面里面的LV值改成难度说明
2014-8-2 15:46
冰麒麟
回复 #3 godtype 的帖子
我曾经试过,但失败了。不知要怎么改,最后只好将LV改成战役两个字:hz1005:
[color=Silver][[i] 本帖最后由 冰麒麟 于 2014-8-2 15:47 编辑 [/i]][/color]
2014-8-2 16:30
godtype
回复 #4 冰麒麟 的帖子
0041ABD0 |> 8B55 08 |MOV EDX,DWORD PTR SS:[EBP+8]
0041ABD3 |. 8B42 08 |MOV EAX,DWORD PTR DS:[EDX+8]
0041ABD6 |. 8B8D F8FEFFFF |MOV ECX,DWORD PTR SS:[EBP-108]
0041ABDC |. 837C81 50 00 |CMP DWORD PTR DS:[ECX+EAX*4+50],0
0041ABE1 |. 7E 28 |JLE SHORT 0041AC0B
0041ABE3 |. 8B55 08 |MOV EDX,DWORD PTR SS:[EBP+8]
0041ABE6 |. 8B42 08 |MOV EAX,DWORD PTR DS:[EDX+8]
0041ABE9 |. 8B8D F8FEFFFF |MOV ECX,DWORD PTR SS:[EBP-108]
0041ABEF |. 8B5481 50 |MOV EDX,DWORD PTR DS:[ECX+EAX*4+50]
0041ABF3 |. 52 |PUSH EDX ; /<%2d>
0041ABF4 |. 68 80B54800 |PUSH 0048B580 ; |Format = "Lv.%2d"
0041ABF9 |. 8D85 2CFFFFFF |LEA EAX,DWORD PTR SS:[EBP-D4] ; |
0041ABFF |. 50 |PUSH EAX ; |s
0041AC00 |. FF15 C0624800 |CALL DWORD PTR DS:[<&USER32.wsprintfA>] ; \wsprintfA
0041AC06 |. 83C4 0C |ADD ESP,0C
0041AC09 |. EB 15 |JMP SHORT 0041AC20
0041AC0B |> 68 88B54800 |PUSH 0048B588 ; /Format = "--"
0041AC10 |. 8D8D 2CFFFFFF |LEA ECX,DWORD PTR SS:[EBP-D4] ; |
0041AC16 |. 51 |PUSH ECX ; |s
0041AC17 |. FF15 C0624800 |CALL DWORD PTR DS:[<&USER32.wsprintfA>] ; \wsprintfA
0041AC1D |. 83C4 08 |ADD ESP,8
0041AC20 |> EB 29 |JMP SHORT 0041AC4B
这段是显示的,+50的地方就是存放等级值
0041B248 |. 8B0D 606F4900 MOV ECX,DWORD PTR DS:[496F60]
0041B24E |. 8841 01 MOV BYTE PTR DS:[ECX+1],AL
这里AL是存档时显示的平均/0号等级,不过引擎可能不同
2014-8-2 18:16
冰麒麟
回复 #5 godtype 的帖子
比如我用一个整型变量来判断难度。然后在0041ABF4这里跳出去测试,再push不同的名称,比如困难2%d、休闲2%d等等。
但是这样改,所有存档都会显示同一个难度名。而不是在哪个难度下存的档显示哪一个难度名。
虽然极少人会同时打几个难度,但毕竟不完美。应该要怎么改呢。
另一个bug。我把平均/0号等级值改成了剧本数加1来表示战役数如下
0041B236 . A1 606F4900 MOV EAX,DWORD PTR DS:[496F60]
0041B23B . C600 05 MOV BYTE PTR DS:[EAX],5
0041B23E . 0FB60D 77074B>MOVZX ECX,BYTE PTR DS:[4B0777]
0041B245 . D1E9 SHR ECX,1
0041B247 . 41 INC ECX
0041B248 . 90 NOP
0041B249 . 8848 01 MOV BYTE PTR DS:[EAX+1],CL
0041B24C . B9 3CC64A00 MOV ECX,Ekd5.004AC63C
0041B251 . E8 5A06FFFF CALL Ekd5.0040B8B0
战斗结束存档的话,会读取的下一关的剧本数。比如在打完第1关的时候,存档名称就会变成第2关战斗结束,这样。
[color=Silver][[i] 本帖最后由 冰麒麟 于 2014-8-2 18:18 编辑 [/i]][/color]
2014-8-2 21:48
godtype
回复 #6 冰麒麟 的帖子
存档那里改用你自定的整形变量,战斗结束时存档的确是下一关的。
显示部分不能再用整形,因为这个时候的整形只是一个固定的数值,不会因应你的存档内容来变化。
只能从+50里面读出数据,这个数据你只要在存档时设置好就可以了,所以修改这个功能前的旧档都肯定显示有误,要重新存一次才显示正常。
2014-8-3 09:57
冰麒麟
回复 #7 godtype 的帖子
请问如何将难度+整型变型存到+50呢?
另外0041A65D . 68 1FB54800 PUSH Ekd5.0048B51F 原LV.99
这个地方要改吗?
2014-8-3 10:41
godtype
回复 #8 冰麒麟 的帖子
+50就是存档时的496F60+1。
48B51F你还要改说明啊。
2014-8-3 10:55
冰麒麟
回复 #9 godtype 的帖子
496F60+1不是只能容1个字节吗?怎样把(难度+变型值)都挤进去。。。
然后把41ABF4、48B51F这两个说明去掉?
2014-8-3 11:09
godtype
你只能选其中一样
48B51F里面的字符改成你自己的说明文字
2014-8-3 12:00
冰麒麟
回复 #11 godtype 的帖子
唉,悟性还是太差了。:hz1004:战役数能通过整型控制了。但是战役这两个字如何根据在打的难度,变成困难/普通/休闲。就不知怎么搞了,又不可以用整型来做判断
2014-8-3 12:07
godtype
只能放弃一样。
既然天气可以加在战役名称后面,同样也可以将难度或者战役编号的其中一个加在事件的前或后。
2014-8-3 13:59
冰麒麟
回复 #13 godtype 的帖子
哦,原来如此。
得在剧本一个个加才行,考虑下要不要加先
2014-8-3 13:59
dennis2669
回复 #12 冰麒麟 的帖子
好一個另類劇透......
2014-8-3 14:59
godtype
回复 #14 冰麒麟 的帖子
不一定要在剧本里面改,改选一下指令18就可以了。
[font=宋体][size=2]00413B2C |. E8 1780FFFF CALL Ekd5.0040BB48 ; \Ekd5.0040BB48
0040BB48 /$ 55 PUSH EBP
0040BB49 |. 8BEC MOV EBP,ESP
0040BB4B |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
0040BB4E |. 50 PUSH EAX ; /Arg2
0040BB4F |. 68 28114A00 PUSH Ekd5.004A1128 ; |Arg1 = 004A1128
0040BB54 |. E8 24410700 CALL Ekd5.0047FC7D ; \Ekd5.0047FC7D
0040BB59 |. 83C4 08 ADD ESP,8
0040BB5C |. 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
0040BB5F |. 51 PUSH ECX ; /Arg1
0040BB60 |. E8 AAA90600 CALL Ekd5.0047650F ; \Ekd5.0047650F
0040BB65 |. 83C4 04 ADD ESP,4
0040BB68 |. 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
0040BB6B |. 52 PUSH EDX ; /Arg2
0040BB6C |. 6A 02 PUSH 2 ; |Arg1 = 00000002
0040BB6E |. E8 263B0200 CALL Ekd5.0042F699 ; \Ekd5.0042F699
0040BB73 |. 83C4 08 ADD ESP,8
0040BB76 |. 5D POP EBP
0040BB77 \. C3 RETN[/size][/font]
18原来是这样的,改写成:(假设是难度写在这里)
PUSH EBP
MOV EBP,ESP
SUB ESP,200 <---应该足够用,为了预防万一,可以再加大一点。
PUSH [EBP+8]
MOV EAX,*1 <---难度的变量地址。
IMUL EAX,EAX,*2 <---每个难度名称的长度,长度要统一并要有00做结尾,比如两个汉字就要写成05甚至更多。
ADD EAX,*3 <---在引擎其他空白位置写所有的难度名称,这里是第一个难度名称(变量取值00)的地址。写名称的时候要按*2的字节间隔来写下一个名称。
PUSH EAX
PUSH *4 <---再找其他空白地方写字符,然后PUSH该地址。必须含有两个"%s",例如“%s空格%s”(实际效果将是“难度 事件名”),或“[%s]%s”(实际效果将是“[难度]事件名”),或者可以选用现成的:PUSH 48B564 两个名称中间双空格,不过有点多。
LEA EAX,[EBP-200]
PUSH EAX
CALL DWORD PTR DS:[4862C0]
ADD ESP,10
LEA EAX,[EBP-200]
PUSH EAX
PUSH 004A1128
CALL 0047FC7D
ADD ESP,8
LEA EAX,[EBP-200]
PUSH EAX
CALL 0047650F
ADD ESP,4
LEA EAX,[EBP-200]
PUSH EAX
PUSH 2
CALL 0042F699
ADD ESP,4
POP EBP
RETN
最后的CALL 0042F699是显示旁白,这里如果不想将难度也显示出来,可以换回原来的 MOV EAX,DWORD PTR SS:[EBP+8]。
另外如果想写成 “事件名--难度”这样的模式,可以将*1前的PUSH [EBP+8]移到*4前面。
如果是战役编号,可以将*4中对应的 %s 改成 %d 或者 %2d ,事件名在前就将后面的改,否则就改前面的。同时*2*3就不用了。
2014-8-3 21:44
冰麒麟
回复 #16 godtype 的帖子
嗯,得看看想要怎么改先。
话说这贴应该可以转制作区啦。
页:
[1]
Powered by Discuz! Archiver 5.0.0
© 2001-2006 Comsenz Inc.