PC Darkstar One - Modding

TornadoX1

treuer Stammgast
Erst einaml wieder danke. Habe die Mod gleich mal aktuell gemacht, aber starten tut das Spiel jetzt leider nicht mehr:

<message>Error
--------------------------------
include error:lua/mission/Tools.lua
LUA callstack
--------------------------------
Called from (main) function '?^ in (luac) defined in line ???
Called from (main) function '?^ in file `BAR_002_03.lua' defined in line ???
Called from (C) function 'source' in C defined in line ???

Source
--------------------------------
</message>

Habe deshalb erst einmal wieder 1.4 aktiviert, aber mit den aktualisierten LUA's.
 

Norbert

Moderator
Teammitglied
Huch, da hab ich bei diesem einen Skript vergessen, den Aufruf der Debug Bibliothek wieder abzuschalten. Habe ich nachgeholt und die Mod nochmal neu hochgeladen. Diese Tools.lua gebe ich sicherheitshalber auch gleich mit, damit sowas nicht nochmal passiert. Normalerweise wird sie ja nicht benötigt, ist aber auch nix Geheimes. Sie kommt wie die anderen Funktionsbibliotheken ebenfalls in den DSO-Ordner "lua\mission\".

Du hast jetzt 3 Möglichkeiten:
Entweder nur die user_scripts.bin im Modding-Ordner "scripts" auszutauschen oder die Tools.lua in o.a. Verzeichnis zu kopieren oder auch beides.

PS: Es hätte in dem Fall sogar gereicht, in diesem Ordner eine leere Tools.lua anzulegen, da das Skript keine Funktionen daraus aufruft. Aber das konnte ja keiner wissen. Die Debug-Funktionen hatte ich entfernt, nur das Einbinden der Bibliothek selber halt nicht.

Vielen Dank für den Hinweis. :)
 
Zuletzt bearbeitet:

Norbert

Moderator
Teammitglied
Das Folgende sollte oben noch ein "edit" werden, aber du warst schneller. :)

Habe gerade eben schon wieder einen Fehler in einer der originalen Sidequests entdeckt, den ich trotz Überarbeitung zuvor noch nicht erkannt hatte. Es handelt sich dabei um die Mission "Geleitschutz für einen Konvoi" im System Nakhod:

Falls man dort nicht in den Kampf eingreift in der Absicht, diese Mission zu verlieren (normalerweise kommt ja kein Mensch auf so eine Idee), dann kann es passieren, dass sie entweder nie endet oder das man gewinnt, obwohl alle Konvoi-Frachter abgeschossen wurden. Das ist meistens in dem Fall passiert, wenn die zwei letzten Frachter fast gleichzeitig abgeschossen wurden. Hab den Fehler auch inzwischen gefunden und teste gerade, ob jetzt alles richtig funktioniert.

Ist also noch nicht in der aktuellen Version 1.5 behoben, da darf man halt nicht einfach zugucken, sondern muss wirklich kämpfen. :D
 

JoeSheridan

bekommt Übersicht
Hallo Norbert,

Ich möchte mich zunächst für diesen super komplexen Mod bedanken,durch den Darkstar one für mich wieder interessant geworden ist.Bis jetzt hab ich mich zwar erst wiederdurch ein viertel der Karte gekämpft bin aber bereits mehr als überwältigt von den neuen Missionen.

Allerdings ist mir ein Fehler aufgefallen der mit Sicherheit nicht zu erwarten war:
In einigen Systemen tauchen Piratengruppen auf,welche nicht von den Sensoren angezeigt werden.Der Sprungantrieb ist aber trotzdem gesperrt und die Geschütztürme feu-ern nicht,da sie die Sensorendaten benötigen würden.Es ist also nötig auf Sicht zu feuern,das allein wirkt sich schon recht störend auf das Spielgeschehen aus,besonders wenn es eine Kampangnen-mission stört/zum scheitern bringt.Aber das größere Problem ist,dass wenn man eine Gruppe erledigt hat nach ca 2-3 Sekunden an der gleichen Position eine neue auftaucht,die dann die selbe Fehlfunktion aufweist.Durch diesen Umstand kann man einige System zwar betreten,sie aber wegen der Sperrung des Sprungantriebs nicht ohne weiteres Verlassen,so weit ich es beurteilen kann,hilft es auch nicht den vorherigen Spielstand zu laden und dann nochmal in das selbe System zu fliegen,die Gruppen tauchen dann wieder auf.Ich hoffe das du in der Lage bist diesen recht negativen Umstandt aus der Programmierung zu entfernen,das würde zweifelsohne helfen deinen wunderbaren Mod den letzten Schliff zu geben.Ich freue mich schon auf jede art von geplanten Erweiterungen und möchte dir noch einmal meinen Dank ausprechen.

Gruß,

JoeSheridan
 

Norbert

Moderator
Teammitglied
Hallo und herzlich willkommen im Forum, JoeSheridan! :)

Danke für das Lob, das freut mich sehr.

Allerdings ist mir ein Fehler aufgefallen der mit Sicherheit nicht zu erwarten war: [...]
Kein Fehler, schau hier:
Das mit den im Zielcomputer unsichtbaren und nicht anwählbaren Gegnern ist eine der neuen Zufallsmissionen im Spiel. Sie soll dem Spieler durch Übung ein Gefühl für den richtigen Vorhaltewinkel beim Schießen geben, ohne dass er dabei vom Zielcomputer unterstützt wird. Falls du schon Geschütztürme hast, wirst du auch bemerken, dass die wegen den fehlenden Zielmarkierungen nicht zu schießen anfangen. Die Gegner sind kaum gefährlich, es soll nur eine kleine Geschicklichkeitsübung sein.
Es ist übrigens eine Gruppe mit 4 Piraten. Erscheint vielleicht nur als mehrere Gruppen, weil sie so schwer zu entdecken sind.

Falls diese Zufallsmission im All dich stört, kannst du sie auch in der Einstellungsdatei Options.lua mit der Option PS_052 = 0 abschalten. Das geht auch mit allen anderen Zufallsmissionen. Sämtliche Einstellmöglichkeiten sind in der Datei Options.lua selbst erklärt.

PS: Den "letzten Schliff" werde ich wohl nie hin bekommen, ständig finde ich irgendetwas, das verbessert werden kann. :D

Nachtrag:
In der aktuellen Mod-Version 1.5 habe ich in dieser Zufallsmission noch eine kleine Änderung eingebaut, damit die "Störung" auch wieder von selbst aufhört.
Auszug aus dem Changelog:
Code:
[B]* PASSIV_052, Zufallsmission im All "Die ECM-Jäger":[/B]
  + Landet der Spieler auf einer Station oder einem Kreuzer und hat die Jäger
    noch nicht abgeschossen, verschwinden sie 1 Minute später im Hyperraum,
    falls der Spieler nicht vor Ablauf der Minute wieder startet.
Das Changelog enthält außerdem noch viele weitere Tipps und Infos. Natürlich sind auch hier im Thema sehr viele Infos zu finden, aber das ist ja mittlerweile schon riesengroß geworden.
 
Zuletzt bearbeitet:

JoeSheridan

bekommt Übersicht
Danke für den Hinweis,im Normalfall würde ich die Mission warscheinlich irgendwann sogar Liebgewinnen,aber mein Computer hat seit kurzem nicht mehr die Nötige Leistung um schwierigere Kämpfe ohne Turmunterstützung durchzuführen(Nach PC standards ist er,mit 6 jahren alter,schon eher Steinzeit und es zeigen sich zunehmend unliebsame Verschleißerscheinungen)Nochmals danke dafür das du deine Zeit opferst um dieses Spiel auf eine neue Stufe zu bringen.

Gruß,

JoeSheridan
 
Zuletzt bearbeitet:

Norbert

Moderator
Teammitglied
...aber mein Computer hat seit kurzem nicht mehr die Nötige Leistung...
Wenn es zu schlimm ist, kannst du außer der Verringerung der Grafikqualität im Gameplay auch die "Globalen Missionen mit Belohnung" und die "Passiven Aktionen" am Ende der Options.lua durch Zuweisung von 0 alle abschalten. Etwa in der Mitte der Datei gibt es noch die Option SPACE_001_CHANCE, die du ebenfalls abschalten oder auf einen geringen Prozentwert (1-5%) setzen könntest. Das ist dieser riesige Superfrachter-Wing mit großem Begleitschutz, der mit einer Wahrscheinlichkeit von 20% in der Standardeinstellung ins System kommt und manchmal von einer sehr großen Piratengruppe überfallen wird. Eventuell bringt das noch einen kleinen Leistungsgewinn, da die Objekterzeugung in Darkstar One recht viel CPU-Leistung braucht, was besonders bei diesem Superfrachterwing der Fall ist.

...Nochmals danke dafür das du deine Zeit opferst um dieses Spiel auf eine neue Stufe zu bringen.
Das ist kein "Opfergang", sondern macht mir enorm viel Spaß. ;) Ich habe schon immer gerne und viel programmiert.
 

JoeSheridan

bekommt Übersicht
Danke für die Infos,werde vielleicht einen teil davon nutzen wenns anders wirklich nicht geht,werde es aber sehr ungern tun da ich den Mod nach möglichkeit in seinem vollen Umfang nutzen will.Und vor Leuten wie dir,denen es Spaß macht zu programmieren hab ich wirklich Respekt,den für die meisten Leute,mich inbegriffen,wäre das warscheinlich nichts.Und wie wärs mal mit ner Mission in der man kurzzeitig von einer großen Flotte gejagt wird die an die Technologie des eigenen Schiffes will,oder falls es möglich wäre eine art Rückkehr der S´kaa einzuleiten,denn ich hatte schon beim standartspiel die vermutung/hoffnung das die eventuell nochmal wieder kommen(eventuell erweiterung,oder 2.teil,den du mit diesem mod meiner meinung nach sozusagen ersetzt),aber mit mehr Mutterschiffen und das es dann zu einer riesigen Schlacht zwischen nem Dutzend GU-Kreuzern+Stufe 30-DSO und den S'kaa käme in der diese entgültig vernichtet würden und nicht nur in ihre Heimat vertrieben würden.Das sind nur so ein paar Anregungen,bei denen ich nicht weis ob und wie sie machbar wären.Ich wünsche noch viel Spaß beim Programmieren.

Gruß,

Joe Sheridan

:)
 
Zuletzt bearbeitet:

Norbert

Moderator
Teammitglied
"Große Flotte,... eine Art Rückkehr der S´kaa,... riesige Schlacht,..." usw.

Etwas in dieser Art ist schon von Anfang an geplant, siehe auch im Startbeitrag unter "Sidequests":


  • "Der Bruderkrieg"
    Grenzstreit um ein System zwischen zwei Clustern der Arrack. Zwei gewaltige Armeen stehen sich gegenüber, von denen du einer zum Sieg verhelfen musst.

  • "Die Rückkehr der Ascarong-Gang" oder "Phönix aus der Asche"
    Eine weitere Mission im Ascarong-System als Sidequest mit extrem hohem Schwierigkeitsgrad. Mit Unterstützung der Gang durch einen S'kaakreuzer als Drohnenplattform. Mission soll ohne Plasmaschild unmöglich zu gewinnen sein. Voraussetzung für die Freischaltung der Sidequest ist natürlich, dass die Ascarong-Gang vorher schon besiegt wurde.

Trotzdem Danke für die Anregungen, dafür bin ich immer zu haben und freue mich auf weitere neue Ideen von den Spielern. Und eine kleine Terminalmission kann auch Spaß machen und ist relativ schnell zwischendurch mal erstellt.

Ansonsten gehe ich da schön der Reihe nach vor, so werden in einer der nächsten Releases wahrscheinlich erst die beiden Sidequests bei den Oc'to "Die Festung" und "Admiral Kir'hal" kommen. Außerdem sollen bald noch die restlichen ca. 20% der Originalstory mit einigen Änderungen und Erweiterungen in die Mod fertig integriert sein. Während der Entwicklung und den Tests stoße ich ich immer wieder mal auf neue Schwierigkeiten oder entdecke neue Möglichkeiten. Das alles und die gemachten Erfahrungen kommen dann den späteren großen Missionen in den Arrack- und Thul-Clustern zugute. (Die Tau Ceti Sidequest ist in der aktuellen Version auch noch etwas verbessert und erweitert worden.)

Mal sehen, wie es danach weitergeht. Mit Sicherheit aber noch weitere Sidequests, Terminal- und Zufallsmissionen, für die ich schon wieder ein paar Ideen habe. Schließlich ist in den neu erschlossenen Clustern ein Haufen Platz dafür. Geplant ist außerdem eine Erweiterung der Story selbst, indem ein Handlungsbaum ähnlich wie im klassischen Wing Commander aufgebaut werden soll. Das heißt also, dass das Spiel nicht gleich beendet wird, weil man eine wichtige Mission verloren hat, sondern das man mit Nebenmissionen doch noch zum Ziel kommen kann.


PS: Wenn dir schon die ECM-Jäger Sorgen bereitet haben, dann warte mal ab. Ich habe noch viel größere Gemeinheiten in Planung, bei denen der Gegner die Schilde der DSO einfach abschaltet und ähnliche Schweinereien veranstaltet. :ROFLMAO:
 

JoeSheridan

bekommt Übersicht
Hallo,

Danke für die Warnung und was die ECM-Jäger anging hab ich sie mitlerweile wieder aktiviert und besiegt.Und deine Idee mit den,ich nenn sie mal EMP-Jägern,hört sich gemein aber auch wirklich interessant an.Ich freu mich drauf.

Gruß,

JoeSheridan
 

DXSCFI

kennt sich schon aus
Hallo Norbert,
Gratulation zu 1.5. Das Spiel geht weiter, hoffentlich noch lange.
Wie aber komme ich weiter?
Ich befinde mich nach hartem Kampf (einschließlich Kalups Assistent) auf Eosa, werde schon vor dem Einfliegen und dann auch in der Station drauf hingewiesen, dass
ich "den Schmuggelauftrag" im Terminal annehmen soll.

Das würde ich ja liebend gern tun, aber...da gibt es nichts, was ich als Schmuggelauftrag wie vorher angekündigt erkennen könnte!
Kein Auftrag dort geht in die angekündigte Richtung.

Wie komme ich weiter?
DXSCFI
 

Norbert

Moderator
Teammitglied
Hallo und herzlich willkommen im Forum, DXSCFI. :)

Dieser Link im zweiten Beitrag sollte dir weiterhelfen (4. Punkt):
Kann der Schmuggelauftrag im System Eosa immer sofort angeboten werden?

Das Problem dabei ist, wenn du den Schmuggelauftrag nicht sofort bei der ersten Landung auf der Handelsstation angenommen hast, mogeln sich wieder andere Aufträge davor. Hattest du schon lange keine Terminalaufträge mehr ausgeführt, dann können das recht viele sein, von denen etliche erst angenommen und ausgeführt werden müssen, bevor der Schmuggelauftrag wieder aus der Versenkung auftaucht. Also unbedingt sofort annehmen, wenn er da ist.

Der Screenshot zeigt, dass er auch nicht immer an erster Stelle steht:
 

Anhänge

  • DSO Schmuggelauftrag Eosa.jpg
    DSO Schmuggelauftrag Eosa.jpg
    256,7 KB · Aufrufe: 272
Zuletzt bearbeitet:

DXSCFI

kennt sich schon aus
Hallo Norbert,

Vielen Dank für die Antwort. Dann ist alles klar.
Ich bin übrigens seit Jahren auf der DSO unterwegs.
 

Norbert

Moderator
Teammitglied
Kleines Weihnachtsgeschenk 2011...

...für alle DSO-Fans, auch wenn es noch nicht Heiligabend ist. Aber das nehme ich eh nicht so genau.

Es handelt sich hierbei um eine neue passive Zufallsmission im All, die still im Hintergrund abläuft und keine anderen Missionen stört. Hat der Spieler aber was gegen diese Ruhe, dann kann er auch die Hölle entfesseln, indem er den Transport angreift, um zu versuchen, die Waffen zu klauen (und dabei auch noch zum Schwerverbrecher oder sogar Top-Terroristen wird :D).

Ich stelle die Mission hier ausnahmsweise als ausführbares Lua-Skript "PASSIV_053.lua" im Startbeitrag als "Weihnachtsgeschenk 2011.rar" bereit: Quellcode zum Download.
Das Skript muss nicht installiert, sondern einfach nur in den Ordner "scripts" der Mod kopiert werden.
Optional kann man noch am Ende der Einstellungsdatei Options.lua die folgende fett gedruckte Zeile hinzufügen:
Code:
[...]
PS_052 = 1	-- (>0) 4 Piratenjäger ohne Geschütze versuchen ständig, den Spieler zu rammen.
[B]PS_053 = 1	-- (>0) Geheimdienstwaffen-Transport mit starkem Geleitschutz.[/B]
Damit lässt sich die Mission durch Zuweisung von 0 auch wieder abschalten.
Es muss nämlich beachtet werden, dass, wenn das Skript erst einmal von Darkstar One gestartet wurde, dieses nicht mehr einfach aus dem Ordner entfernt werden darf. Es ist dann im Skriptsystem registriert und ein Entfernen ohne weitere ganz bestimmte Maßnahmen würde zum Absturz führen.

Wer sich schon ein wenig mit Lua auskennt, kann ja mal selbst etwas damit spielen und ein paar Werte ändern, um die Mission beispielsweise noch schwerer oder leichter zu machen. Ist gar nicht so schwierig. Nach einer Änderung muss der letzte Spielstand neu geladen werden (ggf. vorher speichern), womit dann auch das Skript neu eingelesen und geprüft wird. Bei einem Fehler erfolgt ein Absturz mit der bekannten Art der Fehlermeldung, anhand der man meistens relativ genau die Ursache ermitteln kann.

Zusätzlich zum Download füge ich das Skript auch hier in der Codebox nochmal mit ein, sodass man es später noch zur Verfügung hat, wenn es in der nächsten Mod-Version in der kompilierten Binärdatei enthalten und nicht mehr als separater Download vorhanden sein wird.

Code:
------------------------------------------------------------------------------
-- Dark Star One (TM) - Mission Script
-- Copyright (C) [SNF]Norbert
-- All Rights Reserved.
------------------------------[ Info ]----------------------------------------
-- Author:	[SNF]Norbert
-- Version:	1.6
-- Name:	PASSIV_053
------------------------------[ Description ]---------------------------------
-- Zufallsmission im All: "Geheimdienstwaffen-Transport"
-- Ein überaus schwer gepanzerter Spezialfrachter mit Geheimdienstwaffen fliegt
-- ins System ein und liefert die Waffen in der Handelsstation ab. Der Frachter
-- wird am Sprungtor von einem großen Kreuzer erwartet, der ihn eskortiert und
-- beschützt. Weiterhin wird er noch von zwei Bossjägern als Eskorte begleitet.
-- Der Spieler kann versuchen, die Waffen zu erbeuten, was allerdings ziemlich
-- schwer sein dürfte und ihm außerdem Kriminalitätspunkte einträgt (Terrorist).
--
-- Diese Mission läuft relativ selten. Wenn sie erzeugt wird, dann wird noch
-- zufällig ausgewählt, ob sie kurz nach dem Sprung des Spielers in ein System
-- startet oder erst nach dem Verlassen eines Hangars (Handels- und F-Stationen,
-- Asteroiden und Kreuzer).
------------------------------[ Notes ]---------------------------------------
-- Skript im Quellcode als kleines Weihnachtsgeschenk 2011 für die DSO-Fans.
--
-- MTYPE_SPACE wird viel zu selten erzeugt, daher in MTYPE_ALWAYS mit variablem
-- Timeout geändert.
------------------------------[ Import ]--------------------------------------
source "lua/mission/MissionLib.lua"	-- Verschiedene Hilfsfunktionen
--source "lua/mission/Tools.lua"	-- Debug-Funktionen

------------------------------[ Register ]------------------------------------

NScript.Register( {
	Name  = "PASSIV_053",
	Group = 0,
	Type  = MTYPE_ALWAYS,
	Transitions = {

------------------------------[ Transitions ]---------------------------------
------------------------------[ Initialization / Destruction ]----------------

{	-- Missionsstart prüfen
	nil, nil, "Init", function( V, Data )
	if lua.type( PS_053 ) ~= "number" or PS_053 ~= 0 then
		local level = MissionLib.GetPlayerLevel()
		if level > 4 then
			local system = MissionLib.GetStarSystemId()
			if system < 400 then
				V.SystemId = system
				V.PlayerLevel = level
				return { Ready = true }
			end
		end
	end
	-- Mission nicht erzeugen, wenn die Option PS_053 gleich Null oder keine Handelsstation da ist
	return { Ready = false }
end },


{	-- Mission wird erzeugt
	nil, nil, "Create", function( V, Data )
--	NGUI.ShowInfoText( { Text = "ID_MISSION_PS", Replace = { "ID_53" } } )

	-- Rasse des Systems
	V.Race = MissionLib.GetStarSystemNation( V.SystemId )

	-- Variablen für Funkmeldungen
	local nation = { [0]="hum", [1]="mor", [2]="rap", [3]="oct", [4]="arr", [5]="thu" }
	local number = MissionLib.RandomBit()
	local race = nation[V.Race]
	local RACE = string.toupper( race )

	V.Text  = "IDR_STATION_LANDING_DENIED_"..RACE.."_00"
	V.Voice = "VOICE."..V.Text.."_SPOKEN_"..race.."sta0"..number
	if V.Race == RACE_HUMAN then
		V.Video = "video/radio/radio_"..race.."sta0"..number..".bik"
	else
		V.Video = "video/radio/radio_"..race.."mil0"..number..".bik"
	end

	-- 1:1 Wahrscheinlichkeit für eine der beiden Variationen
	if math.random() > 0.5 then
		-- Mission startet mit zufälliger Verzögerung, wenn der Spieler das System betritt
		V.Step = 1.1
	else
		-- Mission startet, wenn der Spieler einen Hangar verlässt
		V.Step = 1.2
	end
end },


{	-- Mission wird zerstört
	nil, nil, "Destroy", function( V, Data )
end },

------------------------------[ Mandatory callbacks ]-------------------------

{	-- Subtype festlegen
	nil, nil, "Subtype", function( V, Data )
	return { Subtype = SUBTYPE_TRANSPORT }
end },


{	-- Mission startet
	nil, nil, "MissionStart", function( V, Data )
--	Tools.UpdateStatistic( "PS_053" )
end },


{	-- Keinen Missionstext liefern
	nil, nil, "Text", function( V, Data )
	return { Text = "" }
end },

------------------------------[ Mission success / failure ]-------------------

{	-- Mission erfolgreich
	1, nil, "Achieved", function( V, Data )
	return { Timeout = 80, Text = "" }
end },


{	-- Erst alles zerstören
	1, nil, "Failed", function( V, Data )
	local time = lua.tonumber( V.Step )
	if time > 2 then
		time = MissionLib.RandomInteger( 15, 150 )
	end
	return { Timeout = time, Text = "" }
end },

------------------------------[ Custom mission steps ]------------------------

{	-- Spieler betritt ein System, Mission startet mit zufälliger Verzögerung
	1.1, 1.1, "System", function( V, Data )
	if Data.State == ENTER_POSTCAM then
		-- 5-30 Sekunden Verzögerung für den Systemeintritt der Vorhut
		local randomTime = MissionLib.RandomInteger( 5, 30 )
		V.StartTimer = NMission.CreateTimer( { Time = randomTime } ).Timer
	end
end },


{	-- Spieler verlässt den Hangar, Mission startet, sobald die Kamera zu Ende ist
	1.2, 1.2, "Station", function( V, Data )
	if not Data.Enter then
		V.ActionCam = 1
	end
end },


{	-- Kamera der Station ist zu Ende, los gehts
	1.2, 1.2, "ActionCamEnd", function( V, Data )
	if V.ActionCam then
		V.ActionCam = nil
		V.StartTimer = NMission.CreateTimer( { Time = 1.0 } ).Timer
	end
end },


{	-- Ein großer Kreuzer kommt oberhalb des Sprungtors als Vorhut aus dem Hyperraum
	1.1, 1.2, "Timer", function( V, Data )
	if Data.Timer == V.StartTimer then
		V.StartTimer = nil

		local cruiserwing = NWing.Create( {
			WingType = WINGTYPE_CRUISER1,		-- großer Kreuzer
			Race     = V.Race,			-- Rasse des Systems
			Level    = V.PlayerLevel + 2,		-- erhöhte Kampfkraft
			Number   = 1,				-- ein einzelner Kreuzer
			PosType  = POSDESCR_CRUISER_ENTRY,	-- ins System springen und abbremsen
			Position = { 0, 500, 9000 },		-- 1 Unit vor und 0.5u über dem Sprungtor
			FrontDir = { 0, 0, -1 }			-- auf Handelsstation ausgerichtet
		} ).Wing
		V.CruiserWing = cruiserwing
		V.Cruiser = MissionLib.GetWingLeader( cruiserwing )

		-- Der Kreuzer soll warten
		MissionLib.WingAiActionWarten( cruiserwing )

		-- Gruppe erzeugen und Kreuzerwing hinzufügen
		V.Groups = NGroupAi.Create({})
		NGroupAi.AddWings( { Group = V.Groups.GroupA, WingList = { cruiserwing } } )

		-- Der Spezialfrachter kommt 3 Sekunden später
		V.FreighterTimer = NMission.CreateTimer( { Time = 3 } ).Timer
		V.Step = 2
	end
end },


{	-- Landeverbot auf dem Kreuzer für den Spieler
	2, nil, "Communication", function( V, Data )
	if Data.Object == V.Cruiser then
		NObject.PlayerLanding( { Object = V.Cruiser, Accept = 0 } )
		NComm.AddMessage( {
			Text = V.Text,
			Voice = V.Voice,
			Sender = V.Cruiser,
			CommInOut = true
		} )
		return { Object = V.Cruiser, BlockDlg = true }
	end
	return {}
end },


{	-- Der Frachter kommt mit kleiner aber starker Eskorte aus dem Sprungtor
	2, 2, "Timer", function( V, Data )
	if Data.Timer == V.FreighterTimer then
		V.FreighterTimer = nil

		-- Ein Frachter der Rasse des Systems für 4 Geheimdienstwaffen-Container
		local shiptype = {
			[0] = SI_BOMBER_B4_HUMAN;
			SI_BOMBER_B4_MORTOK,
			SI_BOMBER_B4_RAPTOR,
			SI_BOMBER_B4_OCTO,
			SI_BOMBER_B4_ARRACK,
			SI_BOMBER_B4_THUL
		}
		local freighter = shiptype[V.Race]
		local hunter2 = MissionLib.RandomInteger( SI_HUNTER_HUMAN, SI_HUNTER2_HUMAN )

		-- Frachter mit Geleitschutz erzeugen
		local wing = NWing.Define( {
			WingType = WINGTYPE_FREIGHTER200T,  --< wenn angegeben, ist die Handelslogik aktiv
			Ships = {
				{ ObjType = ST_TRADERSHIP, ObjIndex = freighter, LevelOffset = 1 },
				{ ObjType = ST_WINGMAN, ObjIndex = V.Race },  -- Hunter1, Rasse des Systems
				{ ObjType = ST_WINGMAN, ObjIndex = hunter2 }  -- Hunter2, zufällige Rasse
			},
			PosType = POSDESCR_HYPERSPACE
		} ).Wing

		-- Tabelle mit den Handles der einzelnen Schiffe
		local shiplist = NWing.List( { Wing = wing } ).ShipList

		-- Der Frachter selber ist Chef vom Wing, die beiden Jäger haben Bossstatus
		freighter = shiplist[1]
		NShip.SetBoss( { Ship = shiplist[2], BossId = 1 } )
		NShip.SetBoss( { Ship = shiplist[3], BossId = 1 } )

		-- Stärkere Panzerung und Schilde für den Frachter, Schildaufladung beschleunigen
		NShip.SetDurability( { Ship = freighter, Hull = 3.0, Shield = 3.0 } )
		NShip.SetRecharge( { Ship = freighter, ShieldSecs = 60.0 } )

		-- Angriff vom Spieler auf den Frachter ist strafbar
		NShip.SetCrime( { Ship = freighter, Set = true } )

		-- Farbe: Militär (blau)
		for i, ship in shiplist do
			NObject.RadarMapColor( { Object = ship, Color = RADARMAP_SHIP_OFFICIAL } )
		end

		-- Mit Geheimdienstwaffen beladen
		for i = 1, NShip.GetNumCargoBays( { Ship = freighter } ).NumCargoBays do
			local weapon = NContainer.Create( {
				Type = CONTAINER_SHIP, Size = CONTAINER_SPECIAL, Ship = freighter
			} ).Container
			NContainer.SetUniqueItems( { Container = weapon, Number = 1 } )
			NContainer.Equip( { Container = weapon, Goods = "IDL_WEAPON_04" } )
		end

		-- Frachterwing in die Gruppe
		NGroupAi.AddWings( { Group = V.Groups.GroupA, WingList = { wing } } )

		-- Handle der Handelsstation
		V.TradeStation = MissionLib.GetSystemTradeStation()

		-- Wegpunkt an der Handelsstation für den Frachter
		V.WP = NWaypoint.Create( {
			Object = V.TradeStation,
			Radius = MissionLib.GetOrbiterRadius( V.TradeStation ),
			Wing = wing
		} ).Waypoint

		-- Wing und Leader in die skriptglobale V-Tabelle
		V.FreighterWing = wing
		V.Freighter = freighter
	end
end },


{	-- Frachter ist im System eingetroffen
	2, 2, "Wing", function( V, Data )
	if Data.Event == WING_ENTER_SYSTEM and Data.Wing == V.FreighterWing then
		-- Mit 50% Tempo zur Handelsstation fliegen, damit der Kreuzer mithalten kann
		NWing.AddAction( {
			Wing = V.FreighterWing,
			List = LIST_ACTIVE,
			First = 1,
			Actions = {
				{ Type = AI_ACTION_OBJECT2, Speed = 2.0, Handle = V.TradeStation },
				{ Type = AI_ACTION_STANDARD }
			}
		} )
		-- Kreuzer soll den Frachter beschützen
		MissionLib.WingAiActionFollowShip( V.CruiserWing, V.Freighter )
		V.Step = 3
	end
end },


{	-- Spieler greift den Frachter an, alle werden feindlich
	3, 3, "Hostile", function( V, Data )
	if Data.Enemy == V.FreighterWing then
		-- Kreuzer: "Sie behindern eine militärische Aktion, damit machen Sie sich strafbar!"
		NComm.AddMessage( {
			Text = "IDM_GLOBALSPACE_037_RADIO_MILITARY_001",
			Voice = "IDM_GLOBALSPACE_037_RADIO_MILITARY_001_SPOKEN",
			Video = V.Video,
			Sender = V.Cruiser,
			CommInOut = true
		} )
		NGroupAi.SetPlayerHostile( { Group = V.Groups.GroupA } )
		MissionLib.RadarMapColor( { Wing = V.FreighterWing, Color = RADARMAP_SHIP_HOSTILE_WING } )
		V.AttackTimer = NMission.CreateTimer( { Time = 0.1 } ).Timer
	end
end },


{	-- Kreuzer startet zusätzliche Militärjäger zur Abwehr
	3, 3, "Timer", function( V, Data )
	if Data.Timer == V.AttackTimer then
		V.AttackTimer = nil
		if V.Cruiser then
			V.MilitaryWing = NWing.Create( {
				WingType = WINGTYPE_MILITARY,
				Number   = 10,
				Race     = V.Race,
				PosType  = POSDESCR_HANGAR,
				Object   = V.Cruiser
			} ).Wing
			-- Wing in die Gruppe, sonst kann er versehentlich den Frachterwing angreifen
			NGroupAi.AddWings( { Group = V.Groups.GroupA, WingList = { V.MilitaryWing } } )
			MissionLib.WingAiActionAngriffPlayer( V.MilitaryWing )
		end
	end
end },


{	-- Frachter ist schwer beschädigt und versucht zu flüchten
	3, 3, "StarShip", function( V, Data )
	if Data.Ship == V.Freighter and Data.Event == SHIP_HULL_10 and not V.HeavyDamage then
		V.HeavyDamage = true

		-- Frachter verlässt den Wing,...
		V.RefugeeWing = MissionLib.LeaveWing( V.Freighter, WINGTYPE_FREIGHTER200T )

		-- versucht zu flüchten...
		NWing.NoEnemy( { Wing = V.RefugeeWing } )
		MissionLib.WingAiActionHyperJump( V.RefugeeWing )

		-- und verliert dabei seine Container
		NShip.DumpCargo( { Ship = V.Freighter } )

		-- Neuer Befehl für den Kreuzer, damit er nicht verschwindet
		MissionLib.WingAiActionAngriffPlayer( V.CruiserWing )
	end
end },


{	-- Den Kreuzer oder Frachter zerlegt es gerade
	3, 3, "StarshipDeath", function( V, Data )
	if Data.Ship == V.Cruiser then
		V.Cruiser = nil

	elseif Data.Ship == V.Freighter then
		V.Freighter = nil
	end
end },


{	-- Ein Wing wurde zerstört oder hat das System verlassen
	3, 3, "Wing", function( V, Data )
	if Data.Event == WING_DESTROYED then
		local wing = Data.Wing

		-- Frachterwing (Geleitschutz)
		if wing == V.FreighterWing then
			V.FreighterWing = nil

		-- Kreuzer
		elseif wing == V.CruiserWing then
			V.CruiserWing = nil
			-- Den Frachter gibt es auch nicht mehr, Mission zu Ende
			if not V.Freighter then
				NMission.SetState( { State = MSTATE_FAILED } )
			end

		-- Militär wurde zerstört, neue Gruppe starten
		elseif wing == V.MilitaryWing then
			V.MilitaryWing = nil
			V.AttackTimer = NMission.CreateTimer( { Time = 5.0 } ).Timer

		-- Flüchtender Frachter
		elseif wing == V.RefugeeWing then
			V.RefugeeWing = nil
			V.Freighter = nil
			-- Den Kreuzer gibt es auch nicht mehr, Mission zu Ende
			if not V.Cruiser then
				NMission.SetState( { State = MSTATE_FAILED } )
			end
		end

	elseif Data.Event == WING_LEAVE_SYSTEM and Data.Wing == V.FreighterWing and V.CruiserWing then
		-- Frachter hat das System normal verlassen und Kreuzer ist noch da (WP hat nicht getriggert)
		local player = MissionLib.GetPlayerShip()
		if not NWing.IsHostileShip( { Wing = V.CruiserWing, Ship = player } ).IsEnemy then
			MissionLib.WingAiActionHyperJump( V.CruiserWing )
		end
	end
end },


{	-- Frachter dockt an der Handelsstation an, Mission zu Ende
	3, 3, "Waypoint", function( V, Data )
	if Data.Waypoint == V.WP and Data.Ship == V.Freighter then
		-- Frachter wirft seine Container nicht mehr ab
		NShip.ProtectCargo( { Ship = V.Freighter, Protect = true } )
		MissionLib.RadarMapColor( { Wing = V.FreighterWing, Color = RADARMAP_INVALID } )

		-- Kreuzer springt aus dem System raus
		MissionLib.WingAiActionHyperJump( V.CruiserWing )
		NMission.SetState( { State = MSTATE_FAILED } )
	end
end },


{	-- Spieler verlässt das System, Mission zu Ende
	1, nil, "System", function( V, Data )
	if Data.State == LEAVE_SYSTEM then
		NMission.SetState( { State = MSTATE_FAILED } )
	end
end },


}  -- close transition table
}  -- close parameter table of NScript.Register()
)  -- close function call to NScript.Register()

Viel Spaß :)
Norbert


edit:
ACHTUNG, Update Version 1.6!
 
Zuletzt bearbeitet:

X__

Herzlich willkommen!
wusch...

Hi,

ich habe da so ein kleines Problem. Ich habe irgendein Ausrüstungsgegenstand aktiviert
und fliege seither mit 700% Maximalgeschwindigkeit durchs All (ohne Nachbrenner)
Kann schön sein, oft nervt es aber einfach auch nur - z. B. in Kämpfen -> "huch, wo sind'se denn jetzt schon wieder ..."

Ist das normal, dass dieser Boost für immer anhält? Ist nämlich schon seit einigen Missionen und etlichen Sprüngen.

Gruß, X__
 

Norbert

Moderator
Teammitglied
Wahrscheinlich hattest du entweder den Graviton-Schub oder den Nachbrenner-Booster aktiviert.
Die beiden verursachen manchmal so seltsame Probleme und sollten in der Mod besser nicht mehr verwendet werden.
Ohne sie ist die DSO ab einem bestimmten Level mit dem normalen Nachbrenner ohnehin schneller als im Original mit Booster.
(Maximal 300% mit Booster im Originalspiel, in der Mod je nach Level bis zu 500% nur mit dem einfachen Nachbrenner.)
Irgendwann kehrt die Maximalgeschwindigkeit wieder zum Normalwert zurück, allerdings kann das recht lange dauern.

In manchen Fällen treten auch die unterschiedlichsten Grafikfehler auf, so wie z.B. hier im dritten Screenshot.
Bei diesem Spieler war beim Kurven mit der DSO alles verwischt, ich selber hatte dagegen schon den Fall,
dass das ganze Cockpit gezittert hatte, sogar noch nach dem Hochgeschwindigkeitsflug und im Stillstand.

Ich bin da schon seit geraumer Zeit am Suchen und Probieren, ob man über die Parameter in den ini-Dateien das abstellen kann, bisher aber leider ohne Erfolg.
 

X__

Herzlich willkommen!
Mist, hätte ich das gewusst. Ich habs nicht mal mit Absicht
aktiviert, nur versehentlich die falsche Folgetaste auf "F" gedrückt.

Manuell kann man da nichts machen ?

Gruß, X__
 

Norbert

Moderator
Teammitglied
Nicht das ich wüsste, jedenfalls hab ich dazu noch nichts gefunden. Irgend etwas wird da vom Programm nicht zurückgesetzt.
Wie gesagt, verschwindet das Problem meistens nach einiger Zeit von selbst, so wie dieser Spieler berichtet hatte:
Tom50 schrieb:
Yeah the gravity booster changed things had me running at 200% for a few days, like darkstar one on steroid.
Mit "a few days" ist die Darkstar-Zeit gemeint, nicht die reelle.
Wenn ich das in der Datei Time.ini richtig sehe, entspricht dabei 1 Spieltag 5 Minuten normaler Zeit ("SecondsPerDay").
Vielleicht hilft es ja, ein paar mal zwischen zwei Sternsystemen hin und her zu springen, dann vergeht sie 40 mal schneller.
Am Besten aktivierst du das nächste Mal diese beiden Ausrüstungsgegenstände erst gar nicht in der Inventarliste der DSO.

Übrigens passiert das seltsamerweise nicht, wenn ich selber eine F-Taste mit so einem Turbo-Boost einbaue.
Zu sehen in der Mission "Satellitenstart", wo ich das als Easteregg eingebaut habe und bis zu 5000% Tempo ermöglicht.
 
Zuletzt bearbeitet:

Mag

treuer Stammgast
Servus Norbert:)


DAnke für die v1.5:)

Bin gerade bei der Transmitter-Sidequest und hab nen Spielabsturz, sobald sich der Transmitter aktiviert.
Fehlerbericht und Spielstand sind im Anhang.


Liebe Grüße
MArio
 

Anhänge

  • F+S.rar
    119,4 KB · Aufrufe: 35
Oben