Seite 1 von 1

Mod-aktiv-Abfragefunktion in Mods integrieren

Verfasst: 01. Feb 2016, 09:30
von Yuan DeLazar
Was haltet ihr davon, wenn wie in den Mods etwas integrieren, womit deren Präsenz abgefragt werden kann?
z.B.:

Code: Alles auswählen


	
		checkmod
		checkmod_hl
		99
	



	
		checkmod
		XML-DATEINAME DER MOD
		
		true
		
		
	

Damit könnte dann von außen mit
startDialogueAt('checkmod',XML-DATEINAME DER MOD)
dieser "Dialog" aufgerufen werden. Ist er da, gibt es als Bestätigung den specialstate, wenn nich, wird abgebrochen. Ich könnte sowas gut für Waffenpatch/Charaktermanagement gebrauchen.

Verfasst: 01. Feb 2016, 09:52
von Mordbrenner
In welchen Fällen willst Du das genau nutzen?

Ein Nachteil wäre, dass der SpecialState ja im savegame gespeichert wird. Somit kann in einem save der State auf 1 stehen, obwohl beim aktuellen Spiel der Mod garnicht mehr aktiv ist.

Und welche Mods gerade aktiv sind, sieht man ja auch in der output_log.

Oder willst Du quasi in einem Mod abfragen, ob ein anderer mod aktiv ist? Aber auch dann wäre das über die Specialstates Fehleranfällig, wegen save.

Verfasst: 01. Feb 2016, 12:23
von Lares
[quote='Yuan DeLazar','index.php?page=Thread&postID=120627#post120627']Was haltet ihr davon, wenn wie in den Mods etwas integrieren, womit deren Präsenz abgefragt werden kann?[/quote]
Curom, hat so etwas ähnliches schon in seiner Mod "Im Schatten der Nacht". Hier der Text der ReadMe:
Simplehouse/Einbruch Mod

Hinweis für Modder! Wenn ihr in die Dialoge eurer Mod InsideScenen einfügt, kann es zu Komplikationen mit dem Simplehous/Einbruch Mod kommen. Diese könnt ihr umgehen indem ihr in der Text ID vor eurer Szene folgenden Prozess einfügt.

function before {setQuestState("simplehouse",1);}

Und in der Text ID nach eurer Scene wieder

function before {setQuestState("simplehouse",0);}

So umgeht man, das dieser Mod beim Start einer InsideScene vershentlich mit ausgelöst wird.
Dies wird schon in den folgenden Mods so gemacht, um die Kompatibilität mit "Im Schatten der Nacht" zu gewährleisten: "Jäger und Gejagte", "Stadtleben" und "Stufe 1 NSCs". Hier wird also immer vor einer InsideScene der SpecialState gesetzt und danach sozusagen wieder entfernt. Es ist also nur für die Situation (also eben das Gebäudeereignis), wo der SpecialState benötigt wird und nicht dauerhaft gesetzt wird. So stört es auch nicht, wenn die Mod "Im Schatten der Nacht" nicht verwendet wird.

Verfasst: 01. Feb 2016, 22:41
von Yuan DeLazar
@Mordbrenner: Beim Charakteranagement wird ja jeder Waffe ein Knopf zur Verfügung gestellt zum Vergleichen. Mein Waffenpatch stellt einen Knopf zur Verfügung, um den Kampfstil zu ändern. Damit würden sich die Knöpfe dann gegenseitig überschreiben, also muss sich eine Mod der anderen anpassen. Ich übernehme also lunatics Vergleichen-Knopf, der aber ohne Funktion ist, wenn seine Mod nicht installiert wurde. Jetzt möchte ich gern, dass der Knopf einfach kommentarlos funktionslos bleibt, sondern bei Betätigung darauf hinweisen, dass die Mod für die Vergleichen-Funktion nötig ist.

Klar ist das mit dem Savegame von Nachteil. Aber eine bessere Lösung fällt mir nicht ein. Mit der Queststate, wie Lares beschreibt, ist es ja im Grunde ähnlich. Ich denke das Prinzip ist dann das gleiche.

Verfasst: 02. Feb 2016, 09:03
von Mordbrenner
Eventuell könnte man auch versuchen, irgendeinen Dialog aus dem anderen Mod auszuführen und nur, wenn dieser erfolgreich ausgeführt wird, eine Variable entsprechend setzen. Dann wäre man das save-Problem los.

Verfasst: 02. Feb 2016, 11:04
von merlinita
Also ich hab z.B. auch in meinen Waffenmods und Charmods Lunatics charmanage übernommen, besser gesagt ich habe meine Waffen mit der Dialogzeile erweitert, wenn ich den Mod von Lunatic dann drinnen habe ist der compare Botton da, hab ich sie nicht drinnen, ist der Comparebotton einfach nicht da und alles ist normal wie im Standard game, da einfach die useactions compare und maxstack fehlen und somit nicht aufgerufen werden.

Verfasst: 02. Feb 2016, 14:05
von Yuan DeLazar
@Mordbrenner: Ja, so etwas klingt gut. Wobei ich nicht weiß, ob es so globale Variablen gibt, dass sie von einer Mod zur anderen übergeben werden können. Schon außerhalb eines Dialoges geht das doch nicht, oder?

@merlinita: Das ergibt natürlich absolut Sinn und ist für diesen meinen Fall vollkommen util. Danke!

Verfasst: 02. Feb 2016, 15:06
von Mordbrenner
Hmmm, doch, ich glaube, wenn man eine Variable außerhalb der function definiert, bleibt diese bis zur nächsten Veränderung bestehen.

Verfasst: 04. Feb 2016, 18:02
von Yuan DeLazar
Mir ist jetzt noch eine andere mögliche Möglichkeit eingefallen, die durch Einfachheit besticht. Man könnte für die abzufragende Mod einen einzelnen "Dialog" schreiben mit einem "partner", der in der abzufragenden Mod vorkommt. Ist die Mod nicht installiert, bricht dieser Dialog ab. Hm. Das braucht dann auch noch einen Schalter, damit nicht immer wieder dort abgebrochen wird.