Seite 265 von 271 ErsteErste ... 165215255261262263264265266267268269 ... LetzteLetzte
Ergebnis 3.961 bis 3.975 von 4063

Thema: Der Pythonthread

  1. #3961
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.454
    gc.getBuildingInfo <- da fehlen die Klammern dahinter ()
    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)

  2. #3962
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    Hab ich mal testweise 4x gesetzt ändert nix am Problem

    Code:
    #TEST
            elif iBuildingType == CvUtil.findInfoTypeNum(gc.getBuildingInfo(), gc.getNumBuildingInfos(), "BUILDING_XXX"):
    			(loopCity, iter) = (pPlayer.firstCity(True))
    			while(loopCity):
    				loopCity.setNumRealBuilding(CvUtil.findInfoTypeNum(gc.getBuildingInfo(), gc.getNumBuildingInfos(), "BUILDING_ZZZ"), False)
    				(loopCity, iter) = (pPlayer.nextCity(iter, true))
            elif iBuildingType == CvUtil.findInfoTypeNum(gc.getBuildingInfo(), gc.getNumBuildingInfos(), "BUILDING_ZZZ"):
    			(loopCity, iter) = (pPlayer.firstCity(True))
    			while(loopCity):
    				pCity.setNumRealBuilding(CvUtil.findInfoTypeNum(gc.getBuildingInfo(), gc.getNumBuildingInfos(), "BUILDING_XXX"), False)
    				(loopCity, iter) = (pPlayer.nextCity(iter, true))
    #TEST END
    load_module CvEventManager
    Traceback (most recent call last):
    File "<string>", line 1, in ?
    File "<string>", line 52, in load_module
    File "CvEventInterface", line 17, in ?
    File "<string>", line 52, in load_module
    File "BugEventManager", line 102, in ?
    File "<string>", line 35, in load_module
    File "<string>", line 13, in _get_code
    File "CvEventManager", line 567
    elif iBuildingType == CvUtil.findInfoTypeNum(gc.getBuildingInfo(), gc.getNumBuildingInfos(), "BUILDING_XXX"):
    ^
    SyntaxError: invalid syntax
    load_module CvAppInterface
    load_module os
    load_module CvUtil
    load_module traceback

  3. #3963
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.454
    Woher haste eigentlich dein CvUtil.findInfoTypeNum(gc.getBuildingInfo(), gc.getNumBuildingInfos(), "BUILDING_XXX") ?

    Funktioniert das an anderer Stelle? Ich benutze nämlich einfach nur iBuildingType == gc.getInfoTypeForString( 'BUILDING_XX' )

    Dein Fehler ist auf jeden Fall in Zeile 567, wie angegeben. Poste die am besten mal komplett.
    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)

  4. #3964
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    Code ist von Kathy und auf der letzten Seite auch komplett drauf. Wie das log so schön schreibt die syntax ist schon mal falsch....

    LINK

  5. #3965
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.017
    Das hier:
    CvUtil.findInfoTypeNum(gc.getBuildingInfo(), gc.getNumBuildingInfos(), "BUILDING_XXX")
    habe ich aber von deinem Code kopiert und daher nicht weiter überprüft. Generell stimme ich Cybah zu: gc.getInfoTypeForString( 'BUILDING_XX' ) ist besser - denn die andere Funktion ruft genau das auf und ignoriert die übergebenen Parameter (außer dem Text) komplett.

    Einen Syntax-Fehler sehe ich allerdings in der betreffenden Zeile 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

  6. #3966
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Falls vor elif kein if steht...

  7. #3967
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    Der Code
    Code:
    		if iBuildingType == CvUtil.findInfoTypeNum(gc.getBuildingInfo, gc.getNumBuildingInfos(), "BUILDING_ARCOLOGY_SHIELDING"):
    			pCity.setNumRealBuilding(CvUtil.findInfoTypeNum(gc.getBuildingInfo, gc.getNumBuildingInfos(), "BUILDING_ARCOLOGY"), False)
    		elif iBuildingType == CvUtil.findInfoTypeNum(gc.getBuildingInfo, gc.getNumBuildingInfos(), "BUILDING_DEFLECTOR_SHIELDING"):
    			pCity.setNumRealBuilding(CvUtil.findInfoTypeNum(gc.getBuildingInfo, gc.getNumBuildingInfos(), "BUILDING_ARCOLOGY_SHIELDING"), False)
    kommt von BTS und funktioniert genau wie er soll bezogen auf eine City !

    Die Herausforderung war die Abfrage über alle Citys vom Player zu machen.
    Und jetzt bitte nochmal für Klarheit, wo soll wie "gc.getInfoTypeForString( 'BUILDING_XX' )" eingebunden werden

  8. #3968
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.017
    Statt
    (CvUtil.findInfoTypeNum(gc.getBuildingInfo, gc.getNumBuildingInfos(), "BUILDING_ARCOLOGY_SHIELDING")
    muss
    (gc.getInfoTypeForString("BUILDING_ARCOLOGY_SHIELDING"))
    stehen.
    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. #3969
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    Ich hab es ja echt versucht aber DAS:
    Code:
    #TEST
            elif iBuildingType == gc.getInfoTypeForString("BUILDING_XXX"):
    			(loopCity, iter) = (pPlayer.firstCity(True))
    			while(loopCity):
    				loopCity.setNumRealBuilding(gc.getInfoTypeForString("BUILDING_ZZZ"), False)
    				(loopCity, iter) = (pPlayer.nextCity(iter, true))
            elif iBuildingType == gc.getInfoTypeForString("BUILDING_ZZZ"):
    			(loopCity, iter) = (pPlayer.firstCity(True))
    			while(loopCity):
    				pCity.setNumRealBuilding(gc.getInfoTypeForString("BUILDING_XXX"), False)
    				(loopCity, iter) = (pPlayer.nextCity(iter, true))
    #TEST END
    funktioniert einfach nicht oder mache ich was falsch
    Mir fliegt das ganze HUD weg...

    Traceback (most recent call last):
    File "<string>", line 1, in ?
    File "<string>", line 52, in load_module
    File "CvEventInterface", line 17, in ?
    File "<string>", line 52, in load_module
    File "BugEventManager", line 102, in ?
    File "<string>", line 35, in load_module
    File "<string>", line 13, in _get_code
    File "CvEventManager", line 567
    elif iBuildingType == gc.getInfoTypeForString("BUILDING_XXX"):
    ^
    SyntaxError: invalid syntax
    load_module CvAppInterface
    load_module os
    load_module CvUtil
    load_module traceback

  10. #3970
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Es ist ein Syntaxfehler und der Cursor ist ganz vorne auf dem Zeilenanfang
    Ohne die Zeilen darüber können wir nur raten. Es ist garantiert ein extrem simpler Fehler.

  11. #3971
    Whovian Avatar von antriot
    Registriert seit
    30.09.12
    Ort
    TARDIS Type 40
    Beiträge
    2.641
    Poste doch einfach kurz den kompletten Code evtl. mit Zeilennummern, dann können wir die weiterhelfen
    Tick tock goes the clock...

  12. #3972
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    Oh man, dass mit dem HUB ist gelöst, genau wie du sagtest ganz einfach.
    Erste Zeile vor "elif" mussen 2 Tabs hin. Das war aber nur ein Tab und das andere leerzeichen
    Jetzt läuft das HUD und im log ist die syntax Fehlermeldung weg
    Genau das meinte antriot wohl , hab ich jetzt kapiert !!! Danke.

    Jetzt zur eigentlichen Funktion. Die will leider noch nicht und bezieht sich weiterhin nur auf eine City.
    Ich kann z.b. in City A das Building XXX bauen und in City D das Building ZZZ. Das Building XXX bleibt in City A bestehen und somit existieren wieder Beide

    Code:
    	def onBuildingBuilt(self, argsList):
    		'Building Completed'
    		pCity, iBuildingType = argsList
    		pPlayer = gc.getPlayer(pCity.getOwner())
    		game = gc.getGame()
    #enable movie popup for national and global wonders
    		if pCity.getOwner() == gc.getGame().getActivePlayer() and gc.getBuildingInfo(iBuildingType).getMovieDefineTag() != "NONE":
    			# If this is a wonder...
    			popupInfo = CyPopupInfo()
    			popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON_SCREEN)
    			popupInfo.setData1(iBuildingType)
    			popupInfo.setData2(pCity.getID())
    			popupInfo.setData3(0)
    			popupInfo.setText(u"showWonderMovie")
    			popupInfo.addPopup(pCity.getOwner())
    
    		CvAdvisorUtils.buildingBuiltFeats(pCity, iBuildingType)
    
    #replace arcology with higher version
    		if iBuildingType == CvUtil.findInfoTypeNum(gc.getBuildingInfo, gc.getNumBuildingInfos(), "BUILDING_ARCOLOGY_SHIELDING"):
    			pCity.setNumRealBuilding(CvUtil.findInfoTypeNum(gc.getBuildingInfo, gc.getNumBuildingInfos(), "BUILDING_ARCOLOGY"), False)
    		elif iBuildingType == CvUtil.findInfoTypeNum(gc.getBuildingInfo, gc.getNumBuildingInfos(), "BUILDING_DEFLECTOR_SHIELDING"):
    			pCity.setNumRealBuilding(CvUtil.findInfoTypeNum(gc.getBuildingInfo, gc.getNumBuildingInfos(), "BUILDING_ARCOLOGY_SHIELDING"), False)
    #replace arcology with higher version END
    
    #TEST
    		elif iBuildingType == gc.getInfoTypeForString("BUILDING_XXX"):
    			(loopCity, iter) = (pPlayer.firstCity(True))
    			while(loopCity):
    				loopCity.setNumRealBuilding(gc.getInfoTypeForString("BUILDING_ZZZ"), False)
    				(loopCity, iter) = (pPlayer.nextCity(iter, true))
    		elif iBuildingType == gc.getInfoTypeForString("BUILDING_ZZZ"):
    			(loopCity, iter) = (pPlayer.firstCity(True))
    			while(loopCity):
    				pCity.setNumRealBuilding(gc.getInfoTypeForString("BUILDING_XXX"), False)
    				(loopCity, iter) = (pPlayer.nextCity(iter, true))
    #TEST END
    Da muss noch was fehlen

  13. #3973
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.454
    pCity.setNumRealBuilding unten musst du auch zu loopCity.setNumRealBuilding ändern. Habs auch erst nach paar Minuten genauem Hinsehen bemerkt.
    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)

  14. #3974
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    Ach du meine Güte..... ja genau
    ich dachte echt das wird schon nix mehr

    Habe die Funktion nun drin und die ersten Tests laufen gut.

    Bild

    Wenn ich in City A das Building XXX habe und baue in einer anderen Stadt das Building ZZZ dann wird
    Building XXX aus City A entfernt, geil !
    Vielen Lieben Dank für die Codezeilen und Hilfestellung bei diesem Thema

    Eine Frage noch, funktioniert das auch ganz normal für die KI ?
    Was ich heute echt wieder gelernt habe ist das Einrücken des Codes. Mir war erst garnicht bewusst das ein
    einziger Tab zuviel die ganze Funktion aushebeln kann. Hab sogleich auch ein paar andere Codeblöcke ausgeräuft wo am Zeilenanfang statt Tabs mit Leerzeichen gearbeitet wurde. Hab ich nun alles mit Tabs gemacht das mir sowas nicht wieder passiert. Der Notepad++ zeigt ja sogar die Funktionszeilen an die in Abhänigkeit stehen
    Ach wenn ich nur einfach mehr davon verstehen würde, ich arbeite mich aber rein. Mit jedem Problem lerne ich wieder was. Nochmals vielen DANK
    Angehängte Grafiken Angehängte Grafiken

  15. #3975
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Gut, Cybah Ich hatte es nicht gefunden.

    Zitat Zitat von xaster Beitrag anzeigen
    Eine Frage noch, funktioniert das auch ganz normal für die KI ?
    Ja, auch wenn diese Gebäude fertigstellen wird die Methode aufgerufen. Der KI ist nur vorher nicht "bewusst" dass beim Bau von Gebäude X das andere gelöscht wird. Das spielt in den meisten denkbaren Fällen aber keine Rolle.


    P.S. Ich bin auch ein Fan von Tabs, aber empfehle dir trotzdem statt Tabs auf Leerzeichen zu setzen. Da die Mehrheit auf 4 Leerzeichen setzt bekommst du sonst beim Austausch mit anderen graue Haare (und die anderen auch).
    Die Durchmischung wie im Civ4-Code ist übriges nicht „normal“. Das sollte man sich nicht als Vorbild nehmen.

Seite 265 von 271 ErsteErste ... 165215255261262263264265266267268269 ... LetzteLetzte

Berechtigungen

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