Seite 3 von 5

Re: Idee: Spieler entfernen/hinzufügen

Verfasst: So 28. Apr 2013, 07:38
von motsch
Sind das alles tatsächlich Kartenbestandteile, die auf irgend einem PBP Planeten zu finden sind? Akku und ISG Tradeship? Ich habe da so meine Zweifel. Könntest Du, GAMER, das nochmal prüfen?
Kartenbestandteile.jpg

Re: Idee: Spieler entfernen/hinzufügen

Verfasst: So 28. Apr 2013, 09:01
von nosports
Akku eher nein - meines Wissens nach nur für Duelle um am Anfang FP u/o Energy zu speichern/darzustellen.

Aber warum nicht alle Gebäude umbauen, dann wäre ein Skript auch für Kartenbauer ausserhalb PBP interessant.

Re: Idee: Spieler entfernen/hinzufügen

Verfasst: So 28. Apr 2013, 10:20
von motsch
Das fertige Skript werde ich hier natürlich einstellen. Das kann sich dann jeder für seine Bedürfnisse umschreiben.

Re: Idee: Spieler entfernen/hinzufügen

Verfasst: So 28. Apr 2013, 13:41
von motsch
Gibt es ausser den Gebaeuden
  • 7 = Radar Station
  • 26 = Jamming Station
  • 30 = Hangar
noch andere, eigendlich durch Spieler baubare Gebäude, die auch manchmal Kartenbestandteile sein können?
Evtl. kann hier eine Eingabeaufforderung/Abfrage im Skript die Lösung sein.

Re: Idee: Spieler entfernen/hinzufügen

Verfasst: So 28. Apr 2013, 14:09
von GAMER
Bei Hangar würde das vieleicht noch funktionieren, aber 40-50 mal wegen einer Radarstation zu bestätigen ...
Hier wäre es wohl am sinnvollsten eine echte Secret Radarstation zu schaffen, die dann anstelle der alten eingesetzt wird.

Eine Möglichkeit diese normalen Radarstationen, Trader oder auch Hangars zu filtern, wäre auf das "versteckt" flag (unsichtbar) zu filtern. Da dies der Spieler nicht selbst setzen kann, wäre so ein verstecktes Gebäude in jedem Fall ein Kartenbestandteil.

Re: Idee: Spieler entfernen/hinzufügen

Verfasst: So 28. Apr 2013, 14:11
von motsch
Gut, und wie kann ich dieses flag mit LUA auslesen?

Re: Idee: Spieler entfernen/hinzufügen

Verfasst: So 28. Apr 2013, 14:13
von GAMER
Ich vermute mal, TheCoder muß das erst implementieren.

Re: Idee: Spieler entfernen/hinzufügen

Verfasst: So 28. Apr 2013, 19:39
von TheCoder
Mit dem nächsten Update gibt es ein getVisible() beim Building

Re: Idee: Spieler entfernen/hinzufügen

Verfasst: Mo 29. Apr 2013, 14:34
von motsch
Das hier fehlt auch noch in der Liste der Kartenbestandteile.
RainingCenterID57.jpg

Re: Idee: Spieler entfernen/hinzufügen

Verfasst: Sa 11. Mai 2013, 12:27
von motsch
Das ist der aktuelle Stand. Den Trader ID 12017 habe ich nicht in das table kartenbestandteile aufgenommen, da er über das unvisible flag gefiltert wird.
Wenn dieses Skript soweit fertig ist, kann man sicher auch über Erweiterungen nachdenken, um Gebäude einem bestimmten Spieler zu "überschreiben".

Code: Alles auswählen

--
-- Dieses Script setzt alle Gebäude eines wählbaren Spielers die als Kartenbestandteil gelten auf neutral.
--
-- Verwendbar in: mapeditor
--
-- -------------------------------------------------------------------------------------------------------
--
-- globale Variable vorbelegen:
slotnr = 0
neutral = false
counter = 0
--
-- -------------------------------------------------------------------------------------------------------
--
-- Table für Kartenbestandteile erzeugen:
--
kartenbestandteile = {}
kartenbestandteile.Headquarter1 = 3
kartenbestandteile.Town1 = 24
kartenbestandteile.Akku = 25
kartenbestandteile.Lab10 = 27
kartenbestandteile.Lab25 = 28
kartenbestandteile.Headquarter2 = 55
kartenbestandteile.Headquarter3 = 56
kartenbestandteile.TrainingCenter = 57
kartenbestandteile.VillaDeng = 58
kartenbestandteile.Town2 = 59
kartenbestandteile.Town3 = 60
kartenbestandteile.Headquarter4 = 1002
kartenbestandteile.Bunker1 = 1003
kartenbestandteile.SecretDepot = 1005
kartenbestandteile.MountainEntrance = 1009
kartenbestandteile.HQTitanNet = 1010
kartenbestandteile.Bunker2 = 1015
kartenbestandteile.Bunker3 = 1016
kartenbestandteile.SecretFactory = 1202
kartenbestandteile.SecretTown = 1203
kartenbestandteile.Wreck = 1299
kartenbestandteile.Aussenposten = 12031
kartenbestandteile.Fabrik = 12032
kartenbestandteile.Treibstoffbunker = 12033
--
-- -------------------------------------------------------------------------------------------------------
--
-- Funktionen:
--
-- Ermittle Gebäude ID
function GetGebaeudeID ( feldGebaeude )
   
   local gebaeudetyp = feldGebaeude:getType()
   local gebaeudeid   = gebaeudetyp:getID()
   
   return gebaeudeid

 end
--
--
-- Prüfe ob aktuelle GebäudeID Kartenbestandteil ist
function CheckGebaeudeID ( _index )

   if gebaeudeID == kartenbestandteile [ _index ] then
      neutral = true
      return neutral
   end

end
--
--
--
-- Dialog zur Auswahl der Slotnummer ---------------------------------------------------------------------
--
--  Dialog vorbereiten      
dlg = asc.PropertyDialog ( 'Auswahl des Spielers' )     
dlg:addInteger ( 'Geben Sie die Slotnummer ein' , slotnr )
--
-- Dialog starten
result = dlg:run()
--
-- Skript Abbruch mit "Cancel"
if result == false then
   asc.warningMessage ( "        Skript abgebrochen!" )

   return
end
--
-- Ergebnis des Dialogs in Variable slotnr speichern
slotnr = dlg:getInteger ( 'Geben Sie die Slotnummer ein' ) 
--
-- ungueltigen Spieler abfangen
if slotnr < 1 or slotnr > 7 then
   asc.warningMessage ( "Ungueltiger Spieler - (1-7 ist moeglich) - Skript abgebrochen!")

   return
end
--
-- Dialog Ende -------------------------------------------------------------------------------------------
--
-- Karte laden
map = asc.getActiveMap()
--
-- Absuchen der Karte Feld für Feld
for y = 0,map:height()-1 do
	for x = 0,map:width()-1 do

		--Zeiger auf Feld setzen
		feld = map:getField(x,y)

		-- Prüfe ob ein Gebäudeeingang auf dem Feld ist
		if feld:getBuildingEntrance() then

			-- Prüfe ob das Gebäude dem ausgewählten Spieler gehört
			if feld:getBuildingEntrance():getOwner() == slotnr then
             
				-- Zeiger auf Gebäude setzen
				gebaeude = feld:getBuildingEntrance()
             
				-- Ermittle ID des Gebäudes per Funktion
				gebaeudeID   = GetGebaeudeID( gebaeude )
                           
				-- Prüfe ob Gebäude Kartenbestandteil ist per Funktion
				table.foreach ( kartenbestandteile , CheckGebaeudeID )
            
				-- Gebäude ist Kartenbestandteil
				if neutral then
            
            		-- Gebäude neutral stellen
					gebaeude:convert ( 8 )

					-- Erhöhe Zähler 
					counter = counter + 1
                
					-- Stelle Zeiger "Gebäude ist Kartenbestandteil" zurück
					neutral = false
                
				end
			end
		end
	end
end
asc.infoMessage( counter .. ' Gebaeude neutral gestellt' )