Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 21

Thema: Next War/ XML Mod und K-Mod merge, ein paar Fragen...

  1. #1
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55

    Next War/ XML Mod und K-Mod merge, ein paar Fragen...

    Hallo zusammen,
    nachdem ich mein CTD Problem endlich lösen konnte ist die Lust an Civ4 BTS wieder voll da.
    Ich bastel schon ein paar Jahre an einem XML Mod der Next War als Basis hat.
    Der beinhaltet einiges an Unitartstyle, Civs, Leader, Terrian, Buildings, Res, Sound etc.
    Ich suchte nun einen Mod zum mergen der eine gute Gamecore.ddl,gutes Interface, better AI usw. mitbringt.
    Dafür sollte der K-Mod eine gute Wahl sein. Ich habe nun den kompletten Merge durchgeführt
    mit Focus auf den K-Mod. Läuft auch alles soweit jedoch stehe ich vor ein paar Problemen die ich unschön finde. Vielleicht kann mir jemand ein paar Tipps geben.

    1# In meinem Mod sind 7 neue Ressourcen dazugekommen. Jetzt möchte ich die irgendwie auf die GameFont_75.tga draufbringen. Leider zerballer ich mir jedes mal das K-Mod,BUG Interface mit den Icons
    wenn ich neue Symbole auf die tga bringe. Kann mir jemand sagen an welche Stelle ich diese setzen muss
    und mit welchen FontButtonIndex in CIV4ArtDefines_Bonus.xml diese dann verlinkt werden ?!?
    Hier mal die Gamefont_75.tga in Anhang.
    Bild


    2# Der K-Mod basiert ja auch auf dem BUG-Mod Interface. Ich wundere mich aber das keine custom unitbuttons
    angezeigt werden. Sprich ich habe einiges an Unitartstyle angelegt und die Units haben auch eigene Buttons.
    Jedoch zeigt mir das Map Interface nur die default buttons der Units an.
    Im City Build Menu und der Civilopedia sind meine Unitartstyle buttons zu sehen. Komisch, warum nimmt BUG immer die default buttons Kann man das irgendwo einstellen ?


    3# Aktuell letzter Punkt ist die Nuke Sequenz. Wenn ich eine Nuke starte funktioniert alles wie es soll.
    Jedoch kommt im Eventlog oben in der Mitte dann eine Fehlermeldung:
    Code:
    Error in nukeExplosion event handler <bound method BugEventmanager.onNukeExplosion of <BugEventManager.BugEventManager instance at ox16EB8ADo>>
    Mein XML Mod hat ja Next War als Grundlage. Da gibt es kleine Änderungen in Python.
    CvEventManager.py, CvGameUtils.py // CvRandomEventInterface.py, CvScreensInterface.py
    Ich habe alles sauber gemergt mit Priortät auf den K-Mod.
    Es scheint nur eine Inkompatibilität zwischen K-Mod/BUG und der CvEventManager.py
    zu geben was diesen sting angeht
    Code:
    onNukeExplosion ...... 'Nuke Explosion'
    Dieser findet sich auch im CvEventManager.py von BTS selber. In K-Mod/BUG IF gibt es aber keine CvEventManager.py. Denke das da irgendwas im Code kollidiert. Kann aber eigentlich egal sein solange die Funktion gewährleistet ist oder ? Muss ich mir sorgen machen ?
    Wenn nicht kann man diese Fehermeldung irgenwie deaktivieren ?


    Für Radschläge wäre ich echt dankbar.
    Viele Grüße
    Xas
    Angehängte Grafiken Angehängte Grafiken

  2. #2
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    12.451
    Mod-Aktion: Faden verschoben.
    Der Forum "Modifikationen" ist etwas unklar benannt, es dient zum Posten fertiger Modifikationen und zur Diskussion einer dort veröffentlichen Mod.
    Allgemeine Fragen sollten besser im allgemeinen Forum gestellt werden.


    1# ich empfehle, die Gamefonts mit DXTBmp, da man damit auch den AlphaChannel bearbeiten kann. Die Ansicht, die ich kenne, hat immer rosafarbene Linien, die klar die Grenzen der freien Felder anzeigen. In genau so ein Feld müssen die Ressourcen, und zwar direkt hinter den Filmhits. Die Felder müssen danach im AlphaChannel noch transparent (weiß) gemacht werden.
    Der FontButton-Index ist einfach: Für die ersten nimmst du den von Filmhits +1, und so weiter.

    2# vom BUG-Mod habe ich keine Ahnung, daher weiß ich nicht, warum da andere Buttons geladen werden. Ich bekomme in meinem Mod immer für Civilopädie, Baumenü und alles andere die selben Buttons, nämlich die richtige.

    3# Wenn es im K-Mod keinen CvEventManager.py gibt, lädt er automatisch die aus BtS. Ob der Fehler wichtig ist weiß ich leider nicht, ich vermute aber, dass die Python-Funktion bei so einem Fehler nicht ausgeführt wird.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Kathys Mod: The british Empire - United Kingdom zum Dritten

    Alte Stories zu alten Versionen:
    Alte Storys

  3. #3
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    18.817
    Beim Bug-Mod gibt es noch eine xml, welche auf Icons aus der Gamefront verweist.

  4. #4
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    Hi, erst mal danke für eure Hinweise.

    Zum Punkt 1#
    @rucivfan Im BUG Mod gibt es eine XML die auf FontButtonIndex in Gamefont verweist ? Wäre ja ein Traum aber ich suche mir echt ein Wolf

    Den Punkt 3# habe ich jetzt aufgebröselt. Die Fehlermeldung kommt mit der BTS CvEventManager.py nicht mit der Next War dann schon. Der Fehler liegt bei dieser Funktion:

    Code:
    	def onNukeExplosion(self, argsList):
    		'Nuke Explosion'
    		pPlot, pNukeUnit = argsList
    		CvUtil.pyPrint('Nuke detonated at %d, %d'
    			%(pPlot.getX(), pPlot.getY()))
    
    		self.changeGameNumNukes(1)
    und gehört zu diesem Script in Next War welches dafür verantwortlich ist das die Welt zerbricht wenn 20 Nukes oder so eingesetzt wurden.
    Code:
    import pickle
    
    g_iNumNukesWarningMessage = 7
    g_iNumNukesGameOver = 20
    
    	def initScriptData(self):
    		
    		# Set default script data manually since we need defaults for all values in the array before any functions can be called on them
    		iDefaultNumNukesFired = 0
    		
    		aScriptData = [iDefaultNumNukesFired]
    		gc.getGame().setScriptData(pickle.dumps(aScriptData))
    		
    	def getGameNumNukes(self):
    		aszScriptData = pickle.loads(gc.getGame().getScriptData())
    		iNumNukes = aszScriptData[0]		 # Num Nukes Fired is 0th element
    		return iNumNukes
    	def setGameNumNukes(self, iValue):
    		aszScriptData = pickle.loads(gc.getGame().getScriptData())
    		aszScriptData[0] = iValue
    		gc.getGame().setScriptData(pickle.dumps(aszScriptData))
    		
    		self.checkNukeStuff(aszScriptData[0])
    		
    	def changeGameNumNukes(self, iChange):
    		aszScriptData = pickle.loads(gc.getGame().getScriptData())
    		aszScriptData[0] = aszScriptData[0] + iChange
    		gc.getGame().setScriptData(pickle.dumps(aszScriptData))
    		
    		self.checkNukeStuff(aszScriptData[0])
    		
    	def checkNukeStuff(self, iNumNukes):
    		
    		print("iNumNukes")
    		print(iNumNukes)
    		print("g_iNumNukesGameOver")
    		print(g_iNumNukesGameOver)
    		
    		# Amount of nukes matches Warning message
    		if (CyMap().plot(0,0).getScriptData() == "Scenario"):
    			if (iNumNukes == g_iNumNukesWarningMessage):
    				self.addPopup("", localText.getText("TXT_KEY_ROUND_THREE_NUKE_WARNING", ()))
    		
    		# Amount of nukes matches Game over
    			elif (iNumNukes == g_iNumNukesGameOver):
    			
    			# Show the screen that shows the world 'sploding
    				CvScreensInterface.showNextWarScreen()
    				gc.getGame().setWinner(18, 3)
    Da ich dieses script sowieso nicht mag und immer mittels
    # g_iNumNukesWarningMessage = 7
    # g_iNumNukesGameOver = 20

    deaktiviert habe musste ich zusätzlich noch
    # self.changeGameNumNukes(1)
    setzen. Nun ist die Fehlermeldung weg !!!

    Das hängt wohl alles mit dem BUG Mod Assets\Python\BUG\BugEventManager.py
    zusammen der vermutlich diese nuke Funktion nicht kennt.
    Code:
    class BugEventManager(CvEventManager.CvEventManager):
    
    	"""
    	Extends the standard event manager by adding support for multiple
    	handlers for each event.
    Theortisch könnte ich doch eigentlich auch den ganzen code in blau vom CvEventManager.py entfernen
    wenn ich dieses Script eh nicht will, oder ?

  5. #5
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    18.817
    Zitat Zitat von xaster Beitrag anzeigen
    Zum Punkt 1#
    @rucivfan Im BUG Mod gibt es eine XML die auf FontButtonIndex in Gamefont verweist ? Wäre ja ein Traum aber ich suche mir echt ein Wolf
    Das ist eher ein Alptraum. Siehe Modname\Assets\Config\init.xml.

  6. #6
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    ja es ist wirklich langsam ein Albtraum
    Ich versuche gerade erst mal die Python probleme zu beheben. Ein Merge aus K-Mod/BUG und Next War ist garnicht so einfach wie ich feststelle
    Jetzt habe ich gerade diese nuke errror Message beseitigen können und muss sagen der ganze Rest vom Script muss auch drin bleiben ( sonst gibt es Probleme mit dem Next War Popup start newgame Meldung )
    Habe jetzt lediglich diese 3 Zeilen deaktiviert.
    # g_iNumNukesWarningMessage = 7
    # g_iNumNukesGameOver = 20
    # self.changeGameNumNukes(1)

    Nun stelle ich fest das auch dieser Code in CvGameUtils.py nicht funktioniert!

    Code:
    	def cannotConstruct(self,argsList):
    		pCity = argsList[0]
    		eBuilding = argsList[1]
    		bContinue = argsList[2]
    		bTestVisible = argsList[3]
    		bIgnoreCost = argsList[4]
    		
    		# player can't build an arcology if they have shielding or advanced shielding
    		if eBuilding == gc.getInfoTypeForString("BUILDING_ARCOLOGY"):
    			if pCity.getNumRealBuilding(gc.getInfoTypeForString("BUILDING_ARCOLOGY_SHIELDING")) or pCity.getNumRealBuilding(gc.getInfoTypeForString("BUILDING_DEFLECTOR_SHIELDING")):
    				return True
    		
    		# player can't build shielding if they have advanced
    		if eBuilding == gc.getInfoTypeForString("BUILDING_ARCOLOGY_SHIELDING"):
    			if pCity.getNumRealBuilding(gc.getInfoTypeForString("BUILDING_DEFLECTOR_SHIELDING")):
    				return True
    
    		return False
    Die Zeilen sind ja selbsterklärend. Nur scheint es irgenwie mit der BUGGameUtils.py zu tun tu haben.
    Diese liest den Code wohl garnicht mehr.... oh man

    Diese Next War Funktionen gibt es ja:
    - Next War Story Popup mit Hintergrund Story wenn diese Map geladen wird - Läuft Code in CvEventManager.py
    - kein Bau niedrigerer Arcology-Stufen nach dem Bau einer höheren Stufe mehr möglich - geht nicht Code in CvGameUtils.py
    - Entfernung von niedrigeren Arcology-Stufen, wenn höhere Stufe gebaut - Läuft in CvEventManager.py
    - Platzierung einer zerstörten Arcology, wenn eine Stadt zerstört wird - Läuft in CvEventManager.py
    - World sploding nach exzessivem Nuke-Einsatz - Script deaktiviert

    Hat jemand eine Idee wie man diesen Code in CvGameUtils.py mit BUGGameUtils.py zusammenbringt ?
    Oder gibt es eine Anleitung wie Nextwar mit dem BUG Mod gemergt werden kann
    Geändert von xaster (16. August 2017 um 09:58 Uhr)

  7. #7
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    OH MAN das Thema mit der CvGameUtils.py und CANNOT_CONSTRUCT_CALLBACK
    konnte ich nun auch lösen habe einen fast 10 Jahre alten Topic durchgesucht.
    Der K-Mod/BUG Mod läde die CvGameUtils.py nicht als default!!! Man muss es ihm noch sagen !
    add code to Assets\Config\init.xml
    Code:
    	<gameutils module="CvGameUtils" class="CvGameUtils"/>
    Und natürlich den Call back in Assets\XML\PythonCallbackDefines.xml zulassen.
    Code:
    	<Define>
    		<DefineName>USE_CANNOT_CONSTRUCT_CALLBACK</DefineName>
    		<iDefineIntVal>1</iDefineIntVal>
    	</Define>
    Damit habe ich nun die wichtigsten Funktion von Next War nach K-Mod umgezogen


    @Kathy Danke für den Tipp mit DXTBmp, habe noch eine Anleitung gefunden damit komme ich zurecht.
    Wird aber leider nicht so einfach.
    @rucivfan, an welchem Punkt ist der verweis in der init.xml ?!? Meinst du diese 4 ?
    Code:
    <symbol id="war" from="COMMERCE_GOLD" offset="25"/>
    <symbol id="ss casing" from="HAPPY" offset="-25"/>
    <symbol id="citizen" from="POWER" offset="1"/>
    <symbol id="furious" name="ATTITUDE_FURIOUS" from="POWER" offset="4"/>
    Jetzt muss ich noch Punkt 2# beheben.
    Hat jemand Erfahrungen wie man in der BUG Config angibt welche Unitbuttons geladen werden sollen ?

  8. #8
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    12.451
    Zitat Zitat von xaster Beitrag anzeigen
    @Kathy Danke für den Tipp mit DXTBmp, habe noch eine Anleitung gefunden damit komme ich zurecht.
    Wird aber leider nicht so einfach.
    Ja, das Programm ist nicht ganz einfach, ich kämpfe da auch manchmal mit, wenn ich irgendwo beim Alpha-Channal eine falschen Pixel habe.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Kathys Mod: The british Empire - United Kingdom zum Dritten

    Alte Stories zu alten Versionen:
    Alte Storys

  9. #9
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    Dieses HUD Problem möchte ich nochmal genau erklären hier ein Beispiel:
    Ich habe eine default UNIT_JET_FIGHTER mit eigenen button.

    Code:
    <UnitArtInfo>
       <Type>ART_DEF_UNIT_JET_FIGHTER_A10</Type>
       <Button>Art/Units/A10/Button.dds</Button>
    
    <UnitInfo>
       <Class>UNITCLASS_JET_FIGHTER</Class>
       <Type>UNIT_JET_FIGHTER</Type>
       <EarlyArtDefineTag>ART_DEF_UNIT_JET_FIGHTER_A10</EarlyArtDefineTag>
    Mit dem Unitartstyle für RUS verweise ich auf die ART_DEF_UNIT_JET_FIGHTER_MIG21_RUS
    die ebenfalls einen eigenen Button hat.

    Code:
    UnitArtstyle_RUS
    <StyleUnit>
       <UnitType>UNIT_JET_FIGHTER</UnitType>
       <UnitMeshGroup>
       <EarlyArtDefineTag>ART_DEF_UNIT_JET_FIGHTER_MIG21_RUS</EarlyArtDefineTag>
    
    <UnitArtInfo>
    <Type>ART_DEF_UNIT_JET_FIGHTER_MIG21_RUS</Type>
    <Button>art/UnitsStyleRussia/MIG21_Rus/Button.dds</Button>
    Aber das BUG HUD zeigt immer nur den button von ART_DEF_UNIT_JET_FIGHTER_A10
    Warum benutzt das BUG HUD nicht den Button von ART_DEF_UNIT_JET_FIGHTER_MIG21_RUS ???
    Im City Build Menu und der Civilopedia wird doch auch der Button von ART_DEF_UNIT_JET_FIGHTER_MIG21_RUS angezeigt.

    Im original Civ4 BTS funktioniert das genau richtig.
    Geändert von xaster (19. August 2017 um 11:20 Uhr)

  10. #10
    Whovian Avatar von antriot
    Registriert seit
    30.09.12
    Ort
    TARDIS Type 40
    Beiträge
    2.641
    Das ist in der Tat sehr seltsam. Ich nutze auch den BUG Mod und habe keine Probleme damit. caching ist aus nehme ich an?
    Tick tock goes the clock...

  11. #11
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    Hi @antritt, ja Caching in der Civ4.ini ist deaktiviert für File und XML.
    Hast du auch wirklich Custom Buttons für Unitartstyle und das wird im BUG HUD angezeigt?
    meine Custom Buttons für die default Unit wird auch angezeigt aber eben nur die.
    Ich möchte aber auch die Custom Buttons der spezifischen Unitartstyle im HUD sehen.
    aber da scheint BUG immer nur die wie im Beispiel A10 und nicht MIG21.
    gerade in diesem Fall ist das halt sehr unschön. So kann ich das nicht lassen.

    Ich suche einfach die Config wo der BUG definiert welchen Button er im HUD anzeigt. Das wäre ein guter Ansatz.
    Welchen BUG Mod nutzt du? Gibt ja etliche Modpacks wo BUG integriert ist.

  12. #12
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    Hier nochmal ein paar Bilder um das alles mal zu veranschaulichen.
    https://ibb.co/jkZs6k
    Sogar der ingame Blasen Button zeigt mir den richtigen Icon von der MIG21 und nicht A10 wie im BUG HUD
    https://ibb.co/kmrfRk
    Das ist die Bestätigung das XML richtig gelinked ist. Man kann es in der Civilopedia, City Build Menu und auch Ingame Map sehen. Jedoch BUG zeigt immer nur den Button der default UnitClass an wie im Beispiel der A10 Fighter. Mit Civ4 BTS habe ich dieses Problem nicht da zeigt das HUD Interface auch den MIG21 Button an.

    Bei der ganzen Suche ist mir noch eine Sache aufgefallen. Kann es sein das BUG HUD immer die gleichen Buttons anzeigt wie der Civ4 Worldbuilder ? Da kann ich das gleiche Phänomen beobachten.
    https://ibb.co/kPyie5
    Das stört aber nicht weiter weil es bei BTS ja nur im Worldbuilder so ist.
    Wie kann man dem BUG Mod configurieren das er die Buttons richtig anzeigt.

    Hier noch ein Bild wie das ganze im Civ4 BTS HUD aussieht. Da passt der Button aus der Unitart MIG21
    https://ibb.co/mqTYe5
    Geändert von xaster (19. August 2017 um 11:41 Uhr)

  13. #13
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    18.817
    Die Ursache hier ist kein XML-Problem. An der Stelle, wo der Button per Code generiert wird, wird eben nur der Standard-Button ausgewählt und nicht nach einen Grafikspezifischen Button geschaut.

  14. #14
    Whovian Avatar von antriot
    Registriert seit
    30.09.12
    Ort
    TARDIS Type 40
    Beiträge
    2.641
    Zitat Zitat von rucivfan Beitrag anzeigen
    Die Ursache hier ist kein XML-Problem. An der Stelle, wo der Button per Code generiert wird, wird eben nur der Standard-Button ausgewählt und nicht nach einen Grafikspezifischen Button geschaut.
    Das heißt die Ursache liegt im SDK?

    Ich hab bei mir auch verschiedene ArtStyles für verschiedene Zivilisationen, allerdings nicht selbst gemacht, sondern hier her. Genau genommen hab ich das nicht mal selbst implementiert, sonder das ganze ist beim BAT-Mod als Modul dabei. Viellicht hilft dir genau das: Die Implementierung unter Assets/Modules. Kannst es dir ja mal im BAT-Mod anschauen.
    Geändert von antriot (19. August 2017 um 11:57 Uhr)
    Tick tock goes the clock...

  15. #15
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    Genau das meine ich ja, Civ4 BTS macht das an der Stelle genau richtig siehe Bild oben was ich noch hinzugefügt habe.
    Und BUG scheint immer nur die default Unitclass anzuzeigen.....

    Aber wie kann man das in BUG änderen

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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