Seite 5 von 14 ErsteErste 123456789 ... LetzteLetzte
Ergebnis 61 bis 75 von 204

Thema: Python - Fragen über Fragen

  1. #61
    ...
    Registriert seit
    30.09.04
    Ort
    Bern
    Beiträge
    5.824
    Atrribute Error: 'int' object has no attribute 'isHasTech'

    Die Fehlermeldungen von Python sind in der Regel sehr aussagekräftig. Hier: 'Du hast bei einem 'int' Objekt das Attribut 'isHasTech' aufgerufen und dieses gibt es nicht.

    Sprich: PTeamOldOwner ist ein 'int' Objekt (Variable) und hat keine Atrributfunktin 'ishasTech'.

    In civ4 haben viele Objekte eine ID, welche eine 'int' ist. Dass ist dann die Spielernummer, Technummer, Stadtnummer etc.

  2. #62
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Soweit habe ich es schon verstanden, nur, wenn ich nach Octavians Anleitung vorgehe, funktionierts nicht, kommt eben die Meldung, mit einem teambasierten Code funktionierts leider auch nicht...
    Was gibts denn noch für Möglichkeiten?

  3. #63
    KSV Hessen Kassel Avatar von jok
    Registriert seit
    24.01.02
    Ort
    Kassel
    Beiträge
    3.630
    Aus Post 58:
    Edit: Unsinn gelöscht.

    Den zuletzt geposteten Code fehlt wohl die Identifizierung bei
    tm.ishastech
    Um welches Team handelt es sich hier?

  4. #64
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Wo ist denn die zugehörige geöffnete Klammer? Ich dachte auch an so etwas, nur liegt es eher nicht an der Klammer
    So was einfaches und ich versage schon... das kann ja heiter werden für weitere Versuche...

    PHP-Code:
    if city.getOwner() == and pTeamOldOwner.isHasTech(29)): 
    Zitat Zitat von jok
    Aus Post 58:
    Den zuletzt geposteten Code fehlt wohl die Identifizierung bei
    tm.ishastech
    Um welches Team handelt es sich hier?
    Das wüsste ich auch gerne, nur wie kann ich da eine Abfrage generieren?

  5. #65
    KSV Hessen Kassel Avatar von jok
    Registriert seit
    24.01.02
    Ort
    Kassel
    Beiträge
    3.630
    Das was ich da eben geschrieben habe, ist Unsinn.

    pTeamOldOwner = player.getTeam()

    Mit dieser Zeile schreibst du in die Variable pTeamOldOwner nur die ID des Teams, also eine Zahl.

    Mit dieser Zahl kannst du diese Abfrage hier nicht starten, und es kommt zu der Fehlermeldung.
    if city.getOwner() == 0 and pTeamOldOwner.isHasTech(29):

    Da steht dann praktisch 1.isHasTech...


    Vielleicht geht es über einen ganz anderen Weg:

    if (city.canConstruct(ID Kornkammer, False, False, True)
    city.sethasrealbuilding(ID Kornkammer, True)

  6. #66
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Zitat Zitat von jok
    Da steht dann praktisch 1.isHasTech...
    Genau das dachte ich mir auch, deswegen ja auch die Int-Fehlermeldung. Daher habe ich auch versucht den CyTeam()-Pfad zu wählen, doch kam ich dort nicht weiter.
    Wie würdest du es denn machen, ganz unabhängig von den hier genannten Vorschlägen?

  7. #67
    KSV Hessen Kassel Avatar von jok
    Registriert seit
    24.01.02
    Ort
    Kassel
    Beiträge
    3.630
    Wenn ich es richtig verstanden habe, willst du dies nur für menschliche Spieler ermöglichen...

    Also würde es vielleicht so gehen:
    if (city.ishuman() and city.canconstruct(ID Kornkammer, False, False, True):
    city.sethasrealbuilding(ID Kornkammer, True)

  8. #68
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Zitat Zitat von jok
    if (city.canConstruct(ID Kornkammer, False, False, True)
    city.sethasrealbuilding(ID Kornkammer, True)
    Wenn ich das einsetze bekomme ich bei starten den "Film" aus Post 35.
    Der Code klingt auf jeden Fall stark nach etwas erfolgversprechendem.

  9. #69
    KSV Hessen Kassel Avatar von jok
    Registriert seit
    24.01.02
    Ort
    Kassel
    Beiträge
    3.630
    Hm, dieser Film sagt einem aber meist an irgend einer Stelle, wo der Fehler liegt... Man muss nur fleißig genug klicken...

    So wie ich es geschrieben hab geht es wohl nicht, entweder so:
    if (city.canConstruct(ID Kornkammer, False, False, True)):

    Oder so:
    if city.canConstruct(ID Kornkammer, False, False, True)

    Du kannst auch mit den False und True in der Klammer experimentieren, das sind Werte für bContinue, bTestVisible und bIgnoreCost
    Die hab ich einfach nach Gefühl gesetzt.

  10. #70
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Zitat Zitat von jok
    Hm, dieser Film sagt einem aber meist an irgend einer Stelle, wo der Fehler liegt... Man muss nur fleißig genug klicken...

    So wie ich es geschrieben hab geht es wohl nicht, entweder so:
    if (city.canConstruct(ID Kornkammer, False, False, True)):

    Oder so:
    if city.canConstruct(ID Kornkammer, False, False, True)

    Du kannst auch mit den False und True in der Klammer experimentieren, das sind Werte für bContinue, bTestVisible und bIgnoreCost
    Die hab ich einfach nach Gefühl gesetzt.
    Müsste man nicht den Wert für city.canConstruct(ID Kornkammer, False, False, True) mit irgendetwas vergleichen?
    Z. Zt. ist das eine Aussage nach folgendem Motto:
    Wenn ich, dann gehe ich nach Hause...
    Da fehlt doch irgendwas?
    Kann man da einfach == true setzen?

  11. #71
    KSV Hessen Kassel Avatar von jok
    Registriert seit
    24.01.02
    Ort
    Kassel
    Beiträge
    3.630
    city.canconstruct ist ein BOOL-Wert. Dieser sollte schon auf True stehen, wenn die Stadt das Gebäude errichten kann. Wenn sie es nicht kann, steht der Wert auf False und die if-Bedingung ist nicht erfüllt.

  12. #72
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Ich habs; wir haben den Vergleich und einen Doppelpunkt vergessen.

    PHP-Code:
                    if city.canConstruct(8FalseFalseFalse) == true:
                             
    city.setHasRealBuilding(8True

  13. #73
    KSV Hessen Kassel Avatar von jok
    Registriert seit
    24.01.02
    Ort
    Kassel
    Beiträge
    3.630


    Das Problem mit dem "Player" war, dass in der argslist nur der Wert City stand, man also nur City als Python-Objekt nehmen kann.
    Alles andere war hier zum scheitern verurteilt.
    Wie man aber in die ArgsList auch den Wert Player übernehmen kann, weiß ich nicht.

    Probier es mal ohne den Vergleich, also den Doppelpunkt direkt hinter )
    Würd mich jetzt interessieren, ob das auch funktioniert.

  14. #74
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Zitat Zitat von jok
    Probier es mal ohne den Vergleich, also den Doppelpunkt direkt hinter )
    Würd mich jetzt interessieren, ob das auch funktioniert.
    Funktioniert einwandfrei. Was so ein bißchen Interpunktion alles ausmachen kann.
    Thx an Jok, Sansi, Octavian!

  15. #75
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Ich muss mich entschuldigen. Ich hatte bei meiner Lösung wohl nicht bedacht, dass man durch die "normale" Abfrage nur einen Int - Wert bekommt. Ich möchte nochmals die modifizierte Funktion aufrufen, die bei mir abfragt, ob eine gewisse Technologie vorhanden ist:

    PHP-Code:
    def onCityAcquired(selfargsList):
            
    'City Acquired'
            
    owner,playerType,city,bConquest,bTrade argsList
        
    #    CvUtil.pyPrint('City Acquired Event: %s' %(city.getName()))


            #Partisanenabfrage / spawn partisans ?    
            
    pTeamOldOwner gc.getTeam(owner)
            
            if 
    pTeamOldOwner.isHasTech(self.iNationalismID) and (bConquest):
                
    #Stadtkoordinaten            
                
    iCityX city.getX()
                
    iCityY city.getY()
                
    paPlayer gc.getPlayer(owner)
                
    self.createPartisans(paPlayeriCityXiCityYpTeamOldOwner)
                
            
    self.CvEventManager.onCityAcquired(selfargsList
    Hier scheint "owner" also keinen Int-Wert wiederzugeben, wenn ich die Argumentation richtig verstanden habe.

Seite 5 von 14 ErsteErste 123456789 ... LetzteLetzte

Berechtigungen

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