Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
Bei den Fanatics gibt's ein Tutorial wie man XML Werte in das SDK einbaut. da könntest du beim Trait das Ding einbauen.
Ich hab ja schon alles. Ich muss nur noch an der richtigen Stelle auf die Trait Änderung zugreifen.
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
Irgendwie so muss das hinterher aussehen, wenn das ans updateTradeRoutes drankommt:
PHP-Code:
//Traits with trade routes yields
for (int iTrait = 0; iTrait < GC.getNumTraitInfos(); iTrait++)
{
TraitTypes eTrait = (TraitTypes)iTrait;
if (GET_PLAYER(getOwnerINLINE()).hasTrait(eTrait))
{
for (int iYieldLoop = 0; iYieldLoop < NUM_YIELD_TYPES; iYieldLoop++)
{
setTradeYield(((YieldTypes)iYieldLoop), GC.getTraitInfo(eTrait).getTradeRouteYieldChanges(iYieldLoop));
}
}
}
Edit: Wohl eher in den Teil vom Original mit einbauen:
PHP-Code:
for (iI = 0; iI < NUM_YIELD_TYPES; iI++)
{
setTradeYield(((YieldTypes)iI), calculateTradeYield(((YieldTypes)iI), iTradeProfit)); // XXX could take this out if handled when CvPlotGroup changes...
//Traits with trade routes yields
for (int iTrait = 0; iTrait < GC.getNumTraitInfos(); iTrait++)
{
TraitTypes eTrait = (TraitTypes)iTrait;
if (GET_PLAYER(getOwnerINLINE()).hasTrait(eTrait))
{
setTradeYield( ((YieldTypes)iI), GC.getTraitInfo(eTrait).getTradeRouteYieldChanges((YieldTypes)iI) );
}
}
}
Geändert von Cybah (02. August 2011 um 16:14 Uhr)
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
Es geht nicht verdammte Sch......
Jetzt werde ich mal deepwaters Vorschlag ausprobieren. Wenn der so geht, dann liegts daran, dass er die Werte nicht vernünftig aus der TraitInfos ausliest.
Geändert von Cybah (02. August 2011 um 16:28 Uhr)
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
Dein Vorschlag geht auch nicht... kommt zwar wie bei mir keine Fehlermeldung, aber es wird keine Produktion hinzugefügt.
Testcode:
PHP-Code:
if (GET_PLAYER(getOwnerINLINE()).hasTrait((TraitTypes)GC.getInfoTypeForString("TRAIT_CHARISMATIC")))
{
setTradeYield((YieldTypes)GC.getInfoTypeForString("YIELD_PRODUCTION"), 5);
}
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
In meinem letzten Posting steht der richtige Code, trotzdem gehts nicht.
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
sicher? dann muss meins doch auch irgendwie gehen. grrrr.
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
simple Frage, der leader ist schon charismatisch?
Ist die Test Stadt die Hauptstadt, besitzt sie einen oben links angezeigten Handelsweg? Ich kann dir mal meine Test-Karte schicken, musst halt nur den ModPfad ändern. Achja, ich glaube, man muss auch noch eine Resource handeln, damit ein Handelsweg entsteht. (Macht ja auch Sinn.)
Auf der Karte ist Justinian, musst du halt verändern, in einen mit charismatisch.![]()
Geändert von deepwater (02. August 2011 um 17:33 Uhr)
Klar isser das.
Das ist aber nur einmal 5, in meinem BASE Spiel mit 3 Handelswegen sinds trotzdem nur 5.
Habs jetzt mal testweise auf 100 erhöht, 300 werdens auch nicht. setTradeYield scheint bereits die Summe aller Handelswege zu sein.
Abfragen aus den Traitinfos funktioniert übrigens. Habs mit nem TXT Link getestet.
Geändert von Cybah (02. August 2011 um 18:57 Uhr)
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
Abstrakte Klassen sind Klassen, die mindestens eine Methode enthalten, die zwar eine Deklaration besitzt, aber keine Implementierung hat.
Beispiel:
Diese Methode ist abstrakt (wegen = 0) und virtuell. Virtuelle Methoden sind für den Polymorphismus wichtig (wird hier gut erklärt).PHP-Code:
virtual void AI_chooseFreeTech() = 0;
Bei Zeigern muss man immer den "->"-Operator verwenden. Damit Dereferenziert man, d.h. man arbeitet mit dem Objekt, auf das gezeigt wird und nicht mit dem Zeiger. Zeiger haben keine Methoden, sondern die Objekte, auf die gezeigt wird.Weiß nicht, warums nicht funktioniert, ich bin mir nicht sicher, ob man bei Zeigern (was GC.getTraitInfo(eTrait) zurückliefert) den Punktoperator benutzen darf, oder ob man da diesen Pfeil nehmen muss.(->)
Habs hinbekommen, war eigentlcih gar nicht so schwierig im Nachhinein:
PHP-Code:
// Cybah - BASE: TradeRouteYieldChange START
int iTraitYield = 0;
for (iI = 0; iI < NUM_YIELD_TYPES; iI++)
{
//Trait yields, and traits with trade routes yields
for (int iTrait = 0; iTrait < GC.getNumTraitInfos(); iTrait++)
{
TraitTypes eTrait = (TraitTypes)iTrait;
if (GET_PLAYER(getOwnerINLINE()).hasTrait(eTrait))
{
for (int iTradeCity = 0; iTradeCity < getTradeRoutes(); iTradeCity++)
{
CvCity* pTradeCity = getTradeCity(iTradeCity);
if (pTradeCity != NULL)
{
iTraitYield += GC.getTraitInfo(eTrait).getTradeRouteYieldChanges(iI);
}
}
}
}
setTradeYield( ((YieldTypes)iI), (calculateTradeYield(((YieldTypes)iI), iTradeProfit) + iTraitYield) ); // XXX could take this out if handled when CvPlotGroup changes...
// Cybah - BASE: TradeRouteYieldChange END
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)