Seite 212 von 271 ErsteErste ... 112162202208209210211212213214215216222262 ... LetzteLetzte
Ergebnis 3.166 bis 3.180 von 4063

Thema: Der Pythonthread

  1. #3166
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Heißt das, man kann nur Code in den gefundenen importieren oder sind sie da auch nicht bekannt? Hattest du nicht gesagt, dass es geht?

  2. #3167
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Es geht überhaupt nicht. Was zur Hölle hat Firaxis gemacht? Normalerweise sollte das Python können.

  3. #3168
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757


    Ich habe es gechafft. Ich habe mir gedacht, weil die Civ4-Programmierer so wahnsinnig gute Python-Kenntnisse haben, dass sie bestimmt nicht das sys-Modul kennen, welches unter anderem die Möglichkeit bietet, zur Laufzeit den Suchpfad von Python anzupassen.

    Zu meinen Test: Ich habe den normalen EventManager genommen, und wollte ein neues Modul (.pyd) dort importieren lassen. Das gingt erst nicht, da kam der Fehler mit dem import.
    Als ich dann im EventManager oben die Zeilen

    import sys
    sys.path.append(Pfad-zum-Python-Verzeichnis)

    eingegeben habe, ging es.

  4. #3169
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017


    Ein großer Dank geht schon mal für deine Aufwendung.

    Heißt also, man sollte in jedes Pythonfile oben

    import sys
    sys.path.append(Pfad-zum-Python-Verzeichnis)
    hinzufügen?

    Das hört sich einfach an.

    edit: Wie bestimme ich den Pfad nur? Den Pfad muss ich ja relativ angeben können.

    edit2:

    Verstehe ich richtig, dass auf den BTS Pythonpfad normalerweiße gezeigt wird? Was Civ 4 intern nicht als dort enthalten betrachtet, wird nicht gefunden?


    Code:
    MyFile=open("Mods/BASE 5.4/Assets/XML/CustomXML/"+MapName+"_StartingPoints.xml")
    Hoffe das macht damit keine Probleme in Base.
    Geändert von rucivfan (05. September 2013 um 12:10 Uhr)

  5. #3170
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Normalerweise würde es reichen, in einem Modul das zu machen. Wenn ein bereits importiertes Modul wieder (in einem anderen Modul) importiert wird, dann findet in Wahrheit kein import statt.
    Es sei denn natürlich, man ändert das import verhalten, so dass dann immer ein neu-laden stattfindet.
    sys wird nämlich doch verwendet - in verschiedenen Modulen. Dadurch wird sys neugeladen, wodurch sys.path wohl zurückgesetzt wird...


    Es gibt das Modul os.
    Mit os.getcwd() kann man das Arbeitsverzeichnis herausfinden. Das sollte das BtS-Verteichnis sein, da dort die exe liegt. Von da aus ist es ein leichtes, auf den Python-Order der Mod zu schließen. Nur der Modname muss vorausgesetzt werden.

  6. #3171
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Ich beschäftige mich gerade mit der Umsetzung. Ich frage mich überhaupt, warum sys jedes mal neugeladen werden sollte, wenn es doch importiert ist?

    Oder ist

    Es sei denn natürlich, man ändert das import verhalten, so dass dann immer ein neu-laden stattfindet.
    eine Feststellung? Das ist nicht so richtig herauslesbar.

  7. #3172
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Ich denke mal, das da irgendwas geändert wurde. Weil wenn man im Spiel ist, und z.B. beim EventManager was ändert und speichert, dann wird das Modul neu geladen.
    Aber so genau weis ich das nun auch nicht, was da so abgeht.
    Auf jeden Fall muss man, um die .pyd Datein zu importieren, vorher erst sys.path erweitern.

  8. #3173
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Das hätten sie schön bleiben lassen sollen. Mitten im Spiel kann es schon mal zum Absturz kommen. Ich muss dafür immer in das Menü.

  9. #3174
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.455
    eeeeigentlich hat bug mod damit geworben auch im Spiel Python verändern zu können. ging aber nie richtig. sobald man einmal nen spiel offen hatte, hilft nur ein neustart nach einer Modifikation.
    Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5

    Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)

  10. #3175
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Code:
    def onPbemSend(argsList):
    	import sys, smtplib, MimeWriter, base64, StringIO
    Wird das auch nur einmal importiert oder jedes mal wieder neu? Der Witz ist, oben in der Datei steht noch mal ein Import sys

  11. #3176
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757


    Das zweite sys ist wirklich unnötig.

    Module, innerhalb von Funktionen importiert, werden erst dann importiert, wenn die Funktion aufgerufen wird. Normalerweise nur einmal (wie gewöhnliche Modulimporte auch).

    Allerdings ist das übler Stil.

  12. #3177
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Mein erster richtiger Erfahrungsbericht mit Cythoncode:

    Ausgetasucht habe ich erstmal nur wieder die PLE.py mit PLE.pyd, was in Base für das Einheiteninterface zuständig ist.

    Bild

    Damit meine ich die kleinen Symbole unter den Einheiten auf dem Bild. Ich werde dann noch mal ohne Cython ausprobieren um einen direkten Vergleich zu haben, aber es ist eindeutig eine wesentliche Verbesserung!

    Es dauert nur noch fast Echtzeit, die Einheitenanzeige dort umzustellen.

    Mit Echtzeit meine ich weniger als eine 1 Sekunde warten.
    Angehängte Grafiken Angehängte Grafiken

  13. #3178
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896


    (Verdammt, jetzt muss ich mir das auch angucken )

  14. #3179
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Man kann viel mehr Optimieren.

    Man kann z.B. etwas statische Typisierung rein bringen, da wo es sinn macht. Das geht aber nur mit den Grundtypen (int u.ä.), und eigenen, mit Cython erstellen Typen.

    Was viel mehr bringen wird ist das folgende: man kann Python-Funktionen zu C-Funktionen machen (der Funktionsdefinition wird einfach ein bestimmtes Schlüsselwort vorangestellt), dadurch gewinnt man mehr Geschwindigkeit. Der Nachteil ist aber, das solche Funktionen nur von dem Modul selbst verwendet werden können. D.h. andere Module können diese Funktionen nicht verwenden.
    Deswegen ist es wichtig, die Module entsprechend zu designen.

    Dann gibt es noch diverse Compiler-Optionen, z.B. kann man die Indexüberprüfung ausschalten, entweder global für das ganze Modul oder für spezielle Funktionen.

  15. #3180
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Hinzukommt noch, dass ich mit einer Debug.dll mit der Entwicklungsumgebung im Hintergrund am laufen war.

Seite 212 von 271 ErsteErste ... 112162202208209210211212213214215216222262 ... LetzteLetzte

Berechtigungen

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