Seite 6 von 7 ErsteErste ... 234567 LetzteLetzte
Ergebnis 76 bis 90 von 103

Thema: Hilfe bei Modding, historische Richtigkeit Szenario

  1. #76
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.918
    Könntest du bitte den rot markierten Teil noch rot markieren? Im Moment ist er nämlich im Moment alles schwarz.

    Das löschen von "player.isAlive()" ist prinzipiell nicht so schlimm, meine ich.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  2. #77
    Registrierter Benutzer
    Registriert seit
    04.03.15
    Beiträge
    65
    Hab's schnell rückgängig gemacht. Das hat aber nichts geändert.

    Edit: Es ist nun rot. Und die Zeilen sind übrigens 349-385

  3. #78
    Registrierter Benutzer
    Registriert seit
    04.03.15
    Beiträge
    65
    Könnte ich genau so mein Problem lösen, dass die Civ am leben sein muss, dass etwas gespawnt wird?

  4. #79
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.015
    das isAlive kann nicht die Ursache sein. Ob ein Spieler lebt oder nicht, d ie Codeklasse existiert trotzdem komplett. Es amcht nur keinen Sinn, eine Nachricht einen nicht lebenden Spieler zu schicken.

    Außerdem, wenn isHuman crasht, sollte auch isAlive crashen.

  5. #80
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Das sind übrigens keine 35 Fehler sondern die verteilte Ausgabe eines Fehlers
    Warum sie es auf so viele Popups verteilen kann ich dir nicht sagen. Wahrscheinlich war das nie beabsichtigt.

  6. #81
    Registrierter Benutzer
    Registriert seit
    04.03.15
    Beiträge
    65
    Zitat Zitat von Ramkhamhaeng Beitrag anzeigen
    Das sind übrigens keine 35 Fehler sondern die verteilte Ausgabe eines Fehlers
    Warum sie es auf so viele Popups verteilen kann ich dir nicht sagen. Wahrscheinlich war das nie beabsichtigt.
    Kannst du's dann irgendwie entziffern?

  7. #82
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.918
    Ich hatte darum gebeten, mit Zeile 350 zu zeigen, warum markierst du dann zwei Zeilen in deinem Code? Die Fehlermeldung verweist auf Zeile 350, die anderen Änderungen sind nicht schuld.
    Gut, wenn das die Zeilen 349-385 sind, sit 350 wohl diese:
    Code:
    Code:
    def onLoadGame(self, argsList):
    		CvAdvisorUtils.resetNoLiberateCities()
    		###spawnUnit 2 start###
    		####replace the "SpawnUnits" with the path of your mod.
    		####the folder name is meant.
                    SpawnUnitUtil.init("SpawnUnits")                        
                    ###spawnUnit part 2 end###		
    		return 0
    
    	def onGameStart(self, argsList):
    		'Called at the start of the game'
    		###spawnUnit part 3 start###
                    ####replace the "SpawnUnits" with the path of your mod.
    		####the folder name is meant.		
                    SpawnUnitUtil.init("SpawnUnits")                        
                    ###spawnUnit part 3 end###
    		if (gc.getGame().getGameTurnYear() == gc.getDefineINT("START_YEAR") and not gc.getGame().isOption(GameOptionTypes.GAMEOPTION_ADVANCED_START)):
    			for iPlayer in range(gc.getMAX_PLAYERS()):
    				player = gc.getPlayer(iPlayer)
    				if (player.isAlive() and player.isHuman()):
    					popupInfo = CyPopupInfo()
    					popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON_SCREEN)
    					popupInfo.setText(u"showDawnOfMan")
    					popupInfo.addPopup(iPlayer)
    		else:
    			CyInterface().setSoundSelectionReady(true)
    
    		if gc.getGame().isPbem():
    			for iPlayer in range(gc.getMAX_PLAYERS()):
    				player = gc.getPlayer(iPlayer)
    				if (player.isAlive() and player.isHuman()):
    					popupInfo = CyPopupInfo()
    					popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_DETAILS)
    					popupInfo.setOption1(true)
    					popupInfo.addPopup(iPlayer)
    
    		CvAdvisorUtils.resetNoLiberateCities()
    Weiter im Text: Da steht etwas von einem Identitation Error: expected an indented block. Das bedeutet meist, dass etwas mit dem Blocksatz nicht stimmt. Wenn der Blocksatz so ist wie hier abgebildet, stimme ich dem zu.
    Meiner Meinung nach muss CvAdvisorUtils.resetNoLiberateCities() auf der selben Höhe sein wie SpawnUnitUtil.init("Earth 35 Civs")

    Und beides muss einen Tab weiter eingerückt sein als def onLoadGame(self, argsList):

    Das muss auf der selben Höhe sein wie def onGameStart(self, argsList):

    Überprüf das mal in deinem Mod, hier im zitierten Code sieht es nicht danach aus, aber das kann auch am zitieren liegen.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  8. #83
    Registrierter Benutzer
    Registriert seit
    04.03.15
    Beiträge
    65
    Zitat Zitat von Kathy Beitrag anzeigen
    Ich hatte darum gebeten, mit Zeile 350 zu zeigen, warum markierst du dann zwei Zeilen in deinem Code? Die Fehlermeldung verweist auf Zeile 350, die anderen Änderungen sind nicht schuld.
    Ich habe gedacht, die Änderung der Textzeile ohne etwas darüber zu wissen, habe einen grossen Einfluss auf das ganze. Ich dachte, das könnte schuld sein. Ich habe halt wirklich keine Ahnung von diesem System.

    Gut, wenn das die Zeilen 349-385 sind, sit 350 wohl diese:
    [CODE][CODE]def onLoadGame(self, argsList):
    CvAdvisorUtils.resetNoLiberateCities()
    Ja das stimmt.

    Weiter im Text: Da steht etwas von einem Identitation Error: expected an indented block. Das bedeutet meist, dass etwas mit dem Blocksatz nicht stimmt. Wenn der Blocksatz so ist wie hier abgebildet, stimme ich dem zu.
    Meiner Meinung nach muss CvAdvisorUtils.resetNoLiberateCities() auf der selben Höhe sein wie SpawnUnitUtil.init("Earth 35 Civs")
    Also, wenn ich dich richtig verstanden habe, dann ist das erste CvAdvisorUtils.resetNoLiberateCities() zu weit gegen rechts, ich habe es mit Tab nach hinten verschoben auf Höhe SpawnUnitUtil.init("Earth 35 Civs"). Auf der letzen Zeile ist CvAdvisorUtils.resetNoLiberateCities() auf der gleichen Höhe wie das obere.

    Und beides muss einen Tab weiter eingerückt sein als def onLoadGame(self, argsList):
    Das ist es.

    Das muss auf der selben Höhe sein wie def onGameStart(self, argsList):
    Das def onLoadGame(self, argsList) ist auf Höhe def onGameStart(self, argsList).
    ?
    Nach Neuladen der Mod, zeigt es mir nun einen anderen Fehler an: Zeile 356: Syntax Error (rot markiert). Was bedeutet diese Zeile?
    Ich habe hier die Ordnung ein bisschen angepasst, das Zitieren bringt wirklich alles ein bisschen durcheinander.

    Code:
    def onLoadGame(self, argsList):
    		CvAdvisorUtils.resetNoLiberateCities()
    		###spawnUnit 2 start###
    		####replace the "SpawnUnit" with the path of your mod.
    		####the folder name is meant.
                    SpawnUnitUtil.init("Earth 35 Civs")                        
                                   ###spawnUnit part 2 end###	
    		return 0
    
    	def onGameStart(self, argsList):
    		'Called at the start of the game'
    		###spawnUnit part 3 start###
                                    ####replace the "SpawnUnit" with the path of your mod.
    		####the folder name is meant.		
                                    SpawnUnitUtil.init("Earth 35 Civs")                        
                                    ###spawnUnit part 3 end###
    		if (gc.getGame().getGameTurnYear() == gc.getDefineINT("START_YEAR") and not   gc.getGame().isOption(GameOptionTypes.GAMEOPTION_ADVANCED_START)):
    			for iPlayer in range(gc.getMAX_PLAYERS()):
    				player = gc.getPlayer(iPlayer)
    				if (player.isAlive() and player.isHuman()):
    					popupInfo = CyPopupInfo()
    					popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON_SCREEN)
    					popupInfo.setText(u"showDawnOfMan")
    					popupInfo.addPopup(iPlayer)
    		else:
    			CyInterface().setSoundSelectionReady(true)
    
    		if gc.getGame().isPbem():
    			for iPlayer in range(gc.getMAX_PLAYERS()):
    				player = gc.getPlayer(iPlayer)
    				if (player.isAlive() and player.isHuman()):
    					popupInfo = CyPopupInfo()
    					popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_DETAILS)
    					popupInfo.setOption1(true)
    					popupInfo.addPopup(iPlayer)
    
    		CvAdvisorUtils.resetNoLiberateCities()
    Hier hast du den Notepad Code als PHP-Code, ich denke, der zeigt es ziemlich adäquat.

    PHP-Code:
    def onLoadGame(selfargsList):
            
    CvAdvisorUtils.resetNoLiberateCities()
            
    ###spawnUnit 2 start###
            ####replace the "SpawnUnit" with the path of your mod.
            ####the folder name is meant.
            
    SpawnUnitUtil.init("Earth 35 Civs")                        
                    
    ###spawnUnit part 2 end###    
            
    return 0

        def onGameStart
    (selfargsList):
            
    'Called at the start of the game'
            
    ###spawnUnit part 3 start###
                    ####replace the "SpawnUnit" with the path of your mod.
            ####the folder name is meant.        
                    
    SpawnUnitUtil.init("Earth 35 Civs")                        
                    
    ###spawnUnit part 3 end###
            
    if (gc.getGame().getGameTurnYear() == gc.getDefineINT("START_YEAR") and not gc.getGame().isOption(GameOptionTypes.GAMEOPTION_ADVANCED_START)):
                for 
    iPlayer in range(gc.getMAX_PLAYERS()):
                    
    player gc.getPlayer(iPlayer)
                    if (
    player.isAlive() and player.isHuman()):
                        
    popupInfo CyPopupInfo()
                        
    popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON_SCREEN)
                        
    popupInfo.setText(u"showDawnOfMan")
                        
    popupInfo.addPopup(iPlayer)
            else:
                
    CyInterface().setSoundSelectionReady(true)

            if 
    gc.getGame().isPbem():
                for 
    iPlayer in range(gc.getMAX_PLAYERS()):
                    
    player gc.getPlayer(iPlayer)
                    if (
    player.isAlive() and player.isHuman()):
                        
    popupInfo CyPopupInfo()
                        
    popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_DETAILS)
                        
    popupInfo.setOption1(true)
                        
    popupInfo.addPopup(iPlayer)

            
    CvAdvisorUtils.resetNoLiberateCities() 
    Geändert von Dolans (20. März 2015 um 10:22 Uhr)

  9. #84
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.918
    Ich weiß nicht genau, was diese Zeile bedeutet. Sie ist aber genauso wie bei meinem Python-Code bei def onLoadGame.
    Der "Syntax Error" kann sich unter Umständen auch auf die Zeile davor beziehen, wenn diese durch einen Fehler in der Syntax als nicht abgeschlossen gilt (Zeilen mit # haben dabei keine Wirkung, es müsste also wenn dann ein Fehler in dieser Zeilen sein: SpawnUnitUtil.init("Earth 35 Civs") ). In dieser Zeile sehe ich aber auch keinen offensichtlichen Syntax-Fehler.

    Probleme erwarte ich zunächst in "SpawnUnitUtil.init("Earth 35 Civs") ", da ist der Block offenbar wieder verrutscht.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  10. #85
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.015
    Zitat Zitat von Dolans Beitrag anzeigen
    Code:
    def onLoadGame(self, argsList):
    		CvAdvisorUtils.resetNoLiberateCities()
    		###spawnUnit 2 start###
    		####replace the "SpawnUnit" with the path of your mod.
    		####the folder name is meant.
                    SpawnUnitUtil.init("Earth 35 Civs")                        
                                   ###spawnUnit part 2 end###	
    		return 0
    Kathy meint folgendes genauer beschrieben:

    In Python sind Einrückungen Teil der Sprache. Eine Einrückung muss daher immer korrekt sein. ###spawnUnit part 2 end### darf nicht einfach so grundlos eingerückt sein. Es gibt deswegen in der Folgezeile den Fehler.

  11. #86
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.918
    Ich meinte eigentlich den Block unter " def onGameStart(self, argsList): ", aber vielleicht trifft das hier auch zu. Ich dachte allerdings, dass das für Zeilen mit ### nicht gelten würde. Wenn es allerdings gilt, muss das natürlich auch hier angepasst werden.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  12. #87
    Registrierter Benutzer
    Registriert seit
    04.03.15
    Beiträge
    65
    Ich habe da ein bisschen herumprobiert und habe herausgefunden, mit welcher Kombination es zwar keine Fehlermeldungen mehr gibt, die Einheiten aber doch noch nicht spawnen.

    PHP-Code:
    def onLoadGame(selfargsList):
            
    CvAdvisorUtils.resetNoLiberateCities()
            
    ###spawnUnit part 2 start###
                ####replace the "SpawnUnit" with the path of your mod.
            ####the folder name is meant.
            
    SpawnUnitUtil.init("Earth 35 Civs")                        
                    
    ###spawnUnit part 2 end###    
            
    return 0

        def onGameStart
    (selfargsList):
            
    'Called at the start of the game'
            
    ###spawnUnit part 3 start###
                    ####replace the "SpawnUnit" with the path of your mod.
            ####the folder name is meant.        
            
    SpawnUnitUtil.init("Earth 35 Civs")                        
                    
    ###spawnUnit part 3 end### 
    Dazu der originale Codeteil von The_J.

    PHP-Code:
    def onLoadGame(selfargsList):
            
    CvAdvisorUtils.resetNoLiberateCities()
            
    ###spawnUnit 2 start###
            ####replace the "SpawnUnits" with the path of your mod.
            ####the folder name is meant.
                    
    SpawnUnitUtil.init("SpawnUnits")                        
                    
    ###spawnUnit part 2 end###        
            
    return 0

        def onGameStart
    (selfargsList):
            
    'Called at the start of the game'
            
    ###spawnUnit part 3 start###
                    ####replace the "SpawnUnits" with the path of your mod.
            ####the folder name is meant.        
                    
    SpawnUnitUtil.init("SpawnUnits")                        
                    
    ###spawnUnit part 3 end### 
    Bei The_Js Code fehlt das Wort part im ersten Abschnitt bei SpawnUnit part 2. Das ist aber mit den Nummerzeichen versehen, bei denen es anscheinend wirklich keinen Unterschied macht, an welcher Stelle die Codezeile beginnt und was genau darin steht. Hingegen musste ich die beiden SpawnUnitUtil.init nach vorne verschieben. So erhalte ich wie gesagt, keine Fehlermeldungen mehr.

  13. #88
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.918
    Das ist korrekt, SpawnUnitUtil.init("Earth 35 Civs") muss auf einer Höhe mit CvAdvisorUtils.resetNoLiberateCities() bzw. 'Called at the start of the game' liegen.

    Wenn immer noch nichts spawnt, wäre eine mögliche Fehlerquelle, dass der Modname "Earth 35 Civs" nicht korrekt ist. Stimmen alle Leerzeichen?
    Setz vorsichtshalber auch einmal alle mit ### beginnenden Zeilen auf die selbe Höhe wie den Rest. Vielleicht hat sich auch die Civ4.ini resettet, das macht die schon einmal ohne nachvollziehbaren Grund. Prüf mal, ob die immer noch auf "Hide Python Exceptions" = 0 steht.

    Wenn jetzt nichts spawnt, vermute ich, dass irgend etwas mit der SpawnUnits.py nicht stimmt. Aber ich habe noch keine Idee, was.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  14. #89
    Registrierter Benutzer
    Registriert seit
    04.03.15
    Beiträge
    65
    Wenn immer noch nichts spawnt, wäre eine mögliche Fehlerquelle, dass der Modname "Earth 35 Civs" nicht korrekt ist.
    Ist korrekt laut Earth 35 Civs.ini
    PHP-Code:
    Name of Mod
    Name 
    Earth 35 Civs 


    Setz vorsichtshalber auch einmal alle mit ### beginnenden Zeilen auf die selbe Höhe wie den Rest.
    Gemacht, hat nichts gebracht.

    Vielleicht hat sich auch die Civ4.ini resettet, das macht die schon einmal ohne nachvollziehbaren Grund. Prüf mal, ob die immer noch auf "Hide Python Exceptions" = 0 steht.
    Überprüft. Steht immer noch auf 0. Beim Laden der Mod, hat das Spiel lange beim Init XML (uncached), dort wo es vorher auch die Fehler gefunden hat.

    Hier habe ich dir mal die SpawnUnit Util.py-Datei:

    PHP-Code:
    ##SpawnUnitUtil
    ###MODDER READ THIS:
    ###You do not have to change anything in this file.
    ###all changes have to be done in the CvEventManager.
    ###This file has to be in the same folder like the CvEventManager.py.

    from CvPythonExtensions import *
    import gc as garbage
    gc 
    CyGlobalContext()
    SpawnUnitList = []

    def process(iTurn):
        for 
    entry in SpawnUnitList:        
            if 
    entry.iTurn == iTurn:            
                
    AddUnits(entry)      


    def AddUnits(entry):
        
    iMaxCiv gc.getMAX_CIV_PLAYERS ()    
        for 
    i in range(iMaxCiv):
            
    pPlayer gc.getPlayer(i)
            
    iCiv pPlayer.getCivilizationType()
            if 
    iCiv == entry.iCiv:
                break
        else:
            return
        if 
    not pPlayer.isAlive():
            return
        if (
    entry.iX <=-1) or (entry.iY<=-1):
            if 
    pPlayer.isBarbarian():
                return 
    False        
            entry
    .iX pPlayer.getCapitalCity().getX()
            
    entry.iY pPlayer.getCapitalCity().getY()
        
    bPlotValid checkPlot(entry,pPlayer,CyMap().plot(entry.iX,entry.iY))
        if 
    not bPlotValid:
            for 
    iXLoop in range(entry.iX 1entry.iX 21):
            for 
    iYLoop in range(entry.iY 1entry.iY 21):
                    
    pPlot CyMap().plot(iXLoop,iYLoop)
                    
    bPlotValid checkPlot(entry,pPlayer,pPlot)
                    if 
    bPlotValid:
                        
    entry.iX iXLoop
                        entry
    .iY iYLoop
                        
    break
                if 
    bPlotValid:
                    break
        if 
    not bPlotValid:
            if 
    pPlayer.isBarbarian():
                return
            
    entry.iX pPlayer.getCapitalCity().getX()
            
    entry.iY pPlayer.getCapitalCity().getY()        
            
    cvUnit gc.getUnitInfo(entry.iUnit)
            
    iUnitDomain cvUnit.getDomainType ()
            if 
    iUnitDomain ==gc.getInfoTypeForString("DOMAIN_SEA"):
                
                if 
    not CyMap().plot(entry.iX,entry.iY).isCoastalLand ():
                    (
    loopCityiter) = pPlayer.firstCity(false)
                    while(
    loopCity):
                        if 
    CyMap().plot(loopCity.getX(),loopCity.getY()).isCoastalLand ():
                            
    entry.iX loopCity.getX()
                            
    entry.iY loopCity.getY()
                            break                                   
                        (
    loopCityiter) = pPlayer.nextCity(iterfalse)
                if 
    not CyMap().plot(entry.iX,entry.iY).isCoastalLand ():
                    return 
    False
                        
        
        
    for i in range(entry.iNumUnit):
            
    pUnit pPlayer.initUnit(entry.iUnitentry.iX,entry.iYUnitAITypes.NO_UNITAIDirectionTypes.NO_DIRECTION )
            for 
    iProm in entry.lPromotion:
                
    pUnit.setHasPromotion(iProm,True)
        
    CyInterface().addMessage(pPlayer.getID(),False,15,CyTranslator().getText("TXT_KEY_REINFORCEMENT",()),'',0,gc.getUnitInfo(entry.iUnit).getButton(),gc.getInfoTypeForString("COLOR_GREEN") , entry.iX,entry.iYTrue,True)
        
    garbage.collect()

    def checkPlot(entry,pPlayer,pPlot):
        
    cvUnit gc.getUnitInfo(entry.iUnit)
        
    iUnitDomain cvUnit.getDomainType ()
        if 
    pPlot.isWater() and (iUnitDomain !=gc.getInfoTypeForString("DOMAIN_SEA")):
            return 
    False
        
    if (not pPlot.isWater()) and (iUnitDomain ==gc.getInfoTypeForString("DOMAIN_SEA")):
            return 
    False
        
    if (iUnitDomain ==gc.getInfoTypeForString("DOMAIN_AIR") and not pPlot.isCity()):
            return 
    False
        
    if pPlot.isImpassable ():
            return 
    False
        
    if pPlayer.isBarbarian():
            if 
    pPlot.getOwner()>-and (pPlayer.getID()!=pPlot.getOwner()):
                
    pOtherPlayer gc.getPlayer(pPlot.getOwner())
                for 
    i in range(gc.getNumBuildingInfos ()):
                    
    cvBuilding gc.getBuildingInfo(i)
                    if 
    cvBuilding.isAreaBorderObstacle ():
                        if 
    pOtherPlayer.countNumBuildings(i)>0:
                            return 
    False
        pTeam 
    gc.getTeam(pPlayer.getTeam())
        if (
    pPlot.getOwner()<=-1) or (pPlot.getOwner()==pPlayer.getID()):
            if 
    pPlot.getNumUnits ()<=0:
                return 
    True
            
    else:
                for 
    i in range(pPlot.getNumUnits ()):
                    
    pUnit pPlot.getUnit(i)
                    if 
    pTeam.isAtWar(pUnit.getTeam()):
                        return 
    False    
        
    if pPlot.getOwner()>-1:
            if 
    pPlayer.getID()!=pPlot.getOwner():
                
    pOtherPlayer gc.getPlayer(pPlot.getOwner())
                
                
    pOtherTeam gc.getTeam(pOtherPlayer.getTeam())
                if 
    pTeam.getID()!=pOtherTeam.getID():
                    if 
    pTeam.isOpenBorders(pOtherTeam.getID()):
                        return 
    True
                    elif pTeam
    .isAtWar(pOtherTeam.getID()):
                        if 
    pPlot.isCity():
                            return 
    False
                        
    else:
                            return 
    True
                    elif pOtherTeam
    .isVassal(pTeam.getID()):
                        return 
    True
                    elif not pTeam
    .isOpenBorders(pOtherTeam.getID()):
                        return 
    False
        
    return True


            
    def init
    (sModName):       
            
    MyFile open("Mods/"+sModName+"/Assets/XML/CustomXML/CIV4SpawnUnitInfos.xml")
            
    del SpawnUnitList[:]
            for 
    CurString in MyFile.readlines():        
                    if 
    "UnitType" in CurString:
                            
    CurEntry SpawnEntry()
                            
    CurEntry.iUnit gc.getInfoTypeForString(CutString(CurString))
                    if (
    "Promotion" in CurString) and not ("Promotions" in CurString):
                            
    CurEntry.lPromotion.append(gc.getInfoTypeForString(CutString(CurString)))
                    if 
    "iNumUnit" in CurString:
                            
    CurEntry.iNumUnit int(CutString(CurString))                        
                    
    elif "CIVILIZATION" in CurString:
                            
    CurEntry.iCiv gc.getInfoTypeForString(CutString(CurString))
                    
    elif "Scenario>" in CurString:
                            
    CurEntry.sScenario str(CutString(CurString)).upper()
                    
    elif "iTurn" in CurString:
                            
    CurEntry.iTurn int(CutString(CurString))
                    
    elif "StartX" in CurString:
                            
    CurEntry.iX int(CutString(CurString))
                    
    elif "StartY" in CurString:
                            
    CurEntry.iY int(CutString(CurString))
                            
    SpawnUnitList.append(CurEntry)
            
    MyFile.close()

        
    MapName CyMap().getMapScriptName ()
        
    bScenario False
        
    if (".CIV" in MapName.upper()) and (not gc.getGame().isOption(GameOptionTypes.GAMEOPTION_ADVANCED_START)):
                
    bScenario True
                
    if "civbeyondswordwbsave".upper() in MapName.upper():
                    
    MapName MapName[0:-21]                              
                if 
    "CivWarlordsWBSave".upper() in MapName.upper():
                    
    MapName MapName[0:-18]
                if 
    "Civ4WorldBuilderSave".upper() in MapName.upper():
                    
    MapName MapName[0:-21]
            
    MapName MapName.upper()


            
    lPop = []
            
    del lPop[:]
            if 
    bScenario:
                for 
    i in range(len(SpawnUnitList)):                
                    if 
    SpawnUnitList[i].sScenario!=MapName:                    
                        if 
    i not in lPop:
                            
    lPop.append(i)
            if 
    not bScenario:
                for 
    i in range(len(SpawnUnitList)):            
                    if 
    SpawnUnitList[i].sScenario!="-1":
                        if 
    i not in lPop:
                            
    lPop.append(i)
                       

            
    iMaxCiv gc.getMAX_CIV_PLAYERS ()
            
    lCivs = []
            
    del lCivs[:]
            for 
    i in range(iMaxCiv):
                
    pPlayer gc.getPlayer(i)
                
    lCivs.append(pPlayer.getCivilizationType())
                
            for 
    i in range(len(SpawnUnitList)):            
                if 
    SpawnUnitList[i].iCiv not in lCivs:
                    if 
    i not in lPop:
                        
    lPop.append(i)
                if 
    SpawnUnitList[i].iTurn<=(CyGame().getGameTurn ()-2):
                    if 
    i not in lPop:
                        
    lPop.append(i)
                if 
    SpawnUnitList[i].iCiv==-1:
                    if 
    i not in lPop:
                        
    lPop.append(i)
            
    lPop.sort()
            
    lPop.reverse()
            
    iPop len(lPop)
            for 
    i in range(iPop):            
                
    SpawnUnitList.pop(lPop[i])        

            
    garbage.collect()


            
                                                                                 
    def CutString(string):
            
    string str(string)        
            
    string string.strip()        
            
    string string[2:-1]
            
    BeginPos=-1
            EndPos 
    = -1                
            
    for i in xrange(len(string)):
                    if 
    string[i]==">":
                            
    BeginPos=i                                
                    elif string
    [i]=="<":
                            
    EndPos=i                                
                            
    break
            else:
                    return 
    "-1"
            
    NewString string[BeginPos+1:EndPos]        
            return 
    str(NewString)

    class 
    SpawnEntry:
            
    def __init__(self):
                    
    self.iUnit ""
                    
    self.iCiv 0
                    self
    .lPromotion = []
                    
    self.sScenario ""
                    
    self.iNumUnit = -1
                    self
    .iTurn 0
                    self
    .iX = -1
                    self
    .iY = -

  15. #90
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.918
    Ich nehme an, daran hast du dich gehalten: You do not have to change anything in this file
    Und hierdran: ###This file has to be in the same folder like the CvEventManager.py.
    Ich vertraue The_J, dass er das dann sauber programmiert hat, von ihm habe ich viel über Python gelernt, und was er mir zwischendruch programmiert hat, hat immer funktioniert.

    Dann bleibt nur noch, einen Blick auf ###spawnUnit part 1 start### (in CvEventmanager) zu werden. Und eventuell, falls es das geben sollte, auf ###spawnUnit part 4 start###, ###spawnUnit part n start### (für n > 4).
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

Seite 6 von 7 ErsteErste ... 234567 LetzteLetzte

Berechtigungen

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