Results 1 to 16 of 16
  1. #1 Reply With Quote
    Deus
    Join Date
    Oct 2009
    Posts
    11,383
    Hallo zusammen,

    ich habe eine eher spezifischere Frage. Ich würde gerne den Küstenregionen von Vvardenfell und Solstheim das Meeresrauschen einer Küstenregion geben.

    Theoretisch könnte ich jetzt einen Activator erschaffen, der besagten Sound abspielt. Das möchte ich allerdings vermeiden. Nicht nur weil ich dafür wahrscheinlich hunderte von Activatoren platzieren müsste, um jede Cell der Küstenregionen abzudecken.
    Sondern auch, weil es völlig unübersichtlich im Construction Set ist, wo eine Cell beginnt und wieder aufhört.

    Dann könnte ich natürlich es mir sehr einfach machen, und im Construction Set schlicht unter 'Region' Soundeffekte mit den Meeresrauschen platzieren. An sich auch eine gute Idee. Aber...
    Leider werden unter 'Region' die Soundeffekte nicht permanent abgespielt, so dass das Meeresrauschen stets unterbrochen werden würde durch längere Momente der Stille.

    Die beste Option wäre daher ein Script zu schreiben, ähnlich des Regensoundeffektes bei entsprechenden Wetter. Wenn man sich dieses ansieht, ist es letztendlich der PC, also der Spielercharakter selber, der diesen Sound erzeugt. Weswegen das Regengeräusch auch permanent und überall gleichlaut zu hören ist.

    Hier scheitert aber mein, eher laienhaftes, Wissen um ein entsprechendes Script zu schreiben, dass der Soundeffekt des Meeresrauschen quasi, wie der Soundeffekt bei Regen, immer dann abgespielt wird, wenn der PC die entsprechende Region betritt.

    Vielleicht kann einer vor euch mir diesbezüglich weiterhelfen?
    maekk03 is offline
  2. #2 Reply With Quote

    Batmanistrator
    Thoronador's Avatar
    Join Date
    Jul 2005
    Location
    Morrowind, Vvardenfell-Distrikt
    Posts
    20,598
    Quote Originally Posted by maekk03 View Post
    Die beste Option wäre daher ein Script zu schreiben, ähnlich des Regensoundeffektes bei entsprechenden Wetter. Wenn man sich dieses ansieht, ist es letztendlich der PC, also der Spielercharakter selber, der diesen Sound erzeugt. Weswegen das Regengeräusch auch permanent und überall gleichlaut zu hören ist.
    Nenne mal bitte den Namen des Scripts. Ich habe jetzt fast 15 Minuten gesucht und konnte kein Script finden, das auf die Beschreibung passt. Vielleicht gucke ich auch nur an der falschen Stelle, aber mit dem Namen des Scripts findet man's schnell.

    Quote Originally Posted by maekk03 View Post
    Hier scheitert aber mein, eher laienhaftes, Wissen um ein entsprechendes Script zu schreiben, dass der Soundeffekt des Meeresrauschen quasi, wie der Soundeffekt bei Regen, immer dann abgespielt wird, wenn der PC die entsprechende Region betritt.

    Vielleicht kann einer vor euch mir diesbezüglich weiterhelfen?
    Es gibt meines Wissens kein "Spieler betritt Region X"-Ereignis, welches man über die Scriptfunktionen abfragen kann. Man kann aber erfassen, ob der Spieler gerade die Zelle gewechselt hat, und das muss er ja auch machen, wenn er eine neue Region betritt. Dafür gibt es CellChanged. Die Variable wird beim Zellwechsel für einen Frame auf 1 gesetzt (und ist ansonsten 0). Das muss man prüfen, und danach muss man noch herausfinden, in welcher Region der Spiele jetzt ist. Das wird etwas kniffelig, weil es auch dafür (glaube ich) keine Funktion gibt. Also würde man z. B. auf GetPCCell zurückgreifen müssen, um zu prüfen, ob der Spieler in einer bestimmten Zelle ist. Das wird also etwas länger als nur alle Regionen durchzugehen. Wenn das dann zutrifft, könnte man mit PlaySound / PlayLoopSound3D / etc. einen Sound abspielen. Grob sieht das so aus, wenn man beispielsweise einen Sound abspielen will, falls der Spieler in Vivec ist (ungetestet):

    Code:
    begin SoundScriptVivec
    
    if ( CellChanged == 0 )
      return
    endif
    
    if ( GetPCCell, "Vivec" == 1 )
      ; Spieler ist in Vivec oder einer Zelle, die Vivec im Namen hat.
      PlaySound "book close"
    endif
    
    end
    Das Script würde theoretisch einmal den Sound abspielen, den man beim Schließen eines Buches hört, sobald man eine Zelle mit "Vivec" im Namen betritt. Damit das auch immer läuft, müsste man es als globales Script einrichten oder irgendwo einmal mit StartScript triggern. Außerdem müsstest du für deinen Fall PlaySound durch PlayLoopSound3D ersetzen, da du das ja wiederholt abspielen willst und nicht nur einmal. Ich hab's hier mal nicht gemacht, weil's sonst nervt, wenn aller zwei Sekunden ein Buch zuklappt.

    Darüber hinaus müsste man den Test auf die verschiedenen Zellen in den verschiedenen Regionen ausweiten. Der Teil mit
    Code:
    if ( GetPCCell, "Vivec" == 1 )
    würde also unter Umständen sehr viel länger, weil man ihn etliche Male für alle gewünschten Zellen / Zellnamen wiederholen müsste.

    Aber das wäre so in etwa die Grundidee, wie man das wahrscheinlich angehen könnte.
    Thoronador is offline
  3. #3 Reply With Quote
    Deus
    Join Date
    Oct 2009
    Posts
    11,383
    Quote Originally Posted by Thoronador View Post
    Nenne mal bitte den Namen des Scripts. Ich habe jetzt fast 15 Minuten gesucht und konnte kein Script finden, das auf die Beschreibung passt. Vielleicht gucke ich auch nur an der falschen Stelle, aber mit dem Namen des Scripts findet man's schnell.
    Das war mein Fehler. Entschuldige!
    Besagtes Script ist Teil eines Mods, der u.a. dafür sorgt, dass ab einer bestimmten Höhe Windgeräusche zu hören sind - was das Besteigen von Bergen wesentlich atmosphärischer macht.
    Keine Ahnung warum der Modder ein separates Script für den Regen erstellt hat. Ich nahm fälschlicherweise an, es gehört zum Hauptspiel.

    Es gibt meines Wissens kein "Spieler betritt Region X"-Ereignis, welches man über die Scriptfunktionen abfragen kann. Man kann aber erfassen, ob der Spieler gerade die Zelle gewechselt hat, und das muss er ja auch machen, wenn er eine neue Region betritt. Dafür gibt es CellChanged. Die Variable wird beim Zellwechsel für einen Frame auf 1 gesetzt (und ist ansonsten 0). Das muss man prüfen, und danach muss man noch herausfinden, in welcher Region der Spiele jetzt ist. Das wird etwas kniffelig, weil es auch dafür (glaube ich) keine Funktion gibt. Also würde man z. B. auf GetPCCell zurückgreifen müssen, um zu prüfen, ob der Spieler in einer bestimmten Zelle ist. Das wird also etwas länger als nur alle Regionen durchzugehen. Wenn das dann zutrifft, könnte man mit PlaySound / PlayLoopSound3D / etc. einen Sound abspielen. Grob sieht das so aus, wenn man beispielsweise einen Sound abspielen will, falls der Spieler in Vivec ist (ungetestet):

    Code:
    begin SoundScriptVivec
    
    if ( CellChanged == 0 )
      return
    endif
    
    if ( GetPCCell, "Vivec" == 1 )
      ; Spieler ist in Vivec oder einer Zelle, die Vivec im Namen hat.
      PlaySound "book close"
    endif
    
    end
    Das Script würde theoretisch einmal den Sound abspielen, den man beim Schließen eines Buches hört, sobald man eine Zelle mit "Vivec" im Namen betritt. Damit das auch immer läuft, müsste man es als globales Script einrichten oder irgendwo einmal mit StartScript triggern. Außerdem müsstest du für deinen Fall PlaySound durch PlayLoopSound3D ersetzen, da du das ja wiederholt abspielen willst und nicht nur einmal. Ich hab's hier mal nicht gemacht, weil's sonst nervt, wenn aller zwei Sekunden ein Buch zuklappt.

    Darüber hinaus müsste man den Test auf die verschiedenen Zellen in den verschiedenen Regionen ausweiten. Der Teil mit
    Code:
    if ( GetPCCell, "Vivec" == 1 )
    würde also unter Umständen sehr viel länger, weil man ihn etliche Male für alle gewünschten Zellen / Zellnamen wiederholen müsste.

    Aber das wäre so in etwa die Grundidee, wie man das wahrscheinlich angehen könnte.
    Vielen lieben Dank für die ausführliche Anleitung. Ich werde es bei Gelegenheit einmal testen. Leider muss ich zu meiner Schande gestehen, dass ich zuvor noch eine WAV mit entsprechenden Sound finden muss.
    Da dieses mir die kleinere Herausforderung erschien, dachte ich mir, dass ich zuerst einmal herausfinde, wie ein entsprechenden Script aussieht, oder ob es überhaupt möglich ist.
    maekk03 is offline
  4. #4 Reply With Quote
    Deus
    Join Date
    Oct 2009
    Posts
    11,383
    Hallo Thoronador,

    ich habe dein Script-Beispiel heute einmal ausprobiert, und leider funktioniert es nicht.
    maekk03 is offline
  5. #5 Reply With Quote
    Ritter Ortega1302's Avatar
    Join Date
    Sep 2009
    Location
    BaWü
    Posts
    1,062
    Vielleicht wäre das offizielle PI Bitter Coast Sounds eine Anlaufstelle: 3 Scripts, dazu 4 Activatoren die in 73 Zellen verteilt sind und 12 Game Settings, wobei ich über die aber nichts weiß.
    Die Zellen im CS erkennst Du im Cell View, wenn Du B drückst.
    Ortega1302 is offline
  6. #6 Reply With Quote
    Deus
    Join Date
    Oct 2009
    Posts
    11,383
    Quote Originally Posted by Ortega1302 View Post
    Vielleicht wäre das offizielle PI Bitter Coast Sounds eine Anlaufstelle: 3 Scripts, dazu 4 Activatoren die in 73 Zellen verteilt sind und 12 Game Settings, wobei ich über die aber nichts weiß.[
    Das Problem, wenn man 'Bitter Coast Sounds' als Vorlage nimmt, liegt darin, dass besagte Activatoren nur eine begrenzte Reichweite haben, und darüber hinaus nicht mehr zu hören sind.

    Ich brauchte also ein Script, welche den Soundeffekt über die ganze Zelle hörbar macht. Damit wäre mir bei dieser Variante schon geholfen.

    Die Zellen im CS erkennst Du im Cell View, wenn Du B drückst.
    Danke für die Info!
    maekk03 is offline
  7. #7 Reply With Quote

    Batmanistrator
    Thoronador's Avatar
    Join Date
    Jul 2005
    Location
    Morrowind, Vvardenfell-Distrikt
    Posts
    20,598
    Quote Originally Posted by maekk03 View Post
    Das war mein Fehler. Entschuldige!
    Besagtes Script ist Teil eines Mods, der u.a. dafür sorgt, dass ab einer bestimmten Höhe Windgeräusche zu hören sind - was das Besteigen von Bergen wesentlich atmosphärischer macht.
    Keine Ahnung warum der Modder ein separates Script für den Regen erstellt hat. Ich nahm fälschlicherweise an, es gehört zum Hauptspiel.
    Macht nichts, aber wenn du den Namen des PlugIns sowie des Scripts nennst, könnte ich mir das mal anschauen. Vielleicht lassen sich daraus ein paar Erkenntnisse für das aktuelle Problem gewinnen. Im Idealfall könnte man daraus für deinen Anwendungsfall etwas basteln.

    Quote Originally Posted by maekk03 View Post
    Hallo Thoronador,

    ich habe dein Script-Beispiel heute einmal ausprobiert, und leider funktioniert es nicht.
    Das hatte ich fast erwartet. Jetzt gibt es natürlich etliche denkbare Gründe, warum das nicht funktioniert. Einer der ersten wäre, dass das Script nicht aktiv ist / nicht global läuft. Hatte ich ja schon kurz angesprochen, was da noch zu tun wäre:
    Quote Originally Posted by Thoronador View Post
    Damit das auch immer läuft, müsste man es als globales Script einrichten oder irgendwo einmal mit StartScript triggern. Außerdem müsstest du für deinen Fall PlaySound durch PlayLoopSound3D ersetzen, da du das ja wiederholt abspielen willst und nicht nur einmal. Ich hab's hier mal nicht gemacht, weil's sonst nervt, wenn aller zwei Sekunden ein Buch zuklappt.
    Die Nachteile bei einem Ansatz mit Activators sind, dass man davon einerseits viele bräuchte (mindestens einen Activator in jeder zu beschallenden Zelle) und andererseits sind die Sounds dann stationär an den jeweiligen Activator gebunden, d. h. die Lautstärke nimmt mit der Entfernung vom Activator ab. Letzteres hast du ja schon bemerkt.
    Thoronador is offline
  8. #8 Reply With Quote
    Deus
    Join Date
    Oct 2009
    Posts
    11,383
    Hallo, da bin ich noch einmal...

    Trotz länger verstrichener Zeit hat mich das Problem doch nicht losgelassen.

    Ich habe mir die 'Feuer/Lavafontänen' angesehen, die in 'Rocky Red Mountain' genutzt werden.
    Sie erscheinen immer für wenige Sekunden, um dann wieder per Script deaktiviert zu werden - Der Trick, welchen der Modder hier anwendet ist, mehrere dieser Meshes in unterschiedlicher Größe, und mit unterschiedlichen Zeitabständen betreffend des Erscheinens, übereinander zu legen, so dass es im Spiel selber aussieht, als würde die Fontäne wachsen und schrumpfen.
    Deren Sound ist laut genug, dass er in der gesamten Zelle zu hören ist, in welcher diese Meshes aktiviert sind.

    Dabei habe ich mir gedacht, wenn ich statt der Meshes für die 'Feuer/Lavafontänen' die Meshes des 'mist' bei den Wasserfällen nutze, müsste ich nicht einen ähnlichen Effekt per Script erzeugen können?
    Dass Quasi die Meshes kurzeitig wie eine Brandung an einen Felsen im Meer erscheint, und in dieser Zeit dabei den Soundeffekt von Meeresbrandung abspielt? Dadurch dass die Meshes immer wieder zurückkehrt, müsste auch der Soundeffekt relativ permanent sein.
    Spätestens wenn ich den Trick des Modders anwende, und unterschiedliche Meshes mit unterschiedlichen Zeitabständen abspiele.

    Diesbezüglich bin ich nicht größenwahnsinnig. Mir würde EIN Felsen pro Zelle mit diesen Effekt genügen. Kein Grund jeden Felsen an der Azura-Küste damit zu versehen! Mir geht es hauptsächlich um den Sound-Effekt.

    Ich brauchte nur noch etwas Hilfe bei der Umgestaltung des Script:

    Hier einmal das Originalscript von 'Rocky Red Mountain'

    [Bild: Screenshot_2024_09_24_212709.png]
    [Bild: Screenshot_2024_09_24_212814.png]
    maekk03 is offline Last edited by maekk03; 24.09.2024 at 21:54.
  9. #9 Reply With Quote

    Batmanistrator
    Thoronador's Avatar
    Join Date
    Jul 2005
    Location
    Morrowind, Vvardenfell-Distrikt
    Posts
    20,598
    Auf dem Screenshot ist ein Teil des Scripttextes abgeschnitten. Ich nehme mal an, dass die komplette Zeile
    Code:
    Set LigthTime to ( LigthTime + GetSecondsPassed )
    lautet, oder?

    Bei Scripts empfiehlt es sich übrigens, statt Screenshots davon zu machen (wer will das schon abtippen?) einfach den Text zu kopieren und in einem Code-Tag hier reinzustellen.
    Thoronador is offline
  10. #10 Reply With Quote
    Deus
    Join Date
    Oct 2009
    Posts
    11,383
    Quote Originally Posted by Thoronador View Post
    Auf dem Screenshot ist ein Teil des Scripttextes abgeschnitten. Ich nehme mal an, dass die komplette Zeile
    Code:
    Set LigthTime to ( LigthTime + GetSecondsPassed )
    lautet, oder?
    Das ist richtig! Ich habe die fehlende Ecke glatt übersehen.

    Bei Scripts empfiehlt es sich übrigens, statt Screenshots davon zu machen (wer will das schon abtippen?) einfach den Text zu kopieren und in einem Code-Tag hier reinzustellen.
    Das hätte ich auch gerne gemacht, wenn das Construction Set es zulassen würde, dass Scripts kopiert werden.
    maekk03 is offline
  11. #11 Reply With Quote
    Ritter Ortega1302's Avatar
    Join Date
    Sep 2009
    Location
    BaWü
    Posts
    1,062
    Quote Originally Posted by maekk03 View Post
    Das ist richtig! Ich habe die fehlende Ecke glatt übersehen.



    Das hätte ich auch gerne gemacht, wenn das Construction Set es zulassen würde, dass Scripts kopiert werden.
    Stimmt, mit rechter Maustaste->kopieren geht es nicht, aber mit Strg-C -> Strg-V aber schon.
    Ortega1302 is offline
  12. #12 Reply With Quote
    Deus
    Join Date
    Oct 2009
    Posts
    11,383
    Quote Originally Posted by Ortega1302 View Post
    Stimmt, mit rechter Maustaste->kopieren geht es nicht, aber mit Strg-C -> Strg-V aber schon.
    Danke für den Hinweis!

    Code:
    begin mbgRMWrathScript1
    
    float LigthTime
    short Ligth
    float timer
    short doOnce 
    short MyRandom 
    short playx
    short playy
    short playz
    
    If menumode==1
    	return
    endif
    
    if ( doOnce == 0 )
    	disable
    	set doOnce to 1
    endif
    
    if ( Ligth > 0 )
    	Set LigthTime to ( LigthTime + GetSecondsPassed )
    	if ( LigthTime < 0.7 ) 
    		Return
    	endif
    	Disable
    	set MyRandom to ( Random100 * 2 )
    	set Ligth to 0
    	set LigthTime to 0
    else
    	if ( timer < MyRandom )
    		Set timer to ( timer + 0.7 )
    		Return
    	else
    		Enable
    		PlaySound, "rumble1"
    		if ( GetDistance player < 30 )
    			ExplodeSpell, "mbgRMWrathSpell1"
    		endif
    		set timer to 0
    		set Ligth to 1
    	endif
    endif
    
    end mbgRMWrathScript1
    maekk03 is offline Last edited by Thoronador; 30.09.2024 at 05:18. Reason: Code-Tag gesetzt
  13. #13 Reply With Quote

    Batmanistrator
    Thoronador's Avatar
    Join Date
    Jul 2005
    Location
    Morrowind, Vvardenfell-Distrikt
    Posts
    20,598
    Habe in deinem Beitrag noch den Code-Tag gesetzt, damit die Formatierung erhalten bleibt.
    Thoronador is offline
  14. #14 Reply With Quote
    Deus
    Join Date
    Oct 2009
    Posts
    11,383
    Hallo zusammen,

    da bin ich wieder. Nach langer Abstinenz.

    Ich habe mich dazu entschlossen, schlicht Aktivator mit einer Meshes von QAAB_Data/ Tamriel_Data (diesbezüglich bin ich mir nicht sicher, da ich beide benutze ) zu nutzen. Und statt diese Meshes beständig mit den Script oben erscheinen und wieder verschwinden zu lassen, stattdessen das übliche Script für Sound-Effekte zu nutzen.

    Allerdings brauchte ich dafür noch die Wasserhöhe in der Exterior, damit ich besagte Meshes auch exakt auf dieser platzieren kann. In meinen Construction-Set ist die recht schwierig mit bloßen Augen auszumachen.


    maekk03 is offline
  15. #15 Reply With Quote

    Batmanistrator
    Thoronador's Avatar
    Join Date
    Jul 2005
    Location
    Morrowind, Vvardenfell-Distrikt
    Posts
    20,598
    Die Wasserhöhe ist in Exterior-Zellen immer gleich hoch. Da würde ich mich jetzt nicht auf einen Wert festlegen wollen, aber wenn ich raten müsste, würde ich auf null tippen. Ansonsten gibt's fürs Scripten auch noch die Funktion GetWaterLevel (ab Tribunal), welche die Wasserhöhe zurück gibt. Vielleicht hilft das ja.
    Thoronador is offline
  16. #16 Reply With Quote
    Deus
    Join Date
    Oct 2009
    Posts
    11,383
    Quote Originally Posted by Thoronador View Post
    Die Wasserhöhe ist in Exterior-Zellen immer gleich hoch. Da würde ich mich jetzt nicht auf einen Wert festlegen wollen, aber wenn ich raten müsste, würde ich auf null tippen. Ansonsten gibt's fürs Scripten auch noch die Funktion GetWaterLevel (ab Tribunal), welche die Wasserhöhe zurück gibt. Vielleicht hilft das ja.
    Vielen lieben Dank! Null ist die tatsächliche Höhe des Wasserpegels

    Jetz brauchte ich nur noch die Info, wie weit ich die Min- und Max Range setzen muss, damit der Soundeffekt möglichst weit/ über die gesamte Zelle zu hören ist. Kann mir jemand diesbezüglich weiterhelfen?

    maekk03 is offline

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •