Seite 11 von 16 ErsteErste ... 789101112131415 ... LetzteLetzte
Ergebnis 151 bis 165 von 229

Thema: [Tortuga] Waren, Geländeerträge, Produktion

  1. #151
    hat den Blues Avatar von Elwood
    Registriert seit
    05.11.07
    Beiträge
    4.352
    Nein, mehr ist nicht geplant, nur Dschungel zu Tropenwald
    Geschichten zum Lesen ...

    Der seltsame Fall des William Penn | Col II --- TaC-Mod | abgebrochen
    Wahnsinn mit Methode? | Col II --- TaC-Mod | beendet | SdM April 2012
    Visiting Vvardenfell | TES III Morrowind | pausiert
    Es war einmal (noch) kein Portugal | Civ IV --- PAE-Mod | beendet
    Pack die Thermohose ein ... | Icewind Dale --- Trials of the Luremaster | läuft
    NEU: [RL] ... wie Gott nach Frankreich - Elwoods ??? | Modellbaubericht | läuft

  2. #152
    Das faule Dingsi :3 Avatar von MrKrutzi
    Registriert seit
    15.06.13
    Beiträge
    1.138
    Okay, innerhalb von 72 Stunden ist es da
    Soll ichs dann gleich hochladen, wenns fertig ist?

  3. #153
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Wenn es funktioniert , klar. Ich bin gespannt

  4. #154
    Das faule Dingsi :3 Avatar von MrKrutzi
    Registriert seit
    15.06.13
    Beiträge
    1.138
    Wenn es funktioniert
    UUUUUND: Es funzt nicht
    Da man ja im Gegensatz zu WW kein Improvement braucht, sondern ein bereits existierendes Feature abreißt, muss man da ein wenig umdenken. Soweit kein Problem, aber: Ich bekomme es nicht gebacken, dass sich ein Feature in ein anderes umwandelt.
    Sicherlich hab ich da irgendeine Datei vergessen, zu ändern *hust*
    Liege ich richtig in der Annahme, dass nur die CvEventManager.py und die CIV4BuildInfos.xml angepasst werden muss?

  5. #155
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Ich muss zugeben, dass ich mich da auch erst reinfuchsen müsste. Und dazu bin ich heute leider nicht gekommen. Ich schaue es mir in den nächsten Tagen aber mal an.

  6. #156
    Das faule Dingsi :3 Avatar von MrKrutzi
    Registriert seit
    15.06.13
    Beiträge
    1.138
    Kein Problem

    Werde moin mal nach Fehlern suchen gehen - innerhalb von 72 Stunden hatte ich ja versprochen, wäre es da

  7. #157
    Das faule Dingsi :3 Avatar von MrKrutzi
    Registriert seit
    15.06.13
    Beiträge
    1.138
    Also das mit den 72 Stunden war wohl etwas übertrieben *hust*

    Egal, was ich mache, er möchte ein Feature nicht in ein anderes ändern... Wird abgeholzt wie normal, obwohl der Befehl ausgeführt wird.
    Unter anderem habe ich aber rausgefunden, wie ein Land-Geländefeld die Wassereigenschaften erhalten kann - zumindest gibt's dann kleine Landschiffchen, sieht ganz nett aus; was mir aber nicht weiterhilft...

    Werde da noch ein wenig rumexperimentieren... Falls jemand eine Idee hätte, bitte raus damit

  8. #158
    hat den Blues Avatar von Elwood
    Registriert seit
    05.11.07
    Beiträge
    4.352
    Erst mal schön, dass du dich da hinterklemmst , wenn´s die 72h nicht werden, kein Beinbruch .

    Ich habe jetzt vom Code gar keinen Plan, aber eine Idee: Schau mal, ob du erst ein Feature löschst, und dann ein neues erstellst statt gleich das erst durch ein zweites zu ersetzen. Evtl. hilft dir hier (wie bei so vielen python Sachen) ein Blick in den PAE-Code. Dort können mWn Meteoriten vom Himmel fallen und Wälder verbrennen, statt grüner Laubbäume stehen dort danach noch so kohlige Stummel, das ist ja faktisch genau das, das Ersetzen eines Features durch ein anderes.

    Hier mal einen Codeschnipsel, schau mal ob der reicht, sonst wühle dort selber mal in der CvEventManager.py


    Achtung Spoiler:
    Code:
     def doMeteorites(self):
    
        feat_meteor = gc.getInfoTypeForString('FEATURE_METEORS')
        feat_brand = gc.getInfoTypeForString('FEATURE_SMOKE')
    
        feat_swamp = gc.getInfoTypeForString('FEATURE_SWAMP')
        feat_flood_plains = gc.getInfoTypeForString('FEATURE_FLOOD_PLAINS')
        feat_oasis = gc.getInfoTypeForString('FEATURE_OASIS')
    
        feat_forest = gc.getInfoTypeForString('FEATURE_FOREST')
        feat_forest2 = gc.getInfoTypeForString('FEATURE_DICHTERWALD')
        feat_forest_burnt = gc.getInfoTypeForString('FEATURE_FOREST_BURNT')
    
        iImpType1 = gc.getInfoTypeForString("IMPROVEMENT_LUMBER_CAMP")
    
        bonus_magnetit = gc.getInfoTypeForString("BONUS_MAGNETIT")
        bonus_oreichalkos = gc.getInfoTypeForString("BONUS_OREICHALKOS")
        bonusPlotArray = []
    
    #  0 = WORLDSIZE_DUEL
    #  1 = WORLDSIZE_TINY
    #  2 = WORLDSIZE_SMALL
    #  3 = WORLDSIZE_STANDARD
    #  4 = WORLDSIZE_LARGE
    #  5 = WORLDSIZE_HUGE
        iMaxEffect = 0
        iMapSize = gc.getMap().getWorldSize()
        if iMapSize == 0: iMax = 1
        elif iMapSize == 1: iMax = 2
        elif iMapSize == 2: iMax = 4
        elif iMapSize == 3: iMax = 6
        elif iMapSize == 4: iMax = 8
        elif iMapSize == 5: iMax = 10
        else: iMax = 12
    
        # 20 Chancen fuer max. iMax Meteorstrikes
        for i in range (20):
    
            # Maximal iMax Effekte
            if iMaxEffect == iMax: break
    
            iMapW = gc.getMap().getGridWidth()
            iMapH = gc.getMap().getGridHeight()
    
            iRandX = self.myRandom(iMapW, None)
            iRandY = self.myRandom(iMapH, None)
            pPlot = gc.getMap().plot(iRandX, iRandY)
            if None != pPlot and not pPlot.isNone():
                iMaxEffect += 1
    
                # Modernisierung und Strasse entfernen
                if not pPlot.isCity():
                   pPlot.setRouteType(-1)
                   pPlot.setImprovementType(-1)
    
                iPlayer = pPlot.getOwner()
    
                if pPlot.isVisibleToWatchingHuman():
                  CyCamera().JustLookAtPlot(pPlot)
                  popupInfo = CyPopupInfo()
                  popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_TEXT)
                  popupInfo.setText(CyTranslator().getText("TXT_KEY_DISASTER_METEORITES",("",)))
                  popupInfo.addPopup(gc.getGame().getActivePlayer())
                  CyInterface().addMessage(gc.getGame().getActivePlayer(), True, 12, CyTranslator().getText("TXT_KEY_DISASTER_METEORITES",("",)),"AS2D_METEORSTRIKE",2,gc.getFeatureInfo(feat_meteor).getButton(),ColorTypes(7),iRandX,iRandY,True,True)
    
    
                # Effekt
                iEffect = gc.getInfoTypeForString("EFFECT_METEORS")
                CyEngine().triggerEffect( iEffect, pPlot.getPoint() )
    
                # Stadt
                if pPlot.isCity():
                  pCity = pPlot.getPlotCity()
                  iPop_alt = pCity.getPopulation()
                  iPop_neu = int(pCity.getPopulation() / 2)
                  if iPop_neu < 2: iPop_neu = 1
                  pCity.setPopulation(iPop_neu)
                  pCity.setFood(0)
                  if iPlayer != -1:
                    if pPlot.isVisibleToWatchingHuman():
                      if iPlayer == gc.getGame().getActivePlayer():
                        CyInterface().addMessage(iPlayer, True, 12, CyTranslator().getText("TXT_KEY_DISASTER_METEORITES_CITY",(pCity.getName(),iPop_neu,iPop_alt)),None,2,gc.getFeatureInfo(feat_meteor).getButton(),ColorTypes(7),iRandX,iRandY,True,True)
                      else:
                        CyInterface().addMessage(gc.getGame().getActivePlayer(), True, 12, CyTranslator().getText("TXT_KEY_DISASTER_METEORITES_CITY_OTHER",(pOwner.getCivilizationAdjective(2),pCity.getName())),None,2,gc.getFeatureInfo(feat_meteor).getButton(),ColorTypes(2),iRandX,iRandY,True,True)
    
                  # City, Wahrscheinlichkeit in %
                  self.doKillUnits(pPlot,10)
                  self.doDestroyCityBuildings(pCity,33)
                  # Stadtmauern zerstoeren
                  self.doDestroyWalls(pCity)
    
                # rundherum Brand generieren und dabei 50:50 Modernis und Strassen entfernen
                for i in range(3):
                  for j in range(3):
                    loopPlot = gc.getMap().plot(iRandX - 1 + i, iRandY - 1 + j)
                    if None != loopPlot and not loopPlot.isNone():
                      if loopPlot.getFeatureType() != feat_swamp and loopPlot.getFeatureType() != feat_flood_plains and not loopPlot.isPeak() \
                      and not loopPlot.isWater() and loopPlot.getFeatureType() != feat_oasis:
                        if loopPlot.getFeatureType() == feat_forest or loopPlot.getFeatureType() == feat_forest2:
                           loopPlot.setFeatureType(feat_forest_burnt,0)
                        else:
                          loopPlot.setFeatureType(feat_brand,0)
                        if loopPlot.getImprovementType() == iImpType1: loopPlot.setImprovementType(-1)
    
                      if self.myRandom(2, None) == 1:
                        if not loopPlot.isCity():
                          loopPlot.setRouteType(-1)
                          loopPlot.setImprovementType(-1)
                      self.doKillUnits(loopPlot,20)
    
                    # Plot fuer Magnetit/Oreichalkos Bonus checken
                    if not loopPlot.isWater() and not loopPlot.isCity() and not loopPlot.isPeak() and loopPlot.getBonusType(loopPlot.getOwner()) == -1:
                      bonusPlotArray.append(loopPlot)
    
    
        # Chance einer neuen Bonus Resource, 25% - danach 50:50 - Magnetit:Oreichalkos
        if len(bonusPlotArray) > 0:
            iRand = self.myRandom(8, None)
            if iRand < 2:
              if iRand == 0: iNewBonus = bonus_magnetit
              else: iNewBonus = bonus_oreichalkos
              iRandPlot = self.myRandom(len(bonusPlotArray), None)
              bonusPlotArray[iRandPlot].setBonusType(iNewBonus)
              if bonusPlotArray[iRandPlot].getOwner() > -1:
                if gc.getPlayer(bonusPlotArray[iRandPlot].getOwner()).isHuman():
                  CyInterface().addMessage(bonusPlotArray[iRandPlot].getOwner(), True, 10, CyTranslator().getText("TXT_KEY_NEW_BONUS",(gc.getBonusInfo(iNewBonus).getDescription(),)), None, 2, gc.getBonusInfo(iNewBonus).getButton(), ColorTypes(14), bonusPlotArray[iRandPlot].getX(), bonusPlotArray[iRandPlot].getY(), True, True)
    Geschichten zum Lesen ...

    Der seltsame Fall des William Penn | Col II --- TaC-Mod | abgebrochen
    Wahnsinn mit Methode? | Col II --- TaC-Mod | beendet | SdM April 2012
    Visiting Vvardenfell | TES III Morrowind | pausiert
    Es war einmal (noch) kein Portugal | Civ IV --- PAE-Mod | beendet
    Pack die Thermohose ein ... | Icewind Dale --- Trials of the Luremaster | läuft
    NEU: [RL] ... wie Gott nach Frankreich - Elwoods ??? | Modellbaubericht | läuft

  9. #159
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Könnte es sein, dass du nur noch den Rückgabewert der Pythonmethode abändern musst, damit die Methode nicht weiter abgearbeitet wird?

    Hört sich so an, als ob es so abläuft:
    1. Feature wird durch deinen Code umgewandelt
    2. Neues Feature wird entfernt.

  10. #160
    Das faule Dingsi :3 Avatar von MrKrutzi
    Registriert seit
    15.06.13
    Beiträge
    1.138
    Hm... Ram, ich glaube du bist ein Genie *lach*
    Könnte womöglich sein...

    Elwood, werde ich mir zu Herzen nehmen, danke dir

  11. #161
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Ich hab den Staffelstab von MrKrutzi mal übernommen

    Nachdem ich mir einen Überblick verschafft habe würde ich es so machen:

    1. Der neue Feature-Typ FEATURE_TROPICAL_FORREST ersetzt die Einträge von FEATURE_JUNGLE in XML/Units/CIV4BUILDINFOS.xml. Dadurch lässt sich (undurchdringlicher) Dschungel nicht mehr roden aber der leichter Regenwald.

    2. In die obige Datei wird eine neuer Eintrag für das Roden von FEATURE_JUNGLE eingetragen.
    Das Ende dieses BuildTypes wird in Python abgefragt und ein anderes Feature auf das Feld gesetzt.

  12. #162
    Das faule Dingsi :3 Avatar von MrKrutzi
    Registriert seit
    15.06.13
    Beiträge
    1.138
    *lach*
    Hauptsache es funktioniert besser als mein kleines Experiment
    Danke dir!

  13. #163
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Das Feld als Pionier umzuwandeln habe ich jetzt schon drin.

    Ich hänge gerade bei der Alternative „Erkunden per Späher” bei der wir einen Scout in den Dschungel senden können und er ein paar Runden das Feld erkundet. Dabei kann er sterben oder Bonusressourcen finden. Am Ende wird das Feld dann wie beim Pioniereinsatz umgewandelt.
    Leider scheint es so zu sein, dass die Bauaufträge, die eine Einheit ausführen kann, sehr eng mit dem Pionierberuf verzahnt ist. D.h. ich kann nicht einfach einem Scout die Möglichkeit für Modernisierungsaufträge geben.

  14. #164
    hat den Blues Avatar von Elwood
    Registriert seit
    05.11.07
    Beiträge
    4.352
    Wichtig wäre vor allem, wie auch immer die Lösung aussieht, dass die KI das auch begreifen und anwenden kann. Wäre langweilig, wenn sie dem Spieler keine Konkurrenz machen kann um die Entdeckung des Dschungels und seiner Schätze. Aus diesem Grund haben wir ja bis jetzt auch noch so "rumgeeiert" wie das roden/aufdecken/durchsuchen des tiefen Dschungels im Spiel funktionieren soll.
    Geschichten zum Lesen ...

    Der seltsame Fall des William Penn | Col II --- TaC-Mod | abgebrochen
    Wahnsinn mit Methode? | Col II --- TaC-Mod | beendet | SdM April 2012
    Visiting Vvardenfell | TES III Morrowind | pausiert
    Es war einmal (noch) kein Portugal | Civ IV --- PAE-Mod | beendet
    Pack die Thermohose ein ... | Icewind Dale --- Trials of the Luremaster | läuft
    NEU: [RL] ... wie Gott nach Frankreich - Elwoods ??? | Modellbaubericht | läuft

  15. #165
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Die KI hat zwar erst einmal ihre 6 Kühnen Pioniere in die Kolonie gestellt, aber immerhin fing sie später an ein Feld umzuwandeln.

    Ich glaube ich habe jetzt eine sehr gute Lösung gefunden, die wir später noch an anderen Stellen benutzen können.
    Grundidee ist es, dass auch andere Berufe/Einheitentypen Bauaufträge ausführen können. Damit dann nicht alle die gleichen Aufträge erhalten werden diese in Gruppen aufgeteilt. D.h. eine Gruppe wird für die Pioniere verwendet und eine für das Erkunden des Dschungels. Mal sehen ob die KI damit klar kommt
    Wenn das klappt könnte man auch eine Gruppe für militärische Aktionen einführen. Dann könnte man Felder "plündern" was eine gewisse Zeit dauert und intern wie ein Bauauftrag abgehandelt wird.
    Angehängte Grafiken Angehängte Grafiken

Seite 11 von 16 ErsteErste ... 789101112131415 ... LetzteLetzte

Berechtigungen

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