Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 15 von 40

Thema: Der Hilfesuche-Thread (SDK, Übersetzungen, etc.)

  1. #1
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104

    Frage Der Hilfesuche-Thread (SDK, Übersetzungen, etc.)


    Hi Leute,

    Ich bräuchte einen Fachmann, der mir die angehängten Files zu einer GameCore.dll vereinen kann, oder mir zumindest erklärt, wie das funktioniert

    Gruß,
    Caesium
    Angehängte Dateien Angehängte Dateien
    Geändert von Caesium (20. Mai 2006 um 01:41 Uhr)
    Caesium Mod v2.4 (für Civ4 WL v2.13)

  2. #2
    sehr stylisch Avatar von Polly
    Registriert seit
    11.08.02
    Ort
    Kall
    Beiträge
    14.715
    Weißt du generell nicht, wie das funktioniert oder nur in diesem Fall nicht?

  3. #3
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Zitat Zitat von Polly
    Weißt du generell nicht, wie das funktioniert oder nur in diesem Fall nicht?
    Ich denke schon, dass ich weiß, wie es funktioniert, wohl ähnlich wie in Python; Unterschiede suchen und einbauen, denke ich. Nur habe ich in meinem Leben noch nie C++ programmiert. Gut, war mit Python genauso, aber nun auch noch C++ zu lernen? Oder kannst du mir da einen Tipp geben?
    Caesium Mod v2.4 (für Civ4 WL v2.13)

  4. #4
    Kamikazeblume
    Registriert seit
    12.11.05
    Beiträge
    19
    Soweit ich das verstanden habe, soll der SDK-Fachmann die o. gen. Dateien in die C++-Grundversion der GameCore.dll einbauen? Ist das so richtig?

    Wenn ja, kann ich das ja übernehmen.

  5. #5
    sehr stylisch Avatar von Polly
    Registriert seit
    11.08.02
    Ort
    Kall
    Beiträge
    14.715
    Zitat Zitat von Caesium
    Ich denke schon, dass ich weiß, wie es funktioniert, wohl ähnlich wie in Python; Unterschiede suchen und einbauen, denke ich. Nur habe ich in meinem Leben noch nie C++ programmiert. Gut, war mit Python genauso, aber nun auch noch C++ zu lernen? Oder kannst du mir da einen Tipp geben?
    Wenn du C++ lernst, lernst du im Gegensatz zu Python was für's restliche Leben.

    Ich dachte, deine Frage bezog sich mehr aufs Kompilieren. Anders als in Python musst du die Dateien zum Schluss selber zu einer DLL zusammenfügen. Dazu brauchst du spezielle Compiler, beispielsweise Visual Studio. Da musst du sämtliche (!) Dateien zum Schluss zusammenfügen, also auch die unveränderten.

    Ich habe mir das SDK noch nicht genau angeschaut, deswegen weiß ich nicht, ob da beispielsweise Projekt-Dateien für verschiedene Compiler angeboten werden, ansonsten muss man das auch noch alles per Hand machen.

    Das Zusammenfügen von C++ Dateien ist unter Umständen nicht so einfach, weil C++ eine recht komplexe Programmiersprache ist. Da ich das Design des Quellcodes allerdings nicht kenne, kann ich dazu auch nicht so viel sagen.

    Ich kann eventuell übers Wochenende mal reinschauen, wenn sich sonst niemand meldet, der sich mit dem SDK besser auskennt. Aber versprechen kann ich nichts. In der Regel dauert das halt recht lange, bis man sich da reingefunden hat. Nicht unbedingt weil man die Sprache nicht versteht sondern die speziell benutzte Klassen- und Dateistruktur nicht kennt und zu wenig Quellcodekommentare mitgeliefert werden.

  6. #6
    entre dos tierras Avatar von chilango
    Registriert seit
    04.04.06
    Ort
    DE CGN
    Beiträge
    118
    Wenn es nur ums kompilieren gehts hier eine "umsonst" moeglichkeit aus dem Civfanatics Forum:

    http://forums.civfanatics.com/showthread.php?t=166933

    Ansonsten der C++ ist eigentlich sehr schoen uebersichtlich. Muss man sagen bin erstaunt so sauberen Code zu sehen. Denke man hat das mit C++ auch recht schnell raus und davon hat man noch was wie Polly schon meinte im Gegensatz zu Python

  7. #7
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Ich werde mal schauen, ob ich da was selbst reißen kann. Wer will, der fühle sich dennoch genötigt, dies zu machen

    Eine weitere Änderung, die gmacht werden müsste, ist folgende:
    Zitat Zitat von Kael
    Religions dont spread naturally if a city already has a religion. It is handled in the void CvCity::doReligion() function in CvCity.cpp:

    Code:
    void CvCity::doReligion()
    {
    	CvCity* pLoopCity;
    	int iRandThreshold;
    	int iSpread;
    	int iLoop;
    	int iI, iJ;
    
    	CyCity* pyCity = new CyCity(this);
    	CyArgsList argsList;
    	argsList.add(gDLL->getPythonIFace()->makePythonObject(pyCity));	// pass in city class
    	long lResult=0;
    	gDLL->getPythonIFace()->callFunction(PYGameModule, "doReligion", argsList.makeFunctionArgs(), &lResult);
    	delete pyCity;	// python fxn must not hold on to this pointer
    	if (lResult == 1)
    	{
    		return;
    	}
    
    	if (getReligionCount() == 0)
    	{
    		for (iI = 0; iI < GC.getNumReligionInfos(); iI++)
    		{
    			if (!isHasReligion((ReligionTypes)iI))
    			{
    				if ((iI == GET_PLAYER(getOwnerINLINE()).getStateReligion()) || !(GET_PLAYER(getOwnerINLINE()).isNoNonStateReligionSpread()))
    				{
    					iRandThreshold = 0;
    
    					for (iJ = 0; iJ < MAX_PLAYERS; iJ++)
    					{
    						if (GET_PLAYER((PlayerTypes)iJ).isAlive())
    						{
    							for (pLoopCity = GET_PLAYER((PlayerTypes)iJ).firstCity(&iLoop); pLoopCity != NULL; pLoopCity = GET_PLAYER((PlayerTypes)iJ).nextCity(&iLoop))
    							{
    								if (pLoopCity->isConnectedTo(this))
    								{
    									iSpread = pLoopCity->getReligionInfluence((ReligionTypes)iI);
    
    									iSpread *= GC.getReligionInfo((ReligionTypes)iI).getSpreadFactor();
    
    									if (iSpread > 0)
    									{
    										iSpread /= max(1, (((GC.getDefineINT("RELIGION_SPREAD_DISTANCE_DIVISOR") * plotDistance(getX_INLINE(), getY_INLINE(), pLoopCity->getX_INLINE(), pLoopCity->getY_INLINE())) / GC.getMapINLINE().maxPlotDistance()) - 5));
    
    										//iSpread /= (getReligionCount() + 1);
    										iRandThreshold = max(iRandThreshold, iSpread);
    									}
    								}
    							}
    						}
    					}
    
    					if (GC.getGameINLINE().getSorenRandNum(GC.getDefineINT("RELIGION_SPREAD_RAND"), "Religion Spread") < iRandThreshold)
    					{
    						setHasReligion(((ReligionTypes)iI), true, true);
    						break;
    					}
    				}
    			}
    		}
    	}
    }
    Note the bolded check which only allows the spread function to run if the city doesn't already have a religion.

    The following is the doReligion we use in FfH2:

    Code:
    void CvCity::doReligion()
    {
    	CvCity* pLoopCity;
    	int iRandThreshold;
    	int iSpread;
    	int iLoop;
    	int iI, iJ;
    
    	CyCity* pyCity = new CyCity(this);
    	CyArgsList argsList;
    	argsList.add(gDLL->getPythonIFace()->makePythonObject(pyCity));	// pass in city class
    	long lResult=0;
    	gDLL->getPythonIFace()->callFunction(PYGameModule, "doReligion", argsList.makeFunctionArgs(), &lResult);
    	delete pyCity;	// python fxn must not hold on to this pointer
    	if (lResult == 1)
    	{
    		return;
    	}
    
    //FfH: Modified by Kael 05/17/2006 to allow up to 3 religions to spread naturally
    //	if (getReligionCount() == 0)
    
    	if (getReligionCount() < 3)
    
    //FfH: End Modify
    
    	{
    		for (iI = 0; iI < GC.getNumReligionInfos(); iI++)
    		{
    
    //FfH: Modified by Chalid 05/17/2006 to block opposed religion spreads
    //			if (!isHasReligion((ReligionTypes)iI))
    
    			if (!isHasReligion((ReligionTypes)iI) &&
                    !(isHasReligion((ReligionTypes)GC.getInfoTypeForString("RELIGION_THE_ORDER")) && iI == GC.getInfoTypeForString("RELIGION_THE_ASHEN_VEIL")) &&
                    !(isHasReligion((ReligionTypes)GC.getInfoTypeForString("RELIGION_THE_ASHEN_VEIL")) && iI == GC.getInfoTypeForString("RELIGION_THE_ORDER")))
    
    //FfH: End Modify
    
    			{
    				if ((iI == GET_PLAYER(getOwnerINLINE()).getStateReligion()) || !(GET_PLAYER(getOwnerINLINE()).isNoNonStateReligionSpread()))
    				{
    					iRandThreshold = 0;
    
    					for (iJ = 0; iJ < MAX_PLAYERS; iJ++)
    					{
    						if (GET_PLAYER((PlayerTypes)iJ).isAlive())
    						{
    							for (pLoopCity = GET_PLAYER((PlayerTypes)iJ).firstCity(&iLoop); pLoopCity != NULL; pLoopCity = GET_PLAYER((PlayerTypes)iJ).nextCity(&iLoop))
    							{
    								if (pLoopCity->isConnectedTo(this))
    								{
    									iSpread = pLoopCity->getReligionInfluence((ReligionTypes)iI);
    
    									iSpread *= GC.getReligionInfo((ReligionTypes)iI).getSpreadFactor();
    
    									if (iSpread > 0)
    									{
    										iSpread /= max(1, (((GC.getDefineINT("RELIGION_SPREAD_DISTANCE_DIVISOR") * plotDistance(getX_INLINE(), getY_INLINE(), pLoopCity->getX_INLINE(), pLoopCity->getY_INLINE())) / GC.getMapINLINE().maxPlotDistance()) - 5));
    
    										//iSpread /= (getReligionCount() + 1);
    
    //FfH: Added by Kael 05/17/2006 to modify the spread chances
    
                                            if (GET_PLAYER(getOwnerINLINE()).hasTrait((TraitTypes)GC.getInfoTypeForString("TRAIT_AGNOSTIC")))
                                            {
                                                iSpread = iSpread / 2;
                                            }
    
                                            iSpread = iSpread / ((getReligionCount() + 1) * (getReligionCount() + 1));
    
    //FfH: End Add
    
    										iRandThreshold = max(iRandThreshold, iSpread);
    									}
    								}
    							}
    						}
    					}
    
    					if (GC.getGameINLINE().getSorenRandNum(GC.getDefineINT("RELIGION_SPREAD_RAND"), "Religion Spread") < iRandThreshold)
    					{
    						setHasReligion(((ReligionTypes)iI), true, true);
    						break;
    					}
    				}
    			}
    		}
    	}
    }
    The stopping of spread on the opposed spread of the Ashen Veil and the Order and the modification of the spread chances if the leader has the Agnostic trait are FfH specific and probably aren't of much interest to you (unless you'd like to do something similiar). But the change of the amount of religions that will spread naturally to 3 (the number we felt was a fair amount for spread) and the exponential decrease in spread chance based on the number of existing religions is probably what you are looking for.
    Caesium Mod v2.4 (für Civ4 WL v2.13)

  8. #8
    Registrierter Benutzer
    Registriert seit
    07.11.05
    Ort
    Im Norden von Deutschland
    Beiträge
    430

    Idee

    Falls es hier keine schafft, könntest du dein Glück vllt. auch hier oder hier versuchen .
    Mfg

  9. #9
    SDK-Gott Avatar von MatzeHH
    Registriert seit
    31.10.05
    Beiträge
    759
    Biddeschön:
    http://home.arcor.de/matzehh/CvGameCoreDLL.dll

    Btw: Gutes Tool, um zwei Dateien zu vergleichen und Änderungen zu übernehmen: http://deckarm.com/araxis/

    Matze

  10. #10
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Zitat Zitat von MatzeHH
    Biddeschön
    Dankeschön

    Btw. Könntest du noch den Quellcode anhängen? Damit ich ihn auch habe.

    @Merging-Tool:
    Ich habe eines und das funktioniert wunderprächtig. Nur was bringt mir solch ein Tool, wenn ich mir dafür erst einmal C++ aneignen müsste. Zur Zeit habe ich genug anderes zu tun, als mich auch noch mit C++ zu quälen. Sollte ich aber mal die Mod stabil gemacht haben, werde ich mir gerne C++ näher ansehen.
    Geändert von Caesium (20. Mai 2006 um 01:44 Uhr)
    Caesium Mod v2.4 (für Civ4 WL v2.13)

  11. #11
    SDK-Gott Avatar von MatzeHH
    Registriert seit
    31.10.05
    Beiträge
    759
    Zitat Zitat von Caesium
    Dankeschön

    Btw. Könntest du noch den Quellcode anhängen? Damit ich ihn auch habe.
    Dein Wunsch ist mir Befehl:
    http://home.arcor.de/matzehh/Caesium_SDK_Files.rar
    Da sind natürlich nur die veränderten Dateien drin.

    Matze

  12. #12
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Auch auf die Gefahr hin, zu nerven, könntest du auch noch eine Version ohne die CulturalInfluences.zip basteln?
    Caesium Mod v2.4 (für Civ4 WL v2.13)

  13. #13
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Caesium Mod v2.4 (für Civ4 WL v2.13)

  14. #14
    SDK-Gott Avatar von MatzeHH
    Registriert seit
    31.10.05
    Beiträge
    759
    Heute nicht mehr...

    Matze

  15. #15
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    War ja auch nur eine generelle Fräge...
    Caesium Mod v2.4 (für Civ4 WL v2.13)

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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