Seite 101 von 271 ErsteErste ... 5191979899100101102103104105111151201 ... LetzteLetzte
Ergebnis 1.501 bis 1.515 von 4063

Thema: Der Pythonthread

  1. #1501
    verschollen Avatar von deepwater
    Registriert seit
    23.04.11
    Beiträge
    1.580
    Ahh, da habe wir ja schon ein erstes Ergebnis, vielen Dank für die Hilfe bisher, doch jetzt kommt wie vermutet das setData ins Spiel. Wenn ich alle Umlaute aus der Frage ersetze werden diese beiden Fehler nicht mehr angezeigt. Ich denke, ich werde das später eh über xml-Text laufen lassen. Nun der neue Fehler, den ich vielleicht auch selbst hinkriege, mal sehen, aber erst morgen...
    Gute Nacht und vielen Dank
    Angehängte Grafiken Angehängte Grafiken

  2. #1502
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Na gut, das ist jetzt einfach: Du kannst nicht pPlot übergeben, da als Übergabe-Wert nur Integer-Zahlen erlaubt sind.
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  3. #1503
    verschollen Avatar von deepwater
    Registriert seit
    23.04.11
    Beiträge
    1.580
    Ah, ok, aber wie kann ich dem dann sagen, um welchen Plot es sich handelt? Kann ich dem das Improvement geben und dann den Plot nochmal bestimmen? Geht das mit einem Improvement überhaupt, ist das ein Integer, wohl eher nicht, oder? Aber wie kann ich es dann machen?
    Sorry für die vielen Fragen, aber ich hab echt keine Ahnung von Python.

  4. #1504
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Übergib doch einfach iX und iY . Aus den Koordinaten lässt sich das schließlich bestimmen, um welchen Plot es sich handelt.
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  5. #1505
    Registrierter Benutzer
    Registriert seit
    04.03.07
    Beiträge
    4.694
    Da geht aber nur ein int rein

  6. #1506
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Neben setData1 + setData2 gibt's auch noch 3 + 4 .
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  7. #1507
    verschollen Avatar von deepwater
    Registriert seit
    23.04.11
    Beiträge
    1.580
    Ok, vielen Dank, manchmal ist es echt sinnvoll die eigene Birne zu benutzen.
    Naja, nach mehreren kleineren Fehlern komme ich bei diesem nicht weiter. Er sagt: "this constructor takes no arguments"
    Meine Einträge sehen inzwischen so aus:
    Der EventManager:
    PHP-Code:
    ###Beginn Popup
            
    pPlot CyMap().plot(iXiY)
            if 
    iImprovement == gc.getInfoTypeForString('IMPROVEMENT_LANDAUFSCHÜTTUNG'):
                
    iPlayerNum 0
                
    for iPlayer in range(gc.getMAX_PLAYERS()):
                    
    player gc.getPlayer(iPlayer)
                    if 
    player.isAlive():
                        
    iPlayerNum iPlayerNum 1
                        
    if player.isHuman():
                            
    popupInfo CyPopupInfo()
                            
    popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON)
                            
    popupInfo.setText('Welche Gelaendeart moechtest Du errichten?')
                            
    popupInfo.setData1(iPlayer)
                            
    popupInfo.setData2(iX)
                            
    popupInfo.setData3(iY)
                            
    popupInfo.setOnClickedPythonCallback("SelectTerrainType")
                            
    popupInfo.addPythonButton('Grassland')
                            
    popupInfo.addPythonButton('Ebene')
                            
    popupInfo.addPopup(iPlayer)                                        
    ###Ende Popup 
    ...und die CvScreensInterface.py:
    PHP-Code:
    ############Neu TerrainTypes Auswahl
    def SelectTerrainType(argsList):
        
    iButtonId argsList[0]
        
    iData1 argsList[1]
        
    iData2 argsList[2]
        
    iData3 argsList[3]
        
    iData4 argsList[4]
        
    szText argsList[5]
        
    bOption1 argsList[6]
        
    bOption2 argsList[7]
        
    pPlayer gc.getPlayer(iData1)
        
    iX gc.getX(iData2)
        
    iY gc.getY(iData3)
        
    pPlot CyMap().plot(iXiY)
        if 
    iButtonId == 0:
            
    pPlot.setTerrainType (TerrainTypes(0))
        if 
    iButtonId == 1:
            
    pPlot.setTerrainType (TerrainTypes(1))
    #############Das war´s mit den TerrainTypes... :) 
    Edit: Ups, hatte noch einen alten Fehler anhängen...

  8. #1508
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Und welche Zeile ist das Problem ?


    Unabhängig davon:

    PHP-Code:
        iX gc.getX(iData2)
        
    iY gc.getY(iData3)
        
    pPlot CyMap().plot(iXiY
    getX + getY gibt's nicht, brauchst du auch nicht, sind ja schon die Koordinaten . -> pPlot = CyMap().plot(iData2,iData3)
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  9. #1509
    verschollen Avatar von deepwater
    Registriert seit
    23.04.11
    Beiträge
    1.580
    Also jetzt kommt eine neue Meldung, die ich mal so wiedergebe, ich werde nicht schlau daraus, mögen Bessere sich daran versuchen.
    Angehängte Grafiken Angehängte Grafiken

  10. #1510
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    popupInfo.addPythonButton braucht noch einen 2. Parameter, allerdings k.A. was der genau ist. "" tut's aber (oder konkret: popupInfo.addPythonButton('Grassland', "") wird funktionieren.
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  11. #1511
    verschollen Avatar von deepwater
    Registriert seit
    23.04.11
    Beiträge
    1.580

    Juuhuu, es funktioniert, zumindestens das was ich bisher wollte... Nach der Beseitigung einiger weiterer kleiner Fehler. Vielen Dank an alle, die mir hier geholfen haben!!! Anbei ein Bild des Popups.
    Leider hat sich noch ein Problem ergeben, man sieht das betreffende Feld nämlich u.U. gar nicht! Jetzt glaube ich, dass es doch einen Befehl zur 'Kamerafahrt' gibt, wie genau heißt der?
    Angehängte Grafiken Angehängte Grafiken

  12. #1512
    verschollen Avatar von deepwater
    Registriert seit
    23.04.11
    Beiträge
    1.580
    Hi,
    ich versuche es jetzt mit folgendem Befehl:
    PHP-Code:
    ###Beginn Popup
            
    pPlot CyMap().plot(iXiY)
            if 
    iImprovement == gc.getInfoTypeForString('IMPROVEMENT_LANDAUFSCHÜTTUNG'):
                
    iPlayerNum 0
                
    for iPlayer in range(gc.getMAX_PLAYERS()):
                    
    player gc.getPlayer(iPlayer)
                    if 
    player.isAlive():
                        
    iPlayerNum iPlayerNum 1
                        
    if player.isHuman():
                  ------    
    CyCamera().SetDestinationPosition(selfiXiY)         ------
                            
    popupInfo CyPopupInfo()
                            
    popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON)
                            
    popupInfo.setText('Welche Gelaendeart moechtest Du errichten?')
                            
    popupInfo.setData1(iPlayer)
                            
    popupInfo.setData2(iX)
                            
    popupInfo.setData3(iY)
                            
    popupInfo.setOnClickedPythonCallback("SelectTerrainType")
                            
    popupInfo.addPythonButton('Grasland'"")
                            
    popupInfo.addPythonButton('Ebene'"")
                            
    popupInfo.addPopup(iPlayer)                                        
    ###Ende Popup 
    ...und bekomme folgenden Fehler, bitte um Hilfe. Ich bekomms nicht hin. Vielen Dank im Voraus
    Edit: Achja, diesen NiPoint3 bekommt man aus der CvPlot.cpp in Zeile 293.
    Angehängte Grafiken Angehängte Grafiken

  13. #1513
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    SetDestinationPosition nimmt nur ein Argument, nämlich einen NiPoint...was auch immer das ist.
    Api sagt: NiPoint3(FLOAT x, FLOAT y, FLOAT z)

    -> solltest mal testen ob
    CyCamera().SetDestinationPosition( NiPoint3( float(iX),float(iY),float(0) ) ) funktioniert. Ist aber auch nur geraten .
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  14. #1514
    verschollen Avatar von deepwater
    Registriert seit
    23.04.11
    Beiträge
    1.580
    Prima, es gibt zumindestens keine Fehlermeldung mehr, aber funktionieren tut es auch nicht. Irgendetwas fehlt da noch, nur was? Ich werde das Gefühl nicht los, dass es was hiermit zu tun hat:
    PHP-Code:
    CvCameraControls.py
    ######################
    ## Simple Look At
    ######################
        
    def doLookAt(selfptPositionptTargetfSpeed):
            
    self.bLookAt True
            CyCamera
    ().SetDestinationPosition(ptPosition)
            
    CyCamera().SetTargetDestination(ptTarget)
            
    CyCamera().SetLookAtSpeed(fSpeed)
        
    #    def updateLookAt(self, fDeltaTime):
    #        if not bCyCamera().GetCurrentPosition() == CyCamera().GetDestinationPosition(): 
    Daher hatte ich den Befehl. Ich glaube ich muss irgendwie die erste Zeile noch mit einbauen, nur wie? Die CvEventManager.py sieht inzwischen so aus:
    PHP-Code:
    ###Beginn Popup
            
    pPlot CyMap().plot(iXiY)
            if 
    iImprovement == gc.getInfoTypeForString('IMPROVEMENT_LANDAUFSCHÜTTUNG'):
                
    iPlayerNum 0
                
    for iPlayer in range(gc.getMAX_PLAYERS()):
                    
    player gc.getPlayer(iPlayer)
                    if 
    player.isAlive():
                        
    iPlayerNum iPlayerNum 1
                        
    if player.isHuman():
                            
    self.bLookAt True
                            CyCamera
    ().SetDestinationPositionNiPoint3float(iX),float(iY),float(0)))
                            
    CyCamera().SetTargetDestinationNiPoint3float(iX),float(iY),float(0)))
                            
    CyCamera().SetLookAtSpeed(1)
                            
    popupInfo CyPopupInfo()
                            
    popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON)
                            
    popupInfo.setText('Welche Gelaendeart moechtest Du errichten?')
                            
    popupInfo.setData1(iPlayer)
                            
    popupInfo.setData2(iX)
                            
    popupInfo.setData3(iY)
                            
    popupInfo.setOnClickedPythonCallback("SelectTerrainType")
                            
    popupInfo.addPythonButton('Grasland'"")
                            
    popupInfo.addPythonButton('Ebene'"")
                            
    popupInfo.addPopup(iPlayer)                                        
    ###Ende Popup 
    Vielen Dank für die Hilfe und gute Nacht

  15. #1515
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.019
    Mir ist heute aufgefallen, dass ich eine andere Funktion offenbar gar nicht richtig getestet habe: Der Verlust des Vorteils eines Vasallen durch Tod dieses Vasallen.
    PHP-Code:
    ### Vasallenbonus entziehen beginn ###
            
    pPreviousOwner gc.getPlayer(iPreviousOwner)
            if 
    pPreviousOwner.getNumCities() == 0:
                
    pPreviousTeam gc.getTeam(pPreviousOwner.getTeam())
                if 
    any(pPreviousTeam.isVassal(i) for i in range(gc.getMAX_CIV_TEAMS())):
                    
    pHegemon gc.getTeam(next(pPreviousTeam.isVassal(i) for i in range(gc.getMAX_CIV_TEAMS())))

                                if 
    pPreviousOwner.hasTrait(gc.getInfoTypeForString("TRAIT_STADTSTAAT_PRODUCTIVE")):
                        
    pHegemon.setHasTech(gc.getInfoTypeForString("TECH_SUPPORT_STADTSTAATEN_PRODUCTIVE"),False,gc.getTeam(iMaster).getLeaderID(),False,True)

                                if 
    pPreviousOwner.hasTrait(gc.getInfoTypeForString("TRAIT_STADTSTAAT_MERKANTILE")):
                        
    pHegemon.setHasTech(gc.getInfoTypeForString("TECH_SUPPORT_STADTSTAATEN_MERKANTILE"),False,gc.getTeam(iMaster).getLeaderID(),False,True)

                                if 
    pPreviousOwner.hasTrait(gc.getInfoTypeForString("TRAIT_STADTSTAAT_MARITIME")):
                        
    pHegemon.setHasTech(gc.getInfoTypeForString("TECH_SUPPORT_STADTSTAATEN_MARITIME"),False,gc.getTeam(iMaster).getLeaderID(),False,True)

                                if 
    pPreviousOwner.hasTrait(gc.getInfoTypeForString("TRAIT_STADTSTAAT_MILITARY")):
                        
    pHegemon.setHasTech(gc.getInfoTypeForString("TECH_SUPPORT_STADTSTAATEN_MILITARY"),False,gc.getTeam(iMaster).getLeaderID(),False,True)

                    if 
    pPreviousOwner.hasTrait(gc.getInfoTypeForString("TRAIT_STADTSTAAT_ARTISTIC")):
                        (
    loopCityiter) = pHegemon.firstCity(false)
                        while(
    loopCity):
                            
    loopCity.setNumRealBuilding(gc.getCivilizationInfo(pHegemon.getCivilizationType()).getCivilizationBuildings(gc.getInfoTypeForString("BUILDINGCLASS_SUPPORT_STADTSTAAT_ARTISTIC")),0)
                                            (
    loopCityiter) = pHegemon.nextCity(iterfalse)
                    if 
    pHegemon.isHuman():
                        
    CyInterface().addImmediateMessage(CyTranslator().getText("TXT_KEY_VASALLENGESCHENK_SUPPORT_STADTSTAAT_LOST",()),"" )


    ### Vasallenbonus entziehen Ende ### 
    Diese Zeile hier hat das Problem, dass "next" nicht definiert ist. Vermutlich eine Funktion aus einer höheren Python-Version, die mir einer der fleißigen Helfer hier damals vorgeschlagen hat. Kann man diese Funktion irgendwie anders darstellen?
    PHP-Code:
                    pHegemon gc.getTeam(next(pPreviousTeam.isVassal(i) for i in range(gc.getMAX_CIV_TEAMS()))) 

Seite 101 von 271 ErsteErste ... 5191979899100101102103104105111151201 ... LetzteLetzte

Berechtigungen

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