Seite 56 von 110 ErsteErste ... 64652535455565758596066106 ... LetzteLetzte
Ergebnis 826 bis 840 von 1650

Thema: Bugsammlung

  1. #826
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.023
    Okay, es scheint sich jetzt auch wieder etwas geändert zu haben. Das Spiel scheint weiter zu laufen. Ich bekomme zumindest gerade keinen Haltepunkt angezeigt.

  2. #827
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.023
    Seit einiger Zeit kommt nichts mehr. Der letzte Haltepunkt war:
    Code:
    void CvPlayer::doTurnUnits()
    {
    	PROFILE_FUNC();
    
    	CvSelectionGroup* pLoopSelectionGroup;
    	int iLoop;
    
    	AI_doTurnUnitsPre();
    
    	for(pLoopSelectionGroup = firstSelectionGroup(&iLoop); pLoopSelectionGroup != NULL; pLoopSelectionGroup = nextSelectionGroup(&iLoop))
    	{
    		pLoopSelectionGroup->doDelayedDeath();
    	}
    
    	for (int iPass = 0; iPass < 4; iPass++)
    	{
    		for(pLoopSelectionGroup = firstSelectionGroup(&iLoop); pLoopSelectionGroup != NULL; pLoopSelectionGroup = nextSelectionGroup(&iLoop))
    		{
    			switch (pLoopSelectionGroup->getDomainType())
    			{
    			case DOMAIN_AIR:
    				if (iPass == 1)
    				{
    					pLoopSelectionGroup->doTurn();
    				}
    				break;
    			case DOMAIN_SEA:
    				if (iPass == 2)
    				{
    					pLoopSelectionGroup->doTurn();
    				}
    				break;
    			case DOMAIN_LAND:
    				if (iPass == 3)
    				{
    					pLoopSelectionGroup->doTurn();
    				}
    				break;
    			case DOMAIN_IMMOBILE:
    				if (iPass == 0)
    				{
    					pLoopSelectionGroup->doTurn();
    				}
    				break;
    			case NO_DOMAIN:
    				FAssertMsg(NULL == pLoopSelectionGroup->getHeadUnit(), "Unit with no Domain");
    			default:
    				if (iPass == 3)
    				{
    					pLoopSelectionGroup->doTurn();
    				}
    				break;
    			}
    		}
    	}
    
    	if (getID() == GC.getGameINLINE().getActivePlayer())
    	{
    		gDLL->getFAStarIFace()->ForceReset(&GC.getInterfacePathFinder());
    
    		gDLL->getInterfaceIFace()->setDirty(Waypoints_DIRTY_BIT, true);
    		gDLL->getInterfaceIFace()->setDirty(SelectionButtons_DIRTY_BIT, true);
    	}
    
    	gDLL->getInterfaceIFace()->setDirty(UnitInfo_DIRTY_BIT, true);
    
    	AI_doTurnUnitsPost();
    }
    Ich weiß jetzt nicht, wie ich weiterkomme. Ich habe neue Haltepunkte eingesetzt, aber es wird offenbar keiner mehr erreicht.

  3. #828
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.023
    Code:
    void CvPlayer::setTurnActive(bool bNewValue, bool bDoTurn)
    {
    	int iI;
    
    	if (isTurnActive() != bNewValue)
    	{
    		m_bTurnActive = bNewValue;
    
    		if (isTurnActive())
    		{
    			if (GC.getLogging())
    			{
    				if (gDLL->getChtLvl() > 0)
    				{
    					TCHAR szOut[1024];
    					sprintf(szOut, "Player %d Turn ON\n", getID());
    					gDLL->messageControlLog(szOut);
    				}
    			}
    /************************************************************************************************/
    /* BETTER_BTS_AI_MOD                      10/26/09                                jdog5000      */
    /*                                                                                              */
    /* AI logging                                                                                   */
    /************************************************************************************************/
    			if( gPlayerLogLevel > 0 ) 
    			{
    				logBBAI("Player %d (%S) setTurnActive for turn %d", getID(), getCivilizationDescription(0), GC.getGameINLINE().getGameTurn() );
    			
    				if( GC.getGameINLINE().getGameTurn() > 0 && (GC.getGameINLINE().getGameTurn() % 25) == 0 && !isBarbarian() )
    				{
    					CvWStringBuffer szBuffer;
    					GAMETEXT.setScoreHelp(szBuffer, getID());
    					logBBAI("%S", szBuffer);
    
    					int iGameTurn = GC.getGameINLINE().getGameTurn();
    					logBBAI("  Total Score: %d, Population Score: %d (%d total pop), Land Score: %d, Tech Score: %d, Wonder Score: %d", calculateScore(), getPopScore(false), getTotalPopulation(), getLandScore(false), getTechScore(), getWondersScore());
    					
    					int iEconomy = 0;
    					int iProduction = 0;
    					int iAgri = 0;
    					int iCount = 0;
    					for( int iI = 1; iI <= 5; iI++ )
    					{
    						if( iGameTurn - iI >= 0 )
    						{
    							iEconomy += getEconomyHistory(iGameTurn - iI);
    							iProduction += getIndustryHistory(iGameTurn - iI);
    							iAgri += getAgricultureHistory(iGameTurn - iI);
    							iCount++;
    						}
    					}
    					iEconomy /= std::max(1, iCount);
    					iProduction /= std::max(1, iCount);
    					iAgri /= std::max(1, iCount);
    
    					logBBAI("  Economy avg: %d,  Industry avg: %d,  Agriculture avg: %d", iEconomy, iProduction, iAgri);
    				}
    			}
    				
    			if( gPlayerLogLevel >= 2 )
    			{
    				CvWStringBuffer szBuffer;
    
    				logBBAI("    Player %d (%S) has %d cities, %d pop, %d power, %d tech percent", getID(), getCivilizationDescription(0), getNumCities(), getTotalPopulation(), getPower(), GET_TEAM(getTeam()).getBestKnownTechScorePercent());
    
    				if( GET_PLAYER(getID()).AI_isFinancialTrouble() )
    				{
    					logBBAI("    Financial trouble!");
    				}
    
    				szBuffer.append(CvWString::format(L"    Team %d has met: ", getTeam()));
    
    				for( int iI = 0; iI < MAX_CIV_TEAMS; iI++ )
    				{
    					if( iI != getTeam() && GET_TEAM(getTeam()).isHasMet((TeamTypes)iI) )
    					{
    						if( GET_TEAM((TeamTypes)iI).isAlive() )
    						{
    							szBuffer.append(CvWString::format(L"%d,", iI));
    						}
    					}
    				}
    
    				if( GET_TEAM(getTeam()).getVassalCount() > 0 )
    				{
    					szBuffer.append(CvWString::format(L";  vassals: "));
    
    					for( int iI = 0; iI < MAX_CIV_TEAMS; iI++ )
    					{
    						if( iI != getTeam() && GET_TEAM((TeamTypes)iI).isVassal(getTeam()) )
    						{
    							if( GET_TEAM((TeamTypes)iI).isAlive() )
    							{
    								szBuffer.append(CvWString::format(L"%d,", iI));
    							}
    						}
    					}
    				}
    
    				if( GET_TEAM(getTeam()).getAtWarCount(false) > 0 )
    				{
    					szBuffer.append(CvWString::format(L";  at war with: "));
    
    					for( int iI = 0; iI < MAX_CIV_TEAMS; iI++ )
    					{
    						if( iI != getTeam() && GET_TEAM(getTeam()).isAtWar((TeamTypes)iI) )
    						{
    							if( GET_TEAM((TeamTypes)iI).isAlive() )
    							{
    								szBuffer.append(CvWString::format(L"%d,", iI));
    							}
    						}
    					}
    				}
    
    				if( GET_TEAM(getTeam()).getAnyWarPlanCount(true) > 0 )
    				{
    					szBuffer.append(CvWString::format(L";  planning war with: "));
    
    					for( int iI = 0; iI < MAX_CIV_TEAMS; iI++ )
    					{
    						if( iI != getTeam() && !GET_TEAM(getTeam()).isAtWar((TeamTypes)iI) && GET_TEAM(getTeam()).AI_getWarPlan((TeamTypes)iI) != NO_WARPLAN )
    						{
    							if( GET_TEAM((TeamTypes)iI).isAlive() )
    							{
    								szBuffer.append(CvWString::format(L"%d,", iI));
    							}
    						}
    					}
    				}
    				
    				logBBAI("%S", szBuffer.getCString());
    
    				szBuffer.clear();
    
    				if( GET_TEAM(getTeam()).getAnyWarPlanCount(true) > 0 ) logBBAI("    Enemy power perc: %d (%d with others reduction)", GET_TEAM(getTeam()).AI_getEnemyPowerPercent(), GET_TEAM(getTeam()).AI_getEnemyPowerPercent(true));
    			}
    /************************************************************************************************/
    /* BETTER_BTS_AI_MOD                       END                                                  */
    /************************************************************************************************/
    
    			FAssertMsg(isAlive(), "isAlive is expected to be true");
    
    			setEndTurn(false);
    			GC.getGameINLINE().resetTurnTimer();
    
    			// If we are the Pitboss, send this player an email
    			if ( gDLL->IsPitbossHost() )
    			{
    				// If this guy is not currently connected, try sending him an email
    				if ( isHuman() && !isConnected() )
    				{
    					sendReminder();
    				}
    			}
    
    			if ((GC.getGameINLINE().isHotSeat() || GC.getGameINLINE().isPbem()) && isHuman() && bDoTurn)
    			{
    				gDLL->getInterfaceIFace()->clearEventMessages();
    				gDLL->getEngineIFace()->setResourceLayer(false);
    
    				GC.getGameINLINE().setActivePlayer(getID());
    			}
    
    			GC.getGameINLINE().changeNumGameTurnActive(1);
    
    			if (bDoTurn)
    			{
    				if (isAlive() && !isHuman() && !isBarbarian() && (getAdvancedStartPoints() >= 0))
    				{
    					AI_doAdvancedStart();
    				}
    						
    				if (GC.getGameINLINE().getElapsedGameTurns() > 0)
    				{
    					if (isAlive())
    					{
    						if (GC.getGameINLINE().isMPOption(MPOPTION_SIMULTANEOUS_TURNS))
    						{
    							doTurn();
    						}
    
    						doTurnUnits();//Wird noch aufgerufen
    					}
    				}
    
    				if ((getID() == GC.getGameINLINE().getActivePlayer()) && (GC.getGameINLINE().getElapsedGameTurns() > 0))//Wird nicht mehr erreicht

  4. #829
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Was hat es mit den letzten Beitrag auf sich?

  5. #830
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.023
    Auch, da hatte ich meine Anmerkungen nur in grün und rot reingeschrieben. Das ist der letzte Punkt, der erreicht wurde. Irgendwo dazwischen muss die Schleife sich verlieren.
    Wobei ich da im Nachhinein auch nicht mehr sicher bin, ob ich den Haltepunkt nicht gesetzt habe, als das Spiel sich nicht mehr weiterentwickelte.

  6. #831
    Registrierter Benutzer Avatar von Builder
    Registriert seit
    05.12.08
    Beiträge
    3.480
    Was passiert wenn es keine Einheiten gibt oder iloop einen nicht erwarteten wert hat bzw überläuft?
    "Vegetarisch" ist indianisch und heißt "zu blöd zum Jagen"

    Bekennender Steam Hasser;)

  7. #832
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.023
    Wenn es keine Einheiten gäbe, dürfte eigentlich nichts passieren.

    Ich habe einmal weiter geschaut. Laut der Ansicht "Treads" ist der Haupttread derzeit "CvPlayer::doTurnUnits". Ich habe da nun aber in jede Zeile einen Haltepunkt gesetzt, aber nichts passiert.

  8. #833
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Das ist dann halt der von mir beschriebene Fall eines Endlosturns. In CvPlayer::doTurnUnits macht es keinen Sinn. Und überall ist eher schlecht. Wenigere gut platzierte Punkte sind besser.

    Interessant ist folgendes zu suchen:

    Setze in CvUnitAI::AI_attackRangedMove() einen breakpoint bei "if (AI_doAttackRangedMove())".

    Setzte in CvUnitAI::AI_doAttackRangedMove() einen Breakpoint bei "if (pBestPlot != NULL)"

    Wenn ein pBestplot gefunden wird im Endlosturn, muss der Aufruf getGroup()->pushMission(MISSION_RANGE_ATTACK, pBestPlot->getX_INLINE(), pBestPlot->getY_INLINE()); bis zum Ende verfolgt werden, ob der Befehl wirklich ausgeführt wird. Dazu müssen breakpoints folgend platziert werden.

  9. #834
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.023
    @Builder: Ich habe noch einmal eine neue Version des CvEventManager.py hochgeladen. Ich glaube nicht, dass diese Datei irgend etwas an dem Problem ändert, aber vielleicht tut sich ja doch etwas. Die neue Datei verhindert, dass einige unsinnige Beförderungen vergeben werden. Diese unsinnigen Beförderungen (und einige sinnvolle) waren das einzige, was die fehlerhafte Vorgängerdatei von der letzten Version unterschied. Eigentlich müsste es ansonsten bei beiden Dateien gleich blockieren.

  10. #835
    Registrierter Benutzer Avatar von Builder
    Registriert seit
    05.12.08
    Beiträge
    3.480
    Ok werde das mal probieren.
    "Vegetarisch" ist indianisch und heißt "zu blöd zum Jagen"

    Bekennender Steam Hasser;)

  11. #836
    Registrierter Benutzer Avatar von Builder
    Registriert seit
    05.12.08
    Beiträge
    3.480
    PYlayer 18's alive status set to: 1
    PY:City Built Event: Tortuga
    PY:City Built Event: Les Palmistes
    PY:City Built Event: Windward Passage
    PYlayer 18 Civilization Bukanier Unit Späher was killed by Player 18
    PY:City Built Event: Fort de Rocher
    PY:City Built Event: Cartagea
    PY:City Built Event: Maracaibo
    PY:City Built Event: Portobelo
    PY:City Built Event: Hispaniola
    PY:City Built Event: Pointe des Oiseaux
    PY:City Tortuga's culture has expanded
    PY:City Les Palmistes's culture has expanded
    PY:City Windward Passage's culture has expanded
    PY:City Fort de Rocher's culture has expanded
    PY:City Cartagea's culture has expanded
    PY:City Maracaibo's culture has expanded
    PY:City Portobelo's culture has expanded
    PY:City Hispaniola's culture has expanded
    PY:City Pointe des Oiseaux's culture has expanded

    Da kommt mir irgendwie komisch vor die Bukaneer gibt es sowit ich weiss nicht.

    Ich habe das selbe mal in der vorversion genmacht. das log ist angehänht.
    Geändert von Builder (13. Dezember 2014 um 19:01 Uhr)
    "Vegetarisch" ist indianisch und heißt "zu blöd zum Jagen"

    Bekennender Steam Hasser;)

  12. #837
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.023
    Die Bukanier sind vermutlich die Piraten, die gerade gegründet wurden. Wieso die allerdings ihren eigenen Späher killen verstehen ich nicht. Vor allem, weil sie eigentlich gar keinen Späher bekommen sollten.

    Hängt das Spiel denn wieder, mit dem neuen Code?

  13. #838
    Registrierter Benutzer Avatar von Builder
    Registriert seit
    05.12.08
    Beiträge
    3.480
    Ja es hängt wieder. Ich hab mal zum vergleich das ganze in der alten version gemacht da läuft es. Da kommt aber auch gar keine meldung von den Städten.
    "Vegetarisch" ist indianisch und heißt "zu blöd zum Jagen"

    Bekennender Steam Hasser;)

  14. #839
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.023
    Werden denn Städte für die neuen Piraten gegründet in der alten Version?

  15. #840
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.023
    Ich weiß wirklich nicht, was diese Piraten für ein Problem haben. In Dead-Eyes Save sind die 59 Ballistenstellungen der Internationalen Gemeinschaft ganz korrekt durchgelaufen. Es muss irgend etwas anderes sein, was da nicht stimmt.

Seite 56 von 110 ErsteErste ... 64652535455565758596066106 ... LetzteLetzte

Berechtigungen

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