Construction Set Der Scriptthread

Dieses Thema im Forum "[MW] Plugins und Mods" wurde erstellt von The Nici, 25. April 2006.

  1. Killfetzer

    Killfetzer Super-Moderator Mitarbeiter

    Nicht.

    Ein Tagesablauf in Morrowind wird immer mit einem massivem Scriptingaufwand einhergehen. Vor allem, wenn man bedenkt, dass du nur sehr weniger Animationen hast und du diese nicht einmal ordentlich steuern kannst.

    Du kannst mit begrenztem Aufwand den NPC in einem Gebiet "fangen", in dem du ihn ab und zu mal auf den richtigen Ort zurückteleportierst.
     
    Freelancer_T gefällt das.
  2. EvilMind

    EvilMind Angehöriger

    Ich komme noch mal auf dieses Script zurück:
    So wie es da steht macht es genau was es soll. Das andere hätte es übrigens auch so gelöst. Aber jetzt kommt es. Eine Funktion die vorher funktionierte geht nicht mehr.
    Nur kurz:
    Der NPC hat etwas an Dialog den er mit dem Spieler führt, übergibt ihm im Result dann 50 Draken, einen Lieferschein und es wurden ein paar Topics freigeschaltet. Dann wurde der Dialog mit Goodbye beendet und ein Befehl disable NPC <ID> ließ ihn dann verschwinden.
    Der Dialog stammte noch aus der Vorgängermod zur jetzigen und es funktionierte alles. Jetzt mussten noch ein paar Ergänzungen ium Dialog vorgenommen werden damit es nicht ohne Zusammenhang zu folgenden Ereignissen führte. Da aber nur eiune begrenzte Anzahl von Zeichen zur Verfügung steht wurde die <choice Function Weiter eingesetzt.
    Ab jetzt läuft zwar der Dialog und auch das andere wird abgearbeitet aber der Befehl disable wird nicht ausgeführt. Was läuft da falsch?
    Ich habe noch 2 weitere NPC die auch auf diese Art aus dem Game genommen werden nachdem man mit ihnen gesprochen hat aber die haben keine Choice Option und es läuft da alles wie gewollt

    Das hier steht im Dialog Fenster als Result:
    Es steht bei der Choice Auswahl des Dialoges oder ist das da falsch? Es wird ja im Dialog erst der Anfang eingegeben, dort im Result dann Choice "Weiter" 1 anschließend über diesem der Teil des Dialoges der mit anklicken von weiter abgearbeitet wird. In dem Teil habe ich dann als Result das hier:
     
  3. Freelancer_T

    Freelancer_T Abenteurer

    Hallo zusammen.
    Nach langer Zeit habe ich mal wieder die Zeit gefunden um Morrowind zu installieren. Natürlich mit 1000 Mods, sonst wärs nicht Morrowind. Nun hat aber eine davon einen Scriptfehler und obwohl ich mich seit Tagen hineinfuchse komme ich nicht drauf, was falsch ist. Das CS zeigt keine Fehler an, aber im Spiel kommt immer die Fehlermeldung EXPRESSION. Wäre für eure Hilfe sehr dankbar.
    Hier das Script:
    Begin RM_Naspis_chest
    Short once
    If ( MenuMode )
    Return
    Endif

    If ( OnActivate == 1 )
    Activate
    Endif
    If (= 0 )
    If ( GetJournalIndex "RM_GwenMain" == 201 )
    If ( GetDistance, RM_Gwen <= 256 )
    Set once to 1
    Messagebox "Gwen: Quickly ^PCName, look around while they're busy"
    Endif
    Endif
    Endif
    End RM_Naspis_chest
     
  4. Killfetzer

    Killfetzer Super-Moderator Mitarbeiter

    Also die Zeile If (= 0 ) ist schon mal definitiv falsch. Ich nehme an, das sollte if ( once == 0 ) heißen.

    Weiterhin sehe ich Probleme mit If ( GetDistance, RM_Gwen <= 256 ). Hier überprüft das Script ob ein NPC (ich nehme mal an, dass RM_Gwen ein NPC ist), nahe genug an der Truhe steht. Da das etwas ist, was der Spieler nicht wirklich direkt beeinflussen kann, könnte es hier also durchaus Probleme geben, dass die Messagebox nicht korrekt auslöst.
     
  5. Freelancer_T

    Freelancer_T Abenteurer

    Wie konnte ich DAS übersehen. Ich hab mir das ganze mindestens 15 mal durchgelesen, danke dafür, aber leider funktionierts immer noch nicht, auch den fehler bei MenuMode habe ich jetzt behoben, nun siehts so aus:
    Begin RM_Naspis_chest

    Short once
    If ( MenuMode == 1)
    Return
    Endif

    If ( OnActivate == 1 )
    Activate
    Endif


    If ( once == 0 )
    If ( GetJournalIndex, RM_GwenMain == 201 )
    If ( GetDistance, RM_Gwen <= 256 )
    Set once to 1
    Messagebox "Gwen: Quickly ^PCName, look around while they're busy"
    Endif
    Endif
    Endif

    End RM_Naspis_chest
    Danke auch für die schnelle Antwort.

    Sollte da nicht auch eine Else return schleife sein?
    Eigenlicht ist das ganze Script doch ziemlich fürn Hugo. Es soll nur diese eine Messagebox wiedergeben, die dich daran erinnert diese Kiste zu durchsuchen, was man aber kurz zuvor in einem Dialog erfährt. Ich überlege langsam ob ichs nicht einfach rausschmeisse. Sowas kostet doch nur sinnlos rechenleistung.


    Die Distanz zum entsprechenden Objekt wird, so wie ich das inzwischen herausgemausert habe, durch ein anderes Script geregelt, dass Gwen zwingt ihren Weg an der Truhe vorbei zu gehen.
    Es ist gar nicht so leicht die Scripts eines anderen zu durchblicken, vor allem wenn man, so wie ich, gleich mehrere Mods zusammengewürfelt hat. War im Nachhinein eine blöde Idee.
     
    Zuletzt bearbeitet: 21. August 2020
  6. Killfetzer

    Killfetzer Super-Moderator Mitarbeiter

    War in so fern eigentlich kein Fehler. Entspricht zwar nicht der Scrpting-Konvention, sollte aber trotzdem funktionieren.

    Muss nicht. Das Script wird ja jeden Frame neu gestartet, unabhängig davon ob es im Frame davor beim End oder bei einem Return angekommen ist. Da du hier tatsächlich nur eine Bedingung abprüfst, kannst du das einfach so lassen.

    Wenn es nach wie vor nicht funktioniert, aber keinen Fehler mehr ausgibt, würde ich tatsächlich mal den Abstand per Konsole überprüfen.[/Quote]
     
  7. Freelancer_T

    Freelancer_T Abenteurer

    Das Problem ist nicht, dass es nicht funktioniert, beziehungsweise weiß ich gar nicht ob es funktioniert, denn im Spiel schreibt es immer "EXPRESSION in script...", während im CS kein Fehler auftaucht.
    Habe gerade gelesen, dass solche Scripts an Containern nicht funktionieren. Liegt es daran?
     
  8. Killfetzer

    Killfetzer Super-Moderator Mitarbeiter

    Ist RM_Gwen als "Reference persistent" markiert?
     
  9. Freelancer_T

    Freelancer_T Abenteurer

    RM_Naspis ist nicht als References Persist gelegt, also der Container auf dem das Script liegt.
    RM_Gwen ist ein NPC und corpses persist ist nicht markiert.
     
  10. EvilMind

    EvilMind Angehöriger

    Ich habe eine kurze Frage zu einem Script das ich bereits vor längerer Zeit genutzt hatte aber ich kann es nicht mehr finden da die Mod in der es enthalten war von mir gelöscht wurde (warum auch immer)
    Es war folgendes:
    Klangereignisse zu denen dann auch die InGame Aktivatoren erstellt wurden sollten nur bei einer bestimmten Entfernung des Spielers zu einem Bauwerk/Gegenstand ausgelöst werden
    Das erste Ereignis sollte dann getriggert werden wenn sich der Spieler einem Bauwerk nähert und dann nur einmal pro Ereignis ausgelöst werden (kein Loop aber wenn der Spieler sich entfernt und später wiederkommt neu starten)

    Das zweite Ereignis soll dann eintreten wenn der Spieler direkt neben einem Gegenstand steht, ihn quasi berührt (kein on activate erwartet Entfernung sollte reichen)
    Konditionen weiter wie im ersten Ereignis beschrieben

    Ich wäre sehr dankbar wenn ich eine Antwort vor dem 24.12.20 erhalte denn die Ereignisse sollen in eine Mod für den Adventskalender :):)
     
  11. ZWolol

    ZWolol Fremdländer

    begin PC_distance

    Short state

    if ( GetDistance Player < 256 )
    if ( state == 0 )
    Set state to 1
    PlaySound3D, "Open Lock"
    endif
    elseif ( CellChanged )
    Set state to 0
    endif

    end
     
    EvilMind gefällt das.
  12. EvilMind

    EvilMind Angehöriger

    Danke, ich check das aus
     
  13. Werbung (Nur für Gäste)
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden