- UID
- 40698
- UCC
-
- 声望
-
- 好评
-
- 贡献
-
- 最后登录
- 1970-1-1
|
本帖最后由 imkow 于 2010-9-8 15:36 编辑
我玩游戏比较速食主义,拿内存修改器改出的顶级飞船。
打到高射炮这1关,一眨眼就被敌人的无人飞机吞没了。
英语凑合,经过搜索,意识到:
1、1.3补丁打好后,敌军无人飞机会随着玩家飞船的等级而变强。自己船改成最强,敌人也最强。
2、网上很多人为这2关苦恼。
3、现有的一些修改器trainer想跳关,都不管用
终于发现有高人通过修改lua脚本,实现敌军数量减少,几枪就ok。怀疑这个高人是游戏的开发主创人员。
修改原理,修改lua\mission\BattleLib.lua文件。
找到类似- -- Erzeugt ein Schlachtfeld
- BattleLib.CreateBG = function( Data )
- local bg = {}
- bg.Wings = {}
- bg.Defs = Data.Defs
- bg.Center = Data.Center
- bg.Groups = NGroupAi.Create({})
- bg.iWings = 4 -- 加上这一行!!!!!!!!!!!!!!!!!!!!!!!!!!!
- return bg
- end
复制代码 再遭- BattleLib.CreateWing = function( BG, Data )
- NDebug.Message( {Message = "Creating wing "..Data.WingId } )
- --加上下面几行
- if BG.iWings > 0 then
- BG.iWings = BG.iWings - 1
- else
- return
- end
- --加上上面几行
- local wing_id = Data.WingId
- . . .
复制代码 记得先备份BattleLib.lua文件。修改后保存。这时再打这一关,只有4批敌军飞机了,几枪打完。
过关后,请改把文件复原,改回来。不然会影响以后的游戏。
或者不想自己改的,可以下载作者已经改好的脚本文件
http://www.mofile.com/pickup/ryh7bfx3fhvoemi/
====================================
Ein Dorn im Auge bei dem vorgestellten Patch war mir immer die programmtechnische Holzhammermethode mit der globalen Variablen "max". Hat zwar funktioniert, unerwünschte Seiteneffekte sind dabei aber nicht auszuschließen.
Mittlerweile habe ich mich in der DSO Version 1.3 mit den Modding-Möglichkeiten und in Verbindung damit der Programmierung von LUA-Scripts vertraut gemacht. Hier ist nun die (hoffentlich) saubere Lösung für das Script BattleLib.lua.
Ganz am Anfang des Scripts der Funktion "BattleLib.CreateBG" die Variable "bg.iWings" hinzufügen:
Code:
-- Erzeugt ein Schlachtfeld
BattleLib.CreateBG = function( Data )
local bg = {}
bg.Wings = {}
bg.Defs = Data.Defs
bg.Center = Data.Center
bg.Groups = NGroupAi.Create({})
bg.iWings = 4 -- Anzahl der zu erzeugenden Wings (muss größer 0 sein!)
return bg
endIn der Funktion "BattleLib.CreateWing" die 5 hervorgehobenen Zeilen hinzufügen:
Code:
BattleLib.CreateWing = function( BG, Data )
NDebug.Message( {Message = "Creating wing "..Data.WingId } )
if BG.iWings > 0 then
BG.iWings = BG.iWings - 1
else
return
end
local wing_id = Data.WingId
...Wieder als "BattleLib.patched" (Name wegen Skriptcompiler geändert, vormals "BattleLib_patched.lua") abspeichern und das war's dann schon. An der restlichen Vorgehensweise mit der Batch-Datei "FlakMissionPatch.bat" ändert sich nichts.
Anm.: Freilich könnte man auch in der Funktion die gerade aktive Mission abfragen und die Wing-Erzeugung dann begrenzen, wenn eine der Flak-Missionen aktiv wird. Dann könnte man sich den Umstand mit der Batch-Datei sparen. Allerdings würde dann nur wegen den beiden betroffenen Missionen die Abfrage bei jeder der vielen Wing-Erzeugungen stattfinden. Das halte ich daher nicht für sinnvoll.
Die gezeigte Änderung funktioniert wie bisher bei allen Darkstar One Versionen. |
评分
-
查看全部评分
|