Seite 269 von 271 ErsteErste ... 169219259265266267268269270271 LetzteLetzte
Ergebnis 4.021 bis 4.035 von 4063

Thema: Der Pythonthread

  1. #4021
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.916
    Habe ich schon gefunden. Ich teste nun den neuen Text und ob die Buttongrafik. Danach kann ich schon einmal Danke sagen, denn es läuft soweit rund.

    Was jetzt kommt ist Feinschliff, wie die Begrenzung der maximalen Anwerbungen pro Runde.
    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. #4022
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.916
    War wohl doch noch nicht alles. Der Text stimmt jetzt, aber der Button wird doch woanders definiert, nicht in der HurryInfo.xml.

    In Python wird steht "screen.setStyle( "Hurry2", "Button_CityC2_Style" )", aber "Button_CityC2_Style" wird nirgendwo definiert, ich habe xml und python durchsuchen lassen, und alle SDK-Dateien.

    Bisher habe ich auch noch nicht die Grafikdateien gefunden, die beim Beschleunigen verwendet werden, so dass ich in die andere Richtung suchen könnte.
    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. #4023
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.916
    Sehr seltsam. Ich habe es nun soweit, dass ich einen anderen Button (in diesem Fall eine Grafik aus Vanilla, die ich testweise eingesetzt habe) einbauen kann, und die auch angezeigt wird:

    Sobald ich allerdings mit der Maus darüber fahre, wechselt der Button wieder zum Standard-Button für "mit Gold beschleunigen".

    Der Text dagegen wird korrekt dem neuen "Hurry"-Type entsprechend angezeigt.

    Das heißt, ich kann zwar das Bild anpassen, aber es wird nicht in jedem Fall korrekt angezeigt.
    Angehängte Grafiken Angehängte Grafiken
    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. #4024
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.916
    Ich habe ein Problem in Python, und zwar mit diesem Code:

    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
    					iCiv1 = gc.getCivilizationInfo(gc.getPlayer(city.getOwner()).getCivilizationType()).getRebellCiv()
    			        	iCiv2 = gc.getCivilizationInfo(gc.getPlayer(city.getOwner()).getCivilizationType()).getDerivativeCiv()
    			        	iCiv3 = gc.getCivilizationInfo(gc.getPlayer(city.getOwner()).getCivilizationType()).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:
    					        CurCiv = gc.getCivilizationInfo(iCiv)
    					else:
    						CurCiv = gc.getCivilizationInfo(gc.getPlayer(city.getOwner()).getCivilizationType())
    						iCiv = gc.getPlayer(city.getOwner()).getCivilizationType()
    					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)
    					iCitiesNewPlayer = OldPlayer.getNumCities()/2
    					iCityCount = 0
    					(loopCity, iter) = OldPlayer.firstCity(True)
    					while(loopCity):
    						iCityX = loopCity.getX()
    						iCityY = loopCity.getY()
    						pNewPlayer.acquireCity(loopCity,False,True)
    						for i in range(3):
    							Defender = loopCity.getConscriptUnit ()
    							pNewPlayer.initUnit( Defender, iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )                
    						loopCity.changeCulture(NewID,loopCity.getCulture(iOldPlayer),1)
    						iCityCount = iCityCount+1
    						if iCityCount == iCitiesNewPlayer:
    							break
    						(loopCity, iter) = OldPlayer.nextCity(iter, true)
    				        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###
    
    		if (not self.__LOG_CITYLOST):
    			return
    		CvUtil.pyPrint('City %s was lost by Player %d Civilization %s' 
    			%(city.getName(), player.getID(), player.getCivilizationName()))
    Bei mir funktioniert er einwandfrei, aber bei einem anderen User eben nicht. dort wird immer nur, statt die Hälfte der Städte zu übertragen, eine Stadt an den neuen Spieler übergeben (siehe auch diese Meldung). Hat jemand eine Idee, woran das liegen kann?
    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. #4025
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.397
    GetNumCities()/2 ist nicht unbedingt irgendwann == iCityCount, >= könnte helfen. Da hätte ich aber eher erwartet, dass alle Städte übertragen werden.

  6. #4026
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.916
    Das kann ich natürlich anpassen, aber ganz verstehe ich nicht, warum das nicht irgendwann == iCityCount ist.
    iCitiesNewPlayer = OldPlayer.getNumCities()/2 ist ja in jedem Fall eine ganzen Zahl, da Python ungerade Zahlen abschneidet, oder verstehe ich das falsch? Und da es die Hälfte von der Zahl der Städte ist, die OldPlayer besitzt, und mit 0 initiiert wird, sollte das doch irgendwann terminieren, sobald die Hälfte der Städte übertragen wurde.

    Mir stellt sich gerade noch die Frage, ob dieser Block überhaupt funktionieren kann:
    Code:
    						for i in range(3):
    							Defender = loopCity.getConscriptUnit ()
    							pNewPlayer.initUnit( Defender, iCityX,iCityY, UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH )                
    						loopCity.changeCulture(NewID,loopCity.getCulture(iOldPlayer),1)
    Existiert loopCity zu diesem Zeitpunkt überhaupt noch? Und wenn nicht. Warum funktioniert es bei mir, aber bei dem anderen nicht?

    Edit: Im Test funktioniert das aber auch.
    Geändert von Kathy (31. Januar 2021 um 18:38 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

  7. #4027
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.397
    Liefert getNumCities denn int oder float?

    Ansonsten schau mal rein, was acquireCity tut. Bei Einheiten gibt es über delayed_death manchmal irritierende Effekte.

    Außerdem löst das ja aus, wenn die HS erobert wurde. Die ist zu dem Zeitpunkt evtl. noch in der Liste des Vorbesitzers und sollte nicht nochmal acquired werden.

  8. #4028
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.916
    getNumCities liefert, wie die meisten Funktionen in Civ4 (nicht alle), integer.

    Das Seltsame ist ja vor allem, dass es bei mir funktioniert (heute nochmal getestet), nur bei Builder nicht. Ich habe sogar schon einmal den selben Spielstand wie er benutzt. Bei ihm wird nur eine Stadt übergeben (damals waren es drei), bei mir die Hälfte. Dabei hat er extra den ganzen Modordner gelöscht und neu installiert, damit es keine Altlasten gibt.
    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. #4029
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.450
    An wichtigen Stellen in BASE gehe ich mit Firstcity etc
    alle durch. Aus irgendeinem Grund habe ich mich seit Jahren schon nicht mehr auf getnumcities verlassen. Rucivfan hatte mir Mal den Grund gesagt, hab ihn aber vergessen.
    Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5

    Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)

  10. #4030
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.916
    Hat er mir auch gesagt, für die Übertragung der Städte wird auch mit FirstCity gearbeitet. Der Grund war: Wenn man mit "for i in range getNumCities()" die Städte durchgeht kann es sein, dass eine Stadt nicht mehr existiert, wenn man die Städte gemäß der ID durchgeht, und das dann Probleme gibt.
    Um festzustellen, wie viele Städte jemand hat und daraus die Zahl abzuleiten, wie viele Städte jemand abgeben muss, sollte es meiner Meinung nach aber funktionieren, weil dann nur mit zwei natürlichen Zahlen und eben nicht mit Städten gearbeitet 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

  11. #4031
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.450
    Macht Sinn.
    Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5

    Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)

  12. #4032
    PAE.Macht.Antike! Avatar von Pie
    Registriert seit
    25.01.08
    Ort
    Noricum
    Beiträge
    16.342
    Ich seh in dem Code auch keinen Fehler. Ausserdem: wieso gehts bei dir und bei ihm nicht? Das geht doch nicht. Entweder es geht oder es geht nicht. Vielleicht hat er in derselben Runde nachgesehen und nicht erst in der nächsten Runde. Könnte sein, dass da der Inlandsberater noch nicht die neuen Werte durchgegangen ist
    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!

  13. #4033
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.916
    Er schaut im Weltenbauer nach, und da sollte die Änderung sofort sichtbar werden.
    Aber genau das ist auch mein Problem, wenn der Fehler bei uns beiden auftreten würde, wäre es leichter für mich, damit zu arbeiten.
    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

  14. #4034
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.450
    Kann ich per Python abfragen, ob eine Gewinnereinheit die angreifende Einheit war? Es gibt ja hasmadeattack, aber wenn ich angreife und danach angegriffen werde und alles gewinne, würden die Verteidigungskämpfe ja auch triggern. Das möchte ich verhindern. Was wäre die eleganteste Lösung?
    Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5

    Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)

  15. #4035
    PAE.Macht.Antike! Avatar von Pie
    Registriert seit
    25.01.08
    Ort
    Noricum
    Beiträge
    16.342
    Ich denke auch, es ist nur via pWinner.isMadeAttack() möglich. (nicht hasMadeAttack)
    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!

Seite 269 von 271 ErsteErste ... 169219259265266267268269270271 LetzteLetzte

Berechtigungen

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