Seite 163 von 180 ErsteErste ... 63113153159160161162163164165166167173 ... LetzteLetzte
Ergebnis 2.431 bis 2.445 von 2699

Thema: Der SDK-Fragen-Thread

  1. #2431
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.016
    Weiß jemand, wie es dazu kommen kann, dass eine Variable (konkret: die GP-Rate einer Stadt, wobei ich nicht weiß, ob es der Basiswert oder die Modifikationsrate ist) einen wahnsinnigen Wert annimmt?
    Im konkreten Fall habe ich einen Bug (von einem Benutzer gemeldet bekommen), bei dem Städte unter bestimmten Umständen -25..... GP-Punkte machen, manchmal auch +25.... Genauso kommt es bei ihm vor, dass die Verteidigung +/- ein paar Millionen& beträgt, die Gesundheit oder das Gold haben ebenfalls schon unglaubliche Werte angenommen.
    Jetzt suche ich nach möglichen Fehlerquellen. Der Fehler muss Stadt-bezogen sein, alles, was die globale Rate modifiziert, kann ich ausschließen (Civis, Traits, Gebäude mit GlobalGreatPeopleModifier), da nur in zwei Städten derart irrsinnige Werte auftreten.
    Ein Fehler sind natürlich falsche Werte in der xml, darauf habe ich aber keinen Hinweis gefunden. Es ist aber nicht unmöglich, dass es da etwas gibt, wo ich nicht weiß, wie ich es suchen soll. Was sind andere mögliche Fehlerquellen? Alle Stellen im SDK, wo die Rate modifiziert wird, habe ich schon einmal angesehen und keine Auffälligkeiten gesehen.

    Die einzige Änderung im Bereich der großen Persönlichkeiten, die ich vorgenommen habe, ist diese:
    Code:
    int CvCity::getTotalGreatPeopleRateModifier() const
    {
    	int iModifier;
    
    	iModifier = getGreatPeopleRateModifier();
    
    	iModifier += GET_PLAYER(getOwnerINLINE()).getGreatPeopleRateModifier();
    
    	if (GET_PLAYER(getOwnerINLINE()).getStateReligion() != NO_RELIGION)
    	{
    		if (isHasReligion(GET_PLAYER(getOwnerINLINE()).getStateReligion()))
    		{
    			iModifier += GET_PLAYER(getOwnerINLINE()).getStateReligionGreatPeopleRateModifier();
    		}
    	}
    
    	if (GET_PLAYER(getOwnerINLINE()).isGoldenAge())
    	{
    		iModifier += GC.getDefineINT("GOLDEN_AGE_GREAT_PEOPLE_MODIFIER");
    	}
    	//Kathy beginn: Hochmut und Arroganz
    	if (getNumWorldWonders() > 2 )
    	{
    		iModifier -= getNumWorldWonders()*5;
    	}
    	//Kathy End Hochmut und Arroganz
    
    	return std::max(0, (iModifier + 100));
    }
    In Tests hat das bisher auch ganz gut funktioniert, außerdem dürfte es keine negativen Werte zulassen.
    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

  2. #2432
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Zitat Zitat von Kathy Beitrag anzeigen
    In Tests hat das bisher auch ganz gut funktioniert, außerdem dürfte es keine negativen Werte zulassen.
    Das kann nicht die Ursache sein. Kleinder 0 geht ja nicht.
    Geändert von rucivfan (15. Dezember 2015 um 19:58 Uhr)

  3. #2433
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.016
    Wenn ich den Code in einer anderen Stadt prüfe passiert auch nichts Ungewöhnliches. Es muss also irgendwo eine Variable falsch gesetzt worden sein. Aber wie kann ich die Stelle finden, wo so etwas passiert?

    Hier ist übrigens die Fehlermeldung mit einigen Bildern etc., wenn Hintergrundinformationen gesucht werden. Dort ist auch das Save, leider aber nicht eines das vor dem Auftreten des Fehlers ist, so dass man nicht "beobachten" kann, was in den fraglichen Städten passiert.
    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

  4. #2434
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Das mit den Verteidigungswerten sollte einfacher zu klären sein. Schau dir mal die XML-Werte (in Globals) MAX_CITY_DEFENSE_DAMAGE und CITY_DEFENSE_DAMAGE_HEAL_RATE, ob es hier eine Auffälligkeit gibt.

    Hast du was an CvCity::doTurn() oder CvCity::changeDefenseDamage geändert?

  5. #2435
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.016
    Ich denke, du meist GlobalDefines.xml?
    Code:
    	<Define>
    		<DefineName>MAX_CITY_DEFENSE_DAMAGE</DefineName>
    		<iDefineIntVal>100</iDefineIntVal>
    	</Define>
    	<Define>
    		<DefineName>CITY_DEFENSE_DAMAGE_HEAL_RATE</DefineName>
    		<iDefineIntVal>5</iDefineIntVal>
    	</Define>
    Das müssten die Originalwerte sein.

    CvCity::changeDefenseDamage ist noch original
    Code:
    void CvCity::changeDefenseDamage(int iChange)
    {
    	if (iChange != 0)
    	{
    		m_iDefenseDamage = range((m_iDefenseDamage + iChange), 0, GC.getMAX_CITY_DEFENSE_DAMAGE());
    
    		if (iChange > 0)
    		{
    			setBombarded(true);
    		}
    
    		setInfoDirty(true);
    
    		plot()->plotAction(PUF_makeInfoBarDirty);
    	}
    }
    CvCityDoTurn wurde geändert:
    Code:
    void CvCity::doTurn()
    {
    	PROFILE("CvCity::doTurn()");
    
    	CvPlot* pLoopPlot;
    	int iI;
    
    // dune wars - start
    	for (iI = 0; iI < GC.getNumBuildingInfos(); iI++)
    	{
    		if (getNumRealBuilding((BuildingTypes)iI) > 0 && m_paiBuildingDuration[iI] == 0)
    		{
    			setNumRealBuilding(((BuildingTypes)iI), 0);
    		}
    		m_paiBuildingDuration[iI] -= 1;
    	}
    // dune wars - end
    	
    	if (!isBombarded())
    	{
    		changeDefenseDamage(-(GC.getDefineINT("CITY_DEFENSE_DAMAGE_HEAL_RATE")));
    	}
    
    	setLastDefenseDamage(getDefenseDamage());
    	setBombarded(false);
    	setPlundered(false);
    	setDrafted(false);
    	setAirliftTargeted(false);
    /************************************************************************************************/
    /* Afforess	                        		   9/7/10                                           */
    /*                                                                                              */
    /*                                                                                              */
    /************************************************************************************************/
    	//Counts down the disable power timer
    	doDisabledPower();
    	doWarWeariness();
    /************************************************************************************************/
    /* Afforess	                                 END                                                */
    /************************************************************************************************/
    	setCurrAirlift(0);
    
    	AI_doTurn();
    
    	bool bAllowNoProduction = !doCheckProduction();
    
    	doGrowth();
    
    	doCulture();
    
    	doPlotCulture(false, getOwnerINLINE(), getCommerceRate(COMMERCE_CULTURE));
    
    	doProduction(bAllowNoProduction);
    
    	doDecay();
    
    	doReligion();
    
    	doGreatPeople();
    	//Kathy Beginn Free Unit Birth
    	doFreeUnitBirth();
    	//Kathy End Free Unit Birth
    	
    	doMeltdown();
    
    	updateEspionageVisibility(true);
    
    	if (!isDisorder())
    	{
    		for (iI = 0; iI < NUM_CITY_PLOTS; iI++)
    		{
    			pLoopPlot = getCityIndexPlot(iI);
    
    			if (pLoopPlot != NULL)
    			{
    				if (pLoopPlot->getWorkingCity() == this)
    				{
    					if (pLoopPlot->isBeingWorked())
    					{
    						pLoopPlot->doImprovement();
    					}
    				}
    			}
    		}
    	}
    
    	if (getCultureUpdateTimer() > 0)
    	{
    		changeCultureUpdateTimer(-1);
    	}
    
    	if (getOccupationTimer() > 0)
    	{
    		changeOccupationTimer(-1);
    	}
    
    	if (getHurryAngerTimer() > 0)
    	{
    		changeHurryAngerTimer(-1);
    	}
    
    	if (getConscriptAngerTimer() > 0)
    	{
    		changeConscriptAngerTimer(-1);
    	}
    
    	if (getDefyResolutionAngerTimer() > 0)
    	{
    		changeDefyResolutionAngerTimer(-1);
    	}
    
    	if (getHappinessTimer() > 0)
    	{
    		changeHappinessTimer(-1);
    	}
    
    	if (getEspionageHealthCounter() > 0)
    	{
    		changeEspionageHealthCounter(-1);
    	}
    
    	if (getEspionageHappinessCounter() > 0)
    	{
    		changeEspionageHappinessCounter(-1);
    	}
    
    	if (isOccupation() || (angryPopulation() > 0) || (healthRate() < 0))
    	{
    		setWeLoveTheKingDay(false);
    	}
    	else if ((getPopulation() >= GC.getDefineINT("WE_LOVE_THE_KING_POPULATION_MIN_POPULATION")) && (GC.getGameINLINE().getSorenRandNum(GC.getDefineINT("WE_LOVE_THE_KING_RAND"), "Do We Love The King?") < getPopulation()))
    	{
    		setWeLoveTheKingDay(true);
    	}
    	else
    	{
    		setWeLoveTheKingDay(false);
    	}
    
    	// ONEVENT - Do turn
    	CvEventReporter::getInstance().cityDoTurn(this, getOwnerINLINE());
    
    	//Kathy: UNzufriedenheit führt zu Aufständen Beginn
    	if (angryPopulation() > 5)
    	{
    		if (GC.getGameINLINE().getSorenRandNum( 5, "Do We Love The King?") < 2)
    		{
    			if (GET_PLAYER(getOwnerINLINE()).doBarbarianUprising( this, angryPopulation()/10+1, getFoodProducedUnit() ))
    			{
    				CvWString szBuffer;
    				szBuffer = gDLL->getText("TXT_KEY_MESSAGE_UNHAPPY_BARBARIAN",  getNameKey() ,  getNameKey() );
    				PlayerTypes eActivePlayer;
    				eActivePlayer = (PlayerTypes)GET_PLAYER(getOwnerINLINE()).getID() ;
    				gDLL->getInterfaceIFace()->addMessage( eActivePlayer, false, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_FIRSTTOTECH", MESSAGE_TYPE_MAJOR_EVENT, NULL, (ColorTypes)GC.getInfoTypeForString("COLOR_RED"));
    			}
    		}
    	}
    	//Kathy: UNzufriedenheit führt zu Aufständen Beginn
    
    	// XXX
    #ifdef _DEBUG
    	{
    		CvPlot* pPlot;
    		int iCount;
    		int iI, iJ;
    
    		for (iI = 0; iI < NUM_YIELD_TYPES; iI++)
    		{
    			FAssert(getBaseYieldRate((YieldTypes)iI) >= 0);
    			FAssert(getYieldRate((YieldTypes)iI) >= 0);
    
    			iCount = 0;
    
    			for (iJ = 0; iJ < NUM_CITY_PLOTS; iJ++)
    			{
    				if (isWorkingPlot(iJ))
    				{
    					pPlot = getCityIndexPlot(iJ);
    
    					if (pPlot != NULL)
    					{
    						iCount += pPlot->getYield((YieldTypes)iI);
    					}
    				}
    			}
    
    			for (iJ = 0; iJ < GC.getNumSpecialistInfos(); iJ++)
    			{
    				iCount += (GET_PLAYER(getOwnerINLINE()).specialistYield(((SpecialistTypes)iJ), ((YieldTypes)iI)) * (getSpecialistCount((SpecialistTypes)iJ) + getFreeSpecialistCount((SpecialistTypes)iJ)));
    			}
    
    			for (iJ = 0; iJ < GC.getNumBuildingInfos(); iJ++)
    			{
    				iCount += getNumActiveBuilding((BuildingTypes)iJ) * (GC.getBuildingInfo((BuildingTypes) iJ).getYieldChange(iI) + getBuildingYieldChange((BuildingClassTypes)GC.getBuildingInfo((BuildingTypes) iJ).getBuildingClassType(), (YieldTypes)iI));
    			}
    
    			iCount += getTradeYield((YieldTypes)iI);
    			iCount += getCorporationYield((YieldTypes)iI);
    
    			FAssert(iCount == getBaseYieldRate((YieldTypes)iI));
    		}
    
    		for (iI = 0; iI < NUM_COMMERCE_TYPES; iI++)
    		{
    			FAssert(getBuildingCommerce((CommerceTypes)iI) >= 0);
    			FAssert(getSpecialistCommerce((CommerceTypes)iI) >= 0);
    			FAssert(getReligionCommerce((CommerceTypes)iI) >= 0);
    			FAssert(getCorporationCommerce((CommerceTypes)iI) >= 0);
    			FAssert(GET_PLAYER(getOwnerINLINE()).getFreeCityCommerce((CommerceTypes)iI) >= 0);
    		}
    
    		for (iI = 0; iI < GC.getNumBonusInfos(); iI++)
    		{
    			FAssert(isNoBonus((BonusTypes)iI) || getNumBonuses((BonusTypes)iI) >= ((isConnectedToCapital()) ? (GET_PLAYER(getOwnerINLINE()).getBonusImport((BonusTypes)iI) - GET_PLAYER(getOwnerINLINE()).getBonusExport((BonusTypes)iI)) : 0));
    		}
    	}
    #endif
    	// XXX
    }
    Der Codeteil von "Dune Wars" ist schon ewig da drin und hat solange keine Probleme gemacht.

    Neu von mit ist der Teil //Kathy: UNzufriedenheit führt zu Aufständen Beginn, der aber nirgendwo die Defense-Rate berührt, sondern nur Barbareneinheiten erzeugt und die Bevölkerung verringern kann. Den Code, der dahinter steht, kann ich aber auch posten, wenn es von Interesse ist.

    Auch neu ist "doFreeUnitBirth()", das diesen COde hat:
    Code:
    //Kathy Beginn Fre Unit Birth
    void CvCity::doFreeUnitBirth()
    {
    	CvUnit* pUnit;
    	CvPlot* pRallyPlot;
    	CyCity* pyCity = new CyCity(this);
    	CyArgsList argsList;
    	argsList.add(gDLL->getPythonIFace()->makePythonObject(pyCity));	// pass in city class
    	long lResult=0;
    	gDLL->getPythonIFace()->callFunction(PYGameModule, "doGreatPeople", argsList.makeFunctionArgs(), &lResult);
    	delete pyCity;	// python fxn must not hold on to this pointer 
    	if (lResult == 1)
    	{
    		return;
    	}
    
    	if (isDisorder())
    	{
    		return;
    	}
    
    	if ( GC.getGame().getGameTurn() % 10 == 0)
    	{
    		//Kathy Beginn Military Citystate
    		if ( isCapital() )
    		{
    			UnitTypes eMercenaryUnit;
    			UnitClassTypes eMercenaryUnitclass;
    			EraTypes eMercenaryEra;
    			eMercenaryEra = GET_PLAYER(getOwnerINLINE()).getCurrentEra();
    			eMercenaryUnitclass = (UnitClassTypes)(GC.getEraInfo(eMercenaryEra).getMercenaryUnitclass());
    			eMercenaryUnit = ((UnitTypes)(GC.getCivilizationInfo(getCivilizationType()).getCivilizationUnits(eMercenaryUnitclass)));			
    			int iMercenaryUnits	= GET_TEAM(getTeam()).getNumMilitaryVassals()*2;
    			UnitAITypes eUnitAi = (UnitAITypes)GC.getUnitInfo(eMercenaryUnit).getDefaultUnitAIType(); 
    			for(int iIUnit = 0; iIUnit < iMercenaryUnits; ++iIUnit)
    			{
    				pUnit = GET_PLAYER(getOwnerINLINE()).initUnit(eMercenaryUnit, getX_INLINE(), getY_INLINE(), eUnitAi );
    
    				FAssertMsg(pUnit != NULL, "pUnit is expected to be assigned a valid unit object");
    
    				pUnit->finishMoves();
    
    				addProductionExperience(pUnit);
    
    				pRallyPlot = getRallyPlot();
    
    				if (pRallyPlot != NULL)
    				{
    					pUnit->getGroup()->pushMission(MISSION_MOVE_TO, pRallyPlot->getX_INLINE(), pRallyPlot->getY_INLINE());
    				}
    
    				if (isHuman())
    				{
    					if (GET_PLAYER(getOwnerINLINE()).isOption(PLAYEROPTION_START_AUTOMATED))
    					{
    						pUnit->automate(AUTOMATE_BUILD);
    					}
    
    					if (GET_PLAYER(getOwnerINLINE()).isOption(PLAYEROPTION_MISSIONARIES_AUTOMATED))
    					{
    						pUnit->automate(AUTOMATE_RELIGION);
    					}
    				}
    
    				CvEventReporter::getInstance().unitBuilt(this, pUnit);
    			}
    		}
    		//Kathy End Military Citystate
    		for (int iI = 0; iI < GC.getNumUnitInfos(); iI++)
    		{
    			if ( getFreeUnit((UnitTypes)iI) > 0)
    			{
    				UnitAITypes eUnitAi = (UnitAITypes)GC.getUnitInfo((UnitTypes)iI).getDefaultUnitAIType(); 
    				for (int iJ = 0; iJ < getFreeUnit((UnitTypes)iI)*4; iJ++)
    				{
    					pUnit = GET_PLAYER(getOwnerINLINE()).initUnit((UnitTypes)iI, getX_INLINE(), getY_INLINE(), eUnitAi );
    
    					FAssertMsg(pUnit != NULL, "pUnit is expected to be assigned a valid unit object");
    
    					pUnit->finishMoves();
    
    					addProductionExperience(pUnit);
    
    					pRallyPlot = getRallyPlot();
    
    					if (pRallyPlot != NULL)
    					{
    						pUnit->getGroup()->pushMission(MISSION_MOVE_TO, pRallyPlot->getX_INLINE(), pRallyPlot->getY_INLINE());
    					}
    
    					if (isHuman())
    					{
    						if (GET_PLAYER(getOwnerINLINE()).isOption(PLAYEROPTION_START_AUTOMATED))
    						{
    							pUnit->automate(AUTOMATE_BUILD);
    						}
    
    						if (GET_PLAYER(getOwnerINLINE()).isOption(PLAYEROPTION_MISSIONARIES_AUTOMATED))
    						{
    							pUnit->automate(AUTOMATE_RELIGION);
    						}
    					}
    
    					CvEventReporter::getInstance().unitBuilt(this, pUnit);
    
    /************************************************************************************************/
    /* BETTER_BTS_AI_MOD                      10/02/09                                jdog5000      */
    /*                                                                                              */
    /* AI logging                                                                                   */
    /************************************************************************************************/
    					if( gCityLogLevel >= 1 )
    					{
    						CvWString szString;
    						getUnitAIString(szString, pUnit->AI_getUnitAIType());
    						logBBAI("    City %S finishes production of unit %S with UNITAI %S", getName().GetCString(), pUnit->getName(0).GetCString(), szString.GetCString() );
    					}
    /************************************************************************************************/
    /* BETTER_BTS_AI_MOD                       END                                                  */
    /************************************************************************************************/
    
    					if (GC.getUnitInfo((UnitTypes)iI).getDomainType() == DOMAIN_AIR)
    					{
    						if (plot()->countNumAirUnits(getTeam()) > getAirUnitCapacity(getTeam()))
    						{
    							pUnit->jumpToNearestValidPlot();  // can destroy unit
    						}
    					}
    				}
    			}
    		}
    	}
    }
    //Kathy End Free Unit Birth
    Mit wird einerseits alle 10 Runden geprüft, ob man einen militärischen Stadtstaat unterstützt und für diesen jeweils 2 Einheiten erzeugt, andererseits erzeugt so das Wunder "Orden der Tempelritter" regelmäßig Kreuzfahrer.

    GC.getEraInfo(eMercenaryEra).getMercenaryUnitclass() liest nur eine bei den Eras gespeicherte Einheitenklasse aus.

    getFreeUnit((UnitTypes)iI) gibt einen Wert zurück, der in jeder Stadt (vermutlich für jeden Unittype) gespeichert ist und standartmäßig auf 0 ist. Dieser Wert wird beim Bau des Wunders geändert. Wenn das wichtig sein könnte, kann ich alle dazugehörenden Codeteile auch posten.
    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

  6. #2436
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Das es ein Anzeigefehler in Python ist kann ausgeschlossen werden? (Wegen der Geburtensache, jede Runde kam eine GP?)

  7. #2437
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Tritt der Fehler nach dem Bombardieren auf?

    Gibt es irgendwelche Auffälligkeiten in den Tags

    iDefense
    iBombardDefense

    von Civ4BuildingInfos.xml ?

  8. #2438
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.016
    Ein Problem ist: Der Fehler trat nicht bei mir auf, sondern bei einem anderen User, der meinen Mod heruntergeladen hat. Über das wann und welche Umstände kann ich nichts sagen.
    Das mit dem Anzeigefehler kann vermutlich ausgeschlossen werden, zumindest das Geld und die GPs (als es so wahnsinnig viele waren) kamen jede Runde. Bei den negativen GPs beschwerte sich die Debug.dll beim Rundenwechsel, dass getGreatPeopleUnitProgress (oder setGreatPeopleUnitProgress) nicht negativ sein dürften.

    Zu den Auffälligkeiten der xml-Tags: Ich habe zumindest einmal versucht, für iGreatPeopleRateChange und iGreatPeopleRateModifier welche zu finden, um diese Fehler zu erklären. Leider habe ich keine effektive Methode, alle Tags zu finden, die nicht den Erwartungen entsprechen. Kennst du da eine Möglichkeit? Bisher war mein Ansatz, so zu suchen:
    Code:
    iGreatPeopleRateChange> (mit Leerzeichen)
    iGreatPeopleRateChange><
    <iGreatPeopleRateModifier/> (also ganz geschlossen statt geöffnet-wert-geschlossen)
    Aber damit decke ich nicht alle möglichkeiten von falschen Einträgen ab, fürchte ich. Wenn ich also effektiv nach iDefense und iBombardDefense suchen will, muss ich irgend einen Weg finden,
    Code:
    <iDefense>0</iDefense>
    auszuschließen, damit ich nur die finde, wo der Wert falsch ist (oder nicht 0, die Gebäude mit einem positiven Eintrag sind nicht so viele).
    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

  9. #2439
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Ich würde einfach "<iDefense>" in die Suche eingeben und dann durchklicken. Scheint mir die schnellste Methode zu sein.

  10. #2440
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.016
    Wirklich? Bei mehreren hundert Gebäuden dauert das gefühlt ewig. Aber wenn es keine andere Möglichkeit gibt.
    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

  11. #2441
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Mehrere 100? Dann hilft ein regulärer Ausdruck vielleicht. Muss mal gucken.

  12. #2442
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.016
    Okay, es ist schaffbar. Für iDefense bin ich nun einmal durchgegangen, ohne etwas zu sehen. Bei den anderen Tags muss ich dann mal ran.
    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

  13. #2443
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Du kannst hiermit suchen: "<iDefense>[^0]" Sucht nach allen Tags, die nicht den Wert 0 haben.
    Bzw. dann mit einen anderen Tag.

  14. #2444
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.016
    Danke, das funktioniert wunderbar. Leider ist das einzige Ergebnis:
    iDefense
    iBombardDefense
    iGreatPeopleRateChange
    iGreatPeopleRateModifier
    iGlobalGreatPeopleRateModifier
    iHealth
    => alle ohne Auffälligkeiten.

    Ich bin mir nicht sicher, kann es vorkommen, dass die Variablen druch irgend einen Fehler überschrieben werden, ohne dass die entsprechende Funktion (changeXY, setXY) aufgerufen wird? Weil vielleicht unzulässig auf die Variable davor zugegriffen wird und so ein Überlauf von einer Variable auf den Speicherplatz der nächsten stattfindet? Oder ist das Quatsch?

    Ich werde noch einmal nachfragen, ob ich ein Safe kurz vor dem ersten Auftreten des Problems haben kann, ein Debug-Durchlauf, wenn die Variable überschrieben wird, wäre sicher hilfreich, um die Situation einzugrenzen.
    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. #2445
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.016
    Also, ich habe nun ein paar zusätzliche Informationen vom User. Der hat mir durch seine Screenshots unter anderem gezeigt, dass die Fehler tatsächlich durch die Gebäude-Variable entstehen. Beim Gold wird der Stadtunterhalt wie durch ein riesiges Gerichtsgebäude unentdlich negativ, so dass die Stadt viel Gold produziert. Die Gesundheit wird auch als "durch Gebäude" deklariert. Ich vermute einmal, dass dann auch Verteidigung und negative wie positive GP-Rate daher kommen. Die Frage ist nur, wie finde ich den Übeltäter und die genause Stelle, bei der der Eintrag falsch ist?
    Schließt die Suche mit den regulären Ausdrücken eigentlich auch unsichtbare Zeichen ein? Müsste also "<iDefense>[^0]" trotzdem einen Wert zurückgeben, wenn statt "<iDefense>0" folgendes da steht: "<iDefense>[unsichtbares Zeichen]0"?
    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 163 von 180 ErsteErste ... 63113153159160161162163164165166167173 ... LetzteLetzte

Berechtigungen

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