Hmm... naja das Skript ginge sicher (also technisch gesehen, ich könnte es nicht) und auch ob er leer oder voll ist müsste mit einer Variablen zu klären sein... Aber warum übernimmt der Stern als Kopie nicht die Eigenschaften des Originals?!![]()
Hmm... naja das Skript ginge sicher (also technisch gesehen, ich könnte es nicht) und auch ob er leer oder voll ist müsste mit einer Variablen zu klären sein... Aber warum übernimmt der Stern als Kopie nicht die Eigenschaften des Originals?!![]()
Vielleicht steht in irgendeiner subroutine des spiels drin, wenn item *hier Azurasterncode einfügen* benutzt wird, dann füge ihn neu in das Spielerinventar ein. Oder lösch ihn erst gar nicht. Also so ähnlich, wie ich das grade mit dem Skript gemeint habe.
Wenn du den Stern kopierst, hast du zwar das gleiche Modell etc, aber einen anderen Itemcode.
Ich weiß nicht, ob das mit dem Skript so einfach ist... Hab für Obl noch nichts geskriptet bisher. Und so ein nettes Werk wie "Scripting for Dummies" hab ich auch noch nicht gefunden. Wenn das jemand kennt, immer her damit.
Die billigste Lösung wäre natürlich, ein Skript zu schreiben, das nach einem bestimmten Ereigniss (Stern wird das erste mal ins Inventar genommen) immer nachguckt, ob der Stern noch da ist. Wenn nicht, wird ein neuer hinzugefügt.
Nachteil: Der Stern kann nicht nur durch benutzten, sondern auch durch ablegen aus dem Inventar verschwinden. Dann hat man ziemlich bald ziemlich viele Sterne. Das könnte man umgehen, indem man den Stern als Questitem markiert, also unablegbar macht. Nachteil: Er ist dann eben unablegbar.
Hmmm... joa das ist schon klar, wie du das mit dem Skript gemeint hast. Das mit der Subroutine ist auch eine interessante Idee, ich denke darauf hat auch schon GlasMond angespielt. Deshalb ja meine Frage was "hardcoded" ist. Ganz nebenbei wäre ja noch interessant wo das steht![]()
Ja ohne Änderung der ID hätte ich ja gar keine Kopie machen können, die Frage ist nur, weshalb das Skript bzw. der Code, der da ja offenbar im Hintergrund noch eine Rolle spielt nicht bei der "Create a new Form?"- Frage angepasst wird?!![]()
![]()
Weil diese "Subroutine" nicht mit dem CS komuniziert. Es hat auch nichts mit Azuras Stern ansich zutun. Wenn man das CS öffnet ohne etwas zu laden, finden sich dennoch einige Gegenstände in den Listen. Diese sind die, die vom Spiel Hardcoded für verschiedene Dinge verwendet werden. Das Spiel interessiert sich nur für diese Objekte und diese IDs. Wenn du eine Kopie erstellst ist es ein neues Objekt und für das Spiel genauso ein anderes Ding wie zum Beispiel der Klockenturm in Bruma. Genausowenig wird das Spiel noch etwas mit Azuras Stern anfangen können, wenn du die Id des Originals änderst. Es findet es einfach nicht mehr. Genauso mit Varla und Welkyndsteinen. Deren Wirkungen sind ebenfalls Hardcoded. (Und wenn ich mich nicht täusche auch die Eigentschaft der schwarzen Sellensteine als einzige NPC-Seelen einfagen zu können.
Und ein solches Script ist auch keine einfache Sache da man mit der Hauseigenen Scriptsprache von Oblivion ziemlich eingeschränkt ist. (Um ein nahes Beispiel zu nennen: Man könnte nicht einmal abragen, ob ein Seelenstein voll oder Leer ist.) Die Einzige Möglichkeit das zu lösen wäre zu überprüfen, ob die Spieler den Stein noch hat. Allerdings müsste man dann noch überprüfen ob der Spieler den Gegenstand nicht einfach abgelegt hat( was möglich ist aber alles in allem ein ziemliches Gefummel mit Variablen wäre.)
Schade eigentlich...
Jop, du hast recht, hab grad mal da CS aufgemacht, da sind unter SoulGem genau zwei Gegenstände aufgeführt: AzuraStone und BlackSoulGem. Na toll... naja so weis ich jetzt wenigstens, wiso das CS nach dem öffnen immer direkt ein paar Gegenstände anzeigt (das hab ich mich immer schon gefragt! 8) ).
Naja und die Originale lasse ich ohnehin immer unangetastet! Weil dass die ID jeden Gegenstand einzigartig macht im CS, ist mir schon klar, es hätte mich auch nicht gewundert, wenn Azuras Stern nicht mehr funktioniert hätte nach einer ID- Änderung, aber den somit eigentlich logischen Rückschluss auf meine Kopie habe ich trotzdem nicht gezogen... doof...![]()
Ach ja und Dank @ MODIFIED für die Definition! Die Oblivion.exe ... da kommt man nicht ran, oder???OK keine wirklich ernst gemeinte Frage schade eigentlich... aber danke an alle für Hilfe und Erklärungen!
Grimoa's Idee kann ich leider auch nicht umsetzen... kein Plan vom Skripten... und das Skripting- Tutorial kann ich nicht genügend abstrahieren, um das auf mein Problem zu beziehen!
Schade, Schade, Schade...![]()
![]()
Edit @ kenet_korva: Oha! Dass Oblivion keine Variable zur Seelensteinstatusabfrage kennt hätte ich nicht gedacht! Wie weis das Spiel denn dann, ob man einen Seelenstein zur Füllung benutzen kann oder nicht???
Geändert von Nord (30.01.2008 um 19:02 Uhr)
Wo? Welches?
Die Seelensteine sind doch verchiedene Items, oder? Also ein "leerer Petty Soulgem" ist ein anderes Item als ein "Petty Soulgem mit Petty-Seele". Und ein "Leer Common Soulgem" hat wieder eine andere ID als "Common Soul gem mit Petty Seele" und noch eine andere ID hat "Common Soul Gem mit Common Soul".
Man müsste für einen neuen Seelenstein also ein Item mit einer ID für den Leerzustand haben und dan weitere Items für alle möglichen gefüllten Zustände.
Dann muss man natürlich alle Varianten im Spielerinventar abfragen. Man will ja nicht einen leeren Stein einfügen, wenn der Stein gefüllt wurde, sondern nur, wenn er benutzt wurde.
Aber jetzt wird es mit meinen Kenntnissen langsam wirklich spekulativ.
Die Benutzung des Wortes "Subroutine" erklärt sich übrigens durch einen hohen Star Trek Konsum wärend der prägenden Zeit meiner Kindheit.![]()
Naja das hier: http://theelderscrolls.info/?go=4editorscripten
Aber wie gesagt: Das behandelt eher einen anderen Aspekt des Skriptens und ich bin leider nicht gewandt genug, aus diesem Tutorial eine Essenz zu destillieren, die mir bei meinem Problem helfen würde...
Zu deinen Ideen kann ich leider gar nichts sagen... ich hab davon keine Ahnung!![]()
OK, das ist jetzt total OffTopic, aber: Kennst Du "Sinnlos im Weltraum"??? Das ist eine Parodie auf Star Trek, imho ziemlich genial, auch wenn ich mit Star Trek eigentlich nie etwas zu tun hatte.
Puh, das wäre in der Tat sehr schwierig. Man könnte das Script der Verzauberungsaltare möglicherweise umschreiben, eine Variable einsetzen, die überprüft, ob der Spieler den Seelenstein im Inventar hat, wenn er den Altar aktiviert und anschließend in einem GameMode-Block abfragt, ob sich der Seelenstein immer noch im Inventar befindet; wenn ja, setzt er die Variable zurück, wenn nein, wird der Seelenstein readded. Quasi:
Keine Ahnung, ob das funktionieren würde, hab's nur kurz zusammen geschrieben und muss jetzt off. Aber das ist doch ein möglicher Ansatzpunkt.
Öhm... erstmal: Respekt!![]()
![]()
Desweiteren sagt mir das Skript leider fast nichts, ausser, das ich es meiner Azuras-Stern-Kopie dann unter "Script" hinzufügen müsste?! Da steht jetzt ja "None". Ein möglicher Ansatzpunkt ist es sicher... aber warum das Skript des Verzauberungsaltars??? Soll keine Kritik sein, ich verstehs nur nicht!
Aber wenn man mit einem Seelenstein einen Gegenstand wieder aufläd, kommt ja nicht das enchant-Menu. Den Fall sollte man auch abdecken...
Muss vielleicht heißen? Also wenn er den Stein hat, und wenn er ihn immer noch hat, dann wird kein neuer hinzugefügt.
Das ist auch ein bißchen kurz...
Wenn du für MW Skripten lernen willst, solltest du Morrowind Scripting for Dummies lesen. Natürlich lässt sich das nicht 1:1 auf Oblivion übertragen, weil die Funkionen anders heißen, und einiges ganz anders funktioniert. Aber die Grundlagen, "die Art zu Denken", ist gleich. Ich behaupte sogar, die ist bei allen Programmiersprachen gleich. Wenn ich verstanden habe, was eine if-then-else Konstruktion oder eine "if i=irgendwas bis irgendwas anderes, dann mach dies"-Schleife tut, dann ist der Gedanke dahinter immer gleich. Auch wenn man es anders aufschreiben muss, damit es klappt. Und natürlich gibt es noch tausend Unterschiede, aber ich rede ja über die Gundlagen. Ich kann nähmlich eigentlich weder Programmieren, noch Skripten.Ich kann nur abschreiben.
Aarh, ja, klar. Wie gesagt, hatte gerade wenig Zeit, habe jetzt auch keine.
So müsste es korrekt sein, aber nachwievor: Ich konnte es bisweilen nicht testen. Das ist das umgeschriebene Script des Verzauberungsaltars, nicht für den Seelenstein; für den Fall des Aufladens kommt dann noch ein Script an den Seelenstein. Ich muss ehrlich gestehen, ich weiß jetzt gar nicht wie das Aufladen von Seelensteinen durch den Spieler funktioniert. Kommt da das Aufladen-Menü oder was?
*wieder abhaut*
Oblivion anschmeißt *endlich ne Ausrede, das Spiel zu starten*
Genau, wenn man einen gefüllten Seelenstein im Inventar anklickt (also equipped ?) dann kommt ein Menu, wo oben der Stein mit dem Seelenwert steht und darunter eine Liste der magischen Items im Inventar. Klicken auf die Items läd sie dann auf.![]()
Das obere Script funktioniert nicht so dolle. Das, was ich jetzt poste, funktioniert dagegen wunderbar (soweit ich es getestet habe).
Die Zeilen
message " "
message " "
dienen der Verhinderung von so bezeichnetem Message Spam (Die Nachricht "DeinSeelenstein added" wird nicht kommen, stattdessen nur eben das Oblivion-Zeichen; wenn du willst, dass diese Nachricht angezeigt wird, musst du nur die beiden Zeilen aus dem Script löschen). So erhält der Spieler immer direkt nach Nutzung des Altars einen neuen Seelenstein derselben ID, wenn er den alten dann nicht mehr im Inventar hat - den er in dem Fall ja nur durch Nutzung des Altars verloren haben kann.
Das Recharge-Script dagegen ist eine andere Sache (danke @ Grimoa für die Aufklärung). Befindet sich der Spieler im selben Raum mit einem Objekt, auf dem ein Script mit GameMode-Block liegt - wie in diesem Fall der Verzauberungsaltar -, so wird der GameMode-Block des Scripts einmal pro Frame durchgearbeitet. Das ist bei Recharge nicht möglich; GameMode wird innerhalb von Menüs ignoriert. Um ehrlich zu sein, ich habe keine Ahnung wie genau das mit dem Recharge-Menü funktioniert, aber über ein Script offensichtlich nicht.
Ähhh... ich versteh grade nicht wirklich viel, sorry, aber ist das Skript über welches ihr jetzt grad gesprochen habt dafür da, damit ich meinen selbstgebauten Stern am Verzauberungsaltar entleeren kann und trotzdem behalte??? Das wäre ja schonmal nicht schlecht!![]()
Aber die Sache mit dem Waffe aufladen und Stern behalten scheint mir fast nicht lösbar... ich habe zwar nicht wirklich Ahnung, aber wenn es einfach wäre, warum hätten die Entwickler es dann nicht einfach auch mit Skript machen sollen, statt es in der .exe zu codieren???
Und nochmal vielen Dank für eure Mühen!
Geändert von Nord (31.01.2008 um 16:01 Uhr)
Hardgecodet heißt, das dies offenbar fest im Code der Oblivion.exe enthalten ist, so das du mit dieser Plugin-Methode kein Einfluß nehmen kannst.