Construction Set Ausrüstungsverfall stoppen / Trankeinnahme einschränken

Drullo321

Reisender
Hallo Forumsgemeinde,
Da habe ich doch mal wieder Morrowind ausgepackt und angefangen zu spielen. Dabei bin ich gleich zu Anfang an an etwas nerviges erinnert worden.
Rüstungen und Waffen, eigene sowie von den NPCs nutzen sich ab.
Eigene kann man reparieren, die von NPCs nicht.

Daher habe ich mich auf die Suche nach einem Plugin begeben, das den zerfall von Ausrüstung (eigene und NPCs) stoppt bzw. verhindert. Da ich dazu nichts gefunden habe, habe ich auch noch nach einem Plugin gesucht, das evtl. einfach automatisch die Rüstung repariert. Auch dazu wurde ich nicht fündig.
[Edit:] Ich habe mal gerade in den Gamepay Konstanten im Editor nachgeschaut. Da gibt es Zeilen wie fWeaponDamageMult was für mich heißt "Waffenschadenmultiplizierer". Nun, ist das der Waffenschadenmultiplizierer oder jener für den Schaden, den z.Bsp. eine Waffe abbekommt? Gibt es eine Auflistung aller Konstanten?
[Edit2:] Es gibt einen Zauber namens "Rüstung auflösen". Damit müsste sich in umgekehrter Weise sicherlich auch etwas anstellen lassen? Anscheinend leider nicht, negative Werte zu übergeben, scheint nicht möglich zu sein

Daher meine Frage:
Kann man den Zerfall aufheben/deaktivieren per Plugin, wenn ja wie?

Meine zweite Frage:
Gibt es eine Möglichkeit, die Einnahme von Tränken zu beschränken. Ich glaube es ist jedem bekannt. Man pusht sich Alchemie via billigen Schrotttränken herstellen (irgendein Rezept gabs mit Schlamm?) und verkauft diese. Später kauft man sich diese irgendwas festigen Sachen und/oder stellt sich wie ich damals einfach mal 200-300 Leviationstränke mit hohem Alchemielevel (90+) her, was auf Dauer den Spielspaß senkt.
Irgendwie soll es nur möglich sein entweder X Tränke gleichzeitig intus zu haben oder pro Y Zeit nur eine bestimmte Möglichkeit zu trinken
 
Zuletzt bearbeitet:
Zur ersten Frage: Wenn es ein NPC ist, den du als Begleiter hast, solltest du doch einfach die Rüstungsgegenstände aus seinem Inventar in deins ziehen und dann reparieren können?

MfG,

Merin
 
  • Like
Reaktionen: Drullo321
Nein, darum geht es nicht. Ich möchte mich weder drum kümmern müssen, die eigene Rüstung zu reparieren noch möchte ich mich darum kümmern müssen, das die NPCs ihre Rüstung repariert bekommen (per Script o.ä.)
Darum geht es nicht um Begleiter, sondern schlicht um a) Faulheit und b) eine Modidee die ich später umsetzen möchte (Dauerbelagerung und Verteidigung von NPCs vs Tiere)
 
Ich denke er meint das die Rüstung die NPCs tragen Quasi unzerstörbar sind.
Man könnte bestimmt das per Scripts lösen wo bei es bestimmt ein paar Fehler geben könnte.

Ich hab selber auch schon ähnliche Gedanken gemacht.
Das man nach paar Kämpfen seinen Partner erst mal "in die Wartung" schicken müsste, was manchmal nervig sein könnte. Aber in Großen und ganzen ist es ja nicht schlimm, weil es ja die Schmiede Kenntnisse fördert :)
 
  • Like
Reaktionen: Drullo321
Da hast du dir gerade zwei der tollsten Themen ausgesucht.

1) Die Reparaturfunktionen im CS sind äußerst verbuggt. Welche genau funktionieren, müsste man ausprobieren. Rein prinzipiell musst du die ID des NPCs, des Gegenstandes und des Hammers kennen. Alle müssten also einzigartige Gegenstände sein, was eine allgemeine Lösung unmöglich macht.

Wenn du eine Belagerungsquest machen willst, kannst du das aber sehr viel leichter lösen: "Unser Schmied wurde in der Belagerung getötet. Könnt Ihr unsere Waffen reparieren?"

Eine weitere Alternative wäre die Gegenstände einfach aus dem Inventar zu entfernen und im selben Frame die gleichen wieder hinzuzufügen (und auszurüsten). Die neuen Gegenstände haben maximale Haltbarkeit.

2) Man kann die Einnahme von Tränken nicht sicher detektieren. Sowohl OnActivate als auch die Soundlösung funktionieren nicht (ich rede aus Erfahrung). Wenn du also nicht einmal mitbekommst, dass ein Trank getrunken wird, kannst du das auch nicht limitieren.
 
  • Like
Reaktionen: Drullo321
Na, das habe ich mir doch schon fast gedacht. Bin natürlich nicht der erste der auf solche Ideen gekommen ist und dann wird es wohl einen Grund haben, warum es sowas noch nicht gibt :lol:
Lassen wir das mal mit den Tränke außer Acht und kümmern wir uns erstmal um die Ausrüstung.
Die Belagerung war nur ein Beispiel. Angenommen (und das habe ich nicht vor, soll es nur verdeutlichen) ich stelle mich irgendwohin mit meiner Rüstung. Man nehme einen feindlichen NPC oder Creature mit Waffen (z.Bsp. Skelette). Angenommen wir beide stehen dumm da und ich geh Kaffee trinken (und ich würde z.Bsp. durch ne VZ leben regenerieren). Nun wenn ich in 30 min wiederkommen würde wäre meine Rüstung kaputt und die Waffe des NPC/Creature kaputt.
Das soll nicht geschehen und nicht durch einen Workarround gefixt werden (wie du angesprochen hast, Script zum Ansprechen und dann alles reparieren).

Vielmehr soll ich auch beruhigten Herzens nach 30 Min wiederkommen können, während meine Rüstung immernoch glänzt und dem NPC dicke Muskeln wachsen vom Waffe hin- und herschwingen.

Ich bin ein Laie was Scripte und Co angeht, aber meine Ideen:
- Gameplay -> Game Settings: Konnte leider keine Beschreibung/Auflistung dieser Variablen finden, gibt es hier evtl einen Equipment Damage Factor?

- Unter Gameplay->Magic Effects gibt es "Rüstung auflösen" (ebenso mit Waffe). Ebenso gibt es dafür Spells. Leider habe ich nichts gefunden wie man Magic Effects hinzufügt. Negative Werte konnte ich dem Spell leider auch nicht geben. Z.Bsp. einen Ring mit permanenter Rüssi auflösen habe ich bereits erstellt. Er arbeitet scheinbar langsam aber permanent. Meine Idee: Irgendwie das ins Positive drehen und dann jeder Rasse als Fähigkeit geben?
 
Zuletzt bearbeitet:
- Gameplay -> Game Settings: Konnte leider keine Beschreibung/Auflistung dieser Variablen finden, gibt es hier evtl einen Equipment Damage Factor?

Die GameSettings, die irgendwas mit Schaden und Reparatur zu tun haben, dürften folgende sein:

- fRepairAmountMult
- fRepairMult

Was genau die allerings bewirken, müsstest du selber mal ausprobieren.

- Unter Gameplay->Magic Effects gibt es "Rüstung auflösen" (ebenso mit Waffe). Ebenso gibt es dafür Spells. Leider habe ich nichts gefunden wie man Magic Effects hinzufügt. Negative Werte konnte ich dem Spell leider auch nicht geben. Z.Bsp. einen Ring mit permanenter Rüssi auflösen habe ich bereits erstellt. Er arbeitet scheinbar langsam aber permanent. Meine Idee: Irgendwie das ins Positive drehen und dann jeder Rasse als Fähigkeit geben?

Du kannst keine neuen Magic Effects hinzufügen. Und du kannst auch keinen bestehenden so abwandeln, dass Rüstung auflösen umgekehrt wirkt.
 
Die beiden angesprochenen Variablen lassen sich zumindest nicht für meinen Wunsch einsetzen.
Ich les mir gerade deine Befehlsreferenz durch und versuche mich wohl gleich an meinem ersten Script. Evtl kannst du mir etwas unter die Arme greifen.

Was wird benötigt:

- Script welches automatisch auf irgendeine Weise beschädigte Waffen des Spielers repariert (bei Schaden, wenn kaputt) und sie auf jedenfall wieder aktiv setzt
- Selbiges für NPCs, da sagtest du aber, das wäre nicht so einfach umzusetzen. Zunächst also egal (Grundidee war, es gibt ne Stelle X wo respawnende Creatures gegen ne Festung von NPCs rennen und es Heiler, Bogenschützen, etc. gibt. Irgendwann geht halt z.Bsp. den Bogenschützen der Bogen kaputt, muss er halt ersetzt werden)

Edit:

Ich als MW Skriptlaie habe mal ein wenig rumprobiert und aus der UESP Wiki mir die Variablen rausgezogen:

Code:
begin a_selfrepair

short state

if (state == 0)
	if (OnActivate ==1)
		if ( player->GetHealth < 30 )
			player->SetHealth, 50
		endif
	endif
endif

end

Funktion:
Spieler klickt Object mit dem Skript an (bei mir ne Barrel)
Wenn er unter 30 Leben ist, wird sein Leben auf 50 gesetzt (Min und Max)

So jetzt muss das ganze noch adaptiert werden und mich plagen folgende Probleme

- Worauf lege ich das Script bzw. gibts globale Frame Scripts, damit sozusagen immer/oft geprüft wird, damit ich OnActivate weglassen kann?

- Ich kann mir das Health geben lassen und mit GetHealthRatio(laut Wiki) den Prozentwert vom MaxLeben, aber es gibt keine SetHealthRatio. Wie schreibe ich also ne 1.0 zurück? Denn schreibe ich mit SetHealth eine 1.0 zurück sterb ich (weil er mein Leben auf 0/1 setzt)
Where: Value = Value to set the stat by. Can be a literal value or a
variable (float).

- Waffe oder Rüstung, ich brauch ne ID. Naja ich will das ja bei allen Waffen und Rüstungen gültig machen, wie?
 
Zuletzt bearbeitet:
zuerst mal: alle Skripts laufen - und dann tun sie wenn sie Global sind oder auf Objekten in der Aktuellen zelle (und im inventar von Kisten/NPS/Player dort) sind IMMER. OnActivate stellt nur ins Inventar ziehen wollen oder benutzen (mit Space) dar. In dem ist in dem Frame 1 in dem das passiert.
Auf Objekte "zielen" kann man mit nicht allen Befehlen und die mit denen es geht nur auf alle Objekte einer Art zu gleich.
Ohne XYZ-> trifft der Befehl dann den Träger des Skripts.
Alle Rüstungen mit einem Skript versehen ist aber nicht gerade gut, weil man diese dann z.B. im Inventar nicht mehr stapeln kann.
Ob setCurrentHealth auch auf Rüstungen geht weiss ich nicht, kann man ja leicht ausprobieren.
Wenn man einen Abartig großen wert für das dahiner angibt (so 10000000), werden die HP einfach maximiert.

Zu der Trankgeschichte: es gibt PIs die alle Intelligenzerhöhen effekte von zutaten entfernen, dann kann man mit Alchemie garnicht mehr "boosten"
 
und dann tun sie wenn sie Global sind oder auf Objekten in der Aktuellen zelle

Dann sag mir bitte wie

und die mit denen es geht nur auf alle Objekte einer Art zu gleich.

Dann sag mir doch auch hier bitte welche Arten ich wie adressiere. Es gibt den Befehl "GetWeaponType" der alle Waffen umfasst, aber keinerlei Rüstung. Außerdem weiß ich dann nicht, wie ich anschließend die Waffe adressiere.

Alle Rüstungen mit einem Skript versehen ist aber nicht gerade gut, weil man diese dann z.B. im Inventar nicht mehr stapeln kann.

Wie schon gesagt, das wäre alles andere als gut, daher ein globales Skript, welches den Spieler und/oder alle betrifft.

Wenn man einen Abartig großen wert für das dahiner angibt (so 10000000), werden die HP einfach maximiert.
Ja, und das kann man gut und schlecht sehen. Zumindest beim Spielerleben geht es über das bisherige Maximum raus. Dort ärgerlich, bei Waffen wäre mir das egal, wenn ich z.Bsp. setHealth 5000 mache und bei <90% Haltbarkeit wieder auf 5000 setze, ist ja egal wieviel Leben ne Waffe/Rüstung dazu hat. Dazu müsste ich aber wissen, wie ich Waffen- und Rüstungsgruppen, wie du es oben angesprochen hast, adressiere.
Und es würde mir auch reichen, wenn nicht anders möglich, es erstmal nur den Spieler betreffen würde
 
Dann sag mir bitte wie

Code:
Begin XXX
MessageBox, "XXX"
End
würde jeden Frame XXX Spammen, wenn es global ist überall und wenn es auf einem Objekt liegt, dann wenn es "in der nähe" ist (so wie oben beschrieben)


Dann sag mir doch auch hier bitte welche Arten ich wie adressiere. Es gibt den Befehl "GetWeaponType" der alle Waffen umfasst, aber keinerlei Rüstung. Außerdem weiß ich dann nicht, wie ich anschließend die Waffe adressiere.
Also eine RÜstung hat mir ConstructionSet z.B. die ID bonemold_helm (Knochenhelm) jetzt bewirkt bonemold_helm->disable dass alle Knochenhelme in spiel deaktiviert (=unsichtbar) werden. Man könnte jetzt für jede Bestehende Rüstung so einen Befehl machen, aber ich würde das nicht tun.
Alle Helme auf einmal treffen geht nicht.

Ja, und das kann man gut und schlecht sehen. Zumindest beim Spielerleben geht es über das bisherige Maximum raus. Dort ärgerlich, bei Waffen wäre mir das egal, wenn ich z.Bsp. setHealth 5000 mache und bei <90% Haltbarkeit wieder auf 5000 setze, ist ja egal wieviel Leben ne Waffe/Rüstung dazu hat. Dazu müsste ich aber wissen, wie ich Waffen- und Rüstungsgruppen, wie du es oben angesprochen hast, adressiere.
Und es würde mir auch reichen, wenn nicht anders möglich, es erstmal nur den Spieler betreffen würde

wenn dein char 100 Leben hatte, diese auf 20/100 gefallen sind und duch benutzt genantenten Befehl, hat er nacher 100 und nicht mehr. Deswegen ist das auch ein Trick und kein Mist.

Wie schon gesagt, das wäre alles andere als gut, daher ein globales Skript, welches den Spieler und/oder alle betrifft.
Ich bezweifle dass man das weder global noch lokal umsetzten kann und der Nutzen größer ist als der Schaden, entweder ist nacher das Inventar hässlich oder die Performance im Eimer und neue Objekte (verzauber oder aus anderen PI nicht betroffen)
 
Wie benutzt du bitte setCurrentHealth

Code:
player->set CurrentHealth to 500
bleibt ohne Wirkung, andere Arten erlaubt er mir nicht und gibt mir eine Fehlermeldung zurück

Mal was anderes, Casts bzw. Variablen in andere Variablen mithilfe von Funktionen überführen ist hier nicht möglich oder?

Edit: angeblich ist das nur ein Konsolenkommando?
 
Zuletzt bearbeitet:
Fehler meinerseits: GetHealth gibt momentane HP zurück, SetHealth setzt maximale HP fest und setzt monemta=maximal, ModHealth erhöht Max HP und Momentane HP um Argument (senkt falls negativ) und
ModCurrentHealth ändert die Momentanen HP, aber nicht großer als die Maximalen sind. Benutzt werden die alle so (auf den spieler)
Player->Befehl Zahl
Player->ModCurrentHealth 100000000 maximiert z.B. die Trefferpunkte (voll geheilt) ändernt die maximalen aber nicht.
 
Danke dir, das hat für den Spieler geklappt (habe mir mal testweise ein Spieler-Autoheal-Script gebastelt).
Nun, die Idee der automatischen Reparatur für alle Waffen/Rüstungen werde ich wohl begraben, aber nicht so schlimm.

Aber das ist nicht so schlimm, angenommen ich mache so ne Belagerung kann ich ja einfach die benötigten Waffen/Rüstungen clonen und darauf ein Script drauf legen (die NPCs sollen eh auf irgendeine Weise verschwinden sollten sie sterben).

Du hast gesagt, wenn ein Script auf einem Object liegt, benötige ich keine Zuweisung (xyz->befehl). Also habe ich eine Clonwaffe erstellt, darauf das Script gelegt
Code:
begin a_selfrepair

short state

if (state == 0)
		if ( GetHealthGetRatio < 0.5 )
			ModCurrentHealth 500
		endif
	endif
endif

end

Und es in ne Truhe gelegt. Spielneustart, aufgenommen, mit meinem Rüssi zerstören Ring und 1h Wartezeit zerstört, repariert auf 1hp und angezogen, nichts passiert.
Müsste der Gegenstand nicht automatisch repariert werden? Wenn nicht, welche Befehle sind für diese Gegenstände erlaubt?

Edit: Kann es sein das sämtliche GetHealth(Ratio) und SetHealth nicht funktionieren auf Waffen? Ich meine, hey, die haben ja auch einen Lebensbalken. Gibt es eine andere Möglichkeit die Waffen zu reparieren?
 
Zuletzt bearbeitet: