Seite 1 von 14 1234511 ... LetzteLetzte
Ergebnis 1 bis 15 von 204

Thema: Python - Fragen über Fragen

  1. #1
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496

    Python - Fragen über Fragen

    Hallo zusammen!

    Ich habe so einige Fragen zu Python und ich hoffe, dass mir jemand weiterhelfen kann.

    Ich würde gern - ein Beispiel, welches ich auf Apolyton gesehen habe - in jeder neugegründeten Stadt von Spieler 1 eine Einheit Krieger automatisch erschaffen lassen.

    Dazu habe ich folgenden Code genommen:

    Code:
    def onCityBuilt(self, argsList):
    	'For player 1, create a Warrior (index 17) in every city that is built'
    	city = argsList[0]
    	if city.getOwner() == 1:
    		city.getOwner().initUnit(17, city.getX(), city.getY(), UnitAITypes.NO_UNITAI)
    Die alte Zeile im CyEventManger.py habe ich durch og. Code ersetzt. Leider passiert nichts. Wo steckt mein Denkfehler?

    Da ich diese Beispiel übernommen habe und ich es nicht zum Laufen kriegen, wären vielleicht auch Tipps grundsätzlicher Natur gut. Hilfreiche Python-Tutorial arbeite ich gerade durch, jedoch fehlt mir noch etwas die Möglichkeit der Anwendbarkeit auf Civ IV, als Beispiel eine ausführliche Erklärung wie ich kleinere Sachen (bestimmtes Gebäude abfragen, Einheit erschaffen etc.) in Civ IV realisieren kann. Ein Python-Tutorial, welches auf Civ IV zugeschnitten ist.

    Die mitgelieferten Modifikationen helfen zwar, auch habe ich etliche schon runtergeladen, aber anscheind fehlt noch die Initialzündung in meinem Hirn...

    Für weitergehende Hilfen wäre ich sehr dankbar.

    Gruß

    Octavian

  2. #2
    ... Avatar von Janilein
    Registriert seit
    02.08.04
    Ort
    Göttingen
    Beiträge
    13.696
    sollte vielleicht city.getOwner().initUnit(...)
    durch city.initUnit(...) ersetzt werden

  3. #3
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Das hat leider auch nichts gebracht. Ich befürchte bald, dass der Fehler irgendwo bei mir liegt. Ich sehe nur den Wald vor lauter Bäumen nicht....

  4. #4
    ...
    Registriert seit
    30.09.04
    Ort
    Bern
    Beiträge
    5.824
    @Octavian:

    Dein Code funktioniert nicht, weil city.getOwner() die ID des Players zurückgibt (INT) und nicht ein Playerobjekt.

    Code:
    		if city.getOwner() == 0:
    			player = CyGlobalContext().getPlayer(0)
    			player.initUnit(17, city.getX(), city.getY(), UnitAITypes.NO_UNITAI)
    Dieser Code geht. Ich habe Player = 0 genommen, weil das der Spieler im SP ist und es so einfacher und schneller zum Testen ist. Aber andere Zahlen sollten auch gehen.

  5. #5
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    @ Sansi

    Meinen herzlichen Dank, jetzt funktioniert es einwandfrei. Langsam mache ich mir Sorgen, wenn ich schon bei einem Anfängerbeispiel scheitere. Hast du sonst zufällig noch gute Tipps, wie ich mich dem Civ IV-Python am Besten nähern sollte? Habe es bisher über einzelne Modifikationen versucht, aber die sind für meine Verhältnisse meist ziemlich komplex aufgebaut.

  6. #6
    KSV Hessen Kassel Avatar von jok
    Registriert seit
    24.01.02
    Ort
    Kassel
    Beiträge
    3.630
    So eine gute Einführung in CivIV-Python suche ich auch noch. Die Einführungen, die ich bis jetzt gelesen habe, bringen mich nicht wirklich weiter.

    In den XML-Dateien kenne ich mich ja mittlerweile relativ gut aus, aber von Python habe ich immer noch keinen blassen Schimmer und verstehe nur Bahnhof

  7. #7
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Jetzt fühle ich mich schon nicht mehr so allein....

    Auf dieser Seite steht ein Tutorial, allerdings ist dort auch zu lesen:

    Then we also have the (to be written) Civilization IV python introduction. It will begin its release in early November.

    Leider ist das immer noch nicht erschienen.

    Würde sich vielleicht hier jemand finden, so etwas zu machen? Meine volle Unterstützung hätte derjenige...und meinen Dank.

  8. #8
    KSV Hessen Kassel Avatar von jok
    Registriert seit
    24.01.02
    Ort
    Kassel
    Beiträge
    3.630
    Zitat Zitat von Octavian
    Würde sich vielleicht hier jemand finden, so etwas zu machen? Meine volle Unterstützung hätte derjenige...und meinen Dank.
    Meinen auch

    Für Civ IV wird sicherlich nur ein kleiner, aber sehr spezieller Teil von Python benötigt. Und den ganzen Kram, der in den anderen Einführungen steht, braucht man ja für Civ IV (soweit ich das sehen kann) fast garnicht...

  9. #9
    ...
    Registriert seit
    30.09.04
    Ort
    Bern
    Beiträge
    5.824
    Der beste Tipp: Schau in den mitgelieferten Mods / Szenarien nach, was die gemacht haben und wie und warum und mache dort ein paar kleine Änderungen um zu schauen, ob du es verstanden hast.

    Schau immer rum, was andere so machen und probiere es aus: Heute hast du etwas gelernt

    Die Mapskript sind auch in Python. Anschauen und lernen.

    Dann ist auf der offiziellen www.python.org viel Dokumentation mit einem hervorragenden Tutorial von Guido van Rossum, dem 'Erfinder' von Python. Und Tausende von Links zu Pythontutorials, Programmierbeispielen, Opensource etc.

    Und keine Angst vor Python: Ein paar Sachen sind absolut ungewohnt: Die Blockbildung per Einschub, der Aufbau der Klassen, Variablen sind Referenzen. etc. Aber wenn man das mal raus hat, ist es einfach und eine elegante Sprache, die sehr mächtig ist.

  10. #10
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    @ sansi:

    Irgendwie hatte ich gehofft, dass du dich erbarmen könntest und eine solche Einführung schreiben würdest. Wenn ich dich also noch irgendwie überzeugen kann... ?!

    Losgelöst davon nochmals meinen Dank für deine Anregungen.

  11. #11
    ...
    Registriert seit
    30.09.04
    Ort
    Bern
    Beiträge
    5.824
    Zitat Zitat von Octavian
    @ sansi:

    Irgendwie hatte ich gehofft, dass du dich erbarmen könntest und eine solche Einführung schreiben würdest.

    Losgelöst davon nochmals meinen Dank für deine Anregungen.
    Danke für die Ehre, aber so gross sind dann meine Pythonkenntnisse doch nicht, dass ich sinnvoll eine Einführung schreiben könnte.

    Vielleicht jemand anders?

    oder dann warten wir, was mit der Zeit von den Hackern (positiv gemeint) auf den englischen Fanpages so gemacht wird. Gerade die Fanatiker haben oft sehr gute Anleitungen.

    Ich nutze die Zeit mal, die Details ein bisschen kennenzulernen. Es ist nämlich eine ziemliche Masse an Files, die da in den Ordnern rumliegen. Bis man schon nur mal weiss, welches für was ist

  12. #12
    ...
    Registriert seit
    30.09.04
    Ort
    Bern
    Beiträge
    5.824
    Ein kleiner Tipp noch: Setzte in der Civ4.ini HidePythonExceptions = 0. Dann kommen Fehlermeldungen von Python wie im Bild im Anhang in einem Fenster. Das führt dann schnell zur Fehlerquelle.
    Angehängte Grafiken Angehängte Grafiken

  13. #13
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Das ist eine gute Idee. Werde ich gleich einstellen.

    Das nächste Problem hat leider nicht lang auf sich warten lassen. Wenn ich die vor dir vorgeschlagenen Änderungen in eine kleine Modifkation einbauen möchte und in den Mod-Ordner stelle, passiert komischerweise nichts. Er zeigt mir zwar an, dass ich die Modifikation geladen habe, aber im Spiel passiert nichts. Da es früher mit anderen Befehlen geklappt hat, weiß ich nicht, warum es nun nicht mehr funktioniert. Wenn ich die Original "CyEventManager.py" verändere, klappt es.

    Oh, das wird eine lange Nacht....

  14. #14
    ...
    Registriert seit
    30.09.04
    Ort
    Bern
    Beiträge
    5.824
    Dir kann geholfen werden

    Schau: Der EventManager wird aus C++ aufgerufen. Dafür ist die Datei CVEventInterface.py zuständig im Ordner Python->Entrypoints (!). Das sind die 'Entrypoint' von C++ in den Python Eventmanager.

    Du musst also auch diese Datei ändern!

    Schau dir den Angehängten kleinen Sansi2 - Mod an. Er macht absolut nicht viel (nur deinen Krieger Mod). Er ist nicht zum Spielen gedacht, sondern so ein Test-Mod.

    Ich mache da eine Unterklasse des Standard-Eventmanager. Der Kontruktor ruft einfach den Standardkonstruktor auf. Jetzt kann ich Funktionen überschreiben, alle anderen werden durch Vererbung aus dem Standard-Eventmanager übernommen. Das habe ich aus den mitgelieferten Szenarien, die machen es zum Teil auch so (Desertwar mindestens).

    Einfach den Ordner sansi2 in den MODS Ordner entpacken und anschauen / testen.
    Angehängte Dateien Angehängte Dateien

  15. #15
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Hallo sansi!

    Und da sagst du, dass du kaum Ahnung hast....

    Ich habe es jetzt selbst ausprobiert und es klappt. Auch deine Modifikation klappt wunderbar. Dabei fand sich übrigens noch eine swp-Datei und zwei py-Dateien, die mir nichts sagen. Welchen Nutzen haben diese?

    Zitat Zitat von sansi
    Ich mache da eine Unterklasse des Standard-Eventmanager. Der Kontruktor ruft einfach den Standardkonstruktor auf. Jetzt kann ich Funktionen überschreiben, alle anderen werden durch Vererbung aus dem Standard-Eventmanager übernommen. Das habe ich aus den mitgelieferten Szenarien, die machen es zum Teil auch so (Desertwar mindestens).
    Sehr schön, so langsam kommt Licht ins Dunkel. Ich werde die Einzelheiten wohl morgen testen, bin hundemüde. Um einen Gefallen würde ich dich noch bitten: Schaue hier aml ab und zu rein, Fragen werde ich wohl noch zuhauf stellen. Vielleicht hilft es ja auch einigen anderen. Auf welches Konto soll ich dein Honorar überweisen...

Seite 1 von 14 1234511 ... LetzteLetzte

Berechtigungen

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