[Skript] Kolonie Komplex setzen

Entwicklung und Vorstellung von LUA Skripten für ASC oder den Mapeditor

Moderator: Moderatoren2

Antworten
Hanni
Oberstabsfeldwebel
Oberstabsfeldwebel
Beiträge: 2898
Registriert: Sa 31. Jan 2009, 13:04
Einheitenset: Cromoner MK4
Wohnort: Leipzig

[Skript] Kolonie Komplex setzen

Beitrag von Hanni »

Beschreibung:
Dieses Skript erstellt einen kompletten Kolonie Komplex. (siehe Bild)

Features:
  • wahlweise Ausrichtung des Komplexes nach Nord oder Süd (gemessen an der Position des Raumflugzentrums)
  • wahlweises einfügen der Bauoptionen:
    • ISG Carrier
    • SG Builder
    • ISG SAC
    • ISG Sat
    • ISG SHF
  • wahlweises platzieren eines ISG Depots
Um eine "schöne" Verlinkung der gängigen Objekte unter mit der Landezone zu erreichen wurden unter ihr die folgenden Objekte platziert:
  • Straße
  • Schiene
  • Runway
  • burried Pipeline
Zum gegenwärtigem Zeitpunkt fehlt eigentlich nur noch das folgende:
  • automatisches "Retten" der im Baugebiet vorhandenen Einheiten


Voraussetzungen:
Der Mapeditor muss mindestens in der folgenden Version vorliegen: 2.3.73.16

Grüße,
Hanni
Dateianhänge
Kolonie-Komplex.zip
Das eigentliche Skript
(1.56 KiB) 256-mal heruntergeladen
Einstellungsdialog des Skriptes
Einstellungsdialog des Skriptes
Mit diesen Skript erstellter Kolonie Komplex
Mit diesen Skript erstellter Kolonie Komplex
Die DIN 16554 regelt, dass eine Kugelschreibermine einen 200 m langen Strich ziehen können muss.
----------
Beiträge in meiner Funktion als Admin haben diese Farbe!
Hanni
Oberstabsfeldwebel
Oberstabsfeldwebel
Beiträge: 2898
Registriert: Sa 31. Jan 2009, 13:04
Einheitenset: Cromoner MK4
Wohnort: Leipzig

Re: [Skript] Kolonie Komplex setzen

Beitrag von Hanni »

Quelltext:

Code: Alles auswählen

-- -----------------------------------------------
-- Erstellen einer Kolonie Landezone
--
-- lauffähig im Mapeditor
-- -----------------------------------------------


-- benötigte Funktionen definieren
-- -----------------------------------------------

-- Funktion um auf ein übergebenes Feld Beton zu setzen
function placeBeton ( position )
	
	-- Feld "leeren"
	asc.clearField( map, position )
	
	-- Objekte setzen
	for i = 1, objektCount do
		setObjekt ( position, objekts[i] )
	end

end

-- Funktion um einen 3 er "Pinsel" für den Landezonenuntergrund zu simulieren
function pinsel ( position )

	-- zentrales Feld setzen
	placeBeton ( position )
	
	-- angrenzende Felder setzen
	for i = 0, 5 do
		local currentPos	= asc.getNeighbouringFieldCoordinate( position, i ) 
		placeBeton ( currentPos )
	end

end

-- Funktion um ein Objekt (ID) auf ein Feld zu setzen
function setObjekt ( position, objektid )

	local objekt	= asc.getObjectType ( objektid )
	asc.placeObject( map, position, objekt, true )

end

-- Funktion um ein Gebäude (ID) auf ein Feld zu setzen
function setBuilding ( position, buildingid, user )

	local building	= asc.getBuildingType ( buildingid )
	asc.placeBuilding( map, position, building, user )

end


-- benötigte Variablen definieren
-- -----------------------------------------------

-- Landezonen Untergrund
objekts			= {}
objekts[1]		= 1		-- Straße
objekts[2]		= 2		-- Schiene
objekts[3]		= 45	-- Runway
objekts[4]		= 30	-- burried Pipeline
objekts[5]		= 12012	-- ISG Beton

objektCount		= 5

-- sonstige Landezonenobjekte
isgzone 		= 12015	-- ISG Landezone
sockel 			= 12013	-- ISG Sockel

-- Landezonen Gebäude
kolrz 			= 12027	-- Raumfahrtzentrum
kolradar 		= 12026	-- Kolonie Radar
isgdepot		= 12001	-- ISG Depot

-- Bauoptionen
options			= {}
options[1]		= 12004	-- ISG Carrier
options[2]		= 12005	-- ISG Builder
options[3]		= 12002	-- ISG Sat
options[4]		= 12008	-- ISG SAC
options[5]		= 12009	-- ISG AHF

optionsCount	= 5


-- das eigentliche Skript
-- -----------------------------------------------

-- Step 1: ein Objekt der aktuellen Karte laden
map 		= asc.getActiveMap()

-- Step 2.1: Dialog vorbereiten
dialog 		= asc.PropertyDialog('Einstellungen')
dialog:addBool('Ausrichtung nach Süden?', false )
dialog:addBool('Bauoptionen einfügen?', true )
dialog:addBool('ISG Depot platzieren?', true )
dialog:addInteger('Spieler', 1 )

-- Step 2.2: Dialog starten
result = dialog:run()

-- Step 2.3: Skript Abbruch
if result == false then
	asc.warningMessage("Skript abgebrochen!")

	return
end

-- Step 2.4: Eingaben in Variablen packen
setSued			= dialog:getBool('Ausrichtung nach Süden?')
setBauoptionen	= dialog:getBool('Bauoptionen einfügen?')
setDepot		= dialog:getBool('ISG Depot platzieren?')
setSpieler		= dialog:getInteger('Spieler')

-- Step 2.5: ungültigen Spieler abfangen
if setSpieler < 0 or setSpieler > 7 then
	asc.warningMessage("Ungültiger Spieler - (0-7 ist möglich) - Skript abgebrochen!")

	return
end

-- Step 3: aktuelle Cursorposition bestimmen
centerpos 	= asc.getCursorPosition( map )

-- Step 4: ISG Beton platzieren
pinselpos	= asc.getNeighbouringFieldCoordinate( centerpos, 0 )
pinsel ( pinselpos )

pinselpos	= asc.getNeighbouringFieldCoordinate( centerpos, 3 )
pinsel ( pinselpos )

pinselpos	= asc.getNeighbouringFieldCoordinate( centerpos, 1 )
pinselpos	= asc.getNeighbouringFieldCoordinate( pinselpos, 2 )
pinsel ( pinselpos )

pinselpos	= asc.getNeighbouringFieldCoordinate( centerpos, 4 )
pinselpos	= asc.getNeighbouringFieldCoordinate( pinselpos, 5 )
pinsel ( pinselpos )

-- Step 5: Landezonen platzieren
pinselpos	= asc.getNeighbouringFieldCoordinate( centerpos, 1 )
setObjekt ( pinselpos, isgzone )

pinselpos	= asc.getNeighbouringFieldCoordinate( centerpos, 2 )
setObjekt ( pinselpos, isgzone )

pinselpos	= asc.getNeighbouringFieldCoordinate( centerpos, 4 )
setObjekt ( pinselpos, isgzone )

pinselpos	= asc.getNeighbouringFieldCoordinate( centerpos, 5 )
setObjekt ( pinselpos, isgzone )

-- Step 6: ISG Sokel platzieren
pinselpos	= asc.getNeighbouringFieldCoordinate( centerpos, 1 )
pinselpos	= asc.getNeighbouringFieldCoordinate( pinselpos, 2 )
setObjekt ( pinselpos, sockel )

pinselpos	= asc.getNeighbouringFieldCoordinate( centerpos, 4 )
pinselpos	= asc.getNeighbouringFieldCoordinate( pinselpos, 5 )
setObjekt ( pinselpos, sockel )

-- Step 7: Gebäude platzieren
setBuilding ( centerpos, kolradar, setSpieler )

if setSued == true then
	pinselpos	= asc.getNeighbouringFieldCoordinate( centerpos, 3 )
else
	pinselpos	= asc.getNeighbouringFieldCoordinate( centerpos, 0 )
end

setBuilding ( pinselpos, kolrz, setSpieler )
building	= map:getField(pinselpos):getBuildingEntrance()

if setDepot == true then
	if setSued == true then
		pinselpos	= asc.getNeighbouringFieldCoordinate( pinselpos, 1 )
		pinselpos	= asc.getNeighbouringFieldCoordinate( pinselpos, 2 )
		pinselpos	= asc.getNeighbouringFieldCoordinate( pinselpos, 2 )
	else
		pinselpos	= asc.getNeighbouringFieldCoordinate( pinselpos, 1 )
		pinselpos	= asc.getNeighbouringFieldCoordinate( pinselpos, 2 )
		pinselpos	= asc.getNeighbouringFieldCoordinate( pinselpos, 1 )	
	end
	
	setBuilding ( pinselpos, isgdepot, 0 )
end

-- Step 8: Bauoptionen im RZ einfügen
if setBauoptionen == true then
	for i = 1, optionsCount do
		building:addProductionLine( asc.getUnitType ( options[i] ) )
	end
end

-- EOF --
Die DIN 16554 regelt, dass eine Kugelschreibermine einen 200 m langen Strich ziehen können muss.
----------
Beiträge in meiner Funktion als Admin haben diese Farbe!
Benutzeravatar
GAMER
General
General
Beiträge: 8852
Registriert: Sa 7. Mär 2009, 14:49
Einheitenset: Teccnols - SY

Re: [Skript] Kolonie Komplex setzen

Beitrag von GAMER »

oje, Runway sieht echt "bescheiden" aus darunter, sollten wir ev. weg lassen.
[enjoy the future!]
Benutzeravatar
itaker
Oberstabsfeldwebel
Oberstabsfeldwebel
Beiträge: 2505
Registriert: Sa 13. Jun 2009, 23:02
Einheitenset: Rehaner
Wohnort: Karlsruhe

Re: [Skript] Kolonie Komplex setzen

Beitrag von itaker »

dumme frage:
so ein skript kann ich nun nutzen und eine Kolonie in einenm zug zu bauen????
Benutzeravatar
GAMER
General
General
Beiträge: 8852
Registriert: Sa 7. Mär 2009, 14:49
Einheitenset: Teccnols - SY

Re: [Skript] Kolonie Komplex setzen

Beitrag von GAMER »

Ja.

Du brauchst dann nur noch die PU-Bauoption hinzufügen (wenn PU vorhanden) Und ev. das ISG Depot umsetzen, wenn das ungünstig platziert ist. Und falls ein Wasseranschluss machbar ist, den dann noch integrieren.
[enjoy the future!]
Prophet

Re: [Skript] Kolonie Komplex setzen

Beitrag von Prophet »

Aber nur im Editor, gelle - nicht im Spiel...
Antworten