Hallo Leute,
ich glaube ich habe die Lösung für das Problem, dass der "Große Krieger" nicht erzeugt wird.
In CvPlayer.cpp den Code in Grün einfügen:
Code:
void CvPlayer::createGreatGeneral(UnitTypes eGreatGeneralUnit, bool bIncrementExperience, int iX, int iY)
{
int greatGeneralUnitClass = GC.getUnitInfo(eGreatGeneralUnit).getUnitClassType();
eGreatGeneralUnit = (UnitTypes)GC.getCivilizationInfo(getCivilizationType()).getCivilizationUnits(greatGeneralUnitClass);
CvUnit* pGreatUnit = initUnit(eGreatGeneralUnit, (ProfessionTypes) GC.getUnitInfo(eGreatGeneralUnit).getDefaultProfession(), iX, iY);
...
}
Erklärung:
Es ist tatsächlich so, dass der Entwickler geschlampt hat und anstatt über UnitClassType an der Stelle direkt UnitType verwendet.
Mein Code macht folgendes:
1) Er holt sich den UnitClassType
2) Er holt sich den nationen-spezifischen UnitType, der nachher zum Erzeugen der Unit verwendet wird.
@koma:
Das Ganze ist NICHT sauber getestet.
Könntest du für das Team dennoch eine DLL erstellen, damit mein Fix verifiziert werden kann ?
Falls es nicht funktioniert, kann man es ja wieder ausbauen. (Sind ja nur 2 Zeilen Code.)
Hoffe, ich habe dir damit wenigstens ein klein wenig Zeit gespart.