Seite 1 von 271 123451151101 ... LetzteLetzte
Ergebnis 1 bis 15 von 4063

Thema: Der Pythonthread

  1. #1
    o0
    Registriert seit
    22.06.08
    Ort
    Rheinhessen
    Beiträge
    525

    Idee Der Pythonthread

    Da der Kleine-Fragen-Thread langsam mit Pythonfragen überschwemmt wird, mach ich mal einen eigenen Thread für Python auf. Hier kann man zum einen eigene Codestücke posten und zum anderen sich Tipps geben lassen.

    Wenn ihr ein Codestück postet schreibt am Besten kurz wozu es gut ist.
    PHP-Code:
            #LittlePritt Start
            #Wenn die Einheit ein Stadtverteidiger ist...
            
    if unit.getUnitAIType() == gc.getInfoTypeForString('UNITAI_CITY_DEFENSE'):
                
    #Wenn die Stadt NICHT die Hauptstadt ist...
                
    if not city.isCapital():
                    
    #Sucht die Hauptstadt
                    
    Capital player.getCapitalCity()
                    
    #Schickt die Einheit in die Hauptstadt
                    
    unit.getGroup().pushMission(MissionTypes.MISSION_MOVE_TOCapital.getX(), Capital.getY(), 0FalseFalseMissionAITypes.NO_MISSIONAIunit.plot(), unit)
            
    #LittlePritt End 
    Was es tut: Das Script schaut ob es sich um einen Stadtverteidiger handelt, wenn ja schickt das Script die Einheit in die HS. Ich plane die KI damit so zu modifizieren, dass wenn die KI angegriffen wird sie die Einheiten aus der HS zu angegriffen Stadt bringt und dann nichtmehr in jeder Stadt 10 Einheiten rumlungern.

    Aber ich habe noch eine Frage wie kann einstellen, dass das ganze nur für KIs gilt? Ich habs mit dem Code unten probiert, aber das geht nicht
    PHP-Code:
        if not player.isHuman(): 
    Geändert von Kathy (12. Januar 2012 um 20:08 Uhr)

  2. #2
    Magie ist entscheidend Avatar von magic66
    Registriert seit
    15.02.07
    Ort
    Das Dorf
    Beiträge
    1.394


    player.isHuman() steht für jeden Playable-Leader. (also nur Babaren nicht)
    Sonst weiß ich nicht, warum es nicht funktioniert.
    War aber nur eine Vermutung. Kommt denn eine Fehlermeldung? Denn der Code ist ja eigentlich richtig (nach API)
    Mit Anstand, Tugen und Manieren,-kannst du dich nie blamieren!!
    Wäre, wenn und aber ... CIV ist kein Spiel der Konjunktive!

  3. #3
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Er sagt ja nicht, dass es nicht gehen würde, sondern nur, dass es momentan auch für den Menschen gilt.
    wo hast'n du das dran gehängt?
    Gibt's ne Möglichkeit, die iPlayerID auszulesen? Würd' mal rumraten, und meinen, dass es sein könnte, dass der Mensch immer 0 oder 1 zugewiesen bekommt. Ist aber echt nur geraten, das geht noch über mein Können .
    Geändert von The_J (29. Januar 2009 um 04:29 Uhr)
    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)


  4. #4
    o0
    Registriert seit
    22.06.08
    Ort
    Rheinhessen
    Beiträge
    525
    Ja der Mensch bekommt auf Zufallskarten immer nur 0 aber auf Szenarien ist das leider nicht so...

  5. #5
    Magie ist entscheidend Avatar von magic66
    Registriert seit
    15.02.07
    Ort
    Das Dorf
    Beiträge
    1.394
    Zitat Zitat von Little Pritt Beitrag anzeigen
    Ja der Mensch bekommt auf Zufallskarten immer nur 0 aber auf Szenarien ist das leider nicht so...
    Eben

    Zitat Zitat von The_J Beitrag anzeigen
    Er sagt ja nicht, dass es nicht gehen würde, sondern nur, dass es momentan auch für den Menschen gilt.
    wo hast'n du das dran gehängt?
    Also ich würde das ohne "not" machen (ist wahrscheinlich, weil es bei c++ nicht geht ), sondern mit !=. Aber das ändert ja nichts
    Mit Anstand, Tugen und Manieren,-kannst du dich nie blamieren!!
    Wäre, wenn und aber ... CIV ist kein Spiel der Konjunktive!

  6. #6
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Zitat Zitat von Little Pritt Beitrag anzeigen
    Ja der Mensch bekommt auf Zufallskarten immer nur 0 aber auf Szenarien ist das leider nicht so...
    Also das würd' mir für's erste reichen.
    Läuft das denn soweit schon gescheit?

    Zitat Zitat von magic66 Beitrag anzeigen
    Also ich würde das ohne "not" machen (ist wahrscheinlich, weil es bei c++ nicht geht ), sondern mit !=. Aber das ändert ja nichts
    <>


    edit:
    Wie les ich das hier?
    Bin in der Klasse CyCity.
    So, hab' in nem Skript ne Instanz namens pCity, wo ich den Methodenaufruf ExtraHappinessChange versuche, der in dem Link auch irgendwo unten drin steht, aber es gibt ne Fehlermeldung, CyCity hätte keine Methode ChangeExtraHappiness .
    Geändert von The_J (30. Januar 2009 um 04:39 Uhr)
    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. #7
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Zitat Zitat von The_J Beitrag anzeigen
    edit:
    Wie les ich das hier?
    Bin in der Klasse CyCity.
    So, hab' in nem Skript ne Instanz namens pCity, wo ich den Methodenaufruf ExtraHappinessChange versuche, der in dem Link auch irgendwo unten drin steht, aber es gibt ne Fehlermeldung, CyCity hätte keine Methode ChangeExtraHappiness .
    Du meinst wohl "changeExtraHappiness(...)"?
    Liegt es daran, oder import vergessen?

  8. #8
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Nicht vergessen, deine Referenz ist von 2005, also für Vanilla; mit WL und BtS wurde ein bisschen was an der API verändert.

  9. #9
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    @alpha: Ne, das stört Python eigentlich nicht weiter.
    2.edit: das Python stört das auch nicht weiter. Aber die Daten werden ja an die .dll geliefert, die stört das. Buchstaben abgeändert, funktioniert .


    .
    Hat jmd. n aktuellen Link ?
    Ebenfalls 2.edit: Sieht so aus, als wären für BtS nur Funktionen dazu gekommen, und keine weggenommen worden.


    edit:
    Hier das sieht aktueller aus.
    Geändert von The_J (31. Januar 2009 um 05:21 Uhr)
    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)


  10. #10
    Magie ist entscheidend Avatar von magic66
    Registriert seit
    15.02.07
    Ort
    Das Dorf
    Beiträge
    1.394
    Zitat Zitat von The_J Beitrag anzeigen
    edit:
    Hier das sieht aktueller aus.
    Jo, das ist auch das was ich drauf habe. Müsste aktuell sein.

    Außerdem steht in der API: changeExtraHappiness und nicht ExtraHappinessChange
    Mit Anstand, Tugen und Manieren,-kannst du dich nie blamieren!!
    Wäre, wenn und aber ... CIV ist kein Spiel der Konjunktive!

  11. #11
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Zitat Zitat von magic66 Beitrag anzeigen
    Jo, das ist auch das was ich drauf habe. Müsste aktuell sein.

    Außerdem steht in der API: changeExtraHappiness und nicht ExtraHappinessChange
    Das hat auf jeden Fall funktioniert.
    Einfach , wenn ich programmier ziehe ich nämlich meist das Netzwerkkabel ab.



    Allgemeine Python-Frage:
    Hab' so ne Situation, wo ich nen längeren Block geschrieben habe, und auf einmal geht mir auf: Oh, Mist, oben muss noch ne Abfrage rein.
    Gibt's dann was einfacheres, als alles von Hand neu einzurücken?
    Bei Delphi setz' ich einfach n begin und nen end, bei c++ 2 Klammern, aber hier...das kann's ja eigentlich nicht sein, oder?
    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)


  12. #12
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Dir bleibt nichts anderes übrig als die Einrückungen per Hand vorzunehmen.

  13. #13
    o0
    Registriert seit
    22.06.08
    Ort
    Rheinhessen
    Beiträge
    525

  14. #14
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    u.a. deswegen hasse ich Python.


    Ich versuch' grad, mein Kartenskript so zu ändern, dass eine Ziv zwangsweise zusätzlich gesetzt wird.

    Das hier
    PHP-Code:
    player_list = []
        for 
    plrCheckLoop in range(18):
            if 
    CyGlobalContext().getPlayer(plrCheckLoop).isEverAlive():
                
    player_list.append(plrCheckLoop
    gibt mMn an, wieviel KIs auf die Karte können.
    Sollte mich aber nicht jucken, wenn ich eine zusätzlich setze.

    Das hier

    PHP-Code:
    shuffledPlayers = []
        for 
    playerLoopTwo in range(gc.getGame().countCivPlayersEverAlive()):
            
    iChoosePlayer dice.get(len(player_list), "Shuffling Regions - Archipelago PYTHON")
            
    shuffledPlayers.append(player_list[iChoosePlayer])
            
    del player_list[iChoosePlayer
    scheint mir auszuwürfeln, welche KIs dass nun genau sind.
    Juckt mich auch nicht weiter, wenn ich meine extra setze.

    Ich hab' nun meiner spez. Ziv nen Startpunkt zugewiesen, aber sie erscheint nicht, gibt auch keine Fehlermeldung.

    Das hier

    Achtung Spoiler:
    PHP-Code:
    for assignLoop in range(1):
                    
    homeid=gc.getInfoTypeForString'CIVILIZATION_OTTOMAN' )
                    
    playerID homeid
                    reg 
    best_regions[assignLoop]
                    [
    westXeastXsouthYnorthY] = region_data[reg][0:4]
                    for 
    iX in range(westXeastX 1):
                            for 
    iY in range(southYnorthY 1):
                                    
    pPlot map.plot(iXiY)
                                    if 
    pPlot.isWater(): continue
                                    
                                    
    plrID gc.getPlayer(playerID)
                                    
                                    
    plrID.setPlayable(1)
                                    
    plrID.setStartingPlot(pPlottrue)
                                    break
                            break
                    break 


    sollte das eigentlich machen, tut's aber nicht.
    Der Code sieht mMn bei den restlichen Zivs nicht anders aus.
    Der ist vor die anderen Zivs geschaltet, funzt aber nicht. Mit der Nation scheint aber zu stimmen, denn wenn ich's mit dem Anführer versuche, gibt's ne Fehlermeldung.
    Jmd. ne Ahnung, wo der Fehler liegen könnte?
    Geändert von The_J (04. Februar 2009 um 02:13 Uhr)
    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)


  15. #15
    o0
    Registriert seit
    22.06.08
    Ort
    Rheinhessen
    Beiträge
    525
    PHP-Code:
                    homeid=gc.getInfoTypeForString'CIVILIZATION_OTTOMAN' 
    Ich würde vor und nach das Gleich Lehrzeichen machen.

Seite 1 von 271 123451151101 ... LetzteLetzte

Berechtigungen

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