[Modding] Probleme mit FadeToColor und Zufall

Audory

Member
Registriert
08.02.2022
Beiträge
30
Hallo :)

gerade bastele ich mir ein Script zusammen, dass das Ausruhen/Nachtruhe mit etwas mehr leben füllt. Dabei habe ich nun 2 voneoinander unabhängige Probleme, welche ich beide nicht richtig gelöst bekomme.


1) Ich will das nach dem Rasten, sofort der Bildschirm noch schwarz ist und dann das Bild einfaded. Nun ist mir schon vor sehr langer Zeit aufgefallen, das sogar bei den originalen Baldurs gate Zwischensequenzen (z.b. wenn die nach der Rast starten), der Bildschirm dunkel ist, dann für einen Sekundenbruchteil das Bild erscheint, sofort aber wieder dunkel wird, und dann erst das bild langsam einfaded. Ich bilde mir ein, dies war ganz früher nicht so. Kam das durch ein BG2 Update, ist das normal, oder habe ich mir irgendwo etwas zerschossen?
Und wie löse ich das Problem nun? Denn bei meinem "nach der Rast Script", stört mich das nun wirklich sehr.

Also das Problem ist: Bei der Rast ist das normale Rast-Video, dann ist der Bildschirm schwarz, dann wird das Bild ein Sekundenbruchteil sichtbar (flackert auf) und wird wieder schwarz durch meinen FadeToColor([1.0],0) Befehl.
Dashier wird dabei ausgeführt (in der baldur.bcs ... ich habe noch keinen besseren Platz dafür gefunden):
Code:
IF
    PartyRested()
THEN
    RESPONSE #100
        ReallyForceSpellRES("jwsleep",Player1) // "jwsleep" ist einer der Standard Zauber in BG2, welcher den Char 6 Sekunden schlafen läst.
        ReallyForceSpellRES("jwsleep",Player2) // Das habe ich bei einer der Originalen CutScene Scripte abgeschaut.
        ReallyForceSpellRES("jwsleep",Player3)
        ReallyForceSpellRES("jwsleep",Player4)
        ReallyForceSpellRES("jwsleep",Player5)
        ReallyForceSpellRES("jwsleep",Player6)
        FadeToColor([1.0],0) // Schlagartig Bildschirm schwarz machen
        SmallWait(22) // ca. 1,5 Sek warten. Weil beim "jwsleep" Zauber die Char's noch animiert umfliegen
        FadeFromColor([22.0],0) // Bild langsam einfaden.
        Continue()
END


2) Am Ende, also wenn die Chars nach den 6 Sekunden wieder aufwachen, dann möchte ich das zufällig immer ein anderer, aber mindestens einer der Begleiter, soetwas sagt wie "Guten Morgen <CHARNAME>".
Mein Problem ist, wie bekomme ich den Zufall gesteuert? Also so, dass zwar immer ein anderer (Player2 bis Player6) etwas sagt, aber zugleich mindestens wenigstens einer was sagt? (ich möchte vermeiden das KEINER etwas sagt -> denn es sieht blöd aus wenn die nach dem Schlafen so Wortlos aufstehen)
Kann mir da bitte jemand helfen? Wie kann ich den Zufall da besser steuern?


Ich habe mal den gesamten Code meines Scripts als Datei angehängt. Diesen Code habe ich genau so am Anfang meiner baldur.bcs stehen.
Er bewirkt, das nach der Rast, die ganze Gruppe schlafend am Boden liegt und der Bildschirm von schwarz einfadet. ... und zufällig gibt es dabei Teilweise sozusagen Bettgeflüster. Abhängig von Romanze Status, fallen dabei dann auch Namen.
 

Anhänge

  • Meine_erweiterung_fuer_baldur_bcs.txt
    5,1 KB · Aufrufe: 6

Taimon

Infinity Engineer
Registriert
25.11.2001
Beiträge
1.451
zu 1:
Das Problem ist mit Scripting alleine wahrscheinlich nicht lösbar. Der PartyRested()-Trigger ist dafür einfach zu spät.
Was man vielleicht machen könnte: Wenn die Rast über die Aktion RestParty() ausgelöst wird, dann einfach vorher schon FadeToColor() aufrufen.
Code:
        FadeToColor([1.0],1)
        RestParty()
        SmallWait(22)
        FadeFromColor([22.0],0)

zu 2:
Spontan fällt mir nur ein, mehrere Skript-Blöcke zu erstellen, die jeweils die Anzahl der Partymitglieder mittels NumInParty() bzw. NumInPartyAlive() auswerten und dann entsprechend viele Response-Blöcke für Player2 bis Player[3-6] haben.
Code:
IF
    NumInParty(3)
THEN
    RESPONSE #50
       // Player 2
    RESPONSE #50
       // Player 3
END
IF
    NumInParty(4)
THEN
    RESPONSE #30
       // Player 2
    RESPONSE #30
       // Player 3
    RESPONSE #30
       // Player 4
END
...
 
Oben