Seite 4 von 4 ErsteErste 1234
Ergebnis 46 bis 49 von 49

Thema: Stadtstaaten-Missionen

  1. #46
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.876
    Die nächste Stadtstaatenmission, die mit den Handelsmissionen, ist abgeschlossen. Fehlt nur noch die Straßenbau-Mission.
    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. #47
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.876
    So, die letzte Mission ist nun auch verfügbar.
    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

  3. #48
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.876
    In irgendeinem Tread hatte ich einmal Hilfe erfragt für das Popup-Fenster, das erscheinen soll, wenn der Stadtstaat die HI fragt, ob sie neuer Vasall werden soll. Ich finde diesen verdammten Tread nicht, aber das Popup (das damals soweit ich mich erinnere auch nicht perfekt funktionierte - damals kam der falsche Einleitungstext) funktioniert bei mir immer noch nicht. Die KI beginnt zwar die Diplomatie, bietet aber keine Vasallierung an (was sie laut meinem Code tun sollte, und zwar auch, wenn sie eigentlich nicht daran interessiert ist - ihr Wille SOLL an dieser Stelle überschreiben werden, da sie als Stadtstaat schließlich keine "freie" KI ist). Es wäre einfacher, wenn die KI zwangsweise den neuen Hegemon annehmen würde, aber einige User wollen halt auch nicht jeden dahergelaufenen Stadtstaat als Vasall, und so unterstütze ich diese Lösung. Nur funktioniert sie nicht.

    Hier ist der Code:
    Code:
    //Kathy Beginn Citystate-Quests
    void CvTeam::doCityStateDesert(TeamTypes eCityState) const
    {
    	bool bDesert = false;
    
    	if ( getID() != GET_TEAM(eCityState).getID() )//Nicht, wenn CityState Teammitglied vom TestTeam ist
    	{
    		if ( !GET_TEAM(eCityState).isVassal(getID()) )//Wenn bereits Vasall passiert auch nichts
    		{
    			
    			for (int iPlayer = 0; iPlayer < MAX_PLAYERS; iPlayer++)
    			{
    				CvPlayer& kLoopPlayer = GET_PLAYER((PlayerTypes)iPlayer);
    				if (kLoopPlayer.getTeam() == eCityState && kLoopPlayer.isAlive())//Überprüfen aller Spieler im Team, ob ein Stadtstaat dabei ist
    				{
    					CivilizationTypes eCityStateCiv = (CivilizationTypes)kLoopPlayer.getCivilizationType();
    					CvWString szBuffer;
    
    					if ( GC.getCivilizationInfo(eCityStateCiv).isCitystate() )
    					{
    						bool bNoMaster = true;//Wenn kein alter Master vorhanden: Desertiert immer
    						int iMasterID = -1;
    						for (int iI = 0; iI < MAX_CIV_TEAMS; iI++)//Suchen alter Master
    						{
    							if (GET_TEAM(eCityState).isVassal((TeamTypes)iI) )
    							{
    								bNoMaster = false;
    								iMasterID = iI;
    								if ((GET_TEAM(eCityState).AI_getAttitude((TeamTypes)iI) < (GET_TEAM(eCityState).AI_getAttitude(getID()))))
    								{
    									bDesert = true;
    								}
    								break;
    							}
    						}
    						if ( bDesert || bNoMaster)
    						{
    							if (iMasterID != -1)//Ablösen des alten Hegemon
    							{
    								GET_TEAM((TeamTypes)iMasterID).freeVassal(eCityState);
    								GET_TEAM((TeamTypes)eCityState).setVassal((TeamTypes)iMasterID,false,false);
    
    								for (int kPlayer = 0; kPlayer < MAX_PLAYERS; kPlayer++)
    								{
    									if (GET_PLAYER((PlayerTypes)kPlayer).getTeam() == (TeamTypes)iMasterID)
    									{
    										CvWString szBuffer;
    										PlayerTypes eOldMasterPlayer;
    										eOldMasterPlayer = ((PlayerTypes)kPlayer);
    										szBuffer = gDLL->getText("TXT_CITYSTATE_WECHSEL_LOST_TEXT", GET_TEAM((TeamTypes)eCityState).getName().GetCString() , GET_TEAM((TeamTypes)this->getID()).getName().GetCString() );
    										gDLL->getInterfaceIFace()->addMessage(eOldMasterPlayer, true, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_UNITCAPTURE", MESSAGE_TYPE_INFO, NULL, (ColorTypes)GC.getInfoTypeForString("COLOR_RED"), -1, -1);
    									}
    								}
    
    							}
    //							assignVassal(eCityState,false);	//original Code
    							for (int jPlayer = 0; jPlayer < MAX_PLAYERS; jPlayer++)
    							{
    								if (GET_PLAYER((PlayerTypes)jPlayer).getTeam() == getID() )
    								{
    									CvWString szBuffer;
    									PlayerTypes eMasterPlayer;
    									eMasterPlayer = ((PlayerTypes)jPlayer);
    									CvPlayer& kMasterPlayer = GET_PLAYER((PlayerTypes)jPlayer);
    									
    									//Kathy begin: Ask Humans first
    									if ( kMasterPlayer.isHuman() )
    									{
    										// Ramkhamhaeng Beginn
    										CLinkList<TradeData> ourList;
    										CLinkList<TradeData> theirList; // wird nicht gebraucht
    										TradeData item;
    										setTradeItem(&item, TRADE_VASSAL);
    										//Test: New (siehe Assing Vassal)
    										item.m_iData = 1;
    										//Test: New End (siehe Assing Vassal)
    										
    										if (kLoopPlayer.canTradeItem(kMasterPlayer.getID(), item, false))
    										{
    											//Test: New (siehe Assing Vassal)
    											ourList.clear();
    											theirList.clear();
    											//Test: New End(siehe Assing Vassal)
    
    											ourList.insertAtEnd(item);
    
    											CvDiploParameters* pDiplo;
    											pDiplo = new CvDiploParameters(kLoopPlayer.getID());
    											FAssertMsg(pDiplo != NULL, "pDiplo must be valid");
    											pDiplo->setDiploComment((DiploCommentTypes)GC.getInfoTypeForString("AI_DIPLOCOMMENT_OFFER_VASSAL_CHANGE"));
    											pDiplo->setAIContact(true);
    											pDiplo->setTheirOfferList(ourList);
    											pDiplo->setOurOfferList(theirList);
    
    											gDLL->beginDiplomacy(pDiplo,eMasterPlayer);
    											//abContacted[GET_PLAYER((PlayerTypes)iI).getTeam()] = true; //Redundant, aber steht häufig mit im Code.
    										}
    										// Ramkhamhaeng End
    									}
    									else
    									{
    										assignVassal(eCityState,false);
    									}
    									//Kathy end: Ask Humans first
    									szBuffer = gDLL->getText("TXT_CITYSTATE_WECHSEL_TEXT", GET_TEAM((TeamTypes)eCityState).getName().GetCString() , GET_TEAM((TeamTypes)this->getID()).getName().GetCString() );
    									gDLL->getInterfaceIFace()->addMessage(eMasterPlayer, true, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_UNITCAPTURE", MESSAGE_TYPE_INFO, NULL, (ColorTypes)GC.getInfoTypeForString("COLOR_GREEN"), -1, -1);
    									break;
    								}
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    }
    //Kathy End Citystate-Quests
    Er gleicht weitgehend dem, was beim Handel "assignVassal" angeboten wird.

    Trotzdem sieht das öffnende Fenster so aus:

    Und zwar auch im Testspiel, wenn die betreffende KI tendenziell bereit ist, sich vasallieren zu lassen (anders als Fidel hier - wobei auch der laut dem Sinn meines Codes an dieser Stelle seine Unterwerfung anbieten sollte).
    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

  4. #49
    Registrierter Benutzer Avatar von Builder
    Registriert seit
    05.12.08
    Beiträge
    3.480
    Das hat wenn ich mich recht erinnere schon mal funktioniert.

    Im spiel mit Japan und Argentinien hatte ich das Angebot von "Moise Tchombe" .

    Das mus so 2017 gewesen sein.
    "Vegetarisch" ist indianisch und heißt "zu blöd zum Jagen"

    Bekennender Steam Hasser;)

Seite 4 von 4 ErsteErste 1234

Berechtigungen

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