Nirn.de

Gast

Neueste Beiträge

Seiten: 1 [2] 3 4 ... 10
« am 14.10.2017, 13:03  »
Hey,
danke für die Antwort.

Magst du dein funktionierendes Script hier posten?
Mich würde interessieren wie es jetzt aussieht. :)
« am 14.10.2017, 01:11  »
Leider hatte ich in den letzten WOchen nicht viel Zeit mich mit Modding und den Vorgängen hier im Forum zu befassen und konnte das nicht mehr aktiv verfolgen. Die Arbeit an der Mod ist dementsprechend etwas liegen geblieben. Ich habe leider aus Zeitgründen längert nichts mehr an der Mod gemacht, es ist eine gewisse Zeit lang liegen geblieben und ich bin hier auch nicht mehr wirklich aktiv gewesen. Dazu kam jetzt leider bei diesen Script, dass ich (Wahrscheinlich wegen einer einfachen DEnkblockade) einfach nicht mehr weiterkam und das Script erstmal habe ruhen lassen, bis entweder mir oder den hier Anwesenden im Forum etwas einfallen würde.
Jetzt habe ich mich, nach einigen erfolglosen Versuchen in der Vergangenheit, nochmal an das Script rangesetzt, den alten Skriptcode genommen, bevor ich ihn verändert hatte. Da standen die fraglichen Zeilen tatsächlich noch ganz am Anfang in der BeginGamemode-Zeile drin. Die Variablen "Doonce" und "Activated", deren Wert zuerst abgefragt werden, bevor das Script entscheidet wie es fortfahren soll, habe ich weiter an den Anfang gesetzt. Er überprüft sie gleich und fährt dann irgednwie richtig fort. Offenbar hat er es jetzt geschnallt welchen Wert welche Variablen haben und arbeitet da Script korrekt ab. Irgendwie funktionierte es da und nachdem ich jetzt den Passus nochmal an den anfang gesetzt und den Rest dem untergeordnet habe funktioniert es nun doch. Es funktioniert. Das Script tut was es soll, offenbar ist es die "richtige Reihenfolge" in der man das ganze schreiben muss, damit die Routine des Scripts es korrekt abarbeitet. Ganz und gar verstanden, wie das mit den Zusammenhängen zwischen GetButtonPressed-Kommando und dem Begin-Gamemode-Befehl funktioniert habe ich jedoch immer noch nicht.

Die grobe Struktur von Scripts mit Message-Boxen und den "Ja"/"Nein"-Abfragen habe ich mir irgendwann mal abgekupfert und dann nur noch mit dem fraglichen Inhalt gefüllt. Nun war es ausnahmsweise mal so, dass mehr als sonst üblich zusäzliche, abzufragende Variablen eingebaut werden mussten. Damit sah das Script nun anders aus als sonst und irgednwie muss ich dabei dann doc etwas an die falsche Stelle gesetzt haben. Das ich die Hintergründe dieses "Standard-Scripts" und dessen was hinter so Abfragen wie "GetButtonPressed" eigentlich für Abläufe stehen, immer noch nicht wirklich verstehe, obwohl ich schon so lange damit arbeite ärgert mich tatsächlich schon ein wenig...

Ungeachtet dessen darf ich mich bei denen bedanken, die sich hier so viel Mühe gemacht haben, das Script durchzugucken und zu dessen Funktionen nachzulesen. Es freut mich das das Script dementsprechend funktioniert und zumindest das Prinzip, warum das Script nicht dazu kommt, die Variablen zum richtigen Zeitpunkt zu überprüfen und dann mit deren richtigem Wert fortzufahren, habe ich einigermaßen begriffen. Das ist auch für mich nicht unlogisch. Wieviel später genau die Abfrage der Variablen hingegen erfolgen sollte, wie viel "Zeit" man dem Script gönnen soll, den richtigen Wert der Variablen zurückzugeben um dann richtig weiter zu machen, kann ich auch noch nicht so nachvollziehen - nur dass man es eben etwas später (also weiter unten im Script, im GameMode-Block) einbauen muss, damit es funktioniert.
« am 13.10.2017, 13:51  »
Ich hab keine Ahnung wer die Anleitung geschrieben hat, das ist aber Schwachsinn.

GetButtonPressed gibt solange den Wert des letzten vom Spieler gedrückten Buttons zurück, bis die Funktion einmal ausgeführt wird.
Das kann selbst nach einer Stunde im Spiel noch passieren (obgleich der Spieler bisweilen vielleicht eine andere Messagebox ausgeführt hat, die den Result der vorhergehenden natürlich aushebelt). Rein zeit-technisch kann es gar nicht funktionieren GetButtonPressed direkt nach dem Triggern der Messagebox abzufragen.
Und weil GetButtonPressed nur einmal den letzten Wert (und dann immer -1) zurückgibt, ist eine Verwendung in einem If...ElseIf...EndIf-Block als Condition unmöglich, weil sie nur bei der ersten Abfrage den richtigen Wert zurückgibt.
Stattdessen speichert man den Wert in eine Variable.

Nur um das zu veranschaulichen:
OnActivate wird ausgeführt, wenn der Spieler den Activator "benutzt".
In diesem Block wird eine Messagebox ausgeführt, welche automatisch den MenuMode-Block ausführt (selbst wenn keiner definiert ist, befindet sich das Spiel in diesem Modus). Solange die Messagebox aktiv ist, wird nur der MenuMode ausgeführt.
Aber, noch bevor dieser MenuMode ausgeführt wird, möchte das Spiel bereits den gedrückten Button wissen (OnActivate-Block wird beendet. Eine Messagebox unterbricht das Ausführen des aktuellen Blocks der die Box getriggert hat nicht) den das Spiel aber gar nicht wissen kann, weil der Spieler in dieser Nanosekunde keine Möglichkeit hatte den Button zu drücken.
GetButtonPressed im MenuMode auszuführen, bringt auch nichts, da nach Drücken des Buttons der MenuMode beendet wird und das Spiel im MenuMode-Block doch nicht weiß welcher Button gedrückt wurde, da dieser Wert erst nach Ende des MenuModes übergeben wird.
Gamebryo kann leider nicht hellsehen, ansonsten müsste man nicht ärgerlich daran rumprogrammieren.

Demnach ist der GameMode die sicherste Möglichkeit GetButtonPressed zu aktivieren.
Ich würde mich eher an das professionelle Wiki halten, anstatt eine Seite die empfiehlt die QuestDelayTime auf 0.001 zu setzen.
Wenn du im GameMode Hotkeys abfragst (also mit "IsKeyPressed" Tasten die der Spieler auf der Tastatur drückt), reicht eine Intervall von 0.10 vollkommen aus, um die Tastenanschläge genau zu berechnen. Wem das doch noch zu ungenau ist, kann auch auf 0.01 runtergehen, aber 0.001 ist komplett übertrieben.
Hier mal das Beispiel vom CS Wiki:
https://cs.elderscrolls.com/index.php?title=GetButtonPressed
Zitat
Code
int button
int buttonPressed

Begin OnActivate
  if IsActionRef player == 1
    messagebox "You have 3 choices.", "Choice 1", "Choice 2", "Choice 3"
    set buttonPressed to 1
  endif
end

begin gamemode
  if buttonPressed == 1
    set button to getbuttonpressed

    if button > -1
      if button == 0
        ; choice 1
        set buttonPressed to 0
      elseif button == 1
        ; choice 2
        set buttonPressed to 0
      elseif button == 2
        ; choice 3
        set buttonPressed to 0
      endif
    endif
  endif
end



Wobei ich dir im Bezug auf die Antwort Recht gebe.
Ich hab Symbiarch bereits einmal ausgeholfen, da war er ziemlich gut bei der Sache.
Naja, vielleicht hat er es ja schon selber gelöst?

und immer öfter tue ich es auch nicht.

Mach dir nichts draus.
Ich schau auch nur noch sporadisch hier rein und sehe dann immer diese verrückten Elche die alle angreifen wollen ganz oben stehen.
Naja, den Clicks zu urteilen gibt's Leute die das echt lesen.

Einzig der Gamebryo-Code weckt oft mein Interesse, aber es gibt hier kaum Anfragen deswegen.
« am 13.10.2017, 12:39  »
Ist schon richtig, dass es im GameMode abgefragt wird. Der wird nämlich gleich nach der Messagebox ausgelöst und dort kann der richtige Wert des gedrückten Buttons problemslos abgefragt werden.

Laut dieser Anleitung muss bei Oblivion die MessageBox und das GetButtonPressed im selben Frame ablaufen. Du sagst zwar, dass dies auch der Fall ist, wenn die MessageBox in OnActivate steht und das GetButtonPressed im GameMode, aber so funktioniert es ja anscheinend nicht.

Ich würde als erstes mal versuchen, den gesamten Code ins GameMode Event zu verlagern. Sie wird es in dem Beispiel auch gemacht.

@OP: Wenn du hier Fragen postest, wäre das Mindeste, dass du Menschen, die deine Frage beantworten, auch eine Antwort gönnst. Mir geht es nicht um Kudos oder Danksagungen. Aber zumindest ein Hinweis, dass die Antwort gelesen wurde, wäre nett.

Dies ist mittlerweile der 5. Fall in Folge, wo ich jemandem auf eine Frage eine Antwort geschrieben habe, teilweise mehr als eine halbe Stunde recherchiert habe, und nicht einmal eine einsilbige Antwort erhalten habe. Ich beginne mich zu fragen, wozu ich hier überhaupt noch antworte - und immer öfter tue ich es auch nicht.
« am 13.10.2017, 11:27  »
Nein.
Wenn es im OnActivate-Block direkt nach der Messagebox kommt, hat der Spieler nicht einmal einen Frame Zeit um eine Auswahl zu treffen, was es also unmöglich macht der Variable den richtigen Wert eines gedrückten Button zu geben.

Ist schon richtig, dass es im GameMode abgefragt wird. Der wird nämlich gleich nach der Messagebox ausgelöst und dort kann der richtige Wert des gedrückten Buttons problemslos abgefragt werden.


Mir fällt leider auch nicht wirklich ein Problem auf.
Du sagst du hast mehrere Objekte die das selbe Script verwenden? Das sollte eigentlich kein Problem sein.
Jedes Objekt das du im Worldspace oder sonst wo platzierst bekommt eine eigene Referenz und wird seine eigene Kopie dieses Scripts ausführen.
Das heißt jedes Objekt wird ein eigenes "DoOnce", "Activated", "button", etc. haben.
Wobei ich mir nicht sicher bin, ob du die Objekte auch als "Persistent Reference" im WorldSpace oder wo auch immer du sie platziert hast definieren musst.

Andernfalls könnte es doch sein, dass dieses Script für alle Objekte gültig ist und eben keinen Unterschied macht. Wie man ein Objekt als "Persistent Reference" definiert weißt du?


Wenn das noch immer nichts hilft könntest du nach dem setzen der "Persistent Reference" einen Schritt weiter gehen und allen Objekten (hoffentlich sind es nicht viele) eine Referenzvariable zuweisen (einfach irgendeinen Namen im Eigenschaftsfenster des Objekts im Worldspace oder wo auch immer reinschreiben).

Dann könntest du im Script mittels "GetSelf" abfragen welchen Seelengötzen dein Spieler gerade aktiviert hat, indem du "GetSelf" mit der Referenzvariabe des Seelengötzen vergleichst.
Dementsprechend kannst du auch rausfinden, ob du bei diesem Götzen schon warst oder nicht.

Allerdings würde es mich wundern wenn das notwendig ist.
Ich hab mal ein ähnliches Script geschrieben (auch mehrere Objekte mit nur einem Script gehabt), aber das hat da keine Probleme verursacht und musste auch nicht explizit nach der Referenz abgefragt werden.
Allerdings ist das schon sehr lange her, also kann ich nicht mit Sicherheit sagen ob ich auch ähnliche Probleme hatte und wie genau ich die gelöst hab.
« am 13.10.2017, 11:11  »
Probier mal TESIVEdit:
https://www.nexusmods.com/oblivion/mods/11536/?

Scripte kannst du damit aber nicht modden. Die musst du schon im CS speichern.
Wenn du das Script einer ESM bearbeiten willst, speicher die Änderungen einfach in einer "UnnötigerScheiß.esp", die besagte ESM als Master hat und verschiebe dann sämtliche Unterschiede (Variablen Count, Compiled Size, kompillierter Code, Source Code, Referenzen) von deiner erstellten ESP in die ESM.
Aber natürlich NICHT, bevor du das Script im Spiel ausprobiert hast. Sonst ruinierst du dir vielleicht die ESM.
Nachdem du dein geändertes Script in die ESM übertragen hast kannst du deine unnötige ESP löschen, weil das geänderte Script ja nun ohnehin im Master aktiv ist.

Und bitte keinesfalls eine Haupt-ESM (Oblivion.esm, etc.) umändern. Das kann mehr Schaden als nutzen.
« am 10.10.2017, 18:23  »
Zettel an Warrack von Joshua höchst selbst  übergeben

Warrack! Es ist nun wirklich nicht meine Schuld, dass wir derart überstürzt unsere Sommerfrische abbrechen mussten, auch ich habe die Zeit mit Euch in der Fremde wahrlich genossen!

Dass sich der Feldwebel und die beiden Korporale auf ihrem Angelausflug mit diesem Sumpffieber angesteckt haben, kann man schwerlich voraussehen, wesentlich einleuchtender ist selbstredend der Umstand, dass man meine Wenigkeit zum Vertretungslehrer auserkoren hat!

Dass nun ein gänzlich anderer Wind durch dieses verlotterte Klassenzimmer wehen wird, versteht wohl von selbst! Jede Verfehlung, Nachlässig- oder Disziplinlosigkeit wird streng und stante pede geahndet, wie man im Kaiserreich sagt! Und damit mir und damit uns niemand Vetternwirtschaft vorwerfen kann, werde ich gerade auf Euch ein besonders strenges und wachsames Auge werfen!

Konkret bedeutet das, das auch nach Dienstschluss die Euch zur Verfügung gestellte Hüteruniform zu tragen ist, Süsskringel gehören NICHT zur an Euch ausgegebenen Verpflegung und Eure umfangreichen Nebentätigkeiten und Meisterschriebe habt hier sofort einzustellen! Des Weiteren werdet Ihr die Heimfahrten nach Kargstein an den Wochenenden unterlassen und wie alle hier kasernierten Rekruten in Eurem Quartier verbleiben.

So, da diese kleinen Details nun geklärt sind, können wir uns den außerdienstlichen Belangen zuwenden, ist Euch der neue Stand mit gegrillten Leckereien die Gasse rechts vom Tor hinunter aufgefallen? Was haltet Ihr davon, diesem einen ausgedehnten Besuch abzustatten?

Joshua
Inspektor und Hilfslehrer

P.S.: Die Erkundung Morrowinds werden wir zeitnah fortsetzen, darauf habt Ihr mein Wort. Durch die Unpässlichkeiten unserer Vorgesetzten sind auch diverse Aufgaben der Nachrichtenübermittlung auf der Strecke geblieben, was diverse zu erledigende Tätigkeiten im ganzen Land nach sich zieht, wenn Ihr mir folgen könnt…

« am 07.10.2017, 05:11  »
Hallöchen Leute! ;)

Ich habe mich ran gesetzt und einen englischen Guide übersetzt. Die Mühe war es alle mal wert!
2 Stunden habe ich dafür gebraucht. Mit vollster Mühe alles sinngebend zu übersetzen.
Keine Angst, der Urheber ist im PDF genannt und verlinkt. Er hatte ziemlich viele Rechtschreibfehler drin, wie ich gemerkt habe.

Nunja, ich hoffe ein Redguard-Anfänger kann mit diesem Guide etwas anfangen.
Denn Redguard ist so und so schon nicht so einfach im Gameplay (warum wird im Guide erwähnt).

DOWNLOAD

Viel Spaß damit! :D
Eure Thelox el Chero
« am 06.10.2017, 20:43  »
https://www.nytimes.com/2017/10/06/technology/aol-aim-shut-down.html

AIM wird zugemacht.

Ich wollte gerade schreiben, das wir AIM natürlich bis zum Schluß hier im Forum unterstützen werden.
Aber haben wir ja gar nicht drin :D
« am 05.10.2017, 18:08  »
Ich habe mir Morrowind auf Steam installiert und mein Problem ist dass das CS nicht installiert wurde und der Data Files Ordner fehlt. Kann mir jemand einen Download für die beiden Sachen schicken (Ich habe Morrrowind auf Englisch installiert).
Seiten: 1 [2] 3 4 ... 10