Projekt [Mod-Projekt] Konsum-Mod

Hattu

Bürger
ja, also. ich will einen mod machen, welcher bewirkt das der char regelmäßig essen und trinken muss. ich weis definitiv das es möglich ist, da es das auf englisch schon gibt. nur weis ich nicht wie man das machen müsste. wäre sicher durch ein einfaches script machbar.

ich habe es mir so vorgestellt:

Essen: der char kan 24 stunden ohne essen sein, dan kommen die ersten
entzugserscheinungen

essen:

legende: alle anderen attribute: [alle anderen attribute ausser glück]

24 stunden ohne essen: -1 auf alle attribute
24 weitere stunden: - 2 konstitution, -1 alle anderen attribute
24 stunden später: -3 konstitution, -2 stärke, wille, -1 auf alle anderen attribute
24 stunden später: - 4 k, -3 s, w, andere -1
dan hat der char insgesamt -10 auf konstitution, - 7 auf stärke und wille und -3 auf alle anderen attribute (inelligenz, geschiklichkeit, charisma......)
weiter gehts mit: -5k, -4 s,w , andere -1
und nach 24 stunden wieder: -6 k, -4 sw, andere -1
und wen konstitution 0 ist, begint der verhungerungsprozess: -1 schaden durch...ähm...durch hunger. permanent.

wen der char jetzt 15 stunden lang nix gegessen hat und z.B ein brot isst, kan er wieder 24 stunden ohne essen.
wen ein char in phase 4 ist, mit -10 auf konstitution, - 7 auf stärke und wille und -3 auf alle anderen attribute; und er isst ein brot, dan passiert folgendes: nach 24 stunden, kommt er in phase 3 zurück, mit -6 k, -4 s, w, alles andere -3. wen er in 24 stunden etwas istt kommt er in phase 2, und wen nicht, in phase 4.
wen der char gerade am verhungern ist, und etwas isst, so hört er auf zu verhungern und kommt in die phase in der er vorher war, usw.

hoffe es war deutlich

Trinken:

24 stunden: 10 leben senken
24 stunden danach: 20 leben senken
24 stunden später: 40 leben senken
24 stunden nachher: 80 leben senken
24 stunden später: 160 leben senken
usw. bis er tot ist oder etwas trinkt
der umkehrprozess ist wie bei essen.

ich hoffe jemand kan mich beraten wie das gehen könnte. der script wird vielleicht doch nicht SO einfach.

thx im vorraus
 
ich hoffe jemand kan mich beraten wie das gehen könnte. der script wird vielleicht doch nicht SO einfach.

Nicht SO einfach?! Durch die ganzen Abstufungen wird das extrem kompliziert! Es kann sein, dass du die Abstufungen anpassen musst, da es so nicht möglich ist.

Ich nehme an, deine Anfrage wegen lokalen Variablen bezieht sich auf dieses Projekt. Hier würde ich auf jeden Fall zwei globale Variablen benutzen (eine fürs Essen und eine fürs Trinken). Das ganze wird dann von zwei globalen Scripten überwacht, die in einem StartScript gestartet werden.

Im Moment hab ich keine Zeit, weiter darüber nachzudenken, aber später kann ich dir mal eine Grundstruktur für das Script zeichnen.
 
Das Problem sehe ich eigentlich weniger in den Abstufungen als in der Überprüfung, ob der Spieler was gegessen oder getrunken hat. Das müsste man für jeden Gegenstand einzeln abfragen und das würde heissen, dass die meisten anderen Mods nicht kompatibel wären, weil man deren Gegenstände auch abfragen müsste...

Also, nehmen wir an, wir hätten eine Möglichkeit zu überprüfen, ob der Spieler gegessen oder getrunken hat, dann müsste das Script mit deinen Stufen in etwa so aussehen - wobei "VarEssen" und "VarTrinken" die beiden globalen Variablen sind.

Code:
begin ueberlebensscript

short essphase
short trkphase

short eschaden
short tschaden

[b]Überprüfung, ob getrunken oder gegessen wurde; momentan keine Idee, wie das durchführbar wäre... Wenn getrunken wurde, werden die beiden globalen Variablen auf den Wert ((DaysPassed - VarEssen) - 1) bzw. ((Dayspassed - VarTrinken) - 1) gesetzt [/b]

If (VarEssen < 0)
set VarEssen to 0
Endif

If (VarTrinken < 0)
set VarTrinken to 0
Endif

;diese beiden Variablen werden sonst kleiner als 0, wenn man mehrmals pro Tag isst oder trinkt; wobei 0 heisst, dass man innerhalb der letzten 24h gegessen hat.

set essphase to (DaysPassed - VarEssen)
set trkphase to (DaysPassed - VarTrinken)

;jetzt musst du nur noch die Schäden als Spells anbringen, also

If (essphase > 0)
player->addspell...
player->addspell...
...

set essphase to (essphase -1 )
Endif

If (trkphase > 0)
player->addspell
...
set trkphase to (trkphase -1 )

end

Das Script ist jetzt auf die Schnelle entstanden und wird noch eingie Fehler enthalten. Das Stufensystem kann man wohl nicht so einführen, wie du es gerne gehabt hättest, aber ich denke mal drüber nach.

Gruss
Kensen
 
  • Like
Reaktionen: Hattu
Also bezüglich der Abstufungen seh ich kein Problem ... du definierst für jede Stufe einfach einen eigenen Spell, wenn nun eine neue Stufe erreicht wird tust du die vorherige mit remove entfernen und die neue mit add hinzufügen.

Was das Erkennen der Objekte angeht könnte man das mit den Skripterweiterungen von MWSE eventuell hinbekommen ... da man dort (soweit ich das noch in Erinnerung hab) die aktuelle inUse-Referenz nach dem Objekttyp untersuchen kann (glaub mit XContentList oder was Vergleichbares) so prüft man einfach jedes Objekt das "ausgerüstet" wird nach dem Typ und wenn dieser "ingredient" ist tust du deine Hunger-Variable ändern.
Das ist aber alles ziemliches "hardcore"-Skripting, was heißen soll dass man sich da erst reinarbeiten muss ... kann dir da bzgl. näherer Infos auch nicht weiter helfen, da aus dem Morrowind Modding schon ne Weile raus bin.
 
ich werde versuchen deinen script zu verstehen
ich blicke nicht durch, aber wen ich es mir genau ansehe dan verstehe ich es sicher. danke

@killfetzer
meine anfrage bezieht sich nicht auf diesen mod. bei diesem mod bin ich noch gar nicht so weit.
 
also: ich habe das jetzt mit meiner langsamen birne analysiert, und bin zur ansich gekommen, dass das hauptroblem ist, zu prüfen ob gegessen wurde.
gibt es dazu vielleicht so einen einfachen befehl wie

if playereated kwamaei set essenvar to 1?
 
Meine Idee zum Essen wäre gewesen, den Spieler auf einen "Ausdauer wiederherstellen"-Effekt zu überprüfen. Zumindest viele der "gänigen" Nahrungsmittel, wie Brot, Fleisch, etc., besitzen diesen als ersten Effekt.

Eine andere Lösung fällt mir dazu so nicht ein.
 
Mhh das wär in der Form dann aber überbrückbar mit Verzauberungen oder Zaubersprüchen. Wie wäre es wenn jede Minute (bzw. alle paar Sekunden) die essbaren Gegenstände im Inventar gezählt werden ... wenn nun der Ausdauer-Effekt eintritt wird nochmal gezählt, wenn die Anzahl gegenüber der letzten Zählung geringer ist wurde etwas gegessen ... ist zugegebenermaßen immer noch etwas anfällig für "Zufälle" (falls man etwas einsammelt und im selben "Zeitfenster" etwas isst) aber besser als nur die Überprüfung.
 
Kommt aufs Gleiche hinaus. Auch dabei muss jeder einzelne Gegenstand überprüft werden, was bedeutet, dass die Mod nur mit dem Autoren bekannten Gegenständen funktionieren würde, also alles, was der Autor im Moment der Erstellung nicht kennt bzw. nicht einfügt, wird nachher keinen Effekt auf Hunger und Durst haben.

Gruss
Kensen
 
es ist nicht so schlimm, wen die mod-sachen nicht zu essen und trinken gezählt werden. aber es gibt doch sicher einen befehl um zu überprüfen ob gerade etwas gegessen wurde? es gab ja den skooma-suchts-mod. da muste man skooma essen, wen man süchtig war. nur leider ist er verschollen, also kan ich den script nicht übernehmen. aber wie wäre es, wen ich allen tellern und gläsern einen script gebe, der bewirkt, das wen man den teller auf das charbild zieht, gefragt wird ob man essen will. dan wird abgefragt ob irgendwelche nahrungsmittel im inventar sind, das geht sicher, und wen ja dan mach ich removeitem und die sache ist "gegessen" (wortspiel).

ist das nicht eine idee?
 
An Tellern und Gläsern gibt es ähnlich viel wie an Nahrungsmitteln... Selbst wenn man den Tränken und Esswaren ein Script zur Überprüfung zuweisen würde, wär's nicht weniger kompliziert, weil man nicht überprüfen kann, ob es durch Benutzung verschwunden ist. Anders ausgedrückt: Man kann nur feststellen, ob's im Inventar ist oder nicht, aber nicht, wie aus dem Inventar verschwunden ist (ablegen oder benutzen).

Die Skooma-Sucht-Mod tat wahrscheinlich genau das, was ich oben geschrieben hatte: Sie hat überprüft, ob der Spieler Skooma ins Inventar genommen hat und wenn es eins weniger war als mal im Inventar war, dann wurdeüberprüft, ob auf dem Spieler die Skooma-Effekte liegen.
Das ginge natürlich für die Essensmod genauso, nur müsste man das für jedes einzelne Nahrungsmittel scripten...

Gruss
Kensen
 
Kommt aufs Gleiche hinaus. Auch dabei muss jeder einzelne Gegenstand überprüft werden, was bedeutet, dass die Mod nur mit dem Autoren bekannten Gegenständen funktionieren würde, also alles, was der Autor im Moment der Erstellung nicht kennt bzw. nicht einfügt, wird nachher keinen Effekt auf Hunger und Durst haben.

Hab das eher im Bezug auf die erweiterten Skriptfunktionen von MWSE gemeint, also es werden alle Items im Inventar untersucht und bei Typ Ingredient wird hochgezählt, das wird solange gemacht bis der Inventar-Stack komplett abgearbeitet wurde. Damit ist man nicht auf die einzelnen Item-ID's sondern nur den Item-Typ festgelegt (bzw. auch auf den Ausdauer-Effekt falls man dies zum identifizieren nutzt), der aber diesbezüglich kein Problem ist (ist ja immer der Selbe).

es gab ja den skooma-suchts-mod. da muste man skooma essen, wen man süchtig war. nur leider ist er verschollen, also kan ich den script nicht übernehmen.

da gibt es diverse mods für, meist klappt das nur weil die Skooma-Fläschchen einen festen Zauber haben den man per Skript abfangen kann, Zutaten und selbst erstellte Tränke usw. haben dagegen einen dynamischen Zaubereffekt ohne feste ID
 
ich bin ja kein profi, aber was ist das problem bei meiner version. würde das was nicht klappen? ich habe das so gemeint, das man nur mithilfe des tellers essen kan, indem man ihn auf das charabilkd zieht. dan wird abgefragt ob essen im inventar ist, und wen ja, dan wird es entfernt und der spieler hat gespeist. so muss man nicht abfragen ob es verschwunden ist6, sondern ob es da ist, was meiner meinung nach einfacher ist. oder?