找回密码
 注册
X系列官方授权正版
搜索
查看: 8668|回复: 8

[补丁] 高射炮关卡容易化补丁(Flak Defence Patch)

[复制链接]
发表于 2010-9-8 15:25:40 | 显示全部楼层 |阅读模式
本帖最后由 imkow 于 2010-9-8 15:36 编辑

我玩游戏比较速食主义,拿内存修改器改出的顶级飞船。
打到高射炮这1关,一眨眼就被敌人的无人飞机吞没了。
英语凑合,经过搜索,意识到:
1、1.3补丁打好后,敌军无人飞机会随着玩家飞船的等级而变强。自己船改成最强,敌人也最强。
2、网上很多人为这2关苦恼。
3、现有的一些修改器trainer想跳关,都不管用

终于发现有高人通过修改lua脚本,实现敌军数量减少,几枪就ok。怀疑这个高人是游戏的开发主创人员。
修改原理,修改lua\mission\BattleLib.lua文件。
找到类似
  1. -- Erzeugt ein Schlachtfeld
  2. BattleLib.CreateBG = function( Data )
  3.         local bg  = {}
  4.         bg.Wings  = {}
  5.         bg.Defs   = Data.Defs
  6.         bg.Center = Data.Center
  7.         bg.Groups = NGroupAi.Create({})
  8.         bg.iWings = 4        -- 加上这一行!!!!!!!!!!!!!!!!!!!!!!!!!!!
  9.         return bg
  10. end
复制代码
再遭
  1. BattleLib.CreateWing = function( BG, Data )
  2.         NDebug.Message( {Message = "Creating wing "..Data.WingId } )
  3.                 --加上下面几行
  4.         if BG.iWings > 0 then
  5.                 BG.iWings = BG.iWings - 1
  6.         else
  7.                 return
  8.         end
  9.                 --加上上面几行
  10.         local wing_id = Data.WingId
  11.                 . . .
复制代码
记得先备份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.

评分

参与人数 1UCC +20 收起 理由
白衣 + 20 赞!造福玩家啊

查看全部评分

发表于 2010-12-13 00:55:00 | 显示全部楼层
真的太NB了,力挺楼主~~!!!!
回复

使用道具 举报

发表于 2011-1-30 23:54:19 | 显示全部楼层
正愁过不了关呢,这下好了。谢谢楼主分享 顶上[S::handshake:]
回复

使用道具 举报

发表于 2011-1-31 00:30:56 | 显示全部楼层
下不了了,能补一个吗?或者发我邮箱一个,感激不尽  [email protected]
回复

使用道具 举报

发表于 2011-1-31 07:58:01 | 显示全部楼层
高射炮这关的确是伤脑筋,能调整难度真是DSO玩家的福音,呵呵
回复

使用道具 举报

发表于 2011-2-1 22:33:36 | 显示全部楼层
太感谢了,用你的方法过关了,谢谢!高人!
回复

使用道具 举报

发表于 2011-2-10 11:15:17 | 显示全部楼层
靠这个通关了,太爽啦!
回复

使用道具 举报

发表于 2012-9-14 21:28:17 | 显示全部楼层
下载不了,能不能再发一个
回复

使用道具 举报

发表于 2013-9-2 20:32:58 | 显示全部楼层
这关也太坑爹了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|DeepTimes.NET 太空游戏站