Seite 2 von 14 ErsteErste 12345612 ... LetzteLetzte
Ergebnis 16 bis 30 von 204

Thema: Python - Fragen über Fragen

  1. #16
    ...
    Registriert seit
    30.09.04
    Ort
    Bern
    Beiträge
    5.824
    Zitat Zitat von Octavian
    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?
    Das sind Dateien, die mein Editor vim erstellt. Die werden gebraucht für recovery/History/kA. Kannst du löschen. Also alles mit .swp und .py~ sind solche Dateien.

  2. #17
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Guten Morgen!

    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).

    Einfach den Ordner sansi2 in den MODS Ordner entpacken und anschauen / testen.
    Ich habe mir das genauer angeschaut und es bleiben jetzt doch noch ein oder zwei Fragen. In deiner kleinen Modifikation habe ich noch zwei Ini-Dateien gefunden, "Sansi" und "Sansi2". Hat "Sansi" noch irgendeine Bedeutung?

    Um meine CVEventManger.py zu bekommen, kopiere ich eine aus den Szenarien und passe diese an. Woher weiß man, welche zusätzlichen Python-Dateien man noch importieren muss oder anders gefragt: Woher weißt du, in welcher Datei sich einzelne deiner gebrauchten Funktionen verstecken?

    Bsp:

    Code:
    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
    Wieso brauchst du zum Beispiel "sys"? Ist das einfach so übernommen? Ich hätte jetzt gedacht, dass ich nur die Dateien brauche, deren Objekt ich in meiner CvEventManger.py benutze., zum Beispiel "Popup", wenn ich ein Fenster öffnen möchte.

  3. #18
    ...
    Registriert seit
    30.09.04
    Ort
    Bern
    Beiträge
    5.824
    Die .ini Datei kannst du dir mal anschauen: Da kann man einfach ein paar Einstellungen für den Mod vornehmen. Exisitiert diese Datei nicht, so erstellt sie Civ4 beim ersten Starten des Mods. Was da alles möglich ist, habe ich kA. Vielleicht gibt es irgendwann und irgednwo eine Beschreibung

    Die imports habe ich einfach stehen lassen vom Mod, aus dem ich dieses File kopiert habe: Ich denke dass zumindest sys, PyHelpers, pickle, CvScreenEnums und CvUtil nicht nötig sind.

    sys und pickle sind Pythonmodule aus der Standarddistriubution: Hier gibt's ne vollständige Liste mit allem was du wissen musst.

    Was man importieren muss: Einfach alles, was gebraucht wird Die Module kann du dir überigens alle anschauen. Entweder sind es 'offizielle' Python module oder sie sind im Civ4 Verzeichniss. (Zum Beispiel ist pickle im Verzeichnis python -> System)

    Wenn du einen grossen Mod schreibst, kannst du gewisse Hilfsmodule in eigene Dateien auslagern. Oder wenn du gewisse Funktionen/Klassen in mehreren Mods brauchst, kannst du eigene Module erstellen. Lies dir die Dokumentation zu Modulen und dem import mal in den Tutorials genau durch. Das ist für Python sehr wichtig zu verstehen, was da passiert.

  4. #19
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Schankedön.... Ich arbeite mich weiter durch.

  5. #20
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Hallo!

    Ich habe wieder einige Fragen: Ich bin gerade dabei, mir einige Python-Dateien aus den Modifikationen anzuschauen. Jetzt bin ich bei "Desert War" (CvDesertWar) auf eine Liste gestoßen. Diese nennt sich "forbiddenUnitList" und sperrt einige Einheiten, sobald ein bestimmtes "Event" eintritt. Leider finde ich nirgends den Aufruf dieser Liste. Bei dem Ereignis finde ich keinen Bezug zu og. Liste. Irgendwo muss doch Civ IV gesagt werden: Sobald das eintritt, kannst du bestimmte Einheiten nicht mehr bauen.

    Gruß

    Octavian

  6. #21
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Zitat Zitat von sansi
    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.
    Also, ich hab das versucht und dies direkt in das Spiel (also unter CustomAssets die Eintrage aus deinem Zip in die jeweilige Datei übertragen), dies führt aber zu nichts, will sagen, ich habe keine Kaserne und keine Krieger, aber diese Popup-Meldung "Hello World!" bekomme ich pro Spieler und pro Runde...
    Irgendwas muss da schief laufen...

    MfG
    Caesium

  7. #22
    ...
    Registriert seit
    30.09.04
    Ort
    Bern
    Beiträge
    5.824
    Zitat Zitat von cstelter
    Also, ich hab das versucht und dies direkt in das Spiel (also unter CustomAssets die Eintrage aus deinem Zip in die jeweilige Datei übertragen), dies führt aber zu nichts, will sagen, ich habe keine Kaserne und keine Krieger, aber diese Popup-Meldung "Hello World!" bekomme ich pro Spieler und pro Runde...
    Irgendwas muss da schief laufen...

    MfG
    Caesium

    Hmm, das ist schon richtig: Jede Runde kommte ein Hello World und wenn du eine Stadt baust, steht automatisch ein Krieger drin. Mehr macht dieser Testmod nicht.

    Besser als in die Customassets kopierst du diesen Testmod in das MODS Verzeichnis. So kannst du rumspielen mit dem Testmod und das Originalspiel steht weiter zur Verfügung, ohne dass du CutomsAssets immer löschen musst.

  8. #23
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Zitat Zitat von sansi
    Hmm, das ist schon richtig: Jede Runde kommte ein Hello World und wenn du eine Stadt baust, steht automatisch ein Krieger drin. Mehr macht dieser Testmod nicht.

    Besser als in die Customassets kopierst du diesen Testmod in das MODS Verzeichnis. So kannst du rumspielen mit dem Testmod und das Originalspiel steht weiter zur Verfügung, ohne dass du CutomsAssets immer löschen musst.
    Naja, ich hatte nicht jede Runde ein, sodern je nach Anzahl Spielern x "Hello World. Werds mal als Mod ausprobieren. Falls es dort funktionieren sollte, müsste ich doch die Einträge in die CustomAssets direkt überführen können, da ich auf diese Weise später mal Mods spielen können möchte, hat ja auch mit AbandonRazeDemolish und SettlerReligion funktioniert...

    MfG
    Caesium

  9. #24
    ...
    Registriert seit
    30.09.04
    Ort
    Bern
    Beiträge
    5.824
    Zitat Zitat von cstelter
    Naja, ich hatte nicht jede Runde ein, sodern je nach Anzahl Spielern x "Hello World. Werds mal als Mod ausprobieren. Falls es dort funktionieren sollte, müsste ich doch die Einträge in die CustomAssets direkt überführen können, da ich auf diese Weise später mal Mods spielen können möchte, hat ja auch mit AbandonRazeDemolish und SettlerReligion funktioniert...

    MfG
    Caesium
    Auch das ist richtig: Es sollte einfach ein kleiner Demonstartionsmod sein, der keinen spielerischen Sinn macht. Also kriegt man für jede Ziv ein 'hello world'.

    Es ging hier nur drum zu zeigen, wie ein Mod den Eventmanager überschreiben kann und dabei auf die vorhandenen Funktionen zurückgreift.

    Du kannst die Funktion mit dem 'hello world' auch einfach löschen. Der 'Mod' funktioniert in CustomAssets und im Modsordner, da gibt es keinen Untershied. Ich habe dir empfohlen, das im Modsordner zu machen, damit dein Originalspiel weiter zur Verfügung steht, während du am testen bist. Von der Funktionalität her gibt es da keinen Unterschied.

  10. #25
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Zitat Zitat von Octavian
    Hallo!

    Ich habe wieder einige Fragen: Ich bin gerade dabei, mir einige Python-Dateien aus den Modifikationen anzuschauen. Jetzt bin ich bei "Desert War" (CvDesertWar) auf eine Liste gestoßen. Diese nennt sich "forbiddenUnitList" und sperrt einige Einheiten, sobald ein bestimmtes "Event" eintritt. Leider finde ich nirgends den Aufruf dieser Liste. Bei dem Ereignis finde ich keinen Bezug zu og. Liste. Irgendwo muss doch Civ IV gesagt werden: Sobald das eintritt, kannst du bestimmte Einheiten nicht mehr bauen.

    Gruß

    Octavian

    Hierfür habe ich jetzt übrigens eine Lösung gefunden. Die Liste wird durch eine Funktion aufgerufen, die die Produktionsliste der Städte überprüft. Ich habe es bei meiner Modifikation benutzt, um die Glaubensfanatiker an die CIVIC "Theokratie" zu binden.

    Näheres findet man unter diesem Link

  11. #26
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Zitat Zitat von sansi
    Auch das ist richtig: Es sollte einfach ein kleiner Demonstartionsmod sein, der keinen spielerischen Sinn macht. Also kriegt man für jede Ziv ein 'hello world'.

    Es ging hier nur drum zu zeigen, wie ein Mod den Eventmanager überschreiben kann und dabei auf die vorhandenen Funktionen zurückgreift.

    Du kannst die Funktion mit dem 'hello world' auch einfach löschen. Der 'Mod' funktioniert in CustomAssets und im Modsordner, da gibt es keinen Untershied. Ich habe dir empfohlen, das im Modsordner zu machen, damit dein Originalspiel weiter zur Verfügung steht, während du am testen bist. Von der Funktionalität her gibt es da keinen Unterschied.
    Ich habs auch grad bemerkt... hab die Datei modifiziert und wollte folgenden Eintrag schalten:

    if city.getOwner() == 0:
    player = gc.getPlayer(0)
    player.initBuilding(09, city.getX(), city.getY())
    player.initUnit(17, city.getX(), city.getY(), UnitAITypes.NO_UNITAI)

    Doch ich bekomme keinen Getreidespeicher und der Krieger bleibt auch aus. Mittlerweile verstehe ich Python ja ein wenig, aber hier an dieser einfachen Stelle she ich den Wald vor lauter Bäumen wohl nicht.

    MfG
    Caseium

  12. #27
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Poste mal bitte die komplette Datei, vielleicht gibt das näheren Aufschluß. Ich würde das Gebäude auch anders simulieren, aber da du keine Fehlermeldung bekommen hast, geht das anscheinend auch so.

  13. #28
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    So, hier das Minimödchen; wenn du weisst, wies auch anders geht, ich bin für jeden Vorschlag offen.

    p.s. Dass du neben deinem Mod noch Zeit findest, hier im Forum zu helfen -> RESPEKT!
    Angehängte Dateien Angehängte Dateien

  14. #29
    Bruttrainer
    Registriert seit
    05.05.02
    Beiträge
    496
    Danke dir, aber die Zeit sollte man sich immer nehmen, schließlich haben mir so manche Tipps auch schon geholfen.... Außerdem kann ich so auch immer was dazulernen.

    Ich komme leider erst später dazu, mir die Sachen anzuschauen. Ich hoffe, dass ich dann aber auch fundiert Stellung beziehen kann.

  15. #30
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Schon mal danke im voraus.

Seite 2 von 14 ErsteErste 12345612 ... LetzteLetzte

Berechtigungen

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