Ergebnis 1 bis 4 von 4

Thema: Kleine Spielereien

  1. #1
    Ein Platz an der Sonne Avatar von Commander Bello
    Registriert seit
    05.06.05
    Ort
    Nähe Koblenz
    Beiträge
    6.209

    Big Grin Kleine Spielereien

    Habe gerade mal ein bisschen herumgespielt und die Gebühren für königliche Schatztransporte geändert.

    Nun funktioniert es so:
    Die "normalen" Gebühren (G) sind ja 50% des Schatzwertes.

    Das habe ich gesenkt, um einen zügigeren Start zu ermöglichen. Der König verlangt nun ein Fünftel der normalen Gebühren plus den höheren Wert von 5% oder dem Steuersatz (S), solange dieser Wert kleiner ist als die per XML festgelegten Gebühren .
    Vom Restwert gehen die Steuern ab.

    Beispiel 1:
    Schatzwert = 1000
    Steuersatz = 0%

    Gebühren = 15% => der Spieler erhält 850 (statt 500) Goldstücke

    Beispiel 2:
    Schatzwert = 1000
    Steuersatz = 20%

    Gebühren (insgesamt) => 30 ((50/5)+20)% vom Schatzwert + 20% Steuern auf Restwert => der Spieler erhält 560 (statt 400) Goldstücke

    Beispiel 3:
    Schatzwert = 1000
    Steuersatz = 60%

    Gebühren (insgesamt) = 50% vom Schatzwert + 60% Steuern auf Restwert => der Spieler erhält 200 Goldstücke (wie bisher)

    Nun muss ich nur noch herausfinden, wie ich die Anzahl der vom König abtransportierten Schätze global abspeichere, um die Gebühren in Abhängigkeit von diesem Wert ansteigen lassen zu können.





    Hmm... die königliche Aussage muss noch überarbeitet werden
    Angehängte Grafiken Angehängte Grafiken
    Geändert von Commander Bello (25. Januar 2013 um 20:36 Uhr) Grund: Stöpses Hinweis eingearbeitet


  2. #2
    am Bass Avatar von Stöpsel
    Registriert seit
    09.02.09
    Ort
    Peterswerder
    Beiträge
    2.150
    Zitat Zitat von Commander Bello Beitrag anzeigen
    Beispiel 2:
    Schatzwert = 1000
    Steuersatz = 20%

    Gebühren = 30% => der Spieler erhält 700 (statt 500) Goldstücke
    Die Rechnung stimmt nicht, der Schatzverkauf ist nicht grundsätzlich steuerfrei. Der Spieler bekommt 500$ -20% (weiß gerade nicht ob vom Brutto oder Netto berechnet wird). Der Vorteil bei deiner Idee wäre noch größer.

    Edit:
    Ich glaube vom Netto (500$) werden die Steuern (100$) abgezogen, bleiben dem Spieler regulär 400$ von 1000$.


    Außerdem wäre der Nutzen von Galeonen drastisch abgeschwächt und der GV Giovanni da Verrazano fast uninteressant. Besonders auf kleineren Karten als deinen übergroßen.
    Geändert von Stöpsel (25. Januar 2013 um 19:53 Uhr)

  3. #3
    Ein Platz an der Sonne Avatar von Commander Bello
    Registriert seit
    05.06.05
    Ort
    Nähe Koblenz
    Beiträge
    6.209
    Zitat Zitat von Stöpsel Beitrag anzeigen
    Die Rechnung stimmt nicht, der Schatzverkauf ist nicht grundsätzlich steuerfrei. Der Spieler bekommt 500$ -20% (weiß gerade nicht ob vom Brutto oder Netto berechnet wird). Der Vorteil bei deiner Idee wäre noch größer.

    Edit:
    Ich glaube vom Netto (500$) werden die Steuern (100$) abgezogen, bleiben dem Spieler regulär 400$ von 1000$.
    Du hast natürlich recht, ich habe den Abzug der Steuern vergessen, weil ich im angegebenen Beispiel (noch) keine zu entrichten hatte.

    Die Berechnung läuft wie folgt:
    Code:
    //        int iAmount = getYieldStored();
    //        iAmount -= (iAmount * iCommission) / 100;
    //        iAmount -= (iAmount * GET_PLAYER(getOwnerINLINE()).getTaxRate()) / 100;
    getYieldStored() = Wert des Schatzes
    iCommission = Prozentsatz des Abzuges
    GET_PLAYER(getOwnerINLINE()).getTaxRate() = Steuerrate

    Zitat Zitat von Stöpsel Beitrag anzeigen
    Außerdem wäre der Nutzen von Galeonen drastisch abgeschwächt und der GV Giovanni da Verrazano fast uninteressant. Besonders auf kleineren Karten als deinen übergroßen.
    Ja, das ist sicherlich ein Gesichtspunkt, wobei ich Verrazano häufig ohnehin auslasse.


  4. #4
    Ein Platz an der Sonne Avatar von Commander Bello
    Registriert seit
    05.06.05
    Ort
    Nähe Koblenz
    Beiträge
    6.209
    Hmm...

    Wie wäre es denn, in der GlobalDefinesAlt.xml eine neue Variable einzurichten, die am Ende der Kostenberechnung mit sich selbst addiert wird?

    Sagen wir, sie erhält den Wert "3".
    Code:
        <Define>
            <DefineName>TRANSPORT_COST_INCREASE</DefineName>
            <iDefineIntVal>3</iDefineIntVal>
        </Define>
    Dieser XML-Wert wird dann in eine Variable eingelesen: iTransportCostIncrease


    Dann könnte die ganze Funktion so aussehen:

    Code:
        if (isHuman() && !bSkipPopup)
        {
            CvDiploParameters* pDiplo = new CvDiploParameters(GET_PLAYER(getOwnerINLINE()).getParent());
            pDiplo->setDiploComment((DiploCommentTypes)GC.getInfoTypeForString("AI_DIPLOCOMMENT_TREASURE_TRANSPORT"));
            pDiplo->setData(getID());
            int iCommission = GC.getDefineINT("KING_TRANSPORT_TREASURE_COMISSION");
            int iKingsDemand = 0;
            int iEffectiveTaxRate = 0;
            iEffectiveTaxRate = std::max(iTransportCostIncrease, GET_PLAYER(getOwnerINLINE()).getTaxRate());
            iKingsDemand = ((iCommission / 5) + iEffectiveTaxRate);
            if (iKingsDemand < iCommission)
                {
                    pDiplo->addDiploCommentVariable(iKingsDemand);
                    int iAmount = getYieldStored();
                    iAmount -= (iAmount * iKingsDemand) / 100;
                    iAmount -= (iAmount * GET_PLAYER(getOwnerINLINE()).getTaxRate()) / 100;
                    pDiplo->addDiploCommentVariable(iAmount);
                    iTransportCostIncrease += iTransportCostIncrease;
                }
            else
                {
                    pDiplo->addDiploCommentVariable(iCommission);
                    int iAmount = getYieldStored();
                    iAmount -= (iAmount * iCommission) / 100;
                    iAmount -= (iAmount * GET_PLAYER(getOwnerINLINE()).getTaxRate()) / 100;
                    pDiplo->addDiploCommentVariable(iAmount);
                }
            
            pDiplo->setAIContact(true);
            gDLL->beginDiplomacy(pDiplo, getOwnerINLINE());
        }
    D.h., beim ersten Schatztransport (ich unterstelle mal in allen Fällen 2% Steuerrate; der Schatz soll 1000 Gold wert sein) würde die Berechnung so laufen:

    iCommission = 50
    iKingsDemand = 0
    iEffectiveTaxRate = der höhere Wert von iTransportCostIncrease (zu diesem Zeitpunkt=3) bzw. von TaxRate (zu diesem Zeitpunkt =2, also
    iEffectiveTaxRate = 3

    Dann geht es weiter mit iKingsDemand = (50/5) + 3 = 13

    iAmount = 1000
    iAmount = iAmount - (iAmount *13) / 100 = 1000 -130 = 870
    iAmount = iAmount - (iAmount * TaxRate) / 100 = 870 - 17,4 = 852,6 => 852 (Integerwert)

    Für den ersten Schatz erhält der Spieler 852 Gold anstatt der standardmäßigen 490 Gold. Klarer Vorteil also.

    Nun wird iTransportCostIncrease mit sich selbst addiert, steigt also vom per XML festgelegten Wert 3 auf 6

    Gleiche Berechnungsweise wie eben:
    iKingsDemand = (50/5) + 6 = 16
    iAmount = 1000
    iAmount = iAmount - (iAmount *16) / 100 = 1000 -160 = 840
    iAmount = iAmount - (iAmount * TaxRate) / 100 = 840 - 16,8 = 823,2 => 823 (Integerwert)

    Für den zweiten Schatz erhält der Spieler noch 823 Gold statt der standardmäßigen 490 Gold. Immer noch ein klarer Vorteil.

    Wiederum die Addition iTransportCostIncrease + iTransportCostIncrease => 6 + 6 = 12

    Gleiche Berechnungsweise wie eben:
    iKingsDemand = (50/5) + 12 = 22
    iAmount = 1000
    iAmount = iAmount - (iAmount *22) / 100 = 1000 -220= 780
    iAmount = iAmount - (iAmount * TaxRate) / 100 = 780 - 15,6 = 764,4 => 764 (Integerwert)

    Für den dritten Schatz erhält der Spieler noch 764 Gold statt der standardmäßigen 490 Gold. Immer noch ein klarer Vorteil.

    Und zum vierten: iTransportCostIncrease + iTransportCostIncrease => 12 + 12 = 24
    Daraus werden dann 646,8 für den vierten Schatz, was schon nicht mehr so viel mehr ist als das Standardentgelt.

    Und beim fünften Mal wären es dann schon der Standardwert, denn nun ist (50/5)+(24+24) > 50

    D.h., die ersten vier Schätze bringen folgende Beträge (Standardwert in Klammern dahinter)

    852 (490)
    823 (490)
    764 (490)
    646 (490)
    =======
    3085 (1960) => 157,4% von den standardmäßigen Erlösen bei Königsabholung.

    Ggf. könnte man das ganze per Excel-Sheet noch ein bisschen "feintunen".


Berechtigungen

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