Idee: Spieler entfernen/hinzufügen

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

Moderator: Moderatoren2

Benutzeravatar
motsch
Stabsfeldwebel
Stabsfeldwebel
Beiträge: 1512
Registriert: Mi 17. Jun 2009, 18:10
Einheitenset: Cromoner
Wohnort: Baiersdorf

Re: Idee: Spieler entfernen/hinzufügen

Beitrag 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
Gruß
motsch
nosports
Stabsunteroffizier
Stabsunteroffizier
Beiträge: 355
Registriert: So 14. Jun 2009, 10:55

Re: Idee: Spieler entfernen/hinzufügen

Beitrag 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.
Benutzeravatar
motsch
Stabsfeldwebel
Stabsfeldwebel
Beiträge: 1512
Registriert: Mi 17. Jun 2009, 18:10
Einheitenset: Cromoner
Wohnort: Baiersdorf

Re: Idee: Spieler entfernen/hinzufügen

Beitrag von motsch »

Das fertige Skript werde ich hier natürlich einstellen. Das kann sich dann jeder für seine Bedürfnisse umschreiben.
Gruß
motsch
Benutzeravatar
motsch
Stabsfeldwebel
Stabsfeldwebel
Beiträge: 1512
Registriert: Mi 17. Jun 2009, 18:10
Einheitenset: Cromoner
Wohnort: Baiersdorf

Re: Idee: Spieler entfernen/hinzufügen

Beitrag 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.
Gruß
motsch
Benutzeravatar
GAMER
General
General
Beiträge: 8852
Registriert: Sa 7. Mär 2009, 14:49
Einheitenset: Teccnols - SY

Re: Idee: Spieler entfernen/hinzufügen

Beitrag 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.
[enjoy the future!]
Benutzeravatar
motsch
Stabsfeldwebel
Stabsfeldwebel
Beiträge: 1512
Registriert: Mi 17. Jun 2009, 18:10
Einheitenset: Cromoner
Wohnort: Baiersdorf

Re: Idee: Spieler entfernen/hinzufügen

Beitrag von motsch »

Gut, und wie kann ich dieses flag mit LUA auslesen?
Gruß
motsch
Benutzeravatar
GAMER
General
General
Beiträge: 8852
Registriert: Sa 7. Mär 2009, 14:49
Einheitenset: Teccnols - SY

Re: Idee: Spieler entfernen/hinzufügen

Beitrag von GAMER »

Ich vermute mal, TheCoder muß das erst implementieren.
[enjoy the future!]
Benutzeravatar
TheCoder
Stabsunteroffizier
Stabsunteroffizier
Beiträge: 453
Registriert: Mo 15. Jun 2009, 20:38

Re: Idee: Spieler entfernen/hinzufügen

Beitrag von TheCoder »

Mit dem nächsten Update gibt es ein getVisible() beim Building
Benutzeravatar
motsch
Stabsfeldwebel
Stabsfeldwebel
Beiträge: 1512
Registriert: Mi 17. Jun 2009, 18:10
Einheitenset: Cromoner
Wohnort: Baiersdorf

Re: Idee: Spieler entfernen/hinzufügen

Beitrag von motsch »

Das hier fehlt auch noch in der Liste der Kartenbestandteile.
RainingCenterID57.jpg
Gruß
motsch
Benutzeravatar
motsch
Stabsfeldwebel
Stabsfeldwebel
Beiträge: 1512
Registriert: Mi 17. Jun 2009, 18:10
Einheitenset: Cromoner
Wohnort: Baiersdorf

Re: Idee: Spieler entfernen/hinzufügen

Beitrag 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' )
Gruß
motsch
Antworten