Seite 350 von 351 ErsteErste ... 250300340346347348349350351 LetzteLetzte
Ergebnis 5.236 bis 5.250 von 5253

Thema: Der-kleine-Fragen-zum-Modding-Thread

  1. #5236
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    19.035
    Was sagt denn die Civilopädie des Mods, was der Mahlstrom macht? Während wir hier im Nebel stochern, hilft ein Blick dort vielleicht, etwas auszuschließen.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  2. #5237
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    19.035
    Ich stehe vor einem Rätsel. Ich habe eine Python-Funktion in meinem Mod verändert. Wenn ich die jetzt Teste, funktioniert zumindest der erste Schritt davon ganz normal. Wenn ich dann aber den Spielstand laden will, den ich vorher gespeichert habe (und der sich, das habe ich getestet, vorher noch laden ließ) stürzt das Spiel ab. Debugging ergab nur eine kryptische Nachricht wegen einer Zugriffsverletzung. Noch kurioser war, dass sich der Spielstand auch danach nicht mehr lesen ließ.
    Kann eine Python-Funktion einen Spielstand zerschießen, den ich gar nicht nach ihrem Ausführen überschrieben habe? Doch wohl eher nicht. Ich kapiere nicht, wie das kommen kann.
    Zuerst hatte ich die Befürchtung, dass ich im SDK irgendwelche Mist gebaut hätte und Spielstände generell nicht mehr geladen werden können, aber ein neu erstelltes Spiel konnte ich laden, und ich konnte es auch laden, nachdem ich mir im Weltenbauer meine Testumgebung geschaffen hatte. Nur nach dem Ausführen der Python-Funktion ging es nicht mehr.

    Code:
    	def onCityLost(self, argsList):
    		'City Lost'
    		city = argsList[0]
    		player = PyPlayer(city.getOwner())
    
    ###Spaltung Anfang###
    
    		if city.isCapital():
    			if player.getNumCities() >14:
    				if gc.getMAX_CIV_PLAYERS ()>CyGame().countCivPlayersAlive ():
    					NewID = -1
    					for NumCiv in xrange (gc.getMAX_PLAYERS ()):
    						PotPlayer = gc.getPlayer(NumCiv)
    						if not PotPlayer.isEverAlive ():
    							NewID = NumCiv
    							break
    					if NewID ==-1:
    						for NumCiv in xrange (gc.getMAX_PLAYERS ()):	
    							PotPlayer = gc.getPlayer(NumCiv)
    							if not PotPlayer.isAlive():
    								NewID = NumCiv
    								break
    					if NewID ==-1:
    						return
    	###Kathy new: Rebell Civs Beginn
    					iOwnerCiv = gc.getPlayer(city.getOwner()).getCivilizationType() # funktioniert
    					iCiv1 = gc.getCivilizationInfo(iOwnerCiv).getRebellCiv()
    					iCiv2 = gc.getCivilizationInfo(iOwnerCiv).getDerivativeCiv()
    					iCiv3 = gc.getCivilizationInfo(iOwnerCiv).getDerivativeCitystate()
    #		###Kathy: Eliminiere existierende Civs aus der Liste
    					for NumCiv in xrange (gc.getMAX_PLAYERS ()):
    						LoopPlayer = gc.getPlayer(NumCiv)
    						iLoopCiv = LoopPlayer.getCivilizationType()
    						if ( iCiv1 == iLoopCiv ):
    							iCiv1 = -1
    						if ( iCiv2 == iLoopCiv ):
    							iCiv2 = -1
    						if ( iCiv3 == iLoopCiv ):
    							iCiv3 = -1
    #		### Kahty: Eliminiere existierende Civs aus der Liste 
    					iCiv = -1
    					if iCiv1 != -1:
    						iCiv = iCiv1
    					elif iCiv2 != -1:
    						iCiv = iCiv2
    					elif iCiv3 != -1:
    						iCiv = iCiv3
    	###Kathy new: Rebell Civs End
    					if iCiv == -1:
    						iCiv = iOwnerCiv
    					CurCiv = gc.getCivilizationInfo(iCiv)
    					NumLeaders = CurCiv.getNumLeaders()
    ### 					dice = gc.getGame().getMapRand()
    ###					LeaderNum = dice.get(NumLeaders , "OracleSayMeTheLeader" )
    					LeaderNum = gc.getGame().getSorenRandNum(NumLeaders, "OracleSayMeTheLeader" )
    
    					LeaderCounter=0
    					for iLeaders in range(gc.getNumLeaderHeadInfos ()):
    						if CurCiv.isLeaders(iLeaders):
    							if NumLeaders==1:
    								NewLeaderID =iLeaders
    								break
    							else:
    								if LeaderCounter==LeaderNum:
    									NewLeaderID=iLeaders
    									break
    							LeaderCounter=LeaderCounter+1
    					CyGame().addPlayer(NewID,NewLeaderID,iCiv)
    					pNewPlayer = gc.getPlayer(NewID)
    					iOldPlayer = city.getOwner()
    					OldPlayer = gc.getPlayer(iOldPlayer)
    					NewTeam = gc.getTeam(pNewPlayer.getTeam())
    					NewTeamID = NewTeam.getID()
    					techcount=0
    					for techcount in range (gc.getNumTechInfos()):
    						if ((player.getTeam().isHasTech(techcount)==true)):
    							NewTeam.setHasTech(techcount,1,NewID,0,1)
    		### Age als Grundlage für Stärke des neuen Spielers
    					iAge = pNewPlayer.getCurrentEra ()
    		### Age als Grundlage für Stärke des neuen Spielers
    					iCitiesNewPlayer = OldPlayer.getNumCities()/2
    					iCityCount = 0
    					(loopCity, iter) = OldPlayer.firstCity(True)
    					while(loopCity):
    						iCityX = loopCity.getX()
    						iCityY = loopCity.getY()
    						if ( loopCity.isCapital() == false ):
    							pNewPlayer.acquireCity(loopCity,False,True)
    							Defender = loopCity.getConscriptUnit ()
    							for i in range(1+iAge/2):
    								pNewPlayer.initUnit( Defender, iCityX,iCityY, UnitAITypes.UNITAI_CITY_DEFENSE, DirectionTypes.DIRECTION_NORTH )
    #### Beginn more Units
    							Militia = loopCity.getFoodProducedUnit()
    							for i in range(loopCity.getPopulation()/5 ):
    								pNewPlayer.initUnit(Militia, iCityX,iCityY, UnitAITypes.UNITAI_CITY_DEFENSE, DirectionTypes.DIRECTION_NORTH )
    							if (iAge > 3 ):
    								CavalryUnit = gc.getInfoTypeForString("UNIT_HORSE_ARCHER")
    								CavalryUnitUpgrade = loopCity.allUpgradesAvailable(CavalryUnit,0) 
    								if (CavalryUnitUpgrade != -1):
    									CavalryUnit = CavalryUnitUpgrade
    								for i in range(1+iAge/5):
    									pNewPlayer.initUnit(CavalryUnitUpgrade, iCityX,iCityY, UnitAITypes.UNITAI_ATTACK, DirectionTypes.DIRECTION_NORTH )
    							if (iAge > 5 ):
    								if loopCity.isCoastal(20):
    									RiverUnit = gc.getInfoTypeForString("UNITCLASS_EINBAUM")
    									RiverUnitUpgrade = loopCity.allUpgradesAvailable(RiverUnit ,0) 
    									if (RiverUnitUpgrade != -1):
    										RiverUnit = RiverUnitUpgrade
    									pNewPlayer.initUnit(RiverUnitUpgrade, iCityX,iCityY, UnitAITypes.UNITAI_ATTACK_SEA, DirectionTypes.DIRECTION_NORTH )
    							if (iAge > 6 ):
    								ArtilleryUnit = gc.getInfoTypeForString("UNIT_OXYBELES")
    								ArtilleryUnitUpgrade = loopCity.allUpgradesAvailable(ArtilleryUnit ,0) 
    								if (ArtilleryUnitUpgrade != -1):
    									ArtilleryUnit = ArtilleryUnitUpgrade
    								for i in range(1+iAge/10):
    									pNewPlayer.initUnit(ArtilleryUnitUpgrade, iCityX,iCityY, UnitAITypes.UNITAI_ATTACK_CITY, DirectionTypes.DIRECTION_NORTH )
    							if (iAge > 10 ):
    								FortUnit = gc.getInfoTypeForString("UNIT_OUTPOST")
    								FortUnitUpgrade = loopCity.allUpgradesAvailable(FortUnit ,0) 
    								if (FortUnitUpgrade != -1):
    									FortUnit = FortUnitUpgrade
    								pNewPlayer.initUnit(FortUnitUpgrade, iCityX,iCityY, UnitAITypes.UNITAI_CITY_DEFENSE, DirectionTypes.DIRECTION_NORTH )
    							if (iAge > 20 ):
    								FlakUnit = gc.getInfoTypeForString("UNIT_LIGHT_AA")
    								FlakUnitUpgrade = loopCity.allUpgradesAvailable(FlakUnit ,0) 
    								if (FlakUnitUpgrade != -1):
    									FlakUnit = FlakUnitUpgrade
    								for i in range(1+iAge/6):
    									pNewPlayer.initUnit(FlakUnitUpgrade, iCityX,iCityY, UnitAITypes.UNITAI_CITY_DEFENSE, DirectionTypes.DIRECTION_NORTH )
    							if (iAge > 21 ):
    								JaegerUnit = gc.getInfoTypeForString("UNIT_DOPPELDECKER")
    								JaegerUnitUpgrade = loopCity.allUpgradesAvailable(JaegerUnit ,0) 
    								if (JaegerUnitUpgrade != -1):
    									JaegerUnit = JaegerUnitUpgrade
    								pNewPlayer.initUnit(JaegerUnitUpgrade, iCityX,iCityY, UnitAITypes.UNITAI_DEFENSE_AIR, DirectionTypes.DIRECTION_NORTH )
    								
    
    #### More Units End
    							loopCity.changeCulture(NewID,loopCity.getCulture(iOldPlayer),1)
    							iCityCount = iCityCount+1
    						if iCityCount == iCitiesNewPlayer:
    							break
    						(loopCity, iter) = OldPlayer.nextCity(iter, true)
    
    			###Kathy: Unit Experience, um Auflösung zu verbeiden
    					(loopUnit, iter) = pNewPlayer.firstUnit(true)
    					while(loopUnit):
    						loopUnit.changeExperience(1+iAge/2,30,false,false,false)
    						if (loopUnit.getDomainType() == gc.getInfoTypeForString("DOMAIN_SEA")):
    							loopUnit.setHasPromotion(gc.getInfoTypeForString("PROMOTION_DRILL1"),1)
    						elif (loopUnit.getDomainType() == gc.getInfoTypeForString("DOMAIN_IMMOBILE")):
    							loopUnit.setHasPromotion(gc.getInfoTypeForString("PROMOTION_CITY_GARRISON1"),1)
    							loopUnit.setHasPromotion(gc.getInfoTypeForString("PROMOTION_DRILL1"),1)
    						else:
    							loopUnit.setHasPromotion(gc.getInfoTypeForString("PROMOTION_CITY_GARRISON1"),1)
    						(loopUnit, iter) = (pNewPlayer.nextUnit(iter, true))
    			###Kathy: Unit Experience, um Auflösung zu verbeiden
    					pNewPlayer.setGold(player.getGold()/2)
    					PlayerAdjectiv = player.getCivilizationInfo().getDescription ()
    					NewPlayerAdjectiv = CurCiv.getDescription ()
    					for iPlayer in range (gc.getMAX_CIV_PLAYERS ()):
    						CyInterface().addMessage(iPlayer,False,15,CyTranslator().getText("TXT_KEY_CAPITAL_LOST",(PlayerAdjectiv,NewPlayerAdjectiv)),'',0,'Art/Interface/Buttons/General/warning_popup.dds',ColorTypes(gc.getInfoTypeForString("COLOR_RED")), city.getX(), city.getY(), True,True)
    ###Spaltung ENDE###
    Hier ist der Pythoncode, wobei grün die heutigen Änderungen sind. Blau hatte ich zuletzt davor geändert, sollte aber unkritisch sein, da ich diese Änderung auch schon im Code meiner aktiven Story vorgenommen habe, wo ich die Spielstände bisher auch laden konnte.

    Beim ersten Absturz bekam ich auch einen assert (leider nicht bei weiteren Versuchen, so dass ich es nicht weiterverfolgen konnte.)
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  3. #5238
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    19.035
    Komischerweise lässt sich der zweite, vermeintlich ebenfalls verseuchte Spielstand jetzt doch wieder laden (und damit meine Testumgebung). Sehr seltsam.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  4. #5239
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    19.035
    Und auch der Spielstand nach der Spaltung lässt sich laden, wenn ich nach dem Python-Code speichere und ins Hauptmenü gehe. Warum sich Spielstand 2 allerdings nicht aus dem Spiel heraus laden ließ, nachdem ich den Code ausgeführt habe (und Spielstand 1 sogar gar nicht mehr, auch nicht aus dem Hauptmenü) verstehe ich einfach nicht.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  5. #5240
    PAE.Macht.Antike! Avatar von Pie
    Registriert seit
    25.01.08
    Ort
    Noricum
    Beiträge
    17.679
    War das chatGPT/CoPilot?

    Ich sehe folgendes nicht in der python reference (und kenne es auch selber nicht):

    1) pCity.getFoodProducedUnit() bei dir: Militia = loopCity.getFoodProducedUnit()

    2) pCity.allUpgradesAvailable() bei dir:
    CavalryUnitUpgrade = loopCity.allUpgradesAvailable(CavalryUnit,0)
    RiverUnitUpgrade = loopCity.allUpgradesAvailable(RiverUnit ,0)
    ArtilleryUnitUpgrade = loopCity.allUpgradesAvailable(ArtilleryUnit ,0)
    FortUnitUpgrade = loopCity.allUpgradesAvailable(FortUnit ,0)
    FlakUnitUpgrade = loopCity.allUpgradesAvailable(FlakUnit ,0)
    JaegerUnitUpgrade = loopCity.allUpgradesAvailable(JaegerUnit ,0)

    das musst du bestimmt anders lösen.
    Pie's Ancient Europe (PAE)
    Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins allerletzte Detail!
    Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features, die Spaß machen. Hand drauf!


    ... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden soll ...

  6. #5241
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    19.035
    1) "getFoodProducedUnit()" habe ich im SDK definiert, das kannst du nicht kennen. Das macht es tatsächlich etwas schwierig, wenn ich mit meinem Code hier arbeite, weil so etwas öfter vorkommt.
    2) pCity.allUpgradesAvailable() ist laut API eine Originalfunktion. "allUpgradesAvailable (UnitType eUnit, INT iUpgradeCount)"
    Diese beiden Codeteile funktionieren auch wie gewünscht. Das komische war vor allem, dass ich nach der Anwendung dieses Codestück nicht mehr ohne Absturz den vorherigen Spielstand laden konnte - der ja eigentlich durch die Funktion gar nicht verändert werden sollte. Beim zweiten Versuch funktionierten die alten Spielstände wenigstens wieder, nachdem ich das Spiel immer über das Hauptmenü verlassen und den Spielstand geladen hatte. Die Frage, warum das Laden nicht funktioniert hat, kann ich nicht beantworten. Aber es scheint auch kein permanentes Problem zu sein. Hoffe ich. Das Problem hat sich also irgendwie von selbst aufgelöst, auch wenn ich Angst habe, dass es im ungünstigsten Moment wieder auftaucht.

    Mit ChatGPT arbeite ich gar nicht, ich versuche zumindest, zu verstehen, was ich mache. Auch wenn mir das nicht immer gelingt.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  7. #5242
    PAE.Macht.Antike! Avatar von Pie
    Registriert seit
    25.01.08
    Ort
    Noricum
    Beiträge
    17.679
    Ah ok, wegen getFoodProducedUnit(). Wenn ich gpt wegen civ4 c++ frage, schmeißt der mir immer funktionen vor, die es gar nicht gibt.

    und stimmt, allUpradesAvailable gibt es doch in der python reference. Hab mit () gesucht und da hat ers nicht gefunden. naja wenns nur ein einmaliger Fehler war... vielleicht durhc das Verändern der python Datei während dem Spiel, dann würd ich mir keine Sorgen machen.
    Pie's Ancient Europe (PAE)
    Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins allerletzte Detail!
    Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features, die Spaß machen. Hand drauf!


    ... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden soll ...

  8. #5243
    Registrierter Benutzer Avatar von xist10
    Registriert seit
    08.11.19
    Beiträge
    6.484
    Ich glaube, einen Fehler habe ich gefunden:

    pNewPlayer.initUnit(CavalryUnitUpgrade, iCityX,iCityY, UnitAITypes.UNITAI_ATTACK, DirectionTypes.DIRECTION_NORTH )

    Das müsste meine ich CavalryUnit sein. CavalryUnitUpgrade kann meine ich 0 / leer sein ? Andernfalls ergibt die Zuweisung von CavalryUnit = CavalryUnitUpgrade 2 Zeilen höher wenig Sinn.

    Der selber Fehler wird auch für die anderen Einheitentypen wiederholt.

    Ich kann mir gut vorstellen, dass in der initUnit Funktion ein assert vorkommt.
    Achtung Spoiler:
    cIV-Multiplayer-Storys
    PB 88, PB 89, PB 91, PB 90, PB 92, PB 93, PB 94, PB 95
    RB 72, RB 74, RB 79, RB 81
    Oldschool 3
    EitB PBEM
    LVII, LVIII, LIX
    ciV-Multiplayer-Storys
    PBEM 292, PBEM 293, PBEM 294, PBEM 295, PBEM 296
    Sonstige
    Anno 1800

    Alle Storylinks hier

  9. #5244
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    19.035
    Gut beobachtet.
    Das ist ein Fehler - den hatte ich später gefunden, nachdem es wieder lief.
    Und es gab auch noch den Fehler, dass das Flussschiff mit UNITCLASS_ statt UNIT_ initiiert wurde, führte auch zu Problemen.

    Aber keiner dieser Fehler sollte eigentlich einen Spielstand zerstören, schlimmstenfalls würde das Spiel an der Stelle abstürzen bzw. es gibt einen Fehler und danach wird der restliche Pythoncode gar nicht mehr ausgeführt.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  10. #5245
    Hat einen Plan Avatar von Mongke Khan
    Registriert seit
    25.06.11
    Ort
    KA
    Beiträge
    20.414
    Lassen sich während einer laufenden Partie Civ Infos über die Partie auf eine Konsole dumpen? Also sowas wie eine Liste der Städte des Spielers und über welche Ressourcen die verfügen? Oder welche KIs bekannt sind und wie die Beziehung zu diesen ist?
    Zitat Zitat von Baldri Beitrag anzeigen
    Würfel doch mal für nen Job bevor du hier finanzielle Aussagen triffst die ernstgenommen werden sollen.

  11. #5246
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    19.035
    Ich kenne keine Methode, aber ich denke, dass das generell möglich ist. Man könnte bestimmt über Python eine Meldung erstellen, die bei einem bestimmten Ereignis die gewünschten Daten ausgibt. Aber da müsste sich vermutlich jemand tief reinknieen und wissen, was genau du brauchst.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  12. #5247
    PAE.Macht.Antike! Avatar von Pie
    Registriert seit
    25.01.08
    Ort
    Noricum
    Beiträge
    17.679
    Stimmt. Eine XML-Datei rausschreiben. Oder eine CSV-Datei. Oder eine JSON-Datei. Und dann via php, asp, oder .net auslesen.

    Oder gleich als HTML-Datei schreiben. Viel einfacher!
    Pie's Ancient Europe (PAE)
    Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins allerletzte Detail!
    Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features, die Spaß machen. Hand drauf!


    ... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden soll ...

  13. #5248
    Wee Free Man Avatar von Rob Anybody
    Registriert seit
    20.05.06
    Ort
    Ruhrstadt
    Beiträge
    19.675
    Im MPLog.txt wird sehr viel protokoliert. Da könnten die gesuchten Infos dabei sein.

    Ich habe aber keine Ahnung wie man das aufarbeiten und an eine Konsole senden könnte.

    ----

    Oder man schaust mal nach, wie die Schnittstelle zwischen Pittboss und PBSpy funktioniert ....
    Aber an jenem Morgen war es Magie gewesen. Und es hörte nicht auf, Magie zu sein,
    nur weil man [inzwischen] eine Erklärung dafür hatte ...
    (Terry Pratchett)

  14. #5249
    Hat einen Plan Avatar von Mongke Khan
    Registriert seit
    25.06.11
    Ort
    KA
    Beiträge
    20.414
    Ich hab herausgefunden, dass man über die Python Konsole mit exec ein beliebiges Python-File ausführen und darüber in Dateien schreiben kann. Das genügt vermutlich für meine Zwecke

    E: Also so:

    Code:
    gc = CyGlobalContext()
    game = CyGame()
    iPlayer = game.getActivePlayer()
    pPlayer = gc.getPlayer(iPlayer)
    
    out = []
    
    out.append("=== CIV4 DUMP ===")
    out.append("Player ID: %d" % iPlayer)
    out.append("Player: %s" % pPlayer.getName())
    out.append("Gold: %d" % pPlayer.getGold())
    out.append("Cities: %d" % pPlayer.getNumCities())
    out.append("Units: %d" % pPlayer.getNumUnits())
    
    for i in range(pPlayer.getNumCities()):
        pCity = pPlayer.getCity(i)
        if not pCity.isNone():
            out.append("City %d: %s (pop %d)" % (i, pCity.getName(), pCity.getPopulation()))
    
    f = open("C:\\Temp\\civdump_output.txt", "w")
    f.write("\n".join(out))
    f.close()
    
    CyInterface().addImmediateMessage("civdump written to C:\\Temp\\civdump_output.txt", "")
    Und für die Infos, die mich interessieren, kann ich vermutlich die KI fragen, wie ich da ran komme

  15. #5250
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    10.003
    Zitat Zitat von Mongke Khan Beitrag anzeigen
    Lassen sich während einer laufenden Partie Civ Infos über die Partie auf eine Konsole dumpen? Also sowas wie eine Liste der Städte des Spielers und über welche Ressourcen die verfügen? Oder welche KIs bekannt sind und wie die Beziehung zu diesen ist?
    Wenn das Spiel nicht passwortgeschützt ist kannst du die entsprechenden Pythoncode-Zeilen einfügen und die relevanten Sachen in eine Datei schreiben.
    So ein Logging hat z.B. Charriu in seine CtH-Mod eingebaut für seine Statistiken.
    Das ist die einfachste Variante, wenn man es nur einmal braucht.

    Andere Variante wäre die Pyconsole-Modkomponente zu nutzen, die ich auch in die pbmod eingefügt habe. Wenn das aktiv ist, kann man sich zur Laufzeit (auch im SP) mit dem Spiel verbinden und Pythonbefehle absetzen. Es sind auch schon Befehle vordefiniert, die z.B. dann die Liste der Städtenamen ausspucken.

Seite 350 von 351 ErsteErste ... 250300340346347348349350351 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •