Danke für den Hinweis, RAB!
Das war mir aber schon aufgefallen.![]()
Danke für den Hinweis, RAB!
Das war mir aber schon aufgefallen.![]()
Schön wäre da eine Funktion ähnlich wie bei den Gründervätern: Rechtsklick auf das Bild öffnet den Ereignistext.
Bin da hin- und hergerissen. Klar, einerseits wäre diese Idee sehr hübsch. Andererseits: Die Vielspieler von TAC kennen die frühen Ereignisfenster irgendwann aus dem Effeff. Ich glaube, bei vielen Spielern gäbe es gar nicht das Bedürfnis, diese Texte noch mal nachschlagen zu können.![]()
Möglich, dass es kaum jemand braucht. Ausser TBS spiele ich bevorzugt Rollenspiele, daher wohl meine Leidenschaft für die sehr gelungenen, atmosphärischen Ereignistexte.
Viele Rollenspiele haben mittlerweile etwas ähnliches (z.B. Buch der Taten bei Herr der Ringe Online). Dort bin ich es gewöhnt die Texte zu einer Tat / einem Ereignis nochmal nachlesen zu können.
Also sicherlich kein Thema mit hoher Prio, da es keinerlei Einfluß auf die Spielbarkeit von TAC hat.
Ich habe mich das erste mal an die Python-Skripts gewagt und bin auch nach ein paar Minuten fündig geworden.
In der Datei CvAchieveAdvisor.py habe ich den Bildern eine Widget-Nummer vergeben, die Stand auf -1. Anschliessend kann man Klick- oder MouseOver-Events für jedes Bild abfragen.
Am Ende der Datei folgenden Code abändern:
mit dem hier: (PICTURE_AA ist dabei der Wert, den ich für die Bilder vergeben habe)Code:# Adds Mouse Over Help to General Widgets def getWidgetHelp(self, argsList): iScreen, eWidgetType, iData1, iData2, bOption = argsList return u""
Das funktioniert dann soweit auch ganz schön und zeigt mir den Titel der Errungenschaft als MouseOver-Text bei den Bildern an. Toll - der stand ja auch schon unter den BildernCode:# Adds Mouse Over Help to General Widgets def getWidgetHelp(self, argsList): iScreen, eWidgetType, iData1, iData2, bOption = argsList iType = WidgetTypes.WIDGET_GENERAL if (eWidgetType == iType): if (iData1 == self.PICTURE_AA): return gc.getAchieveInfo(iData2 + (self.AchieveColumn * 2) + 1).getDescription() return u""
Also habe ich die anderen Dateien durchsucht um die richtige Funktion für den Zugriff auf die Beschreibunsgtexte zu finden. Diese sind in CvInfos.cpp definiert. Statt der Funktion getDescription() sollte man einfach getBodyTextKey() verwenden können. Also ein neuer Versuch:
Leider ist das Ergebnis unbefriedigend - das MouseOver bleibt komplett leer.Code:# Adds Mouse Over Help to General Widgets def getWidgetHelp(self, argsList): iScreen, eWidgetType, iData1, iData2, bOption = argsList iType = WidgetTypes.WIDGET_GENERAL if (eWidgetType == iType): if (iData1 == self.PICTURE_AA): return gc.getAchieveInfo(iData2 + (self.AchieveColumn * 2) + 1).getBodyTextKey() return u""
Irgendwas mache ich falsch. Wenn ich die Texte direkt über z.B. CyTranslator().getText("TXT_KEY_ACHIEVE_LANDFALL_TEXT",()) im MouseOver ausgebe, dann klappt es. An der Länge der Texte kann es also nicht liegen.
Vielleicht kann mir ein erfahrener Modder ja einen Tipp geben woran es liegt. Dann stelle ich auch gerne den fertigen Code zur Verfügung.
PS: Writing Bull, wenn das in diesem Thread fehl am Platze ist, bitte verschieben oder löschen.
Bin begeistert! Du machst ja nicht nur interessante Vorschläge - du versuchst sie auch noch umzusetzen.
koma13 ist richtig gut im Programmieren von py-Dateien. Ich wette, dem fällt was Kluges zu deiner Intiative ein.
Bin selber py-Analphabet. Und bin insofern natürlich hocherfreut, dass du dich mit deinen py-Kenntnissen für TAC interessierst.![]()
Ich habe keine py-Kenntnisse und bin auch kein Programmierer. Hier bei der Arbeit lassen sie mich lieber nicht näher als 10 Meter an irgendwelchen Code ran
Eigentlich habe ich nur bestehende Funktionen kopiert/erweitert und mit den Infos aus dem Tutorial bei den Fanatics über MouseOver-Funktionalität ergänzt.
Daher auch mein grandioses Scheitern am Ende![]()
So hatte ich mir vorgestellt, soll das im einfachsten Fall aussehen:
Achtung Spoiler:
Die letzten Probleme dabei löse ich hoffentlich auch noch. Und wo ich gerade dabei bin, schaue ich mir auch die chronologische Sortierung der Ereignisse an, statt der jetzigen starren Reihenfolge aus der CIV4AchieveInfos.xml.
Und wenn das wider Erwarten auch klappen sollte, setze ich noch den hübschen Bilderrahmen drum, den die Gründungsväter-Portraits haben.![]()
Bin begeistert!
Das wäre großartig, Ronnar!
Willst du den Schirm um die Achievement-Grafiken oder um die -Texte setzen? Und meinst du den Rahmen aus dem Gründerväter-Infoschirm oder den aus dem Kontinentalkongress-Infoschirm?
Falls du die Texte umrahmen möchtest, fände ich den Rahmen aus dem Gründerväter-Infoschirm hübscher, weil es sonst in der Gesamtschau etwas zu überladen wäre.![]()
Hervorragend!
Falls du ein Beispiel dazu suchst, im Europahafen hatte ich die eingehenden Schiffe nach Überfahrtzeiten sortiert gehabt (Stichwort "sort" bzw. "lamda").Und wo ich gerade dabei bin, schaue ich mir auch die chronologische Sortierung der Ereignisse an, statt der jetzigen starren Reihenfolge aus der CIV4AchieveInfos.xml.![]()
Auf Wunsch von Writing Bull ein Screenshot wie die Seite mit Bilderrahmen aussieht.
Da ich künstlerisch völlig unbegabt bin, habe ich die Rahmen aus dem Kontinentalkongress zweckentfremdet.
Achtung Spoiler:
Und da mich Writing Bull auch gebeten hat, das Ergebnis hier zur Verfügung zu stellen, anbei die geänderte Datei CvAchieveAdvisor.py für den Achievement Advisor.
Einfach in das Verzeichnis Civilization IV Colonization\MODS\TAC 2.00\Assets\Python\Screens entpacken - aber vorher die vorhandene Datei sichern.
Alle Änderungen sind dokumentiert, ich habe extra nochmal einen Abgleich drüberlaufen lassen. Wem die Bilderrahmen nicht gefallen, der kann die ganz einfach wieder entfernen und nur die Mouse-Over-Texte behalten.
Die Bilderrahmen habe ich nicht in verschiedenen Auflösungen getestet, durchaus möglich, dass die dann nicht passen oder Teile der Gemälde verdecken.
Die Sortierung wird heute nichts mehr, langsam ruft doch das Bett!
Edit: Anhang entfernt, da veraltet
Geändert von Ronnar (30. Januar 2010 um 16:25 Uhr)