Programmierst du da nen Compilierer? Wofür braucht man das sonst?
Programmierst du da nen Compilierer? Wofür braucht man das sonst?
Pie's Ancient Europe (PAE)
Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins allerletzte Detail!
Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features, die Spaß machen. Hand drauf!
- Pie's Ancient Europe (VII)
... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!
Wieso in aller Welt kann man weder ein gespeichertes Spiel noch ein als WB-Save gespeichertes Spiel fortsetzen, wenn man die dll verändert hat ?!
Woran merkt sich CIV das dieses Spiel noch mit einer anderen dll gespielt wurde ?!
So isses ja unmöglich zu Modden, wenn man jedesmal, wenn man die dll ändert (ändern muss), von vorne anfangen muss!
Wenn ich ein neues Spiel anfange funktioniert alles wie es soll. Aber das WB-Save mit der vorherigen dll: keine Chance.
Beim Debug schreibt er in der ersten Runde das FAssert(eFeatureNum > -1); von den CvGlobals. Danach CtD.
(der kann doch nicht irgendein FeatureType erfinden und ins WB-Save packen, das es nicht gibt? oder wie kann ich das verstehen?)
(das Laden der Saves geht ganz normal, aber eine weitere Runde -> CtD)
Hatte jemand schonmal das Problem?
Geändert von Pie (04. Februar 2025 um 07:28 Uhr)
Pie's Ancient Europe (PAE)
Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins allerletzte Detail!
Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features, die Spaß machen. Hand drauf!
- Pie's Ancient Europe (VII)
... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!
Kommt drauf an, was du da verändert hast. WBSave sollte immer gehen, außer da steht was drin was es so nicht mehr gibt.
Hab nur in der movementcost den Tieren wieder erlaubt über Flüsse zu steigen, ohne dass sie danach ihre Bewegungspunkte verlieren.
Ich kann alles spielen nur nicht bei meinem Save und WBSave weiterspielen. Das hat doch keinen Sinn?! Vor allem weil ja das Assert von eFeatureNum > -1 kommt. Das kommt ja nur, wenn es ein Feature gibt, das -1 rauswirft. Hab aber alle 101 Features überprüft
Pie's Ancient Europe (PAE)
Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins allerletzte Detail!
Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features, die Spaß machen. Hand drauf!
- Pie's Ancient Europe (VII)
... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!
Edit: Das der Fehler erst beim Klicken auf "Neue Runde" auftritt habe ich überlesen. Mein Text gilt für Probleme beim Laden.
Du musst was verändert haben das Einfluss auf die ::read Methode hat. Beispielsweise weil nun im Save ein Array ausgelesen werden soll, was beim Speichern gar nicht angelegt wurde, oder dessen Größe nun anders (Xml-Änderung) ist.
Das Lesen von -1 an unerwarteter Stelle ist zumindest ein Hinweis auf diese Art von Fehler.
Geändert von Ramkhamhaeng (04. Februar 2025 um 17:26 Uhr)
Was mir nur dazu einfällt: Wenn man "modifizierte Dateien sperren" beim Spielstart wählt, kann man gar nichts mehr ändern. Nicht einmal kleinste Bugs beheben. Vermutlich wird da irgendwie ein Hashwert der ursprünglichen Dateien gespeichert. Aus diesem Grund lasse ich das immer deaktiviert.
That's why I am here: Mein Mod
Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude
Die aktuelle Story zum Mod:
Die Vereinigten Staaten von Amerika
Alte Stories zu alten Versionen:
Alte Storys
Achso, ich hab irgendwann mittendrin (das war aber noch vor meiner dll-Änderung), in der UnitXML herumgespielt und zB dem Bären UNITCOMBAT_MELEE statt NONE gegeben... ob das der Grund sein könnte?
Aber die WB-Datei ist doch eine reine Textdatei. Da wird doch kein versteckter hash-Wert mitgespeichert.
Pie's Ancient Europe (PAE)
Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins allerletzte Detail!
Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features, die Spaß machen. Hand drauf!
- Pie's Ancient Europe (VII)
... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!
Mein Beispiel gilt auch nur, wenn "modifizierte Dateien sperren" aktiv ist.
Andere Frage: hast du in der .dll irgendwelche Variablen hinzugefügt oder entfernt?
Wenn ich mir deine Fehlermeldung einmal ansehe: Hast du irgendein Feature hinzugefügt? Vielleicht ist im WB-Save gespeichert, welche (wie viele) Feature-Einträge es gibt. Wobei ich dann eher erwartet hätte, dass er gar nicht lädt.
Oder hast du irgendwo in Python ein Feature, das zum Rundenende gesetzt wird (z.B. "verbrannter Wald"), und das umbenannt wurde, so dass er zur Bezeichnung im Python-Code das dazugehörige Feature nicht mehr findet?
Wenn du das Spiel im Debug-Modus startest (dazu musst du in Visual C++ auf "Debuggen" gehen und viel Zeit mitbringen) sollte er anstelle des Absturzes an dieser Stelle ermöglichen, dir den Code anzeigen zu lassen, wo der Fehler auftritt. So habe ich meinen letzten Fehler gefunden.
That's why I am here: Mein Mod
Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude
Die aktuelle Story zum Mod:
Die Vereinigten Staaten von Amerika
Alte Stories zu alten Versionen:
Alte Storys
Beim WBSave kann ich mir nur vorstellen, dass da eine Konstante drinsteht, die es nicht mehr gibt.
Nö, im XML kam nix dazu und auch nix weg. Ausserdem wie gesagt, ich kann das Spiel ganz normal laden. Daraus ein WB-Save machen und dieses auch normal laden (Szenario spielen). Wenn ich dort aber eine Runde weiter möchte => CtD. Ich werd da mal nach und nach die Einträge löschen (Einheiten, Features) und probieren... wie früher... die alte Methode....
Mit der DEBUG.dll komm ich ja vorm CtD auf den FeatureType>-1 Fehler. Was bei einem WB-Save aber nicht sein kann. Wenn da ein Feature nicht existieren sollte, würde er schon beim Laden des Szenarios motzen. Abgesehen davon hab ich nichts bei den FeatureInfos gemacht. Nicht mal in der dll. (Dort gab ich ja nur Tieren die Chance schnell über einen Fluss zu hüpfen).
Pie's Ancient Europe (PAE)
Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins allerletzte Detail!
Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features, die Spaß machen. Hand drauf!
- Pie's Ancient Europe (VII)
... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!
Wie ist die komplette Fehlermeldung?
Geht doch bestimmt um diese Stelle in CvGlobals.cpp?
CvFeatureInfo& CvGlobals::getFeatureInfo(FeatureTypes eFeatureNum)
{
FAssert(eFeatureNum > -1);
[...]
}
Also wird getFeatureInfo mit ner negativen Zahl aufgerufen. Die "Tiere übern Fluss"-Stelle ist wo?
bei CvPlot::movementCost
und das hat sicher nichts mit einem FeatureType <= -1 Fehler zu tun....PHP-Code:
if (pFromPlot->isValidRoute(pUnit) && isValidRoute(pUnit) && ((GET_TEAM(pUnit->getTeam()).isBridgeBuilding() || !(pFromPlot->isRiverCrossing(directionXY(pFromPlot, this))))))
{
iRouteCost = std::max((GC.getRouteInfo(pFromPlot->getRouteType()).getMovementCost() + GET_TEAM(pUnit->getTeam()).getRouteChange(pFromPlot->getRouteType())),
(GC.getRouteInfo(getRouteType()).getMovementCost() + GET_TEAM(pUnit->getTeam()).getRouteChange(getRouteType())));
iRouteFlatCost = std::max((GC.getRouteInfo(pFromPlot->getRouteType()).getFlatMovementCost() * pUnit->baseMoves()),
(GC.getRouteInfo(getRouteType()).getFlatMovementCost() * pUnit->baseMoves()));
}
// PAE: set moves to 0 when crossing rivers without roads and bridges
// PAE: except barbarian animals
else if (pUnit->AI_getUnitAIType() == UNITAI_ANIMAL && pUnit->isBarbarian()) {}
else if (pFromPlot->isRiverCrossing(directionXY(pFromPlot, this)))
{
return pUnit->maxMoves();
}
else if (pFromPlot->getTerrainType() == (TerrainTypes)(GC.getInfoTypeForString("TERRAIN_RIVER_FORD")) && this->getTerrainType() != (TerrainTypes)(GC.getInfoTypeForString("TERRAIN_RIVER_FORD")) && !this->isWater())
{
return pUnit->maxMoves();
}
// ----- PAE river crossing
else
{
iRouteCost = MAX_INT;
iRouteFlatCost = MAX_INT;
}
return std::max(1, std::min(iRegularCost, std::min(iRouteCost, iRouteFlatCost)));
}
EDIT:
so, nach der altmodischen Methode alle Dinge einzeln rauszulöschen und auszuprobieren, bin ich draufgekommen, dass der Jäger der Grund für den CtD ist.... warum auch immer...
das muss ich mir jetzt ansehen.....
Edit2: nein, vielleicht ist es doch die Furt... ein KI Jäger steht davor....
Geändert von Pie (05. Februar 2025 um 05:00 Uhr)
Pie's Ancient Europe (PAE)
Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins allerletzte Detail!
Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features, die Spaß machen. Hand drauf!
- Pie's Ancient Europe (VII)
... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!
Es war doch ein bestimmter Jäger der KI. Der stand nicht neben einer Furt. Ich hab ihn im WB entfernt und es ging weiter. Aus Neugier hab ich den Jäger entfernt und wieder neu gesetzt und auch dann ging es ganz normal weiter. Wie das?
Pie's Ancient Europe (PAE)
Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins allerletzte Detail!
Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features, die Spaß machen. Hand drauf!
- Pie's Ancient Europe (VII)
... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!
Wenn du ihn entfernt und neu setzt, bekommt er ja ne neue ID und wird in anderer Reihenfolge abgearbeitet. Also trifft die KI andere Entscheidungen und der Zufallsgenerator hat sich weitergedreht.