Seite 11 von 162 ErsteErste ... 7891011121314152161111 ... LetzteLetzte
Ergebnis 151 bis 165 von 2421

Thema: BASE: SDK & Python Diskussion (Coder's Lair)

  1. #151
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    NUr für dich nehme ich mal deine oben gepostete Zeile her.

    iProduction = (GC.getBuildInfo(eBuild).getFeatureProduction(getFeatureType()) - (std::max(0, (plotDistance(getX_INLINE(), getY_INLINE(), (*ppCity)->getX_INLINE(), (*ppCity)->getY_INLINE()) - 2)) * 5))

    Die kann man zerlegen in Produktion geben mit GC.getBuildInfo(eBuild).getFeatureProduction(getFeatureType()) und den Abzugteil für Entfernung (std::max(0, (plotDistance(getX_INLINE(), getY_INLINE(), (*ppCity)->getX_INLINE(), (*ppCity)->getY_INLINE()) - 2)) * 5)

    Der Abzugteil funtkioniert wie folgend:

    (std::max(0, (plotDistance(getX_INLINE(), getY_INLINE(), (*ppCity)->getX_INLINE(), (*ppCity)->getY_INLINE()) - 2)) * 5)

    Das max sorgt dafür, dass der Abzugwert nie negativ sein kann, weil nur Werte größer 0 größer 0 sind.
    plotDistance(getX_INLINE(), getY_INLINE(), (*ppCity)->getX_INLINE(), (*ppCity)->getY_INLINE()) bestimmt den Plotabstand. Es liegen alle Felder kleiner gleich 2 im Kreuz einer Stadt. Die -2 sorgt dafür, dass der Wert negativ oder null im Kreuz wird. Jede Entfernung größer 2 ist damit positiv und damit größer 0.

  2. #152
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.455
    Also gibts Abzug nur, wenn außerhalb des Stadtkreuzes geholzt wird. So weit so klar. Aber warum gibts immer nur 20 anstelle der eingetragenen 30? (normale Spielgeschwindigkeit)

    D.h. auf meinem Bild da oben hätte eigentlich 60 (30 * 2 durch deinen Fehler) stehen müssen, da standen aber nur 40.
    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)

  3. #153
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.455
    Und noch etwas ist komisch, in Python steht pCity kann NULL sein. Das ist offensichtlich der Fall, wenn der Plot außerhalb des Kreuzes einer Stadt liegt. Trotzdem kann Civ4 die Produktion ja einer Stadt zuordnen (nämlich der, die dann die Produktion mit Distanzmalus bekommt). Warum wird diese Stadt dann nicht ins Python übertragen? Der brasilianische Effekt wirkt so nur, wenn im Kreuz geholzt wird. Ist zwar nicht so tragisch, aber irgendwie unschön.

    Konkret: Ich hab if pCity != -1 eingebaut und außerhalb des Kreuzes/der Kultur bekommt die brasilianische Hauptstadt nix extra, obwohl Civ das Holz einer Stadt zuordnet. Die If kann ich nicht weglassen, weil man sonst nicht mehr die Distanz überprüfen kann.
    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)

  4. #154
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    pCity ist die Stadt, die den Betrag bekommt. Das muss keine Stadt sein, die das Feld im Kreuz hat, theoretisch.

  5. #155
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.455
    Ist richtig, aber dann wäre die Stadt nie NULL, außer der Spieler lebt nicht mehr.
    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)

  6. #156
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.455
    Ne ist falsch. Habs doch getestet (ich hab keine Geduld für so einen Mist). Mit meiner if hat die Hauptstadt nix extra bekommen, wenn ich außerhalb der FC Kultur geholzt hab. Trotzdem hat die Stadt die fehlerhaft berechneten Hämmer bekommen (16 in der Zahl als Brasilianer). Also muss pCity -1 gewesen sein.
    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)

  7. #157
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    <Define>
    <DefineName>BASE_FEATURE_PRODUCTION_PERCENT</DefineName>
    <iDefineIntVal>67</iDefineIntVal>
    </Define>
    Das macht aus der 30 20.

    iProduction *= std::min((GC.getBASE_FEATURE_PRODUCTION_PERCENT() + (GC.getFEATURE_PRODUCTION_PERCENT_MULTIPLIER() * (*ppCity)->getPopulation())), 100);
    iProduction /= 100;

  8. #158
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.455
    Okay. Hätten wir DAS schon mal geklart. Also waren es nie 30, sondern immer nur 20 effektiv für Nichtbrasilianer.

    Stellt sich jetzt nur noch die Frage, was wir mit Brasilien machen, wenn pCity -1 ist im Python. Man könnte die Hauptstadtproduktion auch vom eigentlichen Ertrag entkoppeln. Also nicht 20% vom eigentlichen Ertrag, sondern immer 10? Kein Plan... Andererseits holzt man eh selten außerhalb der Kultur.
    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)

  9. #159
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Kannst du bitte dein PRoblem schildern? Ich habe immer ncoh nicht vertsanden, was dir Probleme macht.

  10. #160
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.455
    Jetzt seh ich den Fehler Emoticon: picard ich überprüfe, ob der plot nem spieler gehört...

    heißt, ich muss pCapital nicht über den plotowner holen, sondern über den owner von pcity.
    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)

  11. #161
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Wenn man außerhalb der Kultur Bäume fällt, gibt es keinen Plotowner.

  12. #162
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.455
    Genau deshalb.
    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)

  13. #163
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.455
    Komm nicht weiter. 1 Außerhalb des FC haben Nichtbrasilianer nur noch 10 anstelle 20 Hämmer. Wie lautet die Rechnung? LAUT SDK verstehe ichs so:

    (30 [XML Wert] - ((3 [Distanz] - 2) * 5)) * 67/100 [Base Production Percent]

    Das sind bei mir 25 * 67/100 = 16 und nicht 10.



    Erst

    iProduction = (GC.getBuildInfo(eBuild).getFeatureProduction(getFeatureType()) - (std::max(0, (plotDistance(getX_INLINE(), getY_INLINE(), (*ppCity)->getX_INLINE(), (*ppCity)->getY_INLINE()) - 2)) * 5));

    dann

    iProduction *= std::min((GC.getBASE_FEATURE_PRODUCTION_PERCENT() + (GC.getFEATURE_PRODUCTION_PERCENT_MULTIPLIER() * (*ppCity)->getPopulation())), 100);
    iProduction /= 100;
    Geändert von Cybah (14. September 2013 um 15:23 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)

  14. #164
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Ich komm auch nicht weiter. Ich habe zwar nur ein optisches Problem, aber das nervt.

  15. #165
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.455
    Hab mein Problem gelöst. Es gibt noch nen Malus für "nicht in verbündeter kultur" (DIFFERENT_TEAM_FEATURE_PRODUCTION_PERCENT)
    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)

Seite 11 von 162 ErsteErste ... 7891011121314152161111 ... LetzteLetzte

Berechtigungen

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