Seite 166 von 271 ErsteErste ... 66116156162163164165166167168169170176216266 ... LetzteLetzte
Ergebnis 2.476 bis 2.490 von 4063

Thema: Der Pythonthread

  1. #2476
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.009
    Wenn BUG/BAT keinen Eventmanager enthält (ich hatte verstanden, dass das das Problem sei), was für einen verwendet das Spiel dann? Eigentlich bleibt doch dann nur der Zugriff auf den im Hauptspiel.

  2. #2477
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Zumindest BUG verwendet doch den EventManager, im Modul BugEventManager.py . Genauergesagt es wird von CvEventManager abgeleitet.

  3. #2478
    Registrierter Benutzer Avatar von Monaldinio
    Registriert seit
    10.11.09
    Ort
    HRO
    Beiträge
    7.650
    Fehlermeldung

    Nach langer Zeit ist dieser Fehler mal wieder aufgetreten...ich hatte die frage schon mal gestellt, Kathy wird sich mit ihren Eli-Gedächtnis sicher erinnnern.

    es handelt sich um diese zeile:

    PHP-Code:
    iCapitalArea pNewOwnerCapital.area().getID() 
    die ich dann so geädert habe...


    PHP-Code:
    iCapitalArea pNewOwnerCapital.getArea() 
    Aber diese ändeerung ergab eine neue Fehlermeldung die ich aber nicht aufgezeichnet habe...


    Hier nnoch mal
    Angehängte Grafiken Angehängte Grafiken
    Conflict on Chiron - Sid Meier's Alpha Centauri vs. Call to Power!

    Neu Version Conflict on Chiron v3.4 BETA - 16.01.16

    Patch1 - 07.04.16

    Die deutschen Sounds und Wunderfilme sind bereits in der MainFile integriert!
    Ihr könnt sofort loslegen.

    Über Feedback würde ich mich freuen...

  4. #2479
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Was war der Grund für die Änderung? Es wäre die Zeile aus dem Python code, der in der Fehlermeldung als erstes genannt wird, sehr nützlich.

  5. #2480
    Registrierter Benutzer Avatar von Monaldinio
    Registriert seit
    10.11.09
    Ort
    HRO
    Beiträge
    7.650
    PHP-Code:
    def onCityAcquired(selfargsList): 
            
    'City Acquired' 
            
    iPreviousOwner,iNewOwner,pCity,bConquest,bTrade argsList 
            CvUtil
    .pyPrint('City Acquired Event: %s' %(pCity.getName()))   

            
    pNewOwner gc.getPlayer(iNewOwner)
            
    pTeam gc.getTeam(pNewOwner.getTeam())
            
    pPlot pCity.plot()

            
    iX=pCity.getX() 
            
    iY=pCity.getY() 
            
    iOriginalOwner pCity.getOriginalOwner ()   
            
    pOriginalOwner gc.getPlayer(iOriginalOwner
            if 
    not pOriginalOwner.isAlive(): 
                if 
    gc.getMAX_CIV_PLAYERS ()>CyGame().countCivPlayersAlive (): 
                    
    OriginalName pOriginalOwner.getName ()  
                    if 
    pNewOwner.isHuman(): 
                        
    iCity pCity.getID() 
                        
    CyCamera().JustLookAtPlotCyMap().plot(iXiY)) 
                        
    popupInfo CyPopupInfo() 
                        
    popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON
                        
    popupInfo.setText(CyTranslator().getText("TXT_KEY_POPUP_FREE_CITY",(pCity.getName(), OriginalName ))) 
                        
    popupInfo.setData1(iNewOwner
                        
    popupInfo.setData2(iCity
                        
    popupInfo.setData3(iOriginalOwner
                        
    popupInfo.setOnClickedPythonCallback("FreeCity"
                        
    popupInfo.addPythonButton(CyTranslator().getText("TXT_KEY_POPUP_STADT_BEFREIEN", ()), ""
                        
    popupInfo.addPythonButton(CyTranslator().getText("TXT_KEY_POPUP_STADT_NICHT_BEFREIEN", ()), ""
                        
    popupInfo.addPopup(iNewOwner
                    if 
    not pNewOwner.isHuman(): 
                        
    pOriginalteam gc.getTeam(iOriginalOwner
                        
    iOriginalTeam pOriginalteam.getID() 
                        
    pNewOwnerTeam gc.getTeam(iNewOwner
                        
    iChance gc.getGame().getSorenRandNum(3"Partisan event placement")###Die Bedingungen ab hier müssten natürlich angepasst werden. Damit wird festgelegt, nach welchen Bedingungen die KI eine eroberte Stadt befreit. Bei mit ist das eine Zufallszahl +/-Modifikatoren, wenn die Summe 5 übersteigt, wird befreit
                        
    traits = ("TRAIT_HUMANITARIAN""TRAIT_FUNDAMENTALIST""TRAIT_ECOLOGIST""TRAIT_INFOGIRL""TRAIT_SCIENTIST""TRAIT_MOGUL""TRAIT_PROPHET""TRAIT_QUARIANS""TRAIT_LABORER""TRAIT_BUCCANEER""TRAIT_SWARM""TRAIT_TRANSHUMANIST"
                        if 
    any( ( pOriginalOwner.hasTraitgc.getInfoTypeForString(trait) ) for trait in traits ) ):                   
                            
    iChance iChance +
                        
    if pNewOwnerTeam.isAtWar (iOriginalTeam):
                            
    iChange iChance -
                        
    if pNewOwner.hasTrait(gc.getInfoTypeForString("TRAIT_HUMANITARIAN")): 
                            
    iChance iChance +2
                        
    if pNewOwner.hasTrait(gc.getInfoTypeForString("TRAIT_TRANSHUMANIST")): 
                            
    iChance iChance +1
                        
    if pNewOwner.hasTrait(gc.getInfoTypeForString("TRAIT_SCIENTIST")): 
                            
    iChance iChance +1
                        
    if pNewOwnerTeam.isHasTech(gc.getInfoTypeForString("TECH_SOCIAL_PSYCH")):
                            
    iChance iChance +1
                        
    if pNewOwnerTeam.isHasTech(gc.getInfoTypeForString("TECH_FACTIONALISM")):
                            
    iChance iChance +
                        
    if pNewOwnerTeam.isHasTech(gc.getInfoTypeForString("TECH_PERSONALITY_TRANSCRIPTION")): 
                            
    iChance iChance +1
                        
    if pNewOwner.isCivic(gc.getInfoTypeForString("CIVIC_DRONE_CORVEE")): 
                            
    iChance iChance -2
                        
    if pNewOwner.isCivic(gc.getInfoTypeForString("CIVIC_DEMOCRATIC")): 
                            
    iChance iChance +2  
                        
    if pNewOwner.isCivic(gc.getInfoTypeForString("CIVIC_POLICE_STATE")): 
                            
    iChance iChance -1
                        pNewOwnerCapital 
    pNewOwner.getCapitalCity() 
                        
    iCapturedArea pCity.area().getID                            
                        iCapitalArea 
    pNewOwnerCapital.area().getID()         ##### zeile 804
                        
    if not (iCapturedArea == iCapitalArea): 
                            
    iChance iChance +
                        
    if iChance 5
                            
    pOriginalOwner.acquireCity(pCity,False,True
                            
    pNewOwnerTeam.assignVassal(pOriginalteam.getID(), false
                            
    pOriginalOwner.AI_changeAttitudeExtra(iNewOwner,5
    Conflict on Chiron - Sid Meier's Alpha Centauri vs. Call to Power!

    Neu Version Conflict on Chiron v3.4 BETA - 16.01.16

    Patch1 - 07.04.16

    Die deutschen Sounds und Wunderfilme sind bereits in der MainFile integriert!
    Ihr könnt sofort loslegen.

    Über Feedback würde ich mich freuen...

  6. #2481
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Ohne Nummern kann ich nicht abzählen wo der Fehler liegt. Ich brauche mindestens eine Angabe, welche Nummer die erste Zeile des Auszuges ist.

    edit: Ich vermute mal, iCity = pCity.getID() ist die richtige Zeile.

    edit2: eher iCapturedArea = pCity.area().getID
    Geändert von rucivfan (03. Februar 2013 um 10:55 Uhr)

  7. #2482
    Registrierter Benutzer Avatar von Monaldinio
    Registriert seit
    10.11.09
    Ort
    HRO
    Beiträge
    7.650
    ja sorry, korrigiert....
    Conflict on Chiron - Sid Meier's Alpha Centauri vs. Call to Power!

    Neu Version Conflict on Chiron v3.4 BETA - 16.01.16

    Patch1 - 07.04.16

    Die deutschen Sounds und Wunderfilme sind bereits in der MainFile integriert!
    Ihr könnt sofort loslegen.

    Über Feedback würde ich mich freuen...

  8. #2483
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.009
    Der Grund war, dass "getArea()" die ID der Area direkt zurückgibt, und damit der Umweg über ".area().getID()" abgekürzt würde. Das Problem ist nur: ein City-Objekt kennt den Befehl "getArea()" gar nicht (den gibt es nur für Plots), wie eine Überprüfung jetzt ergab. Ich weiß nicht, wer das vorgeschlagen hatte, aber es kann nicht dunktionieren. Was passiert, wenn du den ursprünglichen Wert wieder einsetzt? Bitte gib uns dann auch noch einmal den ganzen Code, vielleicht lässt sich da ein anderer Fehler finden.

    Edit. Crosspost/zu langsam

  9. #2484
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Kathy:

    Das habe ich gerade auch gedacht und festgestellt. Das gilt aber nicht für den c++ Code. Dort gibt es so eine Methode. Es gibt nur keine Pythonerweiterung,

  10. #2485
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.009
    Versuch es mal in zwei Zeilen:
    pCapitalArea = pNewOwnerCapital.area()
    iCapitalArea = pCapitalArea.getID()

    Ich wüsste zwar nicht, dass das einen Unterschied macht, aber vielleicht tritt dann in der ersten Zeile schon ein Fehler auf und wir können es eingrenzen.

    Vielleicht hilft es auch, dir nach "pNewOwnerCapital = pNewOwner.getCapitalCity() " mit einer Textzeile die Hauptstadt ausgeben zu lassen, damit wir wissen, ob er sie wirklich korrekt ermittelt hat.

  11. #2486
    Registrierter Benutzer Avatar von Monaldinio
    Registriert seit
    10.11.09
    Ort
    HRO
    Beiträge
    7.650
    Kann ich in der GameUtils bei dieser Bedingung eine Weitere Hinzufügen, zb eine Tech?!?!

    PHP-Code:
    if eBuilding == gc.getInfoTypeForString("BUILDING_ORBITAL_PHALANX"):  
                            if 
    pCity.getNumRealBuilding(gc.getInfoTypeForString("BUILDING_ORBITAL_BASE_LAND")) and not pCity.getNumRealBuilding(eBuilding):  
                                return 
    True 
    Conflict on Chiron - Sid Meier's Alpha Centauri vs. Call to Power!

    Neu Version Conflict on Chiron v3.4 BETA - 16.01.16

    Patch1 - 07.04.16

    Die deutschen Sounds und Wunderfilme sind bereits in der MainFile integriert!
    Ihr könnt sofort loslegen.

    Über Feedback würde ich mich freuen...

  12. #2487
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Ich verstehe nicht, wieso die Frage gestellt wird. Entweder du weißt, was du willst oder lass die Finger davon.

    Wenn man weiß, was man macht, kann man viel ändern.
    Geändert von rucivfan (04. Februar 2013 um 19:25 Uhr)

  13. #2488
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.009
    Müsste gehen, einfach noch eine weitere If-Verschachtelung hinter die letzte setzen. Wo ist das Problem?

    Wozu dient das Konstrukt überhaupt? Du kannst doch für "BUILDINGCLASS_ORBITAL_PHALANX" auch das Gebäude "BUILDINGCLASS_ORBITAL_BASE_LAND" in der xml zur Voraussetung machen.
    Ich glaube dir ja, dass es einen Hintergedanken hat, aber es ist für mich erstmal nicht ersichtlich.

  14. #2489
    Registrierter Benutzer Avatar von Monaldinio
    Registriert seit
    10.11.09
    Ort
    HRO
    Beiträge
    7.650
    ...du hats recht Kathy, klar kann ich das machen, leider muss ich aber einen Umweg gehen...


    Ui, ich glaube ich muss ganz vorne anfangen...ich denke das wird schwer zu verstehen.
    Damit ich das mit Den Orbitalbasen geschaukelt bekomme, musste ich zwei "Orbital Base" Klassen erstellen, eine damit über Land gegründet werden kann und eine Über wasser .
    Wenn eine OrbitalBasis gegründet wrid, wird automatisch das Gebäude O-Base_Land bzw O-Base gesetzt, auch damit die Stadt überhaupt angezeigt wird. Je nachdem wo sich die Gründungseinheit gerade befindet.
    Alle Gebäude die ich für die für die Orbitalen Basen geschaffen habe, benutzen als Vorraussetzung BUILDING_ORBITAL_BASE...
    Damit diese Gebäude aber auch in der Land- Variante gebaut werden können, dieses Konstrukt über euch...

    Das dumme ist nur, wenn die Orbital-Basis_LAnd Vorhanden ist, kann man komischer weise auch die Gebäude bauen die ich für die ganze "orbial_Basen_schiene" erstellt habe, auch ohne die Tech erforscht zu haben.


    Wie würde die zweite if Schleife aussehen...


    PHP-Code:
    def canConstruct(self,argsList):
            
    pCity argsList[0]
            
    eBuilding argsList[1]
            
    bContinue argsList[2]
            
    bTestVisible argsList[3]
            
    bIgnoreCost argsList[4]
            
    eTech argList[5]

    if 
    eBuilding == gc.getInfoTypeForString("BUILDING_SUBSPACE_GENERATOR"):    
                if 
    pCity.getNumRealBuilding(gc.getInfoTypeForString("BUILDING_ORBITAL_BASE_LAND")) and not pCity.getNumRealBuilding(eBuilding): 
                    if 
    pCity.getNumRealTech(gc.getInfoTypeForString("TECH_XXX")) and not pCity.getNumRealTech(eTech):
                        return 
    True 
    Geändert von Monaldinio (04. Februar 2013 um 19:40 Uhr)
    Conflict on Chiron - Sid Meier's Alpha Centauri vs. Call to Power!

    Neu Version Conflict on Chiron v3.4 BETA - 16.01.16

    Patch1 - 07.04.16

    Die deutschen Sounds und Wunderfilme sind bereits in der MainFile integriert!
    Ihr könnt sofort loslegen.

    Über Feedback würde ich mich freuen...

  15. #2490
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Ein grundlegende Problem ist, du sagst, wann man bauen kann. Es ist aber umgekehrt sinnvoller. Geben am Ende immer true wieder. Vorher fragst du ab, unter welchen Bedingungen man nicht bauen darf. Das sollte viel zuverlässlicher sein.

    edit:

    Code:
      if pCity.getNumRealTech(gc.getInfoTypeForString("TECH_XXX")) and not pCity.getNumRealTech(eTech):
    Wird die Zeile wirklich auf der Stadt ausgeführt? Nicht Team?
    Geändert von rucivfan (04. Februar 2013 um 20:01 Uhr)

Seite 166 von 271 ErsteErste ... 66116156162163164165166167168169170176216266 ... LetzteLetzte

Berechtigungen

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