Seite 4 von 14 ErsteErste 12345678 ... LetzteLetzte
Ergebnis 46 bis 60 von 204

Thema: Python - Fragen über Fragen

  1. #46
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Zitat Zitat von cstelter
    Danke für den Link Sansi, nur bin ich einer, der auch noch Beispiele braucht, da hilft mir z.B. dieser Thread um einiges mehr. Aber für eine generelle Übersicht über die Befehle ist es nicht zu verachten. Werds mal bookmarken.

    Caesium
    Das kann ich so unterschreiben. Als Hilfen können auch die mitgelieferten Szenarios dienen, die sind ebenfalls recht gut kommentiert. Es fehlt halt leider immernoch ein gutes Python-Tutorial, was sich direkt auf Civ IV bezieht.

  2. #47
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Hat jemand hier eine Ahnung, wie ich Mitteilung im Ereignis-Log schreiben kann?

    Diese erscheinen linksseitig in roter, grüner oder weißer Schrift.

  3. #48
    ...
    Registriert seit
    30.09.04
    Ort
    Bern
    Beiträge
    5.824
    Schau mal in Assets --> Python --> CvEventManager.py. Da werden verschiedene Sachen geschrieben, sowohl in das Log also auch Meldungen auf den Bildschirm. Musst halt ein bisschen suchen. Da kannst du schauen, wie es gemacht ist....

  4. #49
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Das habe ich schon getan und folgenden Befehl benutzt:

    CvUtil.pyPrint ('Test')

    Da passierte nichts. Ich werde ein paar weitere Testläufe starten, vielleicht habe ich was übersehen.

  5. #50
    KSV Hessen Kassel Avatar von jok
    Registriert seit
    24.01.02
    Ort
    Kassel
    Beiträge
    3.630
    Probier es mal so.
    PHP-Code:
    In den Globals muss definiert seinlocalText CyTranslator()

    message localText.getText("TXT_KEY_LEADER_ERHALTEN", ()) 

    CyInterface().addMessage(CyGame().getActivePlayer(), True10messageNone2NoneColorTypes(8), 00FalseFalse
    Dies hab ich im LeaderMod eingebaut, so holt sich das Spiel den Text aus den Text-XML-Dateien, und wird in der passenden Sprache ausgegeben.
    Der Text mit diesen Werten wird grün.

    Wenn du den Text direkt in Python definieren willst, geht das mit
    message = "Text".

    So sind die Befehle in den Klammern aufgebaut:
    addMessage(INT ePlayer, BOOL bForce, INT iLength, STRING szString, STRING szSound, INT eType, STRING szIcon, ColorType eFlashColor, INT iFlashX, INT iFlashY, BOOL bShowOffScreenArrows, BOOL bShowOnScreenArrows)

    ColorTypes(2) ist weiß, 7 ist rot und 8 ist grün.

  6. #51
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Danke jok, das werde ich ausprobieren. Hast du eine Ahnung, warum der Befehl CvUtil.pyPrint bei mir nicht funktioniert?

  7. #52
    KSV Hessen Kassel Avatar von jok
    Registriert seit
    24.01.02
    Ort
    Kassel
    Beiträge
    3.630
    Zitat Zitat von Octavian
    Hast du eine Ahnung, warum der Befehl CvUtil.pyPrint bei mir nicht funktioniert?
    Nein, hab mit dem Befehl auch noch nicht gearbeitet.

  8. #53
    a hard days knight Avatar von Aphex
    Registriert seit
    07.03.02
    Ort
    Braunschweig
    Beiträge
    6.199
    "CvUtil.pyPrint" hat irgendeine andere Funktion, aber nicht das Schreiben in das Log. Das geht über "message"... Guck mal im Städtewachstum-Abfrage Thread, da hatte ich auch das Problem. Allerdings sind die Sachen, die einem sowieso gemeldet werden, nicht über "message" im Eventmanager...

  9. #54
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Danke. Hatte vorhin in dem Thread noch was geschrieben, allerdings nicht auf die ersten Seiten geschaut. Mit CyInterface().addMessage klappt es recht gut.

  10. #55
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Hallo, ich da wieder ein Problem:

    PHP-Code:
    # sanis - - - Krieger am Anfang
    # Civilization 4 (c) 2005 Firaxis Games

    # Created by -    Jon 'Trip' Shafer
    # Have fun!

    from CvPythonExtensions import *
    import sys
    import Popup 
    as PyPopup
    from PyHelpers import PyPlayer
    import pickle
    import CvEventManager
    from CvScreenEnums import 
    *
    from PyHelpers import *
    import CvUtil

    # globals
    gc CyGlobalContext()


    class 
    CvSansiEvents(CvEventManager.CvEventManager):
        
        
    def __init__(self):
            
            
    CvEventManager.CvEventManager.__init__(self)

        
    def onCityBuilt(selfargsList):
            
    'City Built'
            
    city argsList[0]
            
    # if (city.getOwner() == CyGame().getActivePlayer()):
            #    self.__eventEditCityNameBegin(city)    
            
    CvUtil.pyPrint('City Built Event: %s' %(city.getName()))
            if 
    city.getOwner() == 0:
                            
    self.iWARRIORID CvUtil.findInfoTypeNum(gc.getUnitInfogc.getNumUnitInfos(), 'UNIT_WARRIOR')
                
    player CyGlobalContext().getPlayer(0)
                
    player.initUnit(self.iWARRIORIDcity.getX(), city.getY(), UnitAITypes.NO_UNITAI
    Da bekomme ich aber nur die Fehlermeldung, er kenne UNIT_WARRIOR nicht.



    Edit: Hat sich erledigt; funktioniert nun doch... warum auch immer
    Geändert von cstelter (11. Januar 2006 um 00:45 Uhr)

  11. #56
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Hab nun aber einen neuen Fehler, nachdem ich die von Octavian vorgeschlagene Änderungen auf folgende Art eingebunden habe:

    PHP-Code:
        def onCityBuilt(selfargsList):
            
    'City Built'
            
    city argsList[0]
            
    # if (city.getOwner() == CyGame().getActivePlayer()):
            #    self.__eventEditCityNameBegin(city)    
            
    CvUtil.pyPrint('City Built Event: %s' %(city.getName()))
                    
    player gc.getPlayer(0)
    --->            
    pTeamOldOwner gc.getTeam(player)   <----
                    if 
    city.getOwner() == and pTeamOldOwner.isHasTech(29):
                            
    city.setHasRealBuilding(8true
    Der Fehler, der sich auf den markierten Text bezieht, lautet:

    ArgumentError: Python argument types in CyGlobalContext.getTeam(CyGlobalContext, CyPlayer) did not match C++ signature: getTeam(class CyGlobalContext{lvalue}, int)
    Geändert von cstelter (11. Januar 2006 um 01:31 Uhr)

  12. #57
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Ich habe hier eine Civ4 Python Dokumentation gefunden. Vielleicht kennt ihr sie ja noch nicht.

  13. #58
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Wenn ich die Einträge wie folgt ändere bekomme ich nachstehende Fehlermeldung:

    PHP-Code:
        def onCityBuilt(selfargsList):
            
    'City Built'
            
    city argsList[0]
            
    # if (city.getOwner() == CyGame().getActivePlayer()):
            #    self.__eventEditCityNameBegin(city)    
            
    CvUtil.pyPrint('City Built Event: %s' %(city.getName()))
                    
    player gc.getPlayer(0)
                    
    pTeamOldOwner player.getTeam()
                    if 
    city.getOwner() == and pTeamOldOwner.isHasTech(29):
                            
    city.setHasRealBuilding(8true
    Atrribute Error: 'int' object has no attribute 'isHasTech'

  14. #59
    ...
    Registriert seit
    30.09.04
    Ort
    Bern
    Beiträge
    5.824
    Danke. Bookmark ist erstellt.

  15. #60
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Bei folgendem Code passiert nichts, aber laut Variablen scheint er der beste, Frage ist, was muss noch verändert werden?

    PHP-Code:
    # sansi2 --- Granary
    # Civilization 4 (c) 2005 Firaxis Games

    # Created by -    Jon 'Trip' Shafer
    # Have fun!

    from CvPythonExtensions import *
    import sys
    import Popup 
    as PyPopup
    from PyHelpers import PyPlayer
    import pickle
    import CvEventManager
    from CvScreenEnums import 
    *
    from PyHelpers import *
    import CvUtil

    # globals
    tm CyTeam()

    class 
    CvSansiEvents(CvEventManager.CvEventManager):
        
        
    def __init__(self):
            
            
    CvEventManager.CvEventManager.__init__(self)

        
    def onCityBuilt(selfargsList):
            
    'City Built'
            
    city argsList[0]
            
    # if (city.getOwner() == CyGame().getActivePlayer()):
            #    self.__eventEditCityNameBegin(city)    
            
    CvUtil.pyPrint('City Built Event: %s' %(city.getName()))
                    if 
    tm.isHasTech(29):
                            
    city.setHasRealBuilding(8true
    Oder aber, gibt/gäbe es eine Abfrage, ob das Gebäude schon gebaut werden darf, so nach dem Motto:
    Wenn Getreidespeicher gebaut werden darf, dann hat Stadt den Getreidespeicher

Seite 4 von 14 ErsteErste 12345678 ... LetzteLetzte

Berechtigungen

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