Seite 51 von 180 ErsteErste ... 4147484950515253545561101151 ... LetzteLetzte
Ergebnis 751 bis 765 von 2699

Thema: Der SDK-Fragen-Thread

  1. #751
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.028
    Ich habe mal eine Frage: Wie muss man diesen Teil lesen?
    Code:
    int CvUnit::rangeCombatDamage(const CvUnit* pDefender) const
    {
    	CvPlot* pPlot;
    	int iOurStrength;
    	int iTheirStrength;
    	int iStrengthFactor;
    	int iDamage;
    
    	pPlot = pDefender->plot();
    
    	iOurStrength = airCurrCombatStr(pDefender);
    	FAssertMsg(iOurStrength > 0, "Combat strength is expected to be greater than zero");
    	iTheirStrength = pDefender->maxCombatStr(pPlot, this);
    
    	iStrengthFactor = ((iOurStrength + iTheirStrength + 1) / 2);
    
    	iDamage = std::max(1, ((GC.getDefineINT("RANGE_COMBAT_DAMAGE") * (iOurStrength + iStrengthFactor)) / (iTheirStrength + iStrengthFactor)));
    
    	return iDamage;
    }
    Mein Problem ist: Ich habe eine Fregatte (14 ) nacheinander von mehreren Schiffen angreifen lassen, unter anderem eine Katapulttrireme (2 ) und einen zukünftigen Schlachtkreuzer (71 ). In jedem Fall verlor sie 1,5 , also ca. 10 TP. Das sollte beim Fernkampf doch nicht sein.

    Auch, wenn der Computer hier mit der Air-Combat rechnet, müsste es unterschidlich sein (Katapulttrireme: 1, Zuk. Schlachtkreuzer: 13).

    Hier mein Übersetzungsversuch:
    Code:
    int CvUnit::rangeCombatDamage(const CvUnit* pDefender) const
    {
    	CvPlot* pPlot;
    	int 14;
    	int iTheirStrength;
    	int iStrengthFactor;
    	int iDamage;
    
    	pPlot = pDefender->plot();
    
    	2 oder 13 = airCurrCombatStr(pDefender); //Rot= Trireme, grün = Schlachtkreuzer
    	FAssertMsg(iOurStrength > 0, "Combat strength is expected to be greater than zero");
    	1 = pDefender->maxCombatStr(pPlot, this); //blau = Fregatte, wobei 1 hier die ganz normale AirCombatStr. ist. Oder muss hier 14 für die normale Stärke der Fregatte rein?
    
    	1,5 7,5= ((1 13+ 1+ 1) / 2);
    
    	iDamage = std::max(1, ((GC.getDefineINT("30") * (2 20)) / (2 8))); //Daraus folgt: 30*2/2 = 30 bzw. 30*20/8 = 30*5 =150
    
    	return iDamage;
    }
    Wenn ich das richtig verstanden hätte, müsste die Katapultrireme 30TP Schaden anrichten und der Schlachtkreuzer die Fregatte mit einem Schuss versenken, da er 150 TP macht. Machen beide aber nicht, als habe ich irgendwo einen Denkfehler.

    Oder liegt es daran, dass am Ende folgende Funktion zum Tragen kommt:
    Code:
    			iBreitseiteUnitDamage = std::max(this->getDamage(), std::min((this->getDamage() + 30bzw 150), 100));
    Leider gibt die Definition von "getDamage" nur Folgendes her:
    Code:
    int CvUnit::getDamage() const
    {
    	return m_iDamage;
    }
    Das verstehe ich gar nicht. Was für en Wert wird da zurückgegeben?

    Wenn "iTheirStrength" nicht die AirCombat, sondern die normale Stärke der Fregatte ist (14, wonach es im Code aussieht), müsste der Schaden 12 bzw 23 sein. Macht insofern mehr Sinn, als dass ja auch Einheiten, die keine AirCombat haben, einen Widerstand gegen angriffe haben.
    Geändert von Kathy (02. November 2013 um 16:40 Uhr)

  2. #752
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.028
    Fehler gefunden.
    Im Code, der die Funktion aufruft, wurde immer der Schaden ausgerechnet, die die Einheit an sich selbst anrichten würde. Das macht natürlich keinen Sinn.

  3. #753
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.455
    Du meinst, du hast nen Fehler im BTS SDK gefunden?
    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. #754
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.028
    Nein, ich habe einen Fehler gefunden, den ich selbst eingebaut hatte. Ich hatte eine Funktion kopiert und ihr andere Übergabewerte gegeben - letztlich hatte ich Angreifer und Verteidiger vertauscht - aber an einer Stelle hatte ich den Austausch vermasselt. Der Sinn war, dass nach einen Fernkampfangriff auf eine Seeeinheit diese einmal zurückschießt. Ich hatte den Fehler gemacht, dass beim Zurückschießen die ursprünglich angreifende Einheit auf sich selbst zurückschießt und nicht die Getroffene.

  5. #755
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.028
    Ich habe schon wieder irgendeinen Mist gebaut.
    Diese Funktion soll die beste Fernkampfeinheit auswählen, die auf einen bestimmten Plot Fernangriffe ausführen kann:
    Code:
    CvUnit* CvPlot::getBestArtillerieDefender(PlayerTypes eOwner, PlayerTypes eAttackingPlayer, const CvUnit* pAttacker, bool bTestAtWar, bool bTestPotentialEnemy, bool bTestCanMove, CvPlot* pAttackerPlot) const
    {
    	CLLNode<IDInfo>* pUnitNode;
    	CvUnit* pLoopUnit;
    	CvUnit* pBestUnit;
    /************************************************************************************************/
    /* BETTER_BTS_AI_MOD                      02/21/10                                jdog5000      */
    /*                                                                                              */
    /* Lead From Behind                                                                             */
    /************************************************************************************************/
    // From Lead From Behind by UncutDragon
    	int iBestUnitRank = -1;
    
    	pBestUnit = NULL;
    
    	pUnitNode = headUnitNode();
    	
    	int iXAttackerPlot;
    	int iYAttackerPlot;
    	pAttackerPlot = pAttacker->plot();
    	iXAttackerPlot = pAttackerPlot->getX();
    	iYAttackerPlot = pAttackerPlot->getY();
    
    	while (pUnitNode != NULL)
    	{
    		pLoopUnit = ::getUnit(pUnitNode->m_data);
    		pUnitNode = nextUnitNode(pUnitNode);
    
    		if ((eOwner == NO_PLAYER) || (pLoopUnit->getOwnerINLINE() == eOwner))
    		{
    			if ((eAttackingPlayer == NO_PLAYER) || !(pLoopUnit->isInvisible(GET_PLAYER(eAttackingPlayer).getTeam(), false)))
    			{
    				if (!bTestAtWar || eAttackingPlayer == NO_PLAYER || pLoopUnit->isEnemy(GET_PLAYER(eAttackingPlayer).getTeam(), this) || (NULL != pAttacker && pAttacker->isEnemy(GET_PLAYER(pLoopUnit->getOwnerINLINE()).getTeam(), this)))
    				{
    					if (!bTestPotentialEnemy || (eAttackingPlayer == NO_PLAYER) ||  pLoopUnit->isPotentialEnemy(GET_PLAYER(eAttackingPlayer).getTeam(), this) || (NULL != pAttacker && pAttacker->isPotentialEnemy(GET_PLAYER(pLoopUnit->getOwnerINLINE()).getTeam(), this)))
    					{
    						if (!bTestCanMove || (pLoopUnit->canMove() && !(pLoopUnit->isCargo())))
    						{
    							if ((pAttacker == NULL) || (pAttacker->getDomainType() != DOMAIN_AIR) || (pLoopUnit->getDamage() < pAttacker->airCombatLimit()))
    							{
    								// UncutDragon
    								// original
    								//if (pLoopUnit->isBetterDefenderThan(pBestUnit, pAttacker))
    								// modified (added extra parameter)
    								if (pLoopUnit->isBetterDefenderThan(pBestUnit, pAttacker, &iBestUnitRank))
    								// /UncutDragon
    								//Test Can Airstrike
    								pLoopUnit->setMadeAttack(false);//Notwendig, damit er in jedem Fall angreifen kann
    								{
    									if (pLoopUnit->canRangeStrikeAt(this,iXAttackerPlot,iYAttackerPlot))
    									{
    										pBestUnit = pLoopUnit;
    									}
    								}
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    /************************************************************************************************/
    /* BETTER_BTS_AI_MOD                       END                                                  */
    /************************************************************************************************/
    
    	return pBestUnit;
    }//Kathy Artillerieduell end
    Leider gibt sie mir statt der besten Fernkampfeinheit regelmäßig nichts zurück, wenn ich sie hiermit aufrufe:
    Code:
    bool CvUnit::rangeStrike(int iX, int iY)
    {
    	CvUnit* pDefender;
    	CvWString szBuffer;
    	int iUnitDamage;
    	int iDamage;
    
    	CvPlot* pPlot = GC.getMapINLINE().plot(iX, iY);
    	if (NULL == pPlot)
    	{
    		return false;
    	}
    
    /************************************************************************************************/
    /* UNOFFICIAL_PATCH                       05/10/10                             jdog5000         */
    /*                                                                                              */
    /* Bugfix                                                                                       */
    /************************************************************************************************/
    /* original bts code
    	if (!canRangeStrikeAt(pPlot, iX, iY))
    	{
    		return false;
    	}
    */
    	if (!canRangeStrikeAt(plot(), iX, iY))
    	{
    		return false;
    	}
    /************************************************************************************************/
    /* UNOFFICIAL_PATCH                        END                                                  */
    /************************************************************************************************/
    
    	pDefender = airStrikeTarget(pPlot);
    
    	FAssert(pDefender != NULL);
    	FAssert(pDefender->canDefend());
    
    	if (GC.getDefineINT("RANGED_ATTACKS_USE_MOVES") == 0)
    	{
    		setMadeAttack(true);
    	}
    	changeMoves(GC.getMOVE_DENOMINATOR());
    
    	iDamage = rangeCombatDamage(pDefender);
    
    	iUnitDamage = std::max(pDefender->getDamage(), std::min((pDefender->getDamage() + iDamage), airCombatLimit()));
    
    	szBuffer = gDLL->getText("TXT_KEY_MISC_YOU_ARE_ATTACKED_BY_AIR", pDefender->getNameKey(), getNameKey(), -(((iUnitDamage - pDefender->getDamage()) * 100) / pDefender->maxHitPoints()));
    	//red icon over attacking unit
    	gDLL->getInterfaceIFace()->addMessage(pDefender->getOwnerINLINE(), false, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_COMBAT", MESSAGE_TYPE_INFO, getButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_RED"), this->getX_INLINE(), this->getY_INLINE(), true, true);
    	//white icon over defending unit
    	gDLL->getInterfaceIFace()->addMessage(pDefender->getOwnerINLINE(), false, 0, L"", "AS2D_COMBAT", MESSAGE_TYPE_DISPLAY_ONLY, pDefender->getButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_WHITE"), pDefender->getX_INLINE(), pDefender->getY_INLINE(), true, true);
    
    	szBuffer = gDLL->getText("TXT_KEY_MISC_YOU_ATTACK_BY_AIR", getNameKey(), pDefender->getNameKey(), -(((iUnitDamage - pDefender->getDamage()) * 100) / pDefender->maxHitPoints()));
    	gDLL->getInterfaceIFace()->addMessage(getOwnerINLINE(), true, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_COMBAT", MESSAGE_TYPE_INFO, pDefender->getButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_GREEN"), pPlot->getX_INLINE(), pPlot->getY_INLINE());
    
    	collateralCombat(pPlot, pDefender);
    
    	//set damage but don't update entity damage visibility
    	pDefender->setDamage(iUnitDamage, getOwnerINLINE(), false);
    
    	if (pPlot->isActiveVisible(false))
    	{
    		// Range strike entity mission
    		CvMissionDefinition kDefiniton;
    		kDefiniton.setMissionTime(GC.getMissionInfo(MISSION_RANGE_ATTACK).getTime() * gDLL->getSecsPerTurn());
    		kDefiniton.setMissionType(MISSION_RANGE_ATTACK);
    		kDefiniton.setPlot(pDefender->plot());
    		kDefiniton.setUnit(BATTLE_UNIT_ATTACKER, this);
    		kDefiniton.setUnit(BATTLE_UNIT_DEFENDER, pDefender);
    		gDLL->getEntityIFace()->AddMission(&kDefiniton);
    
    		//delay death
    /************************************************************************************************/
    /* UNOFFICIAL_PATCH                       05/10/10                             jdog5000         */
    /*                                                                                              */
    /* Bugfix                                                                                       */
    /************************************************************************************************/
    /* original bts code
    		pDefender->getGroup()->setMissionTimer(GC.getMissionInfo(MISSION_RANGE_ATTACK).getTime());
    */
    		// mission timer is not used like this in any other part of code, so it might cause OOS
    		// issues ... at worst I think unit dies before animation is complete, so no real
    		// harm in commenting it out.
    /************************************************************************************************/
    /* UNOFFICIAL_PATCH                        END                                                  */
    /************************************************************************************************/
    	}
    	//Kathy Artillerieduell start
    	CvPlot* pAttackerPlot;
    	int iXAttackerPlot;
    	int iYAttackerPlot;
    	pAttackerPlot = this->plot();
    	iXAttackerPlot = pAttackerPlot->getX();
    	iYAttackerPlot = pAttackerPlot->getY();
    	if (pPlot->isWater())
    [...]
    	else//Artillerieduell Land beginn
    	{
    		CvUnit* pBestDefender;
    		pBestDefender = pAttackerPlot->getBestArtillerieDefender(NO_PLAYER, getOwnerINLINE(), this, true,true,false,pPlot);
    		if (pBestDefender != NULL)
    		{
    			if (getDomainType() == DOMAIN_SEA)
    			{
    				int iBreitseiteDamage;
    				int iBreitseiteUnitDamage;
    				iBreitseiteDamage = pBestDefender->rangeCombatDamage(this);
    
    				iBreitseiteUnitDamage = std::max(this->getDamage(), std::min((this->getDamage() + iBreitseiteDamage), 100));
    
    				szBuffer = gDLL->getText("TXT_KEY_MISC_YOU_ARE_ATTACKED_BY_COASTAL_DEFENSE", getNameKey(), pBestDefender->getNameKey(), -(((iBreitseiteUnitDamage - this->getDamage()) * 100) / this->maxHitPoints()));
    				//red icon over attacking unit
    				gDLL->getInterfaceIFace()->addMessage(getOwnerINLINE(), false, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_COMBAT", MESSAGE_TYPE_INFO, getButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_RED"), this->getX_INLINE(), this->getY_INLINE(), true, true);
    				//white icon over defending unit
    				gDLL->getInterfaceIFace()->addMessage(getOwnerINLINE(), false, 0, L"", "AS2D_COMBAT", MESSAGE_TYPE_DISPLAY_ONLY, getButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_WHITE"), getX_INLINE(), getY_INLINE(), true, true);
    				
    				szBuffer = gDLL->getText("TXT_KEY_MISC_YOU_ATTACK_BY_COASTAL_DEFENSE", pBestDefender->getNameKey(), getNameKey(), -(((iBreitseiteUnitDamage - getDamage()) * 100) / maxHitPoints()));
    				gDLL->getInterfaceIFace()->addMessage(pDefender->getOwnerINLINE(), true, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_COMBAT", MESSAGE_TYPE_INFO, getButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_GREEN"), pPlot->getX_INLINE(), pPlot->getY_INLINE());
    
    				//set damage but don't update entity damage visibility
    				setDamage(iBreitseiteUnitDamage, getOwnerINLINE(), false);
    
    				if (pPlot->isActiveVisible(false))
    				{
    					// Range strike entity mission
    					CvMissionDefinition kDefiniton;
    					kDefiniton.setMissionTime(GC.getMissionInfo(MISSION_RANGE_ATTACK).getTime() * gDLL->getSecsPerTurn());
    					kDefiniton.setMissionType(MISSION_RANGE_ATTACK);
    					kDefiniton.setPlot(plot());
    					kDefiniton.setUnit(BATTLE_UNIT_ATTACKER, pBestDefender);
    					kDefiniton.setUnit(BATTLE_UNIT_DEFENDER, this);
    					gDLL->getEntityIFace()->AddMission(&kDefiniton);
    				
    				}
    					
    				if (this->isDead())
    				{
    					szBuffer = gDLL->getText("TXT_KEY_MISC_YOU_DIED_BY_COASTAL_DEFENSE", getNameKey(), pBestDefender->getNameKey(), -(((iBreitseiteUnitDamage - this->getDamage()) * 100) / this->maxHitPoints()));
    					//red icon over attacking unit
    					gDLL->getInterfaceIFace()->addMessage(getOwnerINLINE(), false, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_COMBAT", MESSAGE_TYPE_INFO, getButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_RED"), this->getX_INLINE(), this->getY_INLINE(), true, true);
    					//white icon over defending unit
    					gDLL->getInterfaceIFace()->addMessage(getOwnerINLINE(), false, 0, L"", "AS2D_COMBAT", MESSAGE_TYPE_DISPLAY_ONLY, getButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_WHITE"), getX_INLINE(), getY_INLINE(), true, true);
    					pDefender->changeExperience(1,1,true,false,true);
    				}
    			}
    		}
    		else
    		{
    
    //			Artillerieduell
    		}
    	}//Artillerieduell Land End
    	//Kathy Artillerieduell end
    	return true;
    }
    Edit: Ich glaube, ich habe beim Aufruf die Plots verwechselt.

  6. #756
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Mich wundert nichts.

    Code:
    							if ((pAttacker == NULL) || (pAttacker->getDomainType() != DOMAIN_AIR) || (pLoopUnit->getDamage() < pAttacker->airCombatLimit()))
    							{
    								// UncutDragon
    								// original
    								//if (pLoopUnit->isBetterDefenderThan(pBestUnit, pAttacker))
    								// modified (added extra parameter)
    								if (pLoopUnit->isBetterDefenderThan(pBestUnit, pAttacker, &iBestUnitRank))
    								// /UncutDragon
    								//Test Can Airstrike
    								pLoopUnit->setMadeAttack(false);//Notwendig, damit er in jedem Fall angreifen kann
    								{
    									if (pLoopUnit->canRangeStrikeAt(this,iXAttackerPlot,iYAttackerPlot))
    									{
    										pBestUnit = pLoopUnit;
    									}
    								}
    							}
    Überprüfe mal die Klammern.

    Das "pLoopUnit->setMadeAttack(false);//Notwendig, damit er in jedem Fall angreifen kann" finde ich nicht richtig. Die Funktion soll suchen und nicht verändern! edit: Zudem steht das im Wiederspruch mit der const-Definition der Funktion! Das ist einfach gesagt, absolut schlechter stil und führt zu unvorsehbaren Folgen. Wenn canRangeStrikeAt deswegen ein Problem ist, dann nutze eine andere selbstgeschriebene Methode.
    Geändert von rucivfan (03. November 2013 um 14:38 Uhr)

  7. #757
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    const heißt ja nur, dass das Objekt (hier der Plot) nicht verändert wird.
    Aber es stimmt, unnötige Seiteneffekte sollten vermieden werden. Oder zumindest rückgängig gemacht werden.

  8. #758
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.028
    Ist es so besser?

    Code:
    								if (pLoopUnit->isBetterDefenderThan(pBestUnit, pAttacker, &iBestUnitRank))
    								// /UncutDragon
    								//Test Can Airstrike
    								{
    									bAttackStatusChanged = false;
    									if (pLoopUnit->isMadeAttack())
    									{
    										pLoopUnit->setMadeAttack(false);//Notwendig, damit er in jedem Fall angreifen kann
    
    										bAttackStatusChanged = true;
    									}
    									if (pLoopUnit->canRangeStrikeAt(this,iXAttackerPlot,iYAttackerPlot))
    									{
    										pBestUnit = pLoopUnit;
    									}
    									if (bAttackStatusChanged = true)
    									{
    										pLoopUnit->setMadeAttack(true);
    									}
    								}

  9. #759
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Das ist noch schlechter. Etwas zu schreiben benötigt viel mehr Zeit als zu lesen. Daher sollte man nur was schreiben, wenn es wirklich notwendig ist. Hier ist es absolut nicht notwendig was zu schreiben!

    Lösche alles mit pLoopUnit->setMadeAttack(...). Weg damit! Schreibe dir eine andere Methode für canRangeStrikeAt, die nicht nach pLoopUnit->isMadeAttack() abfragt.

  10. #760
    ... Avatar von X-Terminator
    Registriert seit
    29.03.13
    Beiträge
    118
    Ich weiß nicht ob ich jetzt zum richtigen Zeitpunkt frage , aber ich wollte gern Fragen, wie der Stand der Dinge am SDK ist?

    Da ja schon ne Zeit vergangen ist, dachte ich, ich frag mal einfach ...

  11. #761
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.028
    Zitat Zitat von rucivfan Beitrag anzeigen
    Das ist noch schlechter. Etwas zu schreiben benötigt viel mehr Zeit als zu lesen. Daher sollte man nur was schreiben, wenn es wirklich notwendig ist. Hier ist es absolut nicht notwendig was zu schreiben!

    Lösche alles mit pLoopUnit->setMadeAttack(...). Weg damit! Schreibe dir eine andere Methode für canRangeStrikeAt, die nicht nach pLoopUnit->isMadeAttack() abfragt.
    Okay, ich habe es jetzt so gemacht, klappt wunderbar. Die Regeln für die Land-Land-Artillerieduelle werde ich nächstes Wochenende machen.

    @X-Terminator: Ich bin nicht ganz sicher, was du meinst. Ich meine, ich weiß, dass wir vor einigen Monaten irgendetwas besprochen hatten, aber ich weiß nicht mehr den Zusammenhang.

  12. #762
    Registrierter Benutzer Avatar von Monaldinio
    Registriert seit
    10.11.09
    Ort
    HRO
    Beiträge
    7.650
    Blöde Frage vom mir, sind die Eras auch im SDK hardcodet?!?!
    Wenn ja wo...in welchen Dateien...
    Conflict on Chiron - Sid Meier's Alpha Centauri vs. Call to Power!

    Neu Version Conflict on Chiron v3.4 BETA - 16.01.16

    Patch1 - 07.04.16

    Die deutschen Sounds und Wunderfilme sind bereits in der MainFile integriert!
    Ihr könnt sofort loslegen.

    Über Feedback würde ich mich freuen...

  13. #763
    ... Avatar von X-Terminator
    Registriert seit
    29.03.13
    Beiträge
    118
    @Kathy: Ich hatte doch rucivfan gefragt, ob er mir ein SDK "fertig" macht, da bei mir das kompilieren nicht funktioniert.

  14. #764
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    3 auf einmal, was ist hier los?

    Zitat Zitat von Monaldinio Beitrag anzeigen
    Blöde Frage vom mir, sind die Eras auch im SDK hardcodet?!?!
    Wenn ja wo...in welchen Dateien...
    Es gibt eine EraInfo-XML. Siehe Ordner GameInfo.

    Zitat Zitat von Kathy Beitrag anzeigen
    Okay, ich habe es jetzt so gemacht, klappt wunderbar. Die Regeln für die Land-Land-Artillerieduelle werde ich nächstes Wochenende machen.


    @X-Terminator: Ich bin nicht ganz sicher, was du meinst. Ich meine, ich weiß, dass wir vor einigen Monaten irgendetwas besprochen hatten, aber ich weiß nicht mehr den Zusammenhang.
    Er meint mich. Es ging um Autoumbenennung von Nationen unter bestimmten Bedingungen.

    Zitat Zitat von X-Terminator Beitrag anzeigen
    Ich weiß nicht ob ich jetzt zum richtigen Zeitpunkt frage , aber ich wollte gern Fragen, wie der Stand der Dinge am SDK ist?

    Da ja schon ne Zeit vergangen ist, dachte ich, ich frag mal einfach ...
    Fragen schadet nicht. Zur Zeit ruhe ich meinen eher Kopf aus. Soll heißen, wenn ich mich fit fühle, würde ich das machen. Vor Ende des Monats möchte ich das auf jeden Fall los haben. Siehe Signator zweiter Satz.

  15. #765
    ... Avatar von X-Terminator
    Registriert seit
    29.03.13
    Beiträge
    118
    @rucivfan: Ich will ja auch nicht hetzen. Ist ja ne freiwillige Sache
    Und nochmal danke dass du das machst

Seite 51 von 180 ErsteErste ... 4147484950515253545561101151 ... LetzteLetzte

Berechtigungen

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