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.
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
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
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.
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
Ich habe ein Problem in Python, und zwar mit diesem Code:
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?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()))
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
GetNumCities()/2 ist nicht unbedingt irgendwann == iCityCount, >= könnte helfen. Da hätte ich aber eher erwartet, dass alle Städte übertragen werden.
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:
Existiert loopCity zu diesem Zeitpunkt überhaupt noch? Und wenn nicht. Warum funktioniert es bei mir, aber bei dem anderen nicht?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)
Edit: Im Test funktioniert das aber auch.
Geändert von Kathy (31. Januar 2021 um 17: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
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.
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
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)
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
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)
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.
- Pie's Ancient Europe (letztes Update: 22.12.2022)
... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!
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
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)
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.
- Pie's Ancient Europe (letztes Update: 22.12.2022)
... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!