Seite 5 von 7 ErsteErste 1234567 LetzteLetzte
Ergebnis 61 bis 75 von 104

Thema: Partisanen-Event abändern

  1. #61
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.027
    Zitat Zitat von The_J Beitrag anzeigen
    Wenn ich mir die Standard-Partisanen-Funktion in Python\EntryPoints\CvRandomEventInterface.py so anschaue, sollte das eh' schon nicht passieren, da überprüft wird, ob auf dem Feld feindliche Einheiten stehen.

    Kannst ja aber mal überprüfen, ob's bei dir genauso aussieht:
    Achtung Spoiler:

    PHP-Code:
    def applyPartisans1(argsList):
        
    iEvent argsList[0]
        
    kTriggeredData argsList[1]
        
    player gc.getPlayer(kTriggeredData.ePlayer)    
        
    capital player.getCapitalCity()
        
    plot gc.getMap().plot(kTriggeredData.iPlotXkTriggeredData.iPlotY)
        
        if 
    None != capital and not capital.isNone():
            
    iNumUnits getNumPartisanUnits(plotkTriggeredData.ePlayer)

            
    listPlots = []
            for 
    i in range(3):
                for 
    j in range(3):
                    
    loopPlot gc.getMap().plot(kTriggeredData.iPlotX 1kTriggeredData.iPlotY 1)
                    if 
    None != loopPlot and not loopPlot.isNone() and (!= or != 1):
                        if 
    not (loopPlot.isVisibleEnemyUnit(kTriggeredData.ePlayer) or loopPlot.isWater() or loopPlot.isImpassable()):
                            
    listPlots.append(loopPlot)
            
            if 
    len(listPlots) > 0:
                for 
    i in range(iNumUnits):
                    
    iPlot gc.getGame().getSorenRandNum(len(listPlots), "Partisan event placement")
                    
    player.initUnit(capital.getConscriptUnit(), listPlots[iPlot].getX(), listPlots[iPlot].getY(), UnitAITypes.UNITAI_ATTACKDirectionTypes.DIRECTION_SOUTH
    "(i != 1 or j != 1):"
    Diesen Teil musste ich bei mir kopieren, k. A: ob es daran liegen kann, ich glaube eher nicht.

  2. #62
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    prinzipiell sagt die Stelle aus, dass auf dem Feld, auf dem die Stadt ist, keine Einheit entstehen soll, das wäre also schon richtig.
    Allerdings wird in der nächsten Zeile überprüft, ob sich auf dem ausgewählten Feld ne feindliche Einheit befindet, also sollte das Stadtfeld spätestens hier rausfliegen .
    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)


  3. #63
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.027
    Vielleicht zieht die Einheit erst, nachdem die Partisanen gesetzt wurden - ich hatte noch nie zweimal hintereinander diese Rückeroberung. Ist nicht wahrscheinlich, aber naja. Ich hoffe, es funktioniert jetzt.

  4. #64
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.027
    Ja, ja, ich weiß, Leichenschändung...
    Ich habe einen Bug gehabt neulich. Eine KI hat eine Stadt von mir erobert, in der ich 100% Kultur hatte, und zwar definitiv mehr als die KI, nämlich nicht 100% von 0. Dennoch erhielt ich keine Partisanen. Als ich dagegen die Stadt zurückeroberte, kam 1 gegnerischer Partisan, obwohl er in dieser Runde keine Kultur erzeugen konnte. Woran kann das liegen?

    Hier der Code:
    PHP-Code:
            # Partisans!
            
    if city.getPopulation and iOwner != -and iPlayer != -1:
                
    owner gc.getPlayer(iOwner)
                if 
    not owner.isBarbarian() and owner.getNumCities() > 0:
                    if 
    gc.getTeam(owner.getTeam()).isAtWar(gc.getPlayer(iPlayer).getTeam()):
                        if 
    gc.getNumEventTriggerInfos() > 0# prevents mods that don't have events from getting an error
                            
    iEvent CvUtil.findInfoTypeNum(gc.getEventTriggerInfogc.getNumEventTriggerInfos(),'EVENTTRIGGER_PARTISANS')
                            if 
    iEvent != -and gc.getGame().isEventActive(iEvent) and owner.getEventTriggerWeight(iEvent) < 0:
                                
    triggerData owner.initTriggeredData(iEventtrue, -1city.getX(), city.getY(), iPlayercity.getID(), -1, -1, -1, -1

  5. #65
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Hat gar nix mit Kultur zu tun .
    Die Civ, die die Stadt verliert, muss Emanzipation haben (außer natürlich du hast das schon geändert), sonst gar nix .
    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)


  6. #66
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.027
    Voraussetzung ist die Technologie Ehrencodex, die hatten aber zu diesem Zeitpunkt schon beide.

    War übrigens der falsche Trigger, nämlich der von "onCityRazed". Dieser hier ist der richtige bei einer Stadteroberung, bin nicht sicher, ob es da große Unterschiede gibt.
    PHP-Code:
            # Partisans!
            
    print iOwner
            iPlayer 
    pCity.getOwner()
            
    iOwner pCity.getPreviousOwner ()
            
            if 
    pCity.getPopulation and iOwner != -and iPlayer != -1:
                
    owner gc.getPlayer(iOwner)
                if 
    not owner.isBarbarian() and owner.getNumCities() > 0:
                    if 
    gc.getTeam(owner.getTeam()).isAtWar(gc.getPlayer(iPlayer).getTeam()):
                        if 
    gc.getNumEventTriggerInfos() > 0# prevents mods that don't have events from getting an error
                            
    iEvent CvUtil.findInfoTypeNum(gc.getEventTriggerInfogc.getNumEventTriggerInfos(),'EVENTTRIGGER_PARTISANS')
                            if 
    iEvent != -and gc.getGame().isEventActive(iEvent) and owner.getEventTriggerWeight(iEvent) < 0:
                                
    triggerData owner.initTriggeredData(iEventtrue, -1pCity.getX(), pCity.getY(), iPlayerpCity.getID(), -1, -1, -1, -1

  7. #67
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Ne, am Trigger liegt es nicht .

    öhm, du hast keine Partisanen erhalten...hat der Event trotzdem getriggert ?
    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. #68
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.027
    Also, ich habe keine Nachricht bekommen wie sonst. Das Event hat also meiner Meinung nach nicht getriggert.

  9. #69
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Hat's dann auch nicht .

    Hattest du in der Runde evtl. noch ne andere Stadt verloren?
    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)


  10. #70
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.027
    Das war es auch nicht, es war die erste Stadt, die ich in dem Spiel verloren habe.

  11. #71
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Oder einen anderen Event in der selben Runde gehabt ?
    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)


  12. #72
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.027
    Daran kann ich mich nicht mehr erinnern. Ich hatte in dieser Runde abgespeichert und länger pausiert, ehe ich neu geladen hatte. Da die KI nach mit dran ist, kann ich nicht ausschließen, dass in der selben Runde etwas passiert ist. Aber eigentlich schließt das doch keine weiteren Ereignisse aus, oder?

  13. #73
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    also es kommt zumindest nie vor, dass man 2 Events in einer Runde hat, und bei den Fanatics hat auch einer berichtet, dass er es nicht hinbekommt, einen Event mehr als 1 mal pro Runde zu triggern, von daher könnte das durchaus sein.
    Aber wissen tue ich's jetzt nicht .
    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)


  14. #74
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.027
    Komisch, ich meine, ich hätte schon einmal zwei Ereignisse in einer Runde gehabt... Obwohl, du hast recht, die waren glaube ich bei unterschiedlichen Zivilisationen.
    Andererseits glaube ich, zu früheren Zeiten durchaus zweimal Partisanen in einer Runde bei der selben Stadt erhalten zu haben. Hing mit einem Bug zusammen: Ich marschiere in die Stadt ein, es kommen Partisanen, einer steht auf dem Stadtfeld (war damals noch möglich). Wenn ich diesen Partisan dann besiegt hatte, in der selben Runde, entstanden weitere Partisanen im Umfeld.

  15. #75
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.027
    Also, seit ich auf 3.19 gepatcht habe, funktioniert das Event auch. Allerdings mit einer unerwünschten Nebenfunktion: Wenn ich bzw. mein Gegner eine Stadt einnehme, erhalte ich Partisanen, wie es sich gehört. Nur: Bei der Befreiung erhält auch der Eroberer Partisanen. So sieht der Codebei OnCityAcquiredAndKept aus:
    PHP-Code:
    ### partisanen durch Eroberung beginn###        
            
    if pCity.getPopulation and iOwner != -and iPlayer != -1:
                
    owner gc.getPlayer(iOwner)
                if 
    not owner.isBarbarian() and owner.getNumCities() > 0:
                    if 
    gc.getTeam(owner.getTeam()).isAtWar(gc.getPlayer(iPlayer).getTeam()):
                        if 
    gc.getNumEventTriggerInfos() > 0# prevents mods that don't have events from getting an error
                            
    iEvent CvUtil.findInfoTypeNum(gc.getEventTriggerInfogc.getNumEventTriggerInfos(),'EVENTTRIGGER_PARTISANS')
                            if 
    iEvent != -and gc.getGame().isEventActive(iEvent) and owner.getEventTriggerWeight(iEvent) < 0:
                                
    triggerData owner.initTriggeredData(iEventtrue, -1pCity.getX(), pCity.getY(), iPlayerpCity.getID(), -1, -1, -1, -1)
    ### partisanen durch Eroberung end### 
    Ich brauche eigentlich nur den Befehl, um die Kultur von iPlayer und iOwner ich der Stadt auszulesen, damit iOwner nur dann Partisanen bekommt, wenn seine Kultur höher ist.

Seite 5 von 7 ErsteErste 1234567 LetzteLetzte

Berechtigungen

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