Seite 1 von 180 123451151101 ... LetzteLetzte
Ergebnis 1 bis 15 von 2699

Thema: Der SDK-Fragen-Thread

  1. #1
    verschollen Avatar von deepwater
    Registriert seit
    23.04.11
    Beiträge
    1.580

    Idee Der SDK-Fragen-Thread

    Trotz The_Js einwänden, ob mangelnder Beteiligung, eröffne ich jetzt hiermit einen SDK-Fragen-Thread.
    Mit der Zeit kann man hier ja auch eine Link-Sammlung anlegen, wenn jemand einen Vorschlag hat -> einfach posten.

    Kleine Liste mit nützlichen Links:
    • codepad- ist eine nützliche Seite, wenn man gerade keinen Kompiler zur Hand hat-- Danke delnan (siehe Post #2)



    So hab dann auch gleich eine erste Frage:
    Kann man Zeiger als Standard-Parameter verwenden? Also z.B.:
    PHP-Code:
    void Funktion (int blablabool hoho Trueint *pZeiger NULL); 
    Geändert von Kathy (12. Januar 2012 um 20:08 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    04.03.07
    Beiträge
    4.694
    Ich wüsste nicht, wieso nicht Im Zweifelsfall kann man's auch auprobieren. Wenn man grade keinen Compiler zur Hand hat (oder keine Lust hat, extra ein VS-Projekt anzulegen ), geht auch codepad oder ideone. Scheint zu funzen.

  3. #3
    verschollen Avatar von deepwater
    Registriert seit
    23.04.11
    Beiträge
    1.580
    Dann verstehe ich das hier aber nicht:
    CvPlayer.cpp:
    PHP-Code:
    void CvPlayer::found(int iXint iYCvUnit *pUnit NULL)
    {
        
    CvCitypCity;
        
    BuildingTypes eLoopBuilding;
        
    UnitTypes eDefenderUnit;
        
    int iI
    CvPlayer.h:
    PHP-Code:
        void found(int iXint iYCvUnit *pUnit NULL); 
    Alles was ich hinzugefügt habe ist der Standardparameterzeiger. Aber er gibt mir beim Kompilieren folgende Fehler:
    Achtung Spoiler:
    HTML-Code:
    1>CvPlayer.cpp
    1>CvPlayer.cpp(6772) : error C2572: 'CvPlayer::found' : redefinition of default parameter : parameter 3
    1>        c:\Users\deepwater\Desktop\Planetfall pur\CvGameCoreDLL\CvPlayer.h(242) : see declaration of 'CvPlayer::found'
    1>NMAKE : fatal error U1077: ""C:/Program Files (x86)/2K Games/Firaxis Games/XXX Compiling CvGameCoreDLL/Microsoft Visual C++ Toolkit 2003/bin/cl.exe"": R³ckgabe-Code "0x2"
    1>Stop.
    Aber ich definiere den Zeiger doch gar nicht nochmal?

  4. #4
    Registrierter Benutzer
    Registriert seit
    04.03.07
    Beiträge
    4.694
    Doch, du gibst beide male nen Defaultwert an. Man sollte/darf den Defaultwert nur einmal (bei deklaration oder bei definition) angeben, selbst wenn er der gleiche ist =/
    Sollten dann bei der Deklaration stehen, damit fremder Code das sieht und nicht trotzdem den Zeiger übergeben muss. Also das = NULL in der .cpp streichen.

  5. #5
    verschollen Avatar von deepwater
    Registriert seit
    23.04.11
    Beiträge
    1.580

    Danke! Manchmal hilft es auch selbst nachzudenken. Bin gerad übrigens sogar selbst draufgekommen! Ehrlich!

  6. #6
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.450
    Wie/wo kann ich im SDK einstellen, dass jemand z.B. +1 oder +1 durch Handelswege bekommt wie nen Leader in Civ5? Ist vermutlich völlig banal, wenn man denn nur weiß, wo genau.... wer weiß es?
    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)

  7. #7
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Wenn du das per Stadt haben willst, dann gibt es bereits einen Tag in den TraitInfos.xml .
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  8. #8
    verschollen Avatar von deepwater
    Registriert seit
    23.04.11
    Beiträge
    1.580
    wo kann ich einen Installer finden für VC++ 2008 Express Edition auf deutsch. Finde keinen, nur für 2010. Wichtig ist, sollte halt auf deutsch sein.

  9. #9
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.450
    Zitat Zitat von The_J Beitrag anzeigen
    Wenn du das per Stadt haben willst, dann gibt es bereits einen Tag in den TraitInfos.xml .
    das ist leider prozentual.
    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)

  10. #10
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Zitat Zitat von deepwater Beitrag anzeigen
    wo kann ich einen Installer finden für VC++ 2008 Express Edition auf deutsch. Finde keinen, nur für 2010. Wichtig ist, sollte halt auf deutsch sein.
    Meinst du sowas?

  11. #11
    verschollen Avatar von deepwater
    Registriert seit
    23.04.11
    Beiträge
    1.580
    Zitat Zitat von alpha civ Beitrag anzeigen
    Meinst du sowas?
    Joa, so etwas ähnliches, hatte ich zwar auch schon gefunden, aber wenns nichts besseres gibt. Bin also noch offen für weietere Vorschläge.
    Ist zwar kind of nonsense einen Downloader per Downloader zu downloaden , aber .
    Edit: Wieso wird dazu als passendes Video "Star Wars: The Old Republic Trailer" angezeigt?

  12. #12
    Registrierter Benutzer
    Registriert seit
    04.03.07
    Beiträge
    4.694
    Weil softtonic eine von den Seiten ist, die meinen, ihre Besucher mit zusammenhanglosem Müll zuspammen zu müssen
    Mein Vorschlag wäre ja, einfach die englische Version zu benutzen

  13. #13
    verschollen Avatar von deepwater
    Registriert seit
    23.04.11
    Beiträge
    1.580
    PHP-Code:
            //neu
        
    if (isTradeRoute(PlayerTypes)1)
        {
            
    setTradeYield((YieldTypes)05);
        } 
    So funktionierts, Funktionen der CvCity-Klasse. isTradeRoutes erfordert PlayerTypes einfach casten. Dito bei SettradeYield.
    Wie kann man im SDK die Funktion addImmediateMessage(...) aufrufen?

  14. #14
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.450
    wofür stehen da die zahlen? vermutlich 0 für nahrung und 5 für 5 nahrung? und das if damit nur ein spieler mehr aus dem handelsweg bekommt und nicht beide? es soll nur der cityowner mit trait X mehr aus dem handelsweg bekommen.

    soll das irgendwo hier rein?

    PHP-Code:
    // XXX eventually, this needs to be done when roads are built/destroyed...
    void CvCity::updateTradeRoutes()
    {
        
    intpaiBestValue;
        
    CvCitypLoopCity;
        
    int iTradeRoutes;
        
    int iTradeProfit;
        
    int iValue;
        
    int iLoop;
        
    int iIiJiK;

        
    paiBestValue = new int[GC.getDefineINT("MAX_TRADE_ROUTES")];

        for (
    iI 0iI GC.getDefineINT("MAX_TRADE_ROUTES"); iI++)
        {
            
    paiBestValue[iI] = 0;
        }

        
    clearTradeRoutes();

        if (!
    isDisorder() && !isPlundered())
        {
            
    iTradeRoutes getTradeRoutes();

            
    FAssert(iTradeRoutes <= GC.getDefineINT("MAX_TRADE_ROUTES"));

            for (
    iI 0iI MAX_PLAYERSiI++)
            {
                if (
    GET_PLAYER(getOwnerINLINE()).canHaveTradeRoutesWith((PlayerTypes)iI))
                {
                    for (
    pLoopCity GET_PLAYER((PlayerTypes)iI).firstCity(&iLoop); pLoopCity != NULLpLoopCity GET_PLAYER((PlayerTypes)iI).nextCity(&iLoop))
                    {
                        if (
    pLoopCity != this)
                        {
                            if (!(
    pLoopCity->isTradeRoute(getOwnerINLINE())) || (getTeam() == GET_PLAYER((PlayerTypes)iI).getTeam()))
                            {
                                if (
    pLoopCity->plotGroup(getOwnerINLINE()) == plotGroup(getOwnerINLINE()) || GC.getDefineINT("IGNORE_PLOT_GROUP_FOR_TRADE_ROUTES"))
                                {
                                    
    iValue calculateTradeProfit(pLoopCity);

                                    for (
    iJ 0iJ iTradeRoutesiJ++)
                                    {
                                        if (
    iValue paiBestValue[iJ])
                                        {
                                            for (
    iK = (iTradeRoutes 1); iK iJiK--)
                                            {
                                                
    paiBestValue[iK] = paiBestValue[(iK 1)];
                                                
    m_paTradeCities[iK] = m_paTradeCities[(iK 1)];
                                            }

                                            
    paiBestValue[iJ] = iValue;
                                            
    m_paTradeCities[iJ] = pLoopCity->getIDInfo();

                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        
    iTradeProfit 0;

        for (
    iI 0iI GC.getDefineINT("MAX_TRADE_ROUTES"); iI++)
        {
            
    pLoopCity getTradeCity(iI);

            if (
    pLoopCity != NULL)
            {
                
    pLoopCity->setTradeRoute(getOwnerINLINE(), true);

                
    iTradeProfit += calculateTradeProfit(pLoopCity);
            }
        }

        for (
    iI 0iI NUM_YIELD_TYPESiI++)
        {
            
    setTradeYield(((YieldTypes)iI), calculateTradeYield(((YieldTypes)iI), iTradeProfit)); // XXX could take this out if handled when CvPlotGroup changes...
        
    }

        
    SAFE_DELETE_ARRAY(paiBestValue);

    oder hier?

    PHP-Code:
    int CvCity::getBaseTradeProfit(CvCitypCity) const
    {
        
    int iProfit std::min(pCity->getPopulation() * GC.getDefineINT("THEIR_POPULATION_TRADE_PERCENT"), plotDistance(getX_INLINE(), getY_INLINE(), pCity->getX_INLINE(), pCity->getY_INLINE()) * GC.getWorldInfo(GC.getMapINLINE().getWorldSize()).getTradeProfitPercent());

        
    iProfit *= GC.getDefineINT("TRADE_PROFIT_PERCENT");
        
    iProfit /= 100;

        
    iProfit std::max(100iProfit);

        return 
    iProfit;
    }

    int CvCity::calculateTradeProfit(CvCitypCity) const
    {
        
    int iProfit getBaseTradeProfit(pCity);

        
    iProfit *= totalTradeModifier(pCity);
        
    iProfit /= 10000;

        return 
    iProfit;
    }


    int CvCity::calculateTradeYield(YieldTypes eIndexint iTradeProfit) const
    {
        if ((
    iTradeProfit 0) && (GET_PLAYER(getOwnerINLINE()).getTradeYieldModifier(eIndex) > 0))
        {
            return ((
    iTradeProfit GET_PLAYER(getOwnerINLINE()).getTradeYieldModifier(eIndex)) / 100);
        }
        else
        {
            return 
    0;
        }
    }


    void CvCity::setTradeYield(YieldTypes eIndexint iNewValue)
    {
        
    int iOldValue;

        
    FAssertMsg(eIndex >= 0"eIndex expected to be >= 0");
        
    FAssertMsg(eIndex NUM_YIELD_TYPES"eIndex expected to be < NUM_YIELD_TYPES");

        
    iOldValue getTradeYield(eIndex);

        if (
    iOldValue != iNewValue)
        {
            
    m_aiTradeYield[eIndex] = iNewValue;
            
    FAssert(getTradeYield(eIndex) >= 0);

            
    changeBaseYieldRate(eIndex, (iNewValue iOldValue));
        }

    Geändert von Cybah (02. August 2011 um 11:50 Uhr)
    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)

  15. #15
    verschollen Avatar von deepwater
    Registriert seit
    23.04.11
    Beiträge
    1.580
    Zitat Zitat von Cybah Beitrag anzeigen
    wofür stehen da die zahlen? vermutlich 0 für nahrung und 5 für 5 nahrung? und das if damit nur ein spieler mehr aus dem handelsweg bekommt und nicht beide? es soll nur der cityowner mit trait X mehr aus dem handelsweg bekommen.
    In meinem Test bekam die Stadt 5 Nahrung zusätzlich. Wenn du das ganze Traitabhängig machen willst könnte das so aussehen. Und ja, ich würde das in UpdateTradeRoutes packen.
    PHP-Code:
    //neu
        
    if (getOwner().hasTrait(GC.getInfoTypeForString("TRAIT_XXX")))
        {
            
    setTradeYield((YieldTypesGC.getInfoTypeForString("YIELD_FOOD"), /*jetzt noch die Anzahl*/ 5);
        } 
    Damit updated er für jede City, und fügt bei entsprechendem Trait die Nahrung (o.ä.) hinzu. Bin mir aber nicht sicher, ob Inland Handelswege, also von Hauptstadt zu eigener Stadt auch als TradeRoute gewertet werden. Auf jeden Fall werden TradeRoutes von der Hauptstadt aus kalkuliert. Bin mir ziemlich sicher, dass TradeRoutes nur international sind.

Seite 1 von 180 123451151101 ... LetzteLetzte

Berechtigungen

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