Seite 76 von 219 ErsteErste ... 266672737475767778798086126176 ... LetzteLetzte
Ergebnis 1.126 bis 1.140 von 3275

Thema: PAE V Patch 4 (01.09.2018)

  1. #1126
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.445
    Bezüglich #1124:
    Zitat Zitat von Flunky Beitrag anzeigen
    @Explodierende Strings: bei hohem Handelsaufkommen kann der hier problematisch werden
    PHP-Code:
    # City can use bonus for x turns
    def doCityProvideBonus(pCityeBonusiTurns):
        
    # ScriptDataString (e.g.) = "43,4;23,8;12,10" (bonus index + ',' + num turns + ';' + bonus index + ...)
        
    sScriptDataString CvUtil.getScriptData(pCity, ["freeBonus"])
        if 
    sScriptDataString != ""sScriptDataString += ";" str(eBonus) + "," str(iTurns)
        else: 
    sScriptDataString str(eBonus) + "," str(iTurns# prevent semicolon at the beginning of string
        
    CvUtil.addScriptData(pCity"freeBonus"sScriptDataString)
        
    pCity.changeFreeBonus(eBonus1
    Kann das da dran liegen? Und was machen wir dagegen? Limit für die Ressis, die in einer Stadt gleichzeitig per Händler-Feature vorhanden sein können? Und wie hoch? Oder erstmal "freeBonus" zu "b" verkürzen? Das würde das Problem allerdings nur verschieben... Jeden Bonus nur einmal eintragen und immer nur die neue Zeit zählen lassen würds vielleicht entschärfen. Sind ja doch meist die gleichen Güter, die wieder und wieder gehandelt werden.

  2. #1127
    PAE.Macht.Antike! Avatar von Pie
    Registriert seit
    25.01.08
    Ort
    Noricum
    Beiträge
    16.347
    Und wenn du nur neue Güter hinzufügst, die nicht im freeBonus-String sind?
    sScriptDataString.find(";"+str(eBonus)+",") or sScriptDataString.find(str(eBonus)+",",0,10)

    Hab übrigens das PAE_Merc mit deinem letzten Upload ersetzt.
    Pie's Ancient Europe (PAE)
    Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins letzte Detail!
    Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features.


    ... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!

  3. #1128
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.445
    Mhm, verlängern durch neue Lieferungen würd ich schon zulassen. Ändert ja nix an der Stringlänge.

    Na dann hoff ich doch auf Fehlerfreiheit

  4. #1129
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Zitat Zitat von Flunky Beitrag anzeigen
    Mhm, verlängern durch neue Lieferungen würd ich schon zulassen. Ändert ja nix an der Stringlänge.

    Na dann hoff ich doch auf Fehlerfreiheit
    So wie es da oben im Code steht, wird der String immer länger, ja.
    Ich schreibe mal eine ausführliche Antwort dazu....

    Edit: Danke fürs Erstellen des Git-Branches mit dem aktuellen Stand

  5. #1130
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Zitat Zitat von Flunky Beitrag anzeigen
    PHP-Code:
    # City can use bonus for x turns
    def doCityProvideBonus(pCityeBonusiTurns):
        
    # ScriptDataString (e.g.) = "43,4;23,8;12,10" (bonus index + ',' + num turns + ';' + bonus index + ...)
        
    sScriptDataString CvUtil.getScriptData(pCity, ["freeBonus"])
        if 
    sScriptDataString != ""sScriptDataString += ";" str(eBonus) + "," str(iTurns)
        else: 
    sScriptDataString str(eBonus) + "," str(iTurns# prevent semicolon at the beginning of string
        
    CvUtil.addScriptData(pCity"freeBonus"sScriptDataString)
        
    pCity.changeFreeBonus(eBonus1
    Der bisherige Code hat zwei Nachteile.
    1. Die neuen Einträge werden angehängt egal ob der gleiche Bonus schon vorhanden ist. Das habt ihr
    ja gerade beschrieben.

    2. Die Daten werden als Strings behandelt, was ihre Handhabung unpraktisch macht. Die neuen Methoden aus
    CvUtil erlauben aber auch andere Typen!

    Ich weiß nicht genau was die obige Funktion macht, aber wenn die Boni bzgl iTurns additiv sind, würde
    ich folgendes vorschlagen. Die anderen Zugriffe auf "freeBonus" müssten dann auch noch umgestellt werden.

    PHP-Code:
    # City can use bonus for x turns
    def doCityProvideBonus(pCityeBonusiTurns):
        
    # ScriptData value is dict, e.g. {43:4; 23:8; 12:10}
        # Key is 'iBonus' and value is 'iTurns'
        
        
    iBonus int(eBonus)
        
    iTurns int(iTurns)
        
    bonusDict CvUtil.getScriptData(pCity, ["freeBonus"], {})
        
    # Addiere alten und neuen Rundenwert
        
    bonusDict[iBonus] = iTurns bonusDict.setdefault(iBonus0)
        
    CvUtil.addScriptData(pCity"freeBonus"bonusDict)

        
    pCity.changeFreeBonus(eBonus1
    Sieht doch recht übersichtlich aus, oder?
    Da es bisher ein String war, könnte man dann noch einen If-Zweig einbauen, der das alte Format
    in das neue umwandelt.

    Z.B. so (hoffe ich):
    PHP-Code:
    # City can use bonus for x turns
    def doCityProvideBonus(pCityeBonusiTurns):
        
    # ScriptData value is dict, e.g. {43:4; 23:8; 12:10}
        # Key is 'iBonus' and value is 'iTurns'
        
        
    iBonus int(eBonus)
        
    iTurns int(iTurns)
        
    bonusDict CvUtil.getScriptData(pCity, ["freeBonus"], {})
        if 
    type(bonusDict) == str:
          
    # Konvertiere altes Format "iB,iTurn;..." in dict
          
    bonusDictbonusStr = {}, bonusDict
          bonusDict
    .update([paar.split(",") for paar in bonusStr.split(";")])

        
    # Addiere alten und neuen Rundenwert
        
    bonusDict[iBonus] = iTurns bonusDict.setdefault(iBonus0)
        
    CvUtil.addScriptData(pCity"freeBonus"bonusDict)

        
    pCity.changeFreeBonus(eBonus1
    P.S. Habe das jetzt nur im Texteditor geschrieben und nix getestet!
    Geändert von Ramkhamhaeng (25. Januar 2017 um 00:44 Uhr) Grund: Unnötige Kapselung in tuple() entfernt

  6. #1131
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.445
    Cool

    bonusDict[iBonus] = iTurns + bonusDict.setdefault(iBonus, 0)
    oder einfach

    bonusDict[iBonus] = iTurns

    Soll man bei 2 Händlern, die in der gleichen Runde das gleiche verkaufen dann doppelt so lang die Ressi in der Stadt haben?

  7. #1132
    Registrierter Benutzer Avatar von senlis
    Registriert seit
    25.09.13
    Ort
    In den Sümpfen nahe Asciburgium
    Beiträge
    170

    Log für das Stadtansichtsproblem

    Zunächst mal vielen Dank für die Tipps. Ich habe erst mal auf 4.7. aktualisiert und ein neues Spiel mit EuropaXL 40 Civ Karte begonnen. Der Stadtscreen-Bug ist zum ersten Mal wieder in Runde 15 aufgetreten und das sind die Fehlermeldungen, die das Python Error Log dazu liefert:

    Code:
      File "CvScreensInterface", line 833, in forceScreenRedraw
    
      File "CvMainInterface", line 978, in redraw
    
      File "CvMainInterface", line 1927, in updateSelectionButtons
    
      File "CvMainInterface", line 7183, in insertButtons
    
    RuntimeError: unidentifiable C++ exception
    ERR: Python function forceScreenRedraw failed, module CvScreensInterface
    Geändert von senlis (25. Januar 2017 um 05:50 Uhr)

  8. #1133
    Bereichsmoderator Avatar von theindless
    Registriert seit
    31.08.12
    Ort
    Bayern... gerade noch so
    Beiträge
    7.579
    Wie heißt die Log-Datei genau in der die Fehler dokumentiert werden?

    Hatte nämlich wieder einen CtD und finde gar nichts.

    Ihr würde gerne zur Fehlerbehebung beitragen aber dazu muss ich wissen welches Log ihr braucht

  9. #1134
    Registrierter Benutzer Avatar von Thorgal
    Registriert seit
    06.08.09
    Beiträge
    5.238
    Zitat Zitat von theindless Beitrag anzeigen
    Wie heißt die Log-Datei genau in der die Fehler dokumentiert werden?

    Hatte nämlich wieder einen CtD und finde gar nichts.

    Ihr würde gerne zur Fehlerbehebung beitragen aber dazu muss ich wissen welches Log ihr braucht
    PythonErr.log: wenn da was drinnen steht, ist irgendwas im Python faul.

    Danben gibt's noch den xml.log: der ist immer voll und das meiste ist völlig egal, aber ab und an steht mal was hilfreiches drinnen (meist ganz am Ende nach SetGlobalClassInfo (Civ4EspionageMissionInfo/EspionageMissionInfos/EspionageMissionInfo)). Bei CtDs kann auch manchmal noch der MPLog hilfreich sein, aber der ist etwas fummlig. Allgemein ist's auch so, das sich das oft von Rechner zu Rechner unterscheidet, was in den Log geschrieben wird. Ich hab z.B. oft einen Eintrag, den Pie nicht hat. Kannst also auch ein Save vom Crash hochladen, vielleicht findet jemand anderes was.
    Pie's Antikes Europa (PAE): Genieße CIV in der Antike.

    PAE - Mythos Antike: Die Geschichte der drei furchtlosesten Herrscher des PBEM 442.

    Kingdom of Africa: Auf Abwegen im PB 73

  10. #1135
    Registrierter Benutzer Avatar von Thorgal
    Registriert seit
    06.08.09
    Beiträge
    5.238
    Zitat Zitat von Flunky Beitrag anzeigen
    Zum Kultivieren: das Limit mit den Stadtstufen+alle Städte ist schon sehr restriktiv. Ich würd mal probieren, dass nur eine Stadt in Reichweite des Plots noch Kapazitäten haben muss. Weil dass größere Städte mehr Kultivierung erlauben, find ich schon hübsch. Aber wenn das so zu viel wird, würd ich einfach nen Fixwert von 3 Ressis/Siedlung setzen und erst bei Metropole eine weitere erlauben.
    Ich bin ja der Vertreter des sehr restriktiven Systems, aber auch mir ist das etwas zu hart. Spielt sich nicht ganz so flüssig. Ich wäre auch dafür, es mal mit der weniger restriktiven Variante "Wenn eine Stadt, die auf den Plot zugreift, noch Kapazitäten hat, dann darf verbreitet werden" zu probieren.

    Zitat Zitat von Flunky Beitrag anzeigen
    Als BtS-Spieler tut es zwar immer weh, nicht 0/100 zu forschen, aber so ist PAE nunmal - man soll nicht 100 Jahre alle Steuereinnahmen horten und dann plötzlich in neue Forschungsgebiete investieren, sondern immer so ein Zwischending von 50-100% Forschungsinvestitionen fahren.
    Ganz genau, das ist ein wesentlicher und in meinen Augen auch sehr guter Punkt, wo sich PAE von BtS unterscheidet.

    Zitat Zitat von Flunky Beitrag anzeigen
    Die -1 von Anfang an als nicht-Org find ich so mittel gut - wertet halt ORG als Trait ganz ordentlich auf, etwa auf das Niveau von Cha und Spi für die ersten 100 Runden würd ich schätzen. Eher noch drüber, sind ja effektiv 100 Gold in der Kasse am Anfang. Aber da Org vorher einfach unattraktiv war - gegenüber Cha, Spi, Exp, Maritim, Bauherr - vielleicht nicht das schlechteste.
    Ist etwas gewöhnungsbedürftig, passt aber in meinen Augen. Man hat ja auch noch die 30 Startgold auf der Kante und damit schafft's man schon auf Pop 2 und kann dann mit ~70% Forschen. Letztendlich hat das auch nur den Effekt, dass man den Forschungsregler leicht runterdreht. Und das als Nebeneffekt damit ORG aufgewertet wird, find ich richtig toll!

    Ich hab auch noch Pie's ursprüngliche Antwort auf das -1 im Kopf und noch mal ausgekramt. Das war schon auch genau sein Ziel:
    Zitat Zitat von Pie Beitrag anzeigen
    Das ist ok. Kein Unterhalt ist einfach zu billig. Dafür musst du schon zu Beginn die Forschung weg von 100% haben.
    Pie's Antikes Europa (PAE): Genieße CIV in der Antike.

    PAE - Mythos Antike: Die Geschichte der drei furchtlosesten Herrscher des PBEM 442.

    Kingdom of Africa: Auf Abwegen im PB 73

  11. #1136
    Registrierter Benutzer
    Registriert seit
    06.02.14
    Beiträge
    2.243
    Eine weitere Fehlermeldung mit der Verbesserung (Antwort 1122) Runde 356

    Traceback (most recent call last):
    File "CvEventInterface", line 23, in onEvent
    File "CvEventManager", line 303, in handleEvent
    File "CvEventManager", line 5091, in onCombatResult
    AttributeError: CvEventManager instance has no attribute 'doAIMercTorture'
    ERR: Python function onEvent failed, module CvEventInterface
    Markus1978

    PAE-Neuling

    Storys:
    Abgeschlossene Storys: Wo: Civ4 - Einzelspieler-Storys Titel: PAE Julius Caesar - Sieg oder Niederlage Ergebnis: Niederlage
    Abgeschlossene Storys: Wo: Civ4 - Einzelspieler-Storys Titel: PAE Szenario: PAE_LimesGermanicusSmall - Chaos ohne Ende wie man es nicht macht! Ergebnis: Sieg

  12. #1137
    Bereichsmoderator Avatar von theindless
    Registriert seit
    31.08.12
    Ort
    Bayern... gerade noch so
    Beiträge
    7.579
    Also gut.....

    1. "Logs" und AutoSave mit dem Anzeige-Bug


    2. "Logs2" NACH CtD in Runde NACH dem Autosave (reproduzierbar)
    Angehängte Dateien Angehängte Dateien

  13. #1138

  14. #1139
    Bereichsmoderator Avatar von theindless
    Registriert seit
    31.08.12
    Ort
    Bayern... gerade noch so
    Beiträge
    7.579
    Kleiner Nachtrag noch....

    Das Autosave 1180 lässt sich nicht mal mehr laden, sondern stürzt beim laden schon ab

    Das Autosave 1200 lässt sich zwar laden, hat jedoch den Anzeige-Bug und lässt sich auch nicht mehr bis Runde 1160 spielen


    Außerdem ist mein letztes manuelles Save 1380 auch nicht mehr spielbar, da der Anzeige-Bug besteht.
    Außerdem habe ich auch bei diesem Save einen CtD im Rundenwechsel.
    Das war aber vorher nicht der Fall, da ich sonst ja nicht bis 1160 gespielt hätte...


    Im Umkehrschluss würde das bedeuten, dass es nichts mit dem Save zu tun hat, oder??


    Nachdem ich gestern den Zeitraum 1380-1160 ohne Problem gespielt habe, habe ich mal noch gesucht, welche Dateien gestern und heute im "MyGames"-Verzeichnis und im Programmverzeichnis geändert wurden.
    Das sind neben den ganzen Log-Dateien auch noch eine Log-Datei "ThemeParseLog.txt" im Programmverzeichnis (hängt auch bei). Daneben wurden die Verknüpfungen zu den "Custom"-Verzeichnissen etc geändert

    Bild
    Angehängte Grafiken Angehängte Grafiken
    Angehängte Dateien Angehängte Dateien

  15. #1140
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.445
    Will jemand Python beim arbeiten zuschauen?
    http://www.pythontutor.com/visualize.html#mode=edit

    Echt schicke Konstruktion, Ramk

    Code:
    bonusDict = "21,4;25,7;28,8"
    
    bonusDict, bonusStr = {}, bonusDict
    bonusDict.update([paar.split(",") for paar in bonusStr.split(";")])
    @theindless: probier mal, den Cache zu löschen. Das müsste mit gedrückter ALT-Taste beim Starten von Civ sein, kann man aber auch in der Ini einstellen.

    Die Fehlermeldung von Senlis hab ich auch, hier läuft das Spiel aber weiter. Ich tippe auf weitere kaputte Texte. Manchmal bekomm ich auch einen Fehler bzgl. nicht gefundener Shortcuts Könnte zusammenhängen.

Seite 76 von 219 ErsteErste ... 266672737475767778798086126176 ... LetzteLetzte

Berechtigungen

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