Seite 61 von 62 ErsteErste ... 1151575859606162 LetzteLetzte
Ergebnis 901 bis 915 von 926

Thema: PAE - Bonusressourcen

  1. #901
    PAE.Macht.Antike! Avatar von Pie
    Registriert seit
    25.01.08
    Ort
    Noricum
    Beiträge
    16.347
    Aber hier kannst du mir helfen:

    Ich weiß nicht, warum er mir die lCitiesSpecialBonus nicht ordentlich initialisert.
    Er findet nix, wenn man in der letzten def bei doCheckCitySpecialBonus ein if pCity in lCitiesSpecialBonus macht.

    None setzt er es auch nicht, sodass der TradeAdvisor wieder spinnt, wenn ich nicht die getScriptData extra überprüf.

    Und falls du wieder geil aufs coden bist, die AI gehört wiedermal gemacht
    sobald ein Händler frei ist (entladen ist), könnte er ja checken, ob seine CIV eins der angeforderten Güter hat und zur entspr. Stadt bringen.

    Ich muss morgen wieder früh raus und komm erst wieder spät abends zu irgendwas...
    Pie's Ancient Europe (PAE)
    Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins letzte Detail!
    Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features.


    ... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!

  2. #902
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.445
    Wie soll das mit den lCitiesSpecialBonus funktionieren?

    Es gibt immer höchstens 3 Städte international in der Liste?
    Eine Stadt kann mehrfach drin stehen?

    €: ah, das sind die Sonderhandelsaufträge? Dann sollte wohl jede Stadt nur einmal drinstehen können.

    Probiers mal damit. Ich kann es grad nicht testen.
    Angehängte Dateien Angehängte Dateien
    Geändert von Flunky (08. Januar 2017 um 02:47 Uhr)

  3. #903
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.445
    Warum hast du in getCollectableGoods4Cultivation eingestellt, dass man auch Bonusgüter vom Plot kaufen kann, die noch garnicht aufgedeckt sind? Bei mir steht da:
    PHP-Code:
           if pLoopPlot.getBonusType(pLoopPlot.getTeam()) == eBonus: return iPrice 
    und bei dir
    PHP-Code:
           if pLoopPlot.getBonusType(-1) == eBonus: return iPrice 
    Man kann ja auch Güter erhandeln (Diploschirm), die man noch gar nicht aufgedeckt hat und sie folglich zum internationalen Preis auf den Getreidekarren laden.

  4. #904
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.445
    In init
    (pLoopCity,iter) = player.nextCity(iter, false)
    => (pLoopCity,iter) = loopPlayer.nextCity(iter, false)

    In addCityWithSpecialBonus fehlt dem ersten if noch ein :

  5. #905
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.445
    Ich hab's jetzt bei mir gemergt, aber richtig testen geht trotzdem net, weil addCityWithSpecialBonus und doUpdateCitiesWithSpecialBonus garnicht benutzt werden^^ Hast du da was im EventManager für?

    Was grad aufgetaucht ist:
    invalid literal for int()
    in doCheckCitySpecialBonus() bei
    eCityBonus = int(CvUtil.getScriptData(pCity, ["TradeSpecialBonus"],""))

    Korrektur:
    PHP-Code:
        eCityBonus =  int(CvUtil.getScriptData(pCity, ["TradeSpecialBonus"],""))

        if 
    eCityBonus == eBonus
    =>
    PHP-Code:
        eCityBonus =  int(CvUtil.getScriptData(pCity, ["TradeSpecialBonus"],"-1"))

        if 
    eCityBonus != -and eCityBonus == eBonus
    Geändert von Flunky (08. Januar 2017 um 13:50 Uhr)

  6. #906
    PAE.Macht.Antike! Avatar von Pie
    Registriert seit
    25.01.08
    Ort
    Noricum
    Beiträge
    16.347
    Zitat Zitat von Flunky Beitrag anzeigen
    Wie soll das mit den lCitiesSpecialBonus funktionieren?

    Es gibt immer höchstens 3 Städte international in der Liste?
    Eine Stadt kann mehrfach drin stehen?

    €: ah, das sind die Sonderhandelsaufträge? Dann sollte wohl jede Stadt nur einmal drinstehen können.

    Probiers mal damit. Ich kann es grad nicht testen.
    JA, es sollen maximal gleichzeitig 3 Städte sein, die einen Auftrag anbieten. Es können also auch nur 1 oder 2 einen gültigen Auftrag haben.

    Zitat Zitat von Flunky Beitrag anzeigen
    Warum hast du in getCollectableGoods4Cultivation eingestellt, dass man auch Bonusgüter vom Plot kaufen kann, die noch garnicht aufgedeckt sind? Bei mir steht da:
    PHP-Code:
           if pLoopPlot.getBonusType(pLoopPlot.getTeam()) == eBonus: return iPrice 
    und bei dir
    PHP-Code:
           if pLoopPlot.getBonusType(-1) == eBonus: return iPrice 
    Man kann ja auch Güter erhandeln (Diploschirm), die man noch gar nicht aufgedeckt hat und sie folglich zum internationalen Preis auf den Getreidekarren laden.
    Ups, ok, ein Versehen.

    Zitat Zitat von Flunky Beitrag anzeigen
    In init
    (pLoopCity,iter) = player.nextCity(iter, false)
    => (pLoopCity,iter) = loopPlayer.nextCity(iter, false)

    In addCityWithSpecialBonus fehlt dem ersten if noch ein :
    ok

    Zitat Zitat von Flunky Beitrag anzeigen
    Ich hab's jetzt bei mir gemergt, aber richtig testen geht trotzdem net, weil addCityWithSpecialBonus und doUpdateCitiesWithSpecialBonus garnicht benutzt werden^^ Hast du da was im EventManager für?

    Was grad aufgetaucht ist:
    invalid literal for int()
    in doCheckCitySpecialBonus() bei
    eCityBonus = int(CvUtil.getScriptData(pCity, ["TradeSpecialBonus"],""))

    Korrektur:
    PHP-Code:
        eCityBonus =  int(CvUtil.getScriptData(pCity, ["TradeSpecialBonus"],""))

        if 
    eCityBonus == eBonus
    =>
    PHP-Code:
        eCityBonus =  int(CvUtil.getScriptData(pCity, ["TradeSpecialBonus"],"-1"))

        if 
    eCityBonus != -and eCityBonus == eBonus
    OK, das int angepasst.

    Wo die 2 aufgerufen werden: im Eventmanager bei onEndPlayerTurn:

    PHP-Code:
        # Globale Ereignisse pro x-Runden
        
    if iPlayer == gc.getBARBARIAN_PLAYER():

         
    ## Goody-Doerfer erstellen (goody-huts / GoodyHuts / Goodies / Villages) ##
         # PAE V: Treibgut erstellen
         # PAE V: Barbarenfort erstellen
         # PAE Trade Cities Special Bonus
         
    if gc.getGame().getGameTurnYear() > -2400:
           if 
    iGameTurn 20 == 0:
             
    PAE_Barbaren.setGoodyHuts()
             
    PAE_Trade.addCityWithSpecialBonus()

           
    # --- PAE Trade:
           
    PAE_Trade.doUpdateCitiesWithSpecialBonus()


         
    # -- PAE V: Treibgut -> Strandgut
         
    PAE_Barbaren.doStrandgut() 
    Was mir grad eingefallen ist, eigentlich wollte ich dieses Feature eh nur für den/die Spieler.
    Theoretisch würd ma die KI eh nicht darauf ansetzen. Obwohl... es wäre ein bisschen eine Herausforderung, wenn doch. Aber eigentlich solls für die KI kein MUSS sein. Zufallsprinzip. Na egal. Momentan kann mans aber schon so spielen, wie es ist.
    Pie's Ancient Europe (PAE)
    Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins letzte Detail!
    Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features.


    ... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!

  7. #907
    PAE.Macht.Antike! Avatar von Pie
    Registriert seit
    25.01.08
    Ort
    Noricum
    Beiträge
    16.347

    Die spinnen die Firaxisler!

    Ich wollte grad einstellen, dass Getreide auch auf Savanne zu verbreiten ist, seh ich schon die große Schwachstelle:

    Man kann nicht einstellen, dass Getreide auf Schwemmland (Feature) und Wüste (Terrain) verbreitbar ist, gleichzeitig aber nicht auf Savanne (Feature) und Wüste (Terrain) verbreitbar sein soll. Sobald ein Feature (Schwemmland, Wald, Savanne) auf dem Plot vorkommt, wird nur das gecheckt mit allen Terrainarten, die man extra definiert hat.
    Das bedeutet, auch wenn Getreide auf Gras und Prärie wachsen darf, sobald ein Feature (Wald) drauf ist, hat das oberste Priorität und die Terrainarten müssen extra dafür definiert werden.

    Das Problem was jetzt ist: Ich erlaube Schwemmland + Wüste. Sobald ich da jetzt Savanne dazugeb, dann kann man auch auf einer Wüste mit ner Savanne drauf Getreide verbreiten. Das blöde ist nun, wenn man nen Bauernhof baut, verschwindet die Savanne und man hat dann eine Farm auf ner Wüste stehn, was eigentlich gar nicht erlaubt ist (laut den Terrain-Einstellungen). => großer Bug von Civ!

    Aber ich pfeif drauf. Ich hoffe, die Kartenersteller setzen keinen Wald oder Savanne auf nen Wüstenplot. Dann ist alles ok.
    Ich werde jetzt nämlich auch Getreide auf Gras und Prärieplots erlauben, wo ein Wald/Savanne drauf steht.

    Ansonsten werden die blauen Kreise nicht angezeigt bzw nur dann angezeigt, wenn man den Wald vorher gerodet hat.
    Is ja logisch, dass der Wald gerodet wird, wenn man nen Bauernhof dort bauen möchte... das weiß man als Civspieler ja.

    Es is ja saublöd, wenn man lauter flaches Waldgrasland besitzt und Getreide nicht als verbreitbar angezeigt wird. Oder?
    Pie's Ancient Europe (PAE)
    Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins letzte Detail!
    Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features.


    ... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!

  8. #908
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.445
    Zitat Zitat von Pie Beitrag anzeigen

    Die spinnen die Firaxisler!

    Ich wollte grad einstellen, dass Getreide auch auf Savanne zu verbreiten ist, seh ich schon die große Schwachstelle:

    Man kann nicht einstellen, dass Getreide auf Schwemmland (Feature) und Wüste (Terrain) verbreitbar ist, gleichzeitig aber nicht auf Savanne (Feature) und Wüste (Terrain) verbreitbar sein soll. Sobald ein Feature (Schwemmland, Wald, Savanne) auf dem Plot vorkommt, wird nur das gecheckt mit allen Terrainarten, die man extra definiert hat.
    Das bedeutet, auch wenn Getreide auf Gras und Prärie wachsen darf, sobald ein Feature (Wald) drauf ist, hat das oberste Priorität und die Terrainarten müssen extra dafür definiert werden.
    Das ist doch, was ich dir die ganze Zeit zu erklären versuche



    PHP-Code:
    bool CvPlot::canHaveBonus(BonusTypes eBonusbool bIgnoreLatitude) const
    {
        
    FAssertMsg(getTerrainType() != NO_TERRAIN"TerrainType is not assigned a valid value");

        if (
    eBonus == NO_BONUS)
        {
            return 
    true;
        }

    ## ist hier schon was?
        
    if (getBonusType() != NO_BONUS)
        {
            return 
    false;
        }

    ## Gipfel
        
    if (isPeak())
        {
            return 
    false;
        }

    ## Ein Feature ist vorhanden
        
    if (getFeatureType() != NO_FEATURE)
        {
    ## dann muss das Feature zugelassen sein
            
    if (!(GC.getBonusInfo(eBonus).isFeature(getFeatureType())))
            {
                return 
    false;
            }
    ## und das Terrain drunter auch. Leider keine Verknüpfung von Feature X mit Terrain Y (SDK-TODO?)
            
    if (!(GC.getBonusInfo(eBonus).isFeatureTerrain(getTerrainType())))
            {
                return 
    false;
            }
        }
    ## sonst reicht das Terrain
        
    else
        {
            if (!(
    GC.getBonusInfo(eBonus).isTerrain(getTerrainType())))
            {
                return 
    false;
            }
        }

    ## wenn die Ressource auf Hügeln vorkommen muss
        
    if (isHills())
        {
            if (!(
    GC.getBonusInfo(eBonus).isHills()))
            {
                return 
    false;
            }
        }
    ## xor auf Flachland
        
    else if (isFlatlands())
        {
            if (!(
    GC.getBonusInfo(eBonus).isFlatlands()))
            {
                return 
    false;
            }
        }

    ## Falls die Ressource [B]nicht[/B] am Flussufer vorkommen darf
        
    if (GC.getBonusInfo(eBonus).isNoRiverSide())
        {
            if (
    isRiverSide())
            {
                return 
    false;
            }
        }

    ## Ist die Insel groß genug
        
    if (GC.getBonusInfo(eBonus).getMinAreaSize() != -1)
        {
            if (
    area()->getNumTiles() < GC.getBonusInfo(eBonus).getMinAreaSize())
            {
                return 
    false;
            }
        }

    ## Breitengrad
        
    if (!bIgnoreLatitude)
        {
            if (
    getLatitude() > GC.getBonusInfo(eBonus).getMaxLatitude())
            {
                return 
    false;
            }

            if (
    getLatitude() < GC.getBonusInfo(eBonus).getMinLatitude())
            {
                return 
    false;
            }
        }
    ## Von einem Landplot erreichbar? Nimmt keine Rücksicht auf Gipfel oder sonstige Landfelder, auf denen man nicht gründen kann.
        
    if (!isPotentialCityWork())
        {
            return 
    false;
        }

        return 
    true;

    Das FeatureTerrain unspezifisch ist, ist echt sau blöd. Savanne ist ja bisher viel auf Wüste verbreitet. Ich wär eher dafür, Getreide tatsächlich nur auf Schwemmland direkt zuzulassen. Der BtS-Spieler ist es ja zumindest gewohnt, dass Bauernhöfe nur ohne Wald gebaut werden können. Die blauen Kringel kann ich auch so hinbiegen, indem die oben zitierte Funktion leicht modifiziert in Python nachgebaut wird.

    Pseudocode:
    PHP-Code:

    def canHaveBonus
    (pPloteBonusbIgnoreLatitude):
        if 
    eBonus == NO_BONUS:
            return 
    true

        
    ## ist hier schon was?
        
    if pPlot.getBonusType() != NO_BONUS:
            return 
    false
        
    ## Gipfel
        
    if pPlot.isPeak():
            return 
    false
        
    ## wenn die Ressource auf Hügeln vorkommen muss
        
    if pPlot.isHills()
            if !(
    GC.getBonusInfo(eBonus).isHills())
                return 
    false
        
    ## xor auf Flachland
        
    elif pPlot.isFlatlands():
            if  !(
    GC.getBonusInfo(eBonus).isFlatlands())
                return 
    false
        
    ## Falls die Ressource [B]nicht[/B] am Flussufer vorkommen darf
        
    if GC.getBonusInfo(eBonus).isNoRiverSide():
            if 
    pPlot.isRiverSide()
                return 
    false

        
    ## Ist die Insel groß genug
        
    if GC.getBonusInfo(eBonus).getMinAreaSize() != -1:
            if 
    pPlot.area().getNumTiles() < GC.getBonusInfo(eBonus).getMinAreaSize():
                return 
    false
         
    ## Breitengrad
        
    if !bIgnoreLatitude:
            if 
    pPlot.getLatitude() > GC.getBonusInfo(eBonus).getMaxLatitude():
                return 
    false
            
    if pPlot.getLatitude() < GC.getBonusInfo(eBonus).getMinLatitude():
                return 
    false
        
    ## Von einem Landplot erreichbar? Nimmt keine Rücksicht auf Gipfel oder sonstige Landfelder, auf denen man nicht gründen kann.
        
    if  !pPlot.isPotentialCityWork():
            return 
    false

        
    ## Ein Feature ist vorhanden
        
    if pPlot.getFeatureType() != NO_FEATURE:
            
    ## dann muss das Feature zugelassen sein und das Terrain drunter auch
            
    if GC.getBonusInfo(eBonus).isFeature(pPlot.getFeatureType()):
                if 
    GC.getBonusInfo(eBonus).isFeatureTerrain(pPlot.getTerrainType()):
                    return 
    True    
            elif GC
    .getBonusInfo(eBonus).isTerrain(pPlot.getTerrainType()) and pPlot.getFeatureType().isRemovable():
                return 
    True
        
    ## sonst reicht das Terrain
        
    elif GC.getBonusInfo(eBonus).isTerrain(pPlot.getTerrainType()):
            return 
    True

        
    return False 
    Geändert von Flunky (16. Juni 2017 um 01:20 Uhr)

  9. #909
    PAE.Macht.Antike! Avatar von Pie
    Registriert seit
    25.01.08
    Ort
    Noricum
    Beiträge
    16.347
    Ich dachte, das wird nur im sdk gecheckt?

    hier meine aktuelle bonusinfo.xml
    Pie's Ancient Europe (PAE)
    Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins letzte Detail!
    Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features.


    ... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!

  10. #910
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.445
    Das wird normalerweise nur im SDK gecheckt, aber es spricht ja nix dagegen, so eine Funktion selber in Python zu schreiben. Ich hab mich halt mit der Verbreitung auf die SDK-Funktion bezogen, um da Konsistenz zu erreichen. Die wär so ja weiterhin gegeben, weil wir eben nachgucken, was in der XML eingestellt ist, es nur leicht anders interpretieren. Ursprünglich hattest du für alle Ressourcen Verbreitungsbedingungen von Hand festgelegt, die halt häufig wenig mit den Plotbedingungen der Ressourcen gemäß XML zu tun hatten.

  11. #911
    PAE.Macht.Antike! Avatar von Pie
    Registriert seit
    25.01.08
    Ort
    Noricum
    Beiträge
    16.347
    Jo, weil ich es nicht wusste.
    Aber jetzt hab ich auch den Erzen die Features hinzugefügt, weil ich glaube mich zu erinnern, dass bei Zufallskarten die Bonusresourcen nach der Erschaffung der Terrains und Features gesetzt werden. Und einem Erz isses ja wurscht, ob auf nem Hügel Wald steht oder nur Grashalme drauf wachsen.

    Aber das extra im Python zu schreiben bringt ja nicht viel. Deine Idee die Resourcen nach den XML Einstellungen der BonusInfo zu checken war eh super! Somit stellt man das nur 1x im XML ein und es gilt für Zufallskarten genauso wie für die Verbreitung.
    Wenn wir das im SDK "korrigieren" werden, dann kann ich ja die Terrains prioritär behandeln.
    Pie's Ancient Europe (PAE)
    Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins letzte Detail!
    Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features.


    ... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!

  12. #912
    Registrierter Benutzer Avatar von AndreP
    Registriert seit
    05.06.07
    Ort
    Scholven
    Beiträge
    3.929
    Wäre es nicht am sinnvollsten eine Funktion zu haben, die eine Verbreitung nur auf bewässerten und mit der entsprechenden Tech auf daneben liegenden Feldern erlaubt?

    Jetzt kann ich auf unbewässerten Feldern mit Getreide einen Bauernhof bauen, was normalerweise auch nicht erlaubt ist.

    Diese verbreiten keine Bewässerung (weil sie ja selbst nicht Bewässert sind), aber eigentlich sollten sie dies mit der entsprechenden Tech tun.

  13. #913
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.445
    @Andre: hä?

    @Pie: natürlich soll sich auf die XML-Einstellungen bezogen werden. Aber die kann ich ja genausogut in Python abfragen, wenn da halt leicht andere Regeln gelten sollen Auf Zufallskarten soll Getreide nur ohne Wald vorkommen, wie es halt jetzt auch ist. Also FeatureTerrain nur Schwemmland+Wüste, ansonsten nur reine Terrain-Regeln. Aber in der Verbreitung soll ein entfernbares Feature (Wald, Savanne) halt ignoriert werden, es kann dann trotzdem verbreitet werden*.

    Gut, dass du den Metallen die Features mitgegeben hast. Da glaubst du richtig, in BtS kommen die nur auf Feature-losen Plots vor.

    * Für den besonderen Spielspaß könnte man hier einbauen, dass zwar der Kringel angezeigt wird, die Verbreitung aber ein vorheriges Abholzen von Wald erfordert. Oder gar zunächst gerodet werden muss und die Farm gebaut und in der Runde, in der die Farm fertig wird, entsteht erst die Ressource.

  14. #914
    PAE.Macht.Antike! Avatar von Pie
    Registriert seit
    25.01.08
    Ort
    Noricum
    Beiträge
    16.347
    Wurscht.

    Ist doch ok, wenn man Getreide nicht zwingend am Fluss verbreiten muss. Der Regen reicht doch auch! Ausserdem, wenn du es nicht an Flussnähe verbreitest bekommst du auch weniger Nahrung raus (weil unbewässert). Es ist eben deine Entscheidung was du tust.
    Pie's Ancient Europe (PAE)
    Erlebe mit dieser CIV IV Mod(ifikation) hautnah das Zeitalter der Antike bis ins letzte Detail!
    Mit bahnbrechenden Erweiterungen und vielen ein- und erstmaligen Features.


    ... im Übrigen bin ich der Meinung, dass Karthago wieder aufgebaut werden muss!

  15. #915
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.445
    Seh ich das richtig, dass du Oreichalkos deaktiviert hast?

Seite 61 von 62 ErsteErste ... 1151575859606162 LetzteLetzte

Berechtigungen

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