Seite 271 von 271 ErsteErste ... 171221261267268269270271
Ergebnis 4.051 bis 4.064 von 4064

Thema: Der Pythonthread

  1. #4051
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.465
    Hab's erstmal nur für nen Nerf benutzt. Aber eröffnet natürlich völlig neue Möglichkeiten im Python.
    Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5

    Download von BASE 6.4 [E]: HIER (klick mich!) (Stand: 08.06.2024)

  2. #4052
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.595
    Weiß jemand, ob es irgendwo eine Pedia-Variante gibt, bei der es eine Seite "Staatsformkategorien" gibt (so wie "Einheitenkategorien"), wo man dann auf den Unterseiten sehen kann, welche Staatsformen alle zu einer Kategorie gehören? Also (im Original) Hauptseite: Regierung - Recht - Arbeit - Wirtschaft - Religion, und dann wäre unter "Regierung" auf der Unterseite nur Despotimus - Erbrecht - Repräsentation - Polizeistaat - Allg. Wahlrecht (mit jeweils Link zu der Staatsform selbst).
    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. #4053
    PAE.Macht.Antike! Avatar von Pie
    Registriert seit
    25.01.08
    Ort
    Noricum
    Beiträge
    16.449
    Nö, ich glaub nicht. Aber sowas ließe sich bei der Auflistung leicht umbauen, sodass nicht die alphabetisierte Gesamtliste aufscheint, sondern nach den CivicInfos.
    Pie's Ancient Europe (PAE)
    Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins letzte Detail!
    Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features.


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

  4. #4054
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.595
    Kann mit jemand sagen, was bei diesem Code hin muss?
    Code:
    iPillageGold = pPlot.getYield("YIELD_FOOD")
    Laut API gehört da "getYield (YieldType eIndex)" rein. Aber egal, was ich reinschreibe, das Python sagt "This constructor takes no Arguments" - und zwar egal, ob ich "YIELD_FOOD", 0, 1, gar nichts, gc.getInfoTypeForString("YIELD_FOOD"),... da reinschreibe. Nur bei YIELD_FOOD ohne Anführungszeichen sagt er: "YIELD_FOOD is not defined", was Quatsch ist, aber offenbar kann er hier nicht darauf zugreifen.
    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. #4055
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.904
    Das letzte geht nicht weil er dann auf eine Variable namens YIELD_FOOD zugreifen will.
    Ich tippe darauf, dass pPlot falsch definiert ist. Fehler ist also außerhalb des geposteten Codes…

  6. #4056
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.595
    pPlot ist schon korrekt definiert. (Sonst würde der Fehler heißen: int Type has no function "getYield" )

    Die Lösung lautet: "pPlot.getYield(YieldTypes.YIELD_FOOD)"

    Darauf muss man auch mal kommen.
    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. #4057
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.465
    hier stand Unwichtiges^^

    Auf jeden Fall hast du es jetzt.
    Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5

    Download von BASE 6.4 [E]: HIER (klick mich!) (Stand: 08.06.2024)

  8. #4058
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.595
    Falls hier jemand reinguckt: Kann jemand erkennen, was ich hier falsch gemacht haben?

    Code:
    	def onUnitBuilt(self, argsList):
    		'Unit Completed'
    		city = argsList[0]
    		unit = argsList[1]
    		player = PyPlayer(city.getOwner())
    ### Kennel
    		iUnitType = PyInfo.UnitInfo(unit.getUnitType())
    		bKennelUnit = false
    		if (iUnitType == gc.getInfoTypeForString("UNIT_HUND")):
    			bKennelUnit = true
    		elif (iUnitType == gc.getInfoTypeForString("UNIT_JAGDLEOPARD")):
    			bKennelUnit = true
    		elif (iUnitType == gc.getInfoTypeForString("UNIT_KAMPFHUND")):
    			bKennelUnit = true
    		if (bKennelUnit == true):
    			if ( city.getNumActiveBuilding(gc.getInfoTypeForString("BUILDING_KENNEL")) ):
    				unit.setHasPromotion(gc.getInfoTypeForString("PROMOTION_SHOCK1"),true)
    				unit.setHasPromotion(gc.getInfoTypeForString("PROMOTION_BLINDING1"),true)
    ### Kennel end
    		CvAdvisorUtils.unitBuiltFeats(city, unit)
    		
    		if (not self.__LOG_UNITBUILD):
    			return
    		CvUtil.pyPrint('%s was finished by Player %d Civilization %s' 
    			%(PyInfo.UnitInfo(unit.getUnitType()).getDescription(), player.getID(), player.getCivilizationName()))
    Der Code soll bewirken, dass, wenn eine Einheit "Hund", "Jagdleopard" oder "Kampfhund" gebaut wird, in einer Stadt mit "Zwinger" diese Einheit gleich zwei Beförderungen erhält. Es kommen keine Fehlermeldungen, dennoch erhalten neue Hunde diese Beförderungen 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

  9. #4059
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.595
    Ich habe den Fehler gefunden. "iUnitType = PyInfo.UnitInfo(unit.getUnitType())" muss einfach nur "iUnitType = unit.getUnitType()" sein. Den anderen Code hatte ich von irgendwo her kopiert, wo er augenscheinlich gar nicht genutzt wird.
    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. #4060
    PAE.Macht.Antike! Avatar von Pie
    Registriert seit
    25.01.08
    Ort
    Noricum
    Beiträge
    16.449
    Pie's Ancient Europe (PAE)
    Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins letzte Detail!
    Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features.


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

  11. #4061
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.595
    Es hilft manchmal einfach, das Problem hier reinzustellen. Keine Ahnung warum, aber ich denke sofort anders, wenn ich das getan habe.
    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. #4062
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.061
    Wenn man so tut, das ist nicht mein Code, findet man den Fehler immer schnell.

  13. #4063
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.465
    Zitat Zitat von Kathy Beitrag anzeigen
    Ich habe den Fehler gefunden. "iUnitType = PyInfo.UnitInfo(unit.getUnitType())" muss einfach nur "iUnitType = unit.getUnitType()" sein. Den anderen Code hatte ich von irgendwo her kopiert, wo er augenscheinlich gar nicht genutzt wird.
    Im Prinzip ganz einfach, wenn oben etwas aus dem SDK übergeben wird, kann man es auch direkt benutzen (also in diesem Fall "unit.")
    Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5

    Download von BASE 6.4 [E]: HIER (klick mich!) (Stand: 08.06.2024)

  14. #4064
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.595
    Ich habe nach längerer Zeit noch einmal etwas in Python gemacht.

    Der Code soll bei onTechAcquired ausgelöst werden (bei Faschismus, für Tests habe ich eine andere Technologie verwendet) wenn die Technologie das erste Mal erforscht wird.

    Nun löst dieses Code aber ein Einfrieren des Spiels aus, in dem Moment, wo das erste Mal die Technologie entwickelt wird.

    Bis zu der grünen Zeile hat es noch funktioniert (weiß ich, weil da ein Fehler war - nachdem der korrigiert wurde, geht nichts mehr).

    Code:
    	###Appeasement beginn###
    ###                elif iTechType == gc.getInfoTypeForString("TECH_FASCISM"):
                    elif iTechType == gc.getInfoTypeForString("TECH_ZELTE"):
    			if (gc.getGame().isOption(gc.getInfoTypeForString("GAMEOPTION_SPAWN_NEW_CIVS"))):
    				iDPlayerSmallestEmpire = -1
    				iNumSmallestEmpireCities = 255
    				for iPlayer in range(gc.getMAX_PLAYERS()):
    					player = gc.getPlayer(iPlayer)
    					if (player.isAlive()):
    						iCurCiv = gc.getPlayer(iPlayer).getCivilizationType()
    						if not (gc.getCivilizationInfo(iCurCiv).isCitystate()):
    							iPlayerCities = player.getNumCities()
    							if iPlayerCities < iNumSmallestEmpireCities:
    								iNumSmallestEmpireCities = iPlayerCities
    								iDPlayerSmallestEmpire = iPlayer
    				pTargetEmpire = gc.getPlayer(iDPlayerSmallestEmpire )
    				iTargetEmpireTeam = pTargetEmpire.getTeam ()
    				pTargetEmpireTeam = gc.getTeam(iTargetEmpireTeam)
    			#### Relikt von Völkerwanderung - für Appeasement unerheblich
    			#	iNumContacts = 0
    			#	ContactCivArray = []
    			#	for iPlayer in range(gc.getMAX_PLAYERS()):
    			#		pPlayer2 = gc.getPlayer(iPlayer)
    			#		if(pPlayer2.getTeam() != iTargetEmpireTeam):
    			#			iTeam2 = pPlayer2.getTeam ()
    			#			if pTargetEmpireTeam.canContact(iTeam2):
    			#				iNumContacts = iNumContacts+1
    			#	if iNumContacts < iNumBiggestEmpireCities/2 :
    			#### Relikt von Völkerwanderung - für Appeasement unerheblich
    				for iPlayer2 in range(gc.getMAX_PLAYERS()):
    					pPlayer2 = gc.getPlayer(iPlayer2)
    					if(pPlayer2.getTeam() != iTargetEmpireTeam):
    						iTeam2 = pPlayer2.getTeam ()
    						if pTargetEmpireTeam.canContact(iTeam2):
    							iPlayer2Civ = gc.getPlayer(iPlayer2).getCivilizationType()
    							if not (gc.getCivilizationInfo(iPlayer2Civ).isCitystate()):
    								iBestCityCulture = 0
    								iBestOcupyCity = -1
    								(loopCity, iter) = pTargetEmpire.firstCity(True)
    								while(loopCity):
    									if not (loopCity.isCapital):
    										iCurTargetCulture = loopCity.getCulture(iDPlayerSmallestEmpire)
    										if (loopCity.getOriginalOwner() == iDPlayerSmallestEmpire):
    											iCurTargetCulture = iCurTargetCulture*2
    										if (iCurTargetCulture > iBestCityCulture):
    											iBestCityCulture = iCurTargetCulture
    											iBestOcupyCity = loopCity.getID()
    								if (iBestOcupyCity == -1):
    									iBestOcupyCity = pPlayer2.getNumCities()-1
    								OcupiedCity = pPlayer2.getCity(iBestOcupyCity )
    								iCityX = OcupiedCity.getX()
    								iCityY = OcupiedCity.getY()
    								Defender = OcupiedCity.getConscriptUnit ()
    								pTargetEmpire.acquireCity(OcupiedCity,False,True)
    		###init Units
    								for i in range(5):
    									pTargetEmpire.initUnit( Defender, iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    								for i in range(6):
    									pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_PANZERWAGEN"), iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    									pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_MILITAERFAHRZEUG"), iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    								for i in range(3):
    									pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_FIGHTER"), iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    									pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_WORKER"), iCityX,iCityY, UnitAITypes.UNITAI_WORKER, DirectionTypes.DIRECTION_NORTH )
    									pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_HALFTRACK"), iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    									pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_SELBSTFAHRLAFETTE"), iCityX,iCityY, UnitAITypes.UNITAI_RANGED_ATTACK, DirectionTypes.DIRECTION_NORTH )
    									pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_LONG_CANNON"), iCityX,iCityY, UnitAITypes.UNITAI_RANGED_ATTACK, DirectionTypes.DIRECTION_NORTH )
    								for i in range(2):
    									pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_TANK"), iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    									pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_BOMBER"), iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    									pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_LIGHT_AA_TOWED"), iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    								pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_MOTORBIKE_SCOUT"), iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    								pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_MINEUR"), iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    								pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_LAND_MINE"), iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    								pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_STUKA"), iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    								if OcupiedCity.isCoastal(20):
    									for i in range(3):
    										pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_DESTROYER"), iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    										pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_WORKBOAT"), iCityX,iCityY, UnitAITypes.UNITAI_WORKER_SEA, DirectionTypes.DIRECTION_NORTH )
    										pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_TRANSPORT"), iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    									for i in range(2):
    										pNewPlayer.initUnit( gc.getInfoTypeForString("UNIT_CRUISER"), iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )
    				(loopUnit, iter) = pTargetEmpire.firstUnit(true)
    				while(loopUnit):
    					if loopUnit.getExperience() == 0:
    						loopUnit.changeExperience(8,15,false,false,false)
    				for iPlayer in range(gc.getMAX_PLAYERS()):
    					if gc.getPlayer(iPlayer).isHuman():
    				               	popup = PyPopup.PyPopup(-1)
    	 	    		        	popup.setHeaderString(CyTranslator().getText("TXT_KEY_HEADER_APPEASEMENT",(-1,-1)))
            					popup.setBodyString(CyTranslator().getText("TXT_KEY_MESSAGE_APPEASEMENT",(pTargetEmpire.getCivilizationDescription(0),pTargetEmpire.getCivilizationDescription(0))))
                   					popup.launch(True, PopupStates.POPUPSTATE_IMMEDIATE)
    #	###Appeasement end###
    Es kommt kein Python-Fehler und es stürzt auch nicht ab, es passiert nur einfach nichts mehr. Ich vermute, dass eine unendliche Schleife erzeugt wird - kann aber nicht sehen wo.
    Einen Fehler habe ich gerade gesehen, bei "isCapital" fehlen die Klammern - kann das der Auslöser sein?
    Sieht hier jemand sofort etwas? Ich werde mich morgen dranmachen, Teile des Codes auszukommentieren, um zu schauen, bis wo es gutgeht - aber wenn hier jemand etwas offensichtliches sieht... Jeder Versuch braucht gefühlt zwei Stunden, weil das Spiel so lange lädt.

    Vor allem habe ich aber eine Frage zu diesem Teil:
    Code:
    								if (iBestOcupyCity == -1):
    									iBestOcupyCity = pPlayer2.getNumCities()-1
    Damit soll, für den Fall dass vorher keine Stadt gefunden wurde, die den Kriterien entspricht, die letzte Stadt der Liste ausgewählt werden. Die Methode scheint mir aber nicht eben elegant, vielleicht sogar Fehleranfällig. Wie müsste ich
    Code:
    								(loopCity, iter) = pTargetEmpire.firstCity(True)
    								while(loopCity):
    									if not (loopCity.isCapital):
    										iCurTargetCulture = loopCity.getCulture(iDPlayerSmallestEmpire)
    										if (loopCity.getOriginalOwner() == iDPlayerSmallestEmpire):
    											iCurTargetCulture = iCurTargetCulture*2
    										if (iCurTargetCulture > iBestCityCulture):
    											iBestCityCulture = iCurTargetCulture
    											iBestOcupyCity = loopCity.getID()
    ändern, damit die letzte Stadt gesetzt wird? Irgendwie müsste ich nur beim ersten Durchlauf egal welche Stadt nehmen.

    Edit:
    Habe gerade gesehen, dass
    Code:
    								(loopCity, iter) = pTargetEmpire.nextCity(iter, true)
    fehlt. Das dürfte ein entscheidender Fehler sein.
    Das selbe bei den Units.
    Geändert von Kathy (Gestern um 20:26 Uhr)
    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

Seite 271 von 271 ErsteErste ... 171221261267268269270271

Berechtigungen

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