Allgemein
News
News-Archiv
Partner
Netzwerk
Banner
Header
Media
Downloads
Impressum

The Elder Scrolls
Arena
Daggerfall
Spin-offs
Romane
Jubiläum
Reviews
Welt von TES
Lore-Bibliothek
Namens-
generator

FRPGs

Elder Scrolls Online
Allgemein
Fraktionen
Charakter
Kargstein
Technik
Tamriel-
Manuskript

Media

Skyrim
Allgemein
Lösungen
Tipps & Tricks
Steam-Kniffe
Review
Media
Plugins & Mods

Oblivion
Allgemein
Lösungen
Tipps & Tricks
Technik
Charakter
Media
Plugins & Mods
Kompendium

Morrowind
Allgemein
Lösungen
Tipps & Tricks
Media
Plugins & Mods

Foren
The Elder Scrolls Online
Hilfe & Diskussion

Skyrim
Hilfe & Diskussion
Plugins & Mods

Ältere TES-Spiele
TES-Diskussion
Oblivion-Plugins
Morrowind-Plugins

Community
Taverne zum Shalk
Adventures of Vvardenfell
Tales of Tamriel
Ergebnis 1 bis 8 von 8

Thema: Allgemeine CS-Fragen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Allgemeine CS-Fragen

    Hi,
    Ich würde gern einen Thread aufmachen, in dem ich immer mal wieder Modding-Fragen stelle. Also so was wie ein Sammelthread. Denn ich bin noch ziemlich unerfahren im Umgang mit dem CS und werde deswegen vorraussichtlich häufiger auf Probleme stoßen.

    Meine erste Frage dreht sich ums Scripten. Ich habe bereits ein Tutorial im CS-Wiki dzu gelesen, aber mit dem Englisch hatte ich etwas Probleme. Bei Ei-der-Zeit hab ich auch ei Tutorial dazu gefunden. Trotzdem hab ich ein Problem. Nämlich funktioniert das folgende Script nicht so wie es soll:

    Scriptname 'scriptname'
    short Doonce

    begin GameMode
    if ( 'Questname' == 10 ) && ( Doonce == 0 )
    player.additem 'EditorID eines Objektes' 1
    SetStage 'Questname2' 10
    set Doonce to 1
    endif
    end

    Macht euch keine Sorgen, das ich die in ' ' stehenden Begriffe nicht ersetz habe, denn daran habe ich gedacht. Speichern lässt sich das Script auch, es gibt keine Fehlermeldung. Das Script soll eig, sobald das Spiel startet, dem Spieler ein Buch hinzufügen und einen Quest auf Stage 10 setzen (nur wenn der oben genannte Quest auf Stufe 10 ist). Was mache ich falsch???

  2. #2
    An dem Script selber kann ich keine Fehler entdecken.

    Woran hängt denn das Script und wie ist der genaue Ablauf?

    Allgemein lässt sich noch dazu sagen, dass man GameMode-Blöcke nach Möglichkeit meiden sollte. Ein Script im GameMode Block läuft die ganze Zeit, während der Scriptholder geladen ist, immer und immer wieder durch. Dies kostet Performance. Laufen nun viele GameMode Blöcke gleichzeitig, so kann dies auf kosten der Performance gehen und je nachdem wo diese Scripte aktiv sind, musst Du ja nicht nur mit Deinen Scripts rechnen, sondern auch mit denen aus Vanilla und von anderen Mods. Wenn es also "nur" darum geht ein Buch zu adden und einen Queststage weiterzuschalten, so findet sich bestimmt eine einfachere Lösung als ein GameMode Script.

    Deswegen beschreibe am besten mal die Situation in der dieses Script greifen soll.

    Eine Kleinigkeit ist mir noch aufgefallen...............

    Zitat Zitat
    if ( 'Questname' == 10 ) && ( Doonce == 0 )
    Du definierst die Quest nur über den Namen. Ich weis nicht ob dies funktioniert. Soweit ich das weis müsste dies so lauten.

    if getstage "Questname" == 10

    Doch selbst wenn es damit funktioniert, solltest Du Dir überlegen ob es nicht eine Möglichkeit ohne GameMode Block gibt......(resultscript in der ersten Quest beim erreichen des Queststages 10, per Dialog und ResultScript oder per TriggerBox und begin onTrigger Player.......Möglichkeiten gibt es da viele)

  3. #3
    Ja es heißt GetStage QuestID. Und er könnte nach dem adden des Buches die Quest auch einfach stoppen.

    Das sich das Script einfach speichern lässt, obwohl er den Questnamen eigentlich nicht erkennen kann, wundert mich

  4. #4
    Zitat Zitat von SirTroy Beitrag anzeigen
    Das sich das Script einfach speichern lässt, obwohl er den Questnamen eigentlich nicht erkennen kann, wundert mich
    Mich nicht. Man kann auch mit IDs vergleiche anstellen. Mit 10 zu vergleichen ist zwar etwas unsinnig (weil immer falsch), aber von der Syntax her möglich.


    Ansonsten muss ich Mücke zustimmen: Verwende einfach die wichtigen Zeilen des Scripts als ResultScript für Stage 10 der Quest:
    Code:
    player.additem 'EditorID eines Objektes' 1
    SetStage 'Questname2' 10

  5. #5
    Danke für die Tipps

    Mein Problem ist, das abgefragt werden soll, ob der Quest auf Stufe 10 ist (ein Vanilla-Quest), damit dann erst die Schriftrolle hinzugefügt wird und mein gemoddeter Quest startet. Wenn ich das also in das Resultscript von dem Vanilla Quest schreibe, und derjenige, der den Mod hinzufügt, schon soweit ist, dann wurde das Resultscript zu Queststage 10 doch bereits ohne meine Ergänzung abgefragt, oder?
    Und wenn ich GetStage benutze, wird es doch auch nur in dem Moment gelesen, in dem Stage 10 erreicht wird, und nicht nachträglich, ob es erreicht wurde? Wäre in dem Fal
    Das Script hängt an der Schriftrolle, die geaddet werden soll.
    Dialoge sind keine Vorhanden, bevor die Schriftrolle hinzugefügt werden muss, da es ja quasi der Startpunkt sein soll.

    Und was 'GameMode' angeht, was wäre denn eine sinnvolle Alternative?

  6. #6
    GetStage gibt die höchste erreichte Stage aus. Ganz egal ob die gerade erreicht wurde, oder schon vor Tagen.

    Da ich davon ausgehe, dass die Vanilla-Quest noch eine höhere Stage als 10 hat solltest du entweder >= als Vergleichsoperator verwenden, oder die Funktion GetStageDone zu rate ziehen.


    Einzige Alternative zu Gamemode währe in deinem Fall MenuMode. So groß ist der Unterschied aber auch nicht.
    Code:
    scn 'scriptname'
    
    Begin GameMode
    	if ( GetStageDone 'Questname', 10 )
    		player.additem 'EditorID eines Objektes' 1
    		SetStage 'Questname2' 10
    		StopQuest 'Questname dieser Quest'
    	endif
    End
    Außerdem sind Script bei Oblivion performance-technisch das geringste Problem. Und dadurch, dass die Quest nach Erfüllung der Aufgabe beendet/gestoppt wird hat sie keinerlei Auswirkungen mehr.

    Ich würde dir eher empfehlen das ganze über Conditions bei der zu startenden Quest zu regeln.

  7. #7
    Zunächst würde ich nicht in Originalquest rumwerkeln, wenn ich die Absicht hätte diese Plugin zu veröffentlichen.

    eine neue Quest mit deinem Questscript sollte auch funktionieren.

    if getstage ( 'Questname' >= 10 ) && ( Doonce == 0 )

    Sobald der Queststage größer/gleich 10 ist wird das Item hinzugefügt.

  8. #8
    Zitat Zitat von Low Post Beitrag anzeigen

    Da ich davon ausgehe, dass die Vanilla-Quest noch eine höhere Stage als 10 hat ...
    Nein, hat sie nicht, deswegen ist >= nicht notwendig. 10 ist übrigens auch die einzige Stage

    Zitat Zitat von Low Post Beitrag anzeigen
    Code:
    scn 'scriptname'
    
    Begin GameMode
    	if ( GetStageDone 'Questname', 10 )
    		player.additem 'EditorID eines Objektes' 1
    		SetStage 'Questname2' 10
    		StopQuest 'Questname dieser Quest'
    	endif
    End
    Code:
    Scriptname 'Scriptname'
    
    short Doonce
    
    begin GameMode
        if ( GetStageDone 'Questname', 10 ) && ( Doonce == 0 )
            player.additem 'EditorID eines Objektes' 1
            SetStage 'Questname2' 10
            set Doonce to 1
    endif
    end
    Ich habe es jetzt so abgeändert und es funktioniert.



    Vielen Dank für die Hilfe, endlich geht es wieder vorwärts.

Berechtigungen

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