+ Antworten
Ergebnis 1 bis 8 von 8

Thema: Syntaxproblem

  1. #1
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard Syntaxproblem

    Hallo,

    ich will 3D Geräusche abspielen. Das klappt z.B. hiermit:

    Code:
    function explosion()
    
        Logic.ExecuteInLuaLocalState("Sound.FXPlay3DSound('Misc\\\\amb_thunder', 30900, 46600, 2000)");
    
    end
    Damit der Spieler das aber auch garantiert hört, will ich den Ort entweder über die Ritterposition oder die Kameraposition bestimmen.

    So klappt es nicht:

    Code:
    function explosion()
    
        local x1,y1 = Camera.RTS_GetLookAtPosition()
    
        local knightID = Logic.GetKnightID(1)
        local x2, y2 = Logic.GetEntityPosition(knightID)
        
        Logic.ExecuteInLuaLocalState("Sound.FXPlay3DSound('Misc\\\\amb_thunder', x1, y1, 2000)");
        Logic.ExecuteInLuaLocalState("Sound.FXPlay3DSound('Misc\\\\amb_thunder', x2, y2, 2000)");
    
    end
    Camera.RTS_GetLookAtPosition() und Logic.GetEntityPosition(knightID) habe ich mir aus anderen Skripten abgeguckt. Die sollten also korrekt sein. Das Problem liegt also in dem Logic.ExecuteInLuaLocalState Aufruf.

    Wie muss ich das schreiben?

  2. #2
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Syntaxproblem

    So sollte es gehen:
    die Funktion rufst du mit RewMSF auf, in dem Quest wo du den Sound startest (2D Sound kannst du überall hören, 3 D nur wenn du auf den Ereignisort schaust)

    function Kamerasprung()
    SetCameraToEntity("woduwillst")
    end

    diese Grundfunktion schreibst du in dein globales Script irgendwo vllt. am Ende:

    function SetCameraToEntity(_entity)---gilt für Kamera während des Spieles, nicht für Briefing
    local posX, posY = Logic.GetEntityPosition(Logic.GetEntityIDByName(_e ntity));
    local rotation = -45
    local zoomFactor = 10
    local zoomAngle = 40
    Logic.ExecuteInLuaLocalState('Camera.RTS_SetLookAt Position("'..posX..'", "'..posY..'")');
    Logic.ExecuteInLuaLocalState('Camera.RTS_SetRotati onAngle("'..rotation..'")');
    Logic.ExecuteInLuaLocalState('Camera.RTS_SetZoomFa ctor("'..zoomFactor..'")');
    Logic.ExecuteInLuaLocalState('Camera.RTS_SetZoomAn gle("'..zoomAngle..'")');
    end
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  3. #3
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Syntaxproblem

    Ok, danke erstmal. Das ist zwar ein anderer Lösungsansatz, aber Kamerasprünge zum Ort des Geschehens wollte ich sowieso noch einbauen. Trotzdem wäre es schön, wenn ich meine obige Funktion mit variablen Positionen zum Laufen bekomme.

  4. #4
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Syntaxproblem

    Ich glaube das funktioniert nicht (???), weil, um einen 3DSound zu hören muss die Kamera dort sein wo die Musik spielt. Bei 2D-Sound ist es kein Problem, den hörst du immer.
    Habe grad noch mal in meinem Archiv nachgesehen, geht nicht anders. es sei denn jemand zaubert noch was aus der Trickkiste. Da gibts hier auch schon Threads zu.
    Geändert von udi53 (15.02.2011 um 13:00 Uhr)
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  5. #5
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Syntaxproblem

    Eben, ich will ja den Sound dort abspielen, wo die Kamera (bzw. der Ritter) gerade ist.

  6. #6
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Syntaxproblem

    Naja, dann mach das doch mit Goal Entity/Knight Distance, wenn der Ritter da ist wird der Sound über Rew MSF abgespielt. Manchmal ist einfach einfach besser, ehe du dir die Synapsen verbiegst.
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  7. #7
    Wirt Avatar von Fidelio1958
    Registriert seit
    18.06.2008
    Ort
    Wien 1100 (Österreich)
    Beiträge
    815

    Standard AW: Syntaxproblem

    Den Donner kann man auch anders machen:

    Code:
    Logic.ExecuteInLuaLocalState([[Sound.FXPlay2DSound("Misc\\earth_quake")]])
    Ist der gleiche Sound wie Thunder, aber einfacher aufzurufen und immer zu hören!!

    Bei 3D Sounds muss man die Position angeben und auch den Zoomfaktor, der bestimmt auch die Lautstärke!!

    Grüsse Wolfi

  8. #8
    Jäger
    Registriert seit
    28.03.2009
    Beiträge
    254

    Standard AW: Syntaxproblem

    Siedlereldeis,
    wie sieht denn nun Deine Lösung aus? Ich bezweifle, dass Du da alles richtig "aus anderen Skripten abgeguckt" hast. Camera.RTS_GetLookAtPosition() ist in der lokalen Umgebung zu Hause.
    Da gibt es natürlich Probleme, wenn Du das im Kartenscript global einsetzen willst. Du solltest die Werte für den Bildschirmsichtbereich im lokalen Script ermitteln und dann an das Kartenscript übergeben. Die Übergabe ist allerdings mit etwas Verzögerung zu erwarten.
    Mit einer Testkarte zur Fragestellung bist Du immer etwas näher an der Lösung, denn dann kann jeder gleich mal etwas experimentieren!
    Ich habe mal meine Testkarte mit dem Problem vergewaltigt und eine verzögerte Effektdarstellung (Blitz) im Sichtfenster eingestellt. Wenn man sich mit Rittergeschwindigkeit oder langsamer bewegt, dann schafft es der Blitz im Bild zu bleiben. Experimente sind immer angesagt!
    Hier mal der Link zur Karte:

    http://www.urbich.cc/ok_testkarte03.ZIP

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein