Seite 331 von 344 ErsteErste ... 231281321327328329330331332333334335341 ... LetzteLetzte
Ergebnis 4.951 bis 4.965 von 5156

Thema: Der-kleine-Fragen-zum-Modding-Thread

  1. #4951
    Whovian Avatar von antriot
    Registriert seit
    30.09.12
    Ort
    TARDIS Type 40
    Beiträge
    2.641
    In der CIV4BuildingsSchema.xml ist ein <Help> Eintrag für Gebäude definiert, und zwar hier:
    Code:
    ...
    	<ElementType name="SpecialBuildingType" content="textOnly"/>
    	<ElementType name="Description" content="textOnly"/>
    	<ElementType name="Civilopedia" content="textOnly"/>
    	<ElementType name="Help" content="textOnly"/>
    	<ElementType name="Strategy" content="textOnly"/>
    	<ElementType name="Advisor" content="textOnly"/>
    ...
    Gemäß dem hab ich in der CIV4BuildingInfos.xml folgendes eingefügt:
    Code:
    ...
    			<SpecialBuildingType>NONE</SpecialBuildingType>
    			<Description>TXT_KEY_BUILDING_MONGOL_GER</Description>
    			<Civilopedia>TXT_KEY_BUILDING_MONGOL_GER_PEDIA</Civilopedia>
    			<Help>TXT_KEY_SOME_TEXT<Help/>
    			<Strategy>TXT_KEY_BUILDING_MONGOL_GER_STRATEGY</Strategy>
    			<Advisor>ADVISOR_MILITARY</Advisor>
    ...
    Nun scheint das ganze jedoch nicht zu funktionieren, beim starten schlägt "Init XML" fehl. Kann mir jemand bei der Deutung der Schema Datei helfen?
    Tick tock goes the clock...

  2. #4952
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    <Help/>

  3. #4953
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Die kleinsten Fehler sind die schlimmsten Fehler.

  4. #4954
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.453
    Oh ja.
    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)

  5. #4955
    Whovian Avatar von antriot
    Registriert seit
    30.09.12
    Ort
    TARDIS Type 40
    Beiträge
    2.641
    OK, Argument
    Leider funktioniert es mit richtigem Syntax auch nicht:
    Code:
    			<SpecialBuildingType>NONE</SpecialBuildingType>
    			<Description>TXT_KEY_BUILDING_MONGOL_GER</Description>
    			<Civilopedia>TXT_KEY_BUILDING_MONGOL_GER_PEDIA</Civilopedia>
                            <Help>TXT_KEY_BUILDING_MONGOL_HELP</Help>
    			<Strategy>TXT_KEY_BUILDING_MONGOL_GER_STRATEGY</Strategy>
    			<Advisor>ADVISOR_MILITARY</Advisor>
    Ich präzisiere die Fehlermeldung:
    Achtung Spoiler:
    Failed Loading XML file xml\Buildings/CIV4BuildingInfos.xml.
    [.\FXml.cpp:133] Error parsing XML File -
    File: xml\Buildings/CIV4BuildingInfos.xml
    Reason: Der Inhalt des Elements ist gemäß dem DTD/Schema nicht gültig.
    Erwartet: {x-schema:CIV4BuildingsSchema.xml}Strategy.

    Line: 2336, 19
    Source: TXT_KEY_BUILDING_MONGOL_HELP
    Geändert von antriot (02. April 2019 um 21:05 Uhr)
    Tick tock goes the clock...

  6. #4956
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Bei mir ist die Reihenfolge der Elemente im Schema eine andere. Also entweder es wird bei dir eine andere Schema-Datei geladen als du erwartest oder du hast aus Versehen den Tag zu weit oben eingefügt.

    Code:
    	<ElementType name="BuildingInfo" content="eltOnly">
    		<element type="BuildingClass"/>
    		<element type="Type"/>
    		<element type="SpecialBuildingType"/>
    		<element type="Description"/>
    		<element type="Civilopedia"/>
    		<element type="Strategy"/>
    		<element type="Help" minOccurs="0"/>
    		<element type="Advisor"/>
    Edit: Ich glaube nun die Ursache für den Fehler erkannt zu haben. Du hast in der Schema-Datei an die Stelle geschaut an welcher der Element-Typ 'Help' definiert wird. Für die Reihenfolge ist aber relevant wo der Typ dann eingesetzt wird. Das ist hier in 'BuildingClass' der Fall. Daher muss man in der Schema-Datei den Eintrag zu 'BuildingClass' anschauen.
    Geändert von Ramkhamhaeng (03. April 2019 um 00:52 Uhr)

  7. #4957
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.453


    help unter strategy.
    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)

  8. #4958
    Whovian Avatar von antriot
    Registriert seit
    30.09.12
    Ort
    TARDIS Type 40
    Beiträge
    2.641
    Ah das gibt Sinn, dann hab ich das jetzt auch verstanden. In BtS werden diese Help-Texte nie verwendet, deswegen hatte ich kein Beispiel.
    Vielen Dank an euch!
    Tick tock goes the clock...

  9. #4959
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.997
    Ich habe ein ganz ungünstiges Problem. In meiner Story wird mit dem Wechsel auf Zug 1060 plötzlich die Inflation negativ - aus 1536% im Zug 1059 wird zu Beginn meines Zugs -607%.

    Das passiert verlässlich, ich habe diesen Rundenwechsel schon dreimal gespielt. Andere Dinge wie die Zufallsereignisse verhalten sich immer anders.

    Das ist mir ziemlich unverständlich, da nach der Formel selbst im extremsten Fall die ausgegebene Inflationsrate 0 sein müsste:
    Code:
    int CvPlayer::calculateInflationRate() const
    {
    	int iTurns = ((GC.getGameINLINE().getGameTurn() + GC.getGameINLINE().getElapsedGameTurns()) / 2);
    
    	if (GC.getGameINLINE().getMaxTurns() > 0)
    	{
    		iTurns = std::min(GC.getGameINLINE().getMaxTurns(), iTurns);
    	}
    
    	iTurns += GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getInflationOffset();
    
    	if (iTurns <= 0)
    	{
    		return 0;
    	}
    
    	int iInflationPerTurnTimes10000 = GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getInflationPercent();
    	iInflationPerTurnTimes10000 *= GC.getHandicapInfo(getHandicapType()).getInflationPercent();
    	iInflationPerTurnTimes10000 /= 100;
    
    	int iModifier = m_iInflationModifier;
    	if (!isHuman() && !isBarbarian())
    	{
    		int iAIModifier = GC.getHandicapInfo(GC.getGameINLINE().getHandicapType()).getAIInflationPercent();
    		
    		//Kathy: EraModifier für mehr als 25 Eras
    		iAIModifier *= 100;
    		iAIModifier /= std::max(100, (( -GC.getHandicapInfo(GC.getGameINLINE().getHandicapType()).getAIPerEraModifier() * getCurrentEra()) + 100));
    		//Original Code
    		
    	//	iAIModifier *= std::max(0, ((GC.getHandicapInfo(GC.getGameINLINE().getHandicapType()).getAIPerEraModifier() * getCurrentEra()) + 100));
    	//	iAIModifier /= 100;
    
    		iModifier += iAIModifier - 100;
    	}
    
    	iInflationPerTurnTimes10000 *= std::max(0, 100 + iModifier);
    	iInflationPerTurnTimes10000 /= 100;
    
    	// Keep up to second order terms in binomial series
    	int iRatePercent = (iTurns * iInflationPerTurnTimes10000) / 100;
    	iRatePercent += (iTurns * (iTurns - 1) * iInflationPerTurnTimes10000 * iInflationPerTurnTimes10000) / 2000000;
    
    	FAssert(iRatePercent >= 0);
    
    	return iRatePercent;
    }
    
    int CvPlayer::calculateInflatedCosts() const
    {
    	int iCosts;
    
    	iCosts = calculatePreInflatedCosts();
    
    	iCosts *= std::max(0, (calculateInflationRate() + 100));
    	iCosts /= 100;
    
    	return iCosts;
    }
    Die Lila Stelle:
    Wenn iModifier kleiner -100 wäre, würde iInflationPerTurnTimes10000 an dieser Stelle 0. Angesichts dieses Codes ist mir unverständlich, wie das Programm eine negative Inflation angeben kann. Kann mir das irgendjemand erklären? Selbst, wenn iTurn, iModifier und die anderen Variablen plötzlich negativ werden (und das kann eigentlich nur iModifier, der Rest wird ja aus den xml-Dateien ausgelesen oder ist, wie die Anzeige der vergangenen Runden, korrekt)

    Immerhin werden, trotz negativer kalkulierter Inflationsrate, in der grünen Zeile die Kosten auf 0 gesetzt und ich bekomme nicht 507% meiner Kosten ausbezahlt. Trotzdem sind die Gesamteinahmen nun enorm hoch, nachdem ich davor am Existenzminimum herumgekrabbelt bin.
    Angehängte Grafiken Angehängte Grafiken
    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

  10. #4960
    Wee Free Man Avatar von Rob Anybody
    Registriert seit
    20.05.06
    Ort
    Ruhrstadt
    Beiträge
    18.181
    Ich vermute einen Integer-Overflow bei

    iRatePercent += (iTurns * (iTurns - 1) * iInflationPerTurnTimes10000 * iInflationPerTurnTimes10000) / 2000000;
    Aber an jenem Morgen war es Magie gewesen. Und es hörte nicht auf, Magie zu sein,
    nur weil man [inzwischen] eine Erklärung dafür hatte ...
    (Terry Pratchett)

    Brandstifter benötigen keine Streichhölzer, sie zündeln mit Worten.
    Wer Brandstifter im Internet duldet und nicht wieder und wieder widerspricht,
    darf sich nicht wundern, wenn auch bald sein wahres Leben brennt.
    (frei nach Max Frisch)

  11. #4961
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.997
    Danke für den Tipp.
    Das könnte Sinn machen. Ich dachte zwar, dass iTurns während der letzten Runden konstant sein sollte, da meine Rundenzahl über dem von mir errechneten getMaxTurns() von 1005 liegt, aber vielleicht habe ich da schon einen Fehler im Denken, was das MaxTurns bedeutet.

    Ich hatte hier eine Menge gerechnet, aber ich kann meine Rechnungen nicht mehr nachvollziehen. Nur grob die Richtung, in welcher Größenordnung wir liegen würden:
    iTurn: ca. 1000
    iTurn ² ca 1.000.000
    iInflationTimes1000perTurn = ca. 65
    iInflationTimes1000perTurn² = 4225
    iTurn² * iInflationTimes1000perTurn² = 4.225.000.000

    Und ein 32-Bit-Integer kann bis zu 4.294.967.295 verschiedene Zahlen annehmen. Könnte schon sein, dass mit leicht erhöhten Werten für iTurn oder iInflationTimes1000perTurn gerade genau diese Grenze überschritten wird.
    Ich muss die Formel einmal anpassen, offenbar habe ich inzwischen die Grenze gesprengt, die das Spiel für die Inflation vorgesehen hat. Alle andere Zahlen, die ich so sehe, sind noch weit von den 4 Milliarden entfernt.
    Ich frage mich allerdings auch, wes sich die Programmierer mit dieser Formel gedacht haben. Ich stelle das morgen einmal etwas um, so dass man nicht durch 2 Millionen teilen muss, sondern mit kleineren Zahlen hantiert.
    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

  12. #4962
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.439
    iModifier sollte auch aus der XML sein, musst du sagen, was da eingestellt ist. Ich nehm mal 0 an und für Handicap und Gamespeed jeweils 100.
    iInflationPerTurnTimes10000 = 100*100/100*100/100 = 100.

    1060*1059*100*100 = 11225400000
    max Int = 2^31-1 = ....2147483647

    Die obere Zahl hat eine Stelle zu viel -> Rob hat recht. Über 1000 Runden waren wohl nicht vorgesehen.

  13. #4963
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.997
    m_iInflationModifier (also die Zahl, die am Anfang für die Initialisierung von iModifier genutzt wird) ist der individuelle Inflations-Modifikator des Spielers, der durch Ereignisse (wie dem Federal Reserve-Event, wo man 10% oder 25% Inflation abzieht) verändert wird. Die kann ich nicht aus der xml auslesen, da sie im Spiel verändert wird.

    Handycap war 115, Gamespeed 45. Ich hatte irgendwie ausgerechnet, dass iModifier 32 war, aber ich kann die Rechnung jetzt selbst nicht mehr nachvollziehen. In jedem Fall ist mit dem Rundenwechsel das Problem aufgetreten, und die Erklärung erscheint mit plausibel, dass da ein Überlauf stattfindet. Morgen früh probiere ich aus, wie ich das umstellen kann, ohne dass man für eine 3-Stellige Zahl erst bis 2 Milliarden rechnen muss.

    Ich glaube, über 1000 Runden sind mit Marathon schon drin, aber dann ist iModifier bzw. der Modifikator aus der Spielgeschwindigkeit niedriger, und durch getInflationOffset() werden auch 300 Runden abgezogen. In normal sind das nur 150 (in meinem Mod, ich glaube, original waren es 100).
    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

  14. #4964
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.997
    Das war übrigens tatsächlich der Auslöser. Ich habe die Formel nun etwas aufgesplittet, damit die Zahl nicht so groß wird. Im Ergebnis ist es das selbe, aber die Zwischenschritte sind kleiner. Jetzt kann ich doch weiterspielen.

    Dank für den Hinweis.
    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

  15. #4965
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.997
    Weiß jemand, wie die Grafiken der Raumschiffteile mit den einzelnen Projekten verknüpft sind und ob das modbar ist, insbesondere, wenn man zusätzliche Projekte hinzufügt?
    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

Seite 331 von 344 ErsteErste ... 231281321327328329330331332333334335341 ... LetzteLetzte

Berechtigungen

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