Screen: lol![]()
Ein Item lässt sich schon selbst entfernen, aber mit einem anderen Befehl als sonst: RemoveMe
Aha, danke...hätte ich das nur von Anfang an gewusst, da hätte ich mir eine Menge sparen können. Ich habe es bisher so geregelt, dass das Item eine globale variable festlegt, diese wiederum wird von einem unsichtbaren Activator mit GameMode-Script abgefragt, der jedes mal in die Zelle des Spielers teleportiert werden muss, weil dieser GameMode-Script sonst nicht greift.
Ähm,
hier noch ein kleiner Hinweis für alle Lesenden. Meiner Erfahrung nach sollte man möglichst auf Globalen verzichten. Ich hatte bei beiden meiner Oblivion-Plugins große Probleme mit den Globalen, als ich sie aber rausgenommen habe, lief alles reibungsfrei. (z.B. die Sache mit der Ladereihenfolge bei der Verbesserten Magiergilde. Dabei crashte das Spiel immer beim Hochfahren noch vor dem Auswählen des Spielstandes.)
Ich würde empfehlen, lieber Lokalen zu nutzen, die Du (meist) genauso abfragen kannst, wenn Du sie auf einen Activator legst.
Also ich hatte noch keine Probleme mit Globals(in OWC gibt es ca 15 Stück), aber da ich ja jetzt weiß wie man Items entfernt kann ich ja zumindest in Ivellon darauf verzichten.
Ich kann ebenfalls keine Probleme mit Globals bestätigen. OI verwendet auch ein paar und in manchen Fällen geht es schlicht nicht anders. Außerdem ist es natürlich abzuwägen, ob ich überhaupt lokale Variablen verwenden kann - das geht nicht immer wegen fehlendem Objekt (Activator) und ist manchmal auch schlicht einfach nur unpraktisch.
--
● Oblivion Improved -> Download || ● Global Settings Interface -> Download
● Female Helmet Replacer -> Download || ● Inoffizieller "Knights of the Nine"-Patch -> Download
Niveau sieht nur von unten aus wie Arroganz... || At least I still have my self-respect...
Rung, hast du damals nicht geschrieben, dass die Probleme auftauchten, nachdem du die Globale durch ein Questscript abgefragt wurde? Aber Globalen sind auch eher unnötig. Man kann eigentlich immer auf QuestScript variables zurückgreifen, auch wenn Globalen sich durch kürzere Befehle abfragen lassen.![]()
In meinem Fall klappt das mit RemoveMe auch nicht.
Zur Info, im Spiel gibt es ein Schwert, bei dem der Spieler entscheiden kann ob er es ein- oder zweihändig führen möchte. Sobald man es anlegt öffnet sich eine Messagebox mit Auswahlmenü.
Bisher hatte ich es immer so geregelt, dass beim Anlegen eine Global auf 1 gesetzt und ein unsichtbarer Activator mit MenuMode-Script beim Spieler gespawnt wird. Der enthält den ganzen eigentlichen Krempel. Dabei wird das Schwert aus dem Inventar entfernt und ein neues hineingelegt und automatisch ausgerüstet, abhängig von der Wahl des Spielers ist es die ein- bzw zweihändige Variante.
Hat bisher immer einwandfrei funktioniert, aber mit meinem jetzigen Script wird die neue, erhaltene Einhandvariante des Schwerts nur ins Inventar gelegt, aber eben nicht ausgerüstet; bei der Zweihandvariante stürzt das Spiel einfach mit 'Oblivion.exe hat einen Fehler festgestellt' ab. Hier mein Script, das auf dem Schwert liegt(unordentlich, ich weiß):
edit:
Um auf das andere Schwert zurückzukommen, das von einem Gegner genutzt wird und gegen ein schwächeres ausgetauscht werden soll sobald es der Spieler einsammelt.
Ich kann es zwar wunderbar per RemoveMe verschwinden lassen, aber wenn ich noch in einer zweiten Zeile dem Spieler das neue Schwert ins Inventar schieben will, stürzt das Spiel ab wenn diese Zeile vor RemoveMe steht, steht sie darunter, dann verschwindet das Schwert nur ohne ein neues zu erzeugen.
Geändert von Lazarus (04.05.2007 um 16:47 Uhr)
Meine Globals werden eigentlich alle durch ein Questscript gesetzt und auch abgefragt - soviel dazuIch seh einfach den Punkt nicht, Sachen, die von mehreren Scripten benötigt werden, jedesmal zu referenzieren. Und beispielsweise ein Versioncheck mit einer lokalen Variable? Das muss ich nun wirklich nicht haben
Bekanntlich führen aber viele Wege nach Rom, die einen machen es sich einfach, die anderen suchen sich eben andere Wege... solange alles funktioniert, ist es doch gut so... sicher könnte ich bei einigen Sachen auch auf lokale Variablen umsteigen. Aber warum sollte ich? Das bedeutet nur extra Arbeit, längere Scripte und 0 Nutzen
@Lazarus: was spricht gegen ein globales Script (bzw. eine Quest) das kurz gestartet wird, sobald der Gegner tot ist und sich sofort beenden, wenn die Sache mit dem Schwert erledigt ist? Muss ja nicht die ganze Zeit laufen. Oder hab ich jetzt irgendwas nicht bedacht?! Dann hast du auch kein Problem mehr mit RemoveItem/AddItem... und da ich vermute, das Script am Schwert hängt, ist es ziemlich normal das ein AddItem danach (also nach dem Removeitem) nicht mehr funktioniert, denn das Script ist dann sofort hin, sobald das Item nicht mehr da ist und läuft IMO nicht weiter. Warum das Spiel crasht, wenn das AddItem vor dem Removeitem kommt, weiß ich allerdings auch nicht... hab mir das Script nicht wirklich angesehen... vielleicht würde eine Zeitschleife zwischen hinzufügen und entfernen von 3 Sekunden oder so helfen.
--
● Oblivion Improved -> Download || ● Global Settings Interface -> Download
● Female Helmet Replacer -> Download || ● Inoffizieller "Knights of the Nine"-Patch -> Download
Niveau sieht nur von unten aus wie Arroganz... || At least I still have my self-respect...
Geändert von NewRaven (04.05.2007 um 17:01 Uhr)