Seite 42 von 180 ErsteErste ... 323839404142434445465292142 ... LetzteLetzte
Ergebnis 616 bis 630 von 2699

Thema: Der SDK-Fragen-Thread

  1. #616
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.027
    Ich habe den Verdacht zu wissen, warum Intelli Sense nicht geht. Ich habe gestern Einstellungen zurückgesetzt. Ich hatte jedoch zwei includes eingerichtet damit boost und noch einen weiteres gefunden werden. Hoffentlich fällt mir wieder ein, was das zweite war, aber dann könnte Intelli Sense wieder gehen.

    edit: Das war es nicht. Das zweite Test-Projekt hatte das sogar richtig eingerichtet. Daran kann es nicht liegen.
    Geändert von rucivfan (13. September 2013 um 13:07 Uhr)

  2. #617
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.194
    Wird die Anzeige der Kampfchancen (bzw. die Frage, wann sie angezeigt werden) über Python oder über das SDK geregelt? Ich möchte gerne für meinen Mod die Änderung haben, dass die Bewegung einer Landeinheit (Hubschrauber) auf ein Wasserfeld mit einer feindlichen Seeeinheit auch eine Anzeige auslöst. Beide Einheiten können im Moment zwar gegeneinander kämpfen, dich Chancen lassen sich aber nicht vorher absehen. Genauso ist es, wenn eine Seeeinheit auf ein Feld zieht, wo eine feindliche Landheinheit (Hubschrauber) steht. Wenn die Landeinheit kein Wasser betreten kann, verschwindet sie sofort, aber wenn der Hubschrauber Wasser betreten darf (wie in meinem Mod) wird gekämpft. Ich möchte gerne in beiden Fällen die Chancen sehen, weiß jemand, was ich dazu ändern muss?

  3. #618
    Whovian Avatar von antriot
    Registriert seit
    30.09.12
    Ort
    TARDIS Type 40
    Beiträge
    2.641
    Das wird auf jeden Fall im SDK berechnet bzw. gesteuert. Mehr kann ich dir aber dazu nicht sagen, da ich mich damit nicht auskenne.
    Tick tock goes the clock...

  4. #619
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.027
    Chancenanzeige ist im SDK. Mich würde jetzt interessesieren, ob das auch in Base so ist. Dort können Hubschrauber auch auf Küste.

    edit: Tatsächlich hat Base genau das Problem.
    Geändert von rucivfan (15. September 2013 um 12:50 Uhr)

  5. #620
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Ich glaube das wird in CvGameTextMgr::setCombatPlotHelp geregelt.

  6. #621
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.027
    Das wird dort geregelt.

    edit:

    Code:
    	switch (gDLL->getInterfaceIFace()->getSelectionList()->getDomainType())
    	{
    	case DOMAIN_SEA:
    		bValid = pPlot->isWater();
    		break;
    
    	case DOMAIN_AIR:
    		bValid = true;
    		break;
    
    	case DOMAIN_LAND:
    		bValid = !(pPlot->isWater());
    		break;
    
    	case DOMAIN_IMMOBILE:
    		break;
    
    	default:
    		FAssert(false);
    		break;
    	}
    
    	if (!bValid)
    	{
    		return false;
    	}
    Dort gibt es diese Switchanweisung gleich am Anfang. Das Problem ist die Abfrage bValid = !(pPlot->isWater()); bei DOMAIN_LAND.
    Geändert von rucivfan (15. September 2013 um 13:16 Uhr)

  7. #622
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.027
    Die Zeile müsste eigentlich bValid = !(pPlot->isWater()) || pAttacker->canMoveAllTerrain(); heißen. Das Problem ist jedoch noch, pAttacker wird erst einige Zeilen unter der Switchanweisung gesetzt. Man muss also noch die Switchanweisung nach unten verschieben. Ob das ratsam ist?

  8. #623
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.194
    Wenn ich da das !(pPlot->isWater()); wegmache bzw. durch true ersetze, wird es dann funktionieren? Oder zeigt er dann die Chancen auch an, sobald ich mit einem Krieger über ein Schiff gehe?
    Müsste man das nicht vielleicht durch irgendeinen Ausdruck ersetzen, das sagt "Wenn die Einheit dieses Feld betreten kann: true"?

    Edit: Crosspost. Das, was du grad geschrieben hattest, war gemeint. Irgendwie.
    Ob das verschieben der Switch-Anweisung Ratsam ist, weiß ich natürlich nicht. Was spräche denn, rein in der Theorie, dagegen?

  9. #624
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.027
    Dann würde die Kampfchance auch von transportierten Einheiten gegen Schiffe angezeigt werden. Man kann nicht einfach dort True machen.

    Zitat Zitat von Kathy Beitrag anzeigen
    Ob das verschieben der Switch-Anweisung Ratsam ist, weiß ich natürlich nicht. Was spräche denn, rein in der Theorie, dagegen?
    Mehr Leistungsverschwendung hat man, wenn der Code abgebrochen wird. Kann man als vernachlässigbar werten.

    In Base sieht es jetzt so aus: Auszug:

    Code:
    	// rucivfan_bug_fix rbf[
    	// old code[
    	//bValid = false;
    	//switch (gDLL->getInterfaceIFace()->getSelectionList()->getDomainType())
    	//{
    	//case DOMAIN_SEA:
    	//	bValid = pPlot->isWater();
    	//	break;
    
    	//case DOMAIN_AIR:
    	//	bValid = true;
    	//	break;
    
    	//case DOMAIN_LAND:
    	//	bValid = !(pPlot->isWater());
    	//	break;
    
    	//case DOMAIN_IMMOBILE:
    	//	break;
    
    	//default:
    	//	FAssert(false);
    	//	break;
    	//}
    
    	//if (!bValid)
    	//{
    	//	return false;
    	//}
    	// ] old code
    	// ]rucivfan_bug_fix rbf
    
    	int iOdds;
    	pAttacker = gDLL->getInterfaceIFace()->getSelectionList()->AI_getBestGroupAttacker(pPlot, false, iOdds);
    
    	if (pAttacker == NULL)
    	{
    		pAttacker = gDLL->getInterfaceIFace()->getSelectionList()->AI_getBestGroupAttacker(pPlot, false, iOdds, true);
    	}
    
    	if (pAttacker != NULL)
    	{
    		// rucivfan_bug_fix rbf[
    		// new code[
    		bValid = false;
    		switch (gDLL->getInterfaceIFace()->getSelectionList()->getDomainType())
    		{
    		case DOMAIN_SEA:
    			bValid = pPlot->isWater();
    			break;
    
    		case DOMAIN_AIR:
    			bValid = true;
    			break;
    
    		case DOMAIN_LAND:
    			bValid = !(pPlot->isWater()) || pAttacker->canMoveAllTerrain();
    			break;
    
    		case DOMAIN_IMMOBILE:
    			break;
    
    		default:
    			FAssert(false);
    			break;
    		}
    
    		if (!bValid)
    		{
    			return false;
    		}
    		// ] new code
    		// ]rucivfan_bug_fix rbf

  10. #625
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.194
    Zitat Zitat von rucivfan Beitrag anzeigen
    Dann würde die Kampfchance auch von transportierten Einheiten gegen Schiffe angezeigt werden. Man kann nicht einfach dort True machen.
    Das wäre natürlich nicht wünschenswert. Ich denke, dein Vorschlag wäre da schon besser, wenn die Frage mit der Switch-Anweisung geklärt ist.

  11. #626
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.027
    siehe edit.

  12. #627
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.027
    pAttacker->canMoveAllTerrain() setzt natürlich voraus, dass Helicopter auch das Attribut gesetzt haben.

  13. #628
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.194
    Zitat Zitat von rucivfan Beitrag anzeigen
    pAttacker->canMoveAllTerrain() setzt natürlich voraus, dass Helicopter auch das Attribut gesetzt haben.
    Ja, aber ansonsten können sie ja sowieso nicht aufs Wasser ziehen und daher nicht dort kämpfen.

    Bei Schiffen gegen Hubschrauber, die schon auf dem Wasser stehen, war übrigens vorher die Anzeige schon korrekt.

    Ich habe das mal in den SDK-Faden verschoben. Teste jetzt, ob ich es richtig eigebaut habe
    Geändert von Kathy (15. September 2013 um 13:57 Uhr)

  14. #629
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.194
    Also, beim Test ging das jetzt mächtig schief. Sobald ich eine Einheit über eine feindliche Bewegen wollte, stürzte das Spiel ab. Rucivfan, wie geht es bei deinem Code danach weiter? Ich habe danach den Originalcode:
    Code:
    		if (pDefender != NULL && pDefender != pAttacker && pDefender->canDefend(pPlot) && pAttacker->canAttack(*pDefender))
    		{
    Ist das vielleicht grammatikalisch unsinnig?

    Edit: ich glaube, ich habe den Fehler gefunden. Beim Einfügen ist eine Zeile in den auskommentierten Bereich gekommen - die, die pDefender definiert. Starte einen neuen Test.

  15. #630
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.027
    Bei mir war der Test Erfolgreich. Danach kommt der Verteidiger drann, wie bei dir.

    edit:

    Code:
    		ipDefender = pPlot->getBestDefender(NO_PLAYER, pAttacker->getOwnerINLINE(), pAttacker, false, NO_TEAM == pAttacker->getDeclareWarMove(pPlot));
    
    		if (pDefender != NULL && pDefender != pAttacker && pDefender->canDefend(pPlot) && pAttacker->canAttack(*pDefender))
    		{
    			if (pAttacker->getDomainType() != DOMAIN_AIR)
    Bei dir fehlt eine Zeile darüber.

Seite 42 von 180 ErsteErste ... 323839404142434445465292142 ... LetzteLetzte

Berechtigungen

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