Zitat von
xist10
PAE 7 wirft aktuell beim Laden auf Linux Fehlermeldungen auf.
Diese lassen sich aber wegklicken und Spiele starten. Weiter habe ich bisher nicht getestet und wollte ich eigentlich auch nicht.
Interessanter Weise scheinen die Fehler zu wechseln ?
Zweiter Versuch…
Bei mir tritt beim Start unter Linux der Fehler nicht auf, d.h. es könnte auch nur ein lokales Problem vorliegen.
Zum Testen habe ich die Dateien nochmal konvertiert (und nicht nur leere Files ins Zip gepackt. Es war ja trotzdem 3.5MB groß… Die bezogen sich aberauf das '.git'-Unterverzeichnis )
Die Konvertierung ist allerdings etwas großzügig, da z.B. diese Nichtstandard-Bindestriche auch ersetzt werden und das Zielzeichen in Civ4 nur als Kästchen dargestellt wird.
Code:
[H1]Ein Vasall werden[\H1]
In PAE ist es nun leichter einen Vasallen zu bekommen. Hat man soeben eine Stadt eines Spielers erobert, der nur mehr 4 oder weniger Städte besitzt, bietet er an, Vasall zu werden.
- Wahrscheinlichkeit 1: 120% – (20xAnzahl der Städte)%
+ Wahrscheinlichkeit 1: 120% – (20xAnzahl der Städte)%
Die rot markierte Variante ist aber noch schlechter. Da zeigt mir Civ4 drei Zeichen Datenmüll an. Falls es bei dir mit der geänderten Variante läuft wüssten wir aber immerhin wonach wir gucken müssten. Die Bindestriche sind schnell getauscht...
Edit: Die Texte kann man in Civ4 anzeigen lassen über Hauptmenü>Pedia>PAE_Konzepte>Vasallen.
Ein größeres Problem beim Starten des PBServer war bei mir eher dieser Python-Fehler:
Code:
1 Traceback (most recent call last):
2 File "<string>", line 1, in ?
3 File "<string>", line 52, in load_module
4 File "CvEventInterface", line 13, in ?
5 File "<string>", line 52, in load_module
6 File "CvEventManager", line 42, in ?
7 File "<string>", line 52, in load_module
8 File "CvScreensInterface", line 3, in ?
9 File "<string>", line 52, in load_module
10 File "CvMainInterface", line 7, in ?
11 ImportError
12 :
13 cannot import name CyGInterfaceScreen
Den kann man IMHO auch nicht einfach ignorieren, weil dann wichtige Dinge nicht initialisiert werden. Außerdem wird CyGInterfaceScreen in ca. 20 weiteren Dateien ebenfalls importiert.
Wenn ich die Importe entferne startet der PBServer ohne Fehlermeldung, aber in der normalen Variante wird im Spiel das Interface nicht mehr gezeichnet.
Vermutlich gehört CyGInterfaceScreen zu den Sachen welche man nicht gleich zum Programmstart importieren darf oder halt nur wenn die Grafikengine verfügbar ist.
Als Workaround böte sich eine Welche an, aber…
1. Die C++-Funktion 'GC.IsGraphicsInitialized()' wird nicht nach Python exportiert, d.h. die kann ich nicht nutzen ohne die DLL zu ändern.
2. Als Ersatz isPitbossHost() zu nehmen, welche von der DLL weitergereicht wird. Fixt das Problem fast...
Code:
from CvPythonExtensions import (…, CyGame, …)
if not CyGame().isPitbossHost():
if not CyPitboss:
from CvPythonExtensions import CyGInterfaceScreen
Aber dummerweise ist isPitbossHost() auf dem PBServer bei der Initialisierung von noch 'False' Die Weiche wirkt erst nach geladenem Spiel.(*)
=> Also entweder IsGraphicsInitialized() wird im Python-Interface bereit gestellt (was auch auf das *-Problem laufen könnte.)
oder als Trick wird versucht CyPitboss zu laden:
Code:
# Das schlägt bei der normalen Exe fehl, aber beim PBServer nicht
# kann man mit try-catch zur Unterscheidung nutzen.
from CvPythonExtensions import CyPitboss
Bevor ich das aber überall einfüge wollte ich fragen, ob ihr eine Variante kennt, wie man global eine Variable innerhalb von Civ4's Python speichern kann? Dann müsste ich nicht x-mal versuchen das CyPitboss-Modul zu laden.