Construction Set Der Scriptthread

So, extra für die ausprobiert.

Beides Sonde und Dietrich liefern als Waffentyp eine 0 zurück. Du kannst sie also nicht von einem Kurzschwert unterscheiden.

Bei GetWeaponDrawn liefert es eine 0, da es ja keine Waffe ist.
 
  • Like
Reaktionen: Darkshade
Ich habe ein Problem:

Wenn ich einen Dialogthema anspreche soll eine Tür asugetauscht werden:

Also habe ich beide Türen an die Selbe Stelle gesetzt und auf eine einen Script gelegt:


Code:
Begin EC_Disable

    short a
        
        if a == 0 && menumode == 0

            Door1 -> disable
        endif

end

Der Script soll einfach dafür sorgen, dass die Tür zu Spielbeginn disabled ist, weil es ja keine Funktion wie Inititally disabled gibt.

Dann nehme ich als Dialog-Result


Door1 -> enable
Door2 -> disable

Leider gibt es einen Error und die Türen werden nicht ausgetauscht, kurz:

Es geht nichts:

Woran liegt das

thx for Help
 
Nunja...

  1. müssen beide Türen "persistant" sein, damit das Dialogscript sie findet. Anders als echte Scripts werden die Dialogresults nämlich onthefly compiliert, also siehst du diese Fehler erst "ingame".
  2. muß bei der Methodik sichergestellt sein, dass die Tür bereits aktiv ist, wenn der Spieler das Dialogresult bekommt. Es wäre fatal, wenn du die Cell mit der Tür erst NACH Erhalt des Dialogs das erste Mal besuchst, da das Script die Tür dann verschwinden lassen würde und du gar keine Tür mehr hättest.
  3. Ist das Script auf der Tür sowieso nicht sinnvoll. Mach es lieber gleich anders, denn Türen zu disablen ist nicht schön. Pack die Tür, die später erscheinen soll an einen anderen Ort in der gleichen Zelle, wo sie nicht sichtbar ist.
    Nur mußt du dir keine Sorgen machen, ob und wann der Spieler die Cell betritt, sie wird nicht da sein. Im Dialogresult muß dann natürlich etwas anderes stehen - dieses:

    Tür1->disable
    Tür2->PositionCell X, Y, Z, Rot, "CELLID"

    Das sollte das Problem lösen.
 
  • Like
Reaktionen: Unbekannter
Ich hab man wieder 3 Scriptprobleme:

1. Dialog-Result-Text
Code:
Journal EC_GN_Ashl 70
player -> additem BookSkill_Athletics5 1
player -> additem Gold001 1000
player -> additem "amulet of shades" 1
Leider kann Morrowind das nicht und crasht, was ist falsch???

2. Script auf einer Liegematte
Code:
begin Bed_StandardEC
    short mode
    short c
        

        if ( MenuMode == 0)
            if Mode == 0
                if ( OnActivate == 1 )

                ShowRestMenu
                set mode to 1
    
                endif

            endif

        endif

    if c == 0
        if Mode == 1
            EC_SS_IN3 -> Sethealth 0
            EC_SS_IN4 -> sethealth 0
            Journal EC_GN_Ashl 30
            EC_Murder -> setfight 100
            EC_Murder -> PositionCell 4027 4256 13816 0 "Verlassene Hütte"
        set Mode to 0
Alles Funktioniert, nur der NPC EC_Murder bleibt an seiner Stelle und kommt nicht in die Verlassene Hütte


3. Script auf EC_Murder
Code:
Begin EC_Kilian_Script

if OnDeath == 1
    if GetJournalIndex EC_GN_Ashl >= 30
        if GetJournalIndex EC_GN_Ashl < 60
        Journal EC_GN_Ashl 60
    endif
endif
endif
end


thx for Help
 
Ich hab man wieder 3 Scriptprobleme:

1. Dialog-Result-Text
Code:
Journal EC_GN_Ashl 70
player -> additem BookSkill_Athletics5 1
player -> additem Gold001 1000
player -> additem "amulet of shades" 1
Leider kann Morrowind das nicht und crasht, was ist falsch???

2. Script auf einer Liegematte
Alles Funktioniert, nur der NPC EC_Murder bleibt an seiner Stelle und kommt nicht in die Verlassene Hütte
Zu 1.
Versuche Leerzeichen zwischen Befehlszuweisungen zu vermeiden!

nicht so: player -> additem Gold001 1000
sondern: player->additem Gold001 1000

Sollte dies das Problem nicht beheben: wie lautet die Fehlermeldung in der Warnings.txt?

Zu 2.
Poste bitte das vollständige Script - dieses dort ist abgeschnitten.
 
  • Like
Reaktionen: Unbekannter
Gibt es in MW eine Möglichkeit, per Script zu kontrollieren, ob ein NPC ein bestimmtes Script trägt und falls nicht, ihm dieses Script zuzuweisen (bzw. das bestehende durch ein neues zu ersetzen)?
 
Zu 1.
Versuche Leerzeichen zwischen Befehlszuweisungen zu vermeiden!

nicht so: player -> additem Gold001 1000
sondern: player->additem Gold001 1000

Sollte dies das Problem nicht beheben: wie lautet die Fehlermeldung in der Warnings.txt?

Zu 2.
Poste bitte das vollständige Script - dieses dort ist abgeschnitten.

Das Vollständige Script
Code:
begin Bed_StandardEC
    short mode
    short c
        

        if ( MenuMode == 0)
            if Mode == 0
                if ( OnActivate == 1 )

                ShowRestMenu
                set mode to 1
    
                endif

            endif

        endif

    if c == 0
        if Mode == 1
            EC_SS_IN3 -> Sethealth 0
            EC_SS_IN4 -> sethealth 0
            Journal EC_GN_Ashl 30
            EC_Murder -> setfight 100
            EC_Murder -> PositionCell 4027 4256 13816 0 "Verlassene Hütte"
        set Mode to 0
set c to 1
endif
endif
end Bed_StandardEC
Ich werd das mit dem Leerzeichen versuchen
In der Warnings.txt steht nur
Code:
Texture "Textures\Tx_sand_02.tga" count 2.
, aber Morrowind gibt garkeine Fehelermeldung, sondern gibt einen Schrillen Ton von sich und dann ist Schluss.

Außerdem habe ich noch diese Datei gefunden, die ich nicht dahin gemacht habe: !FilnalCleanEC2001.esp.bak
Schein irgendwie mit der Moddatei meiner Mod zusammenhängen, sie heißt so, ohne das .bak
Diese Datei gibt es auch von anderen Versionen dieser Mod, aber nur von denen.

ths for help


EDIT:
achso:
.bak == sicherheitskopie, nur das hat sich dann erledigt
 
Zuletzt bearbeitet:
Gibt es in MW eine Möglichkeit, per Script zu kontrollieren, ob ein NPC ein bestimmtes Script trägt und falls nicht, ihm dieses Script zuzuweisen (bzw. das bestehende durch ein neues zu ersetzen)?
Klares Nein. Jedenfalls was die Zuweisung angeht. Ob der NPC ein bestimmtes Script trägt könnte man theoretisch innerhalb eines Dialogs prüfen, indem man eine Variable in dem Script hat, die man innerhalb des Dialogs auf Vorhandensein prüft (= NOT LOCAL VAR_ID). Aus einem Script heraus geht das leider nicht ohne weiteres, da referenziertes Abfragen nicht existierender Variablen auf jeden Fall einen Compiler Fehler zur Folge hat.

Ich weiss nicht, was genau du vorhast, aber wenn es lediglich darum geht bei einer bestimmten NPC ein Script zu triggern, könntest du dies machen, indem das Script mit einer simplen IF ( Var = 0 ) return EndIF Bedingung so lange an der Ausführung gehindert wird, bis man bei der NPC von Aussen diese Variable auf 1 setzt.

@Unbekannter:
Das andere schaue ich mir später genauer an.
 
Ich weiss nicht, was genau du vorhast, [...]
Eine Quest, bei der man drei Vampire töten soll. Ich bin fast wahnsinnig geworden, weil man nur bei einem einen Jounal-Eintrag bekommen hat, bei den beiden anderen aber keinen, obwohl's im Script stand. Bis mir dann ein Licht aufgegangen ist, dass ich mit den beiden vorher schonmal in Kontakt gekommen bin, mit dem ersten aber noch nicht. Daher werden erstere wahrscheinlich schon das Standartscript "verinnerlicht" haben, während die MW-Engine bei dem, der sich nach Plan verhielt und mit dem ich vorher noch nie in einer Zelle war, das neue Script akzeptiert hat. >_<
Was hat diese Erkenntnis Nerven gekostet...
 
OK, die PRobleme haben sich geklärt, bis auch das mit diesem Script

Begin EC_Kilian_Script

if OnDeath == 1
if GetJournalIndex EC_GN_Ashl >= 30
if GetJournalIndex EC_GN_Ashl < 60
Journal EC_GN_Ashl 60
endif
endif
endif
end

thx for Help
 
Skriptanfrage

Hi, jetzt brauche ich auch mal ein Skript und zwar habe ich folgendes vor. Ich will einen Zauber haben, der Gegenstände in einem bestimmten Radius um den Spieler herum enabled, wenn er gesprochen wird.

Beispiel: Ich stehe vor einer Felswand und spreche den Zauber und erst dann wird eine Tür enabled, die zu einer Höhle dahinter führt.

Von diesem Skript bräuchte ich 2 Versionen. Eine, bei dem der enablete Gegenstand permanent bleibt. Und eine andere, bei der er nach einer gewissen Zeit wieder verschwindet. Wäre schön, wenn der Zauber auch einen sichtbaren Effekt und Sound hätte, wie üblich!!!:-D


Greets, TheDaywalker!!!;)
 
Auf die Tür:
Code:
begin my_script
 
short count
 
[COLOR=blue]if ( GetDistance <= [Wert für die Distanz des Spielers zur Tür*][/COLOR]
[COLOR=black] if ( count == 0 )[/COLOR]
    if ( GetSpellEffects, "zaubername**" == 1 )
        doorID -> enable
        set count to 1
    endif
  endif
[COLOR=blue]endif[/COLOR]
 
end

*) Musst du leider ausprobieren.
**) Hier musst du einen Zauber mit einem Nulleffekt erstellen, dessen Effekt auf den Spieler wirkt (z.B. Ausdauer/Glück festigen 1 Pkt. für 1s)
Das blaue brauchst du nur, wenn der Spieler eine bestimmte Nähe zur Tür haben soll. Die Tür selbst musst du vorher noch disablen, ich habe aber gerade nicht den passenden Befehl im Kopf. Suche ich gleich raus.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: TheDaywalker
Danke, das hier ist ein altes Skript von Killfetzer, was auch Sachen dis-und enabled wenn man bis auf eine gewisse Distanz rankommt. Da müßte der Befehl drin sein, den Du suchst!!!:-D

Begin an/aus


short state
float timer

if ( state == 0 )
if ( GetDistance Player > 512 )
Disable
endif
set state to 1
endif

if ( state == 1)
if ( GetDistance Player < 512 )
Enable
set state to 2
endif
endif

if ( state == 2)
set timer to timer + GetSecondsPassed
if ( timer >= 1 )
set timer to 0
endif
if ( GetDistance Player > 512 )
Disable
set timer to 0
set state to 1
endif
endif
end


TheDaywalker;)
 
  • Like
Reaktionen: Darkshade
Wie ist bei Morrowind der Befehl, der dem Befehl SetCellOwnership in Oblivion gleichkommt?
Den gibt es nicht, da Zellen in Morrowind keinem Eigentümer zugeordnet werden können. Es gibt nur die Möglichkeit, selektierte Gegenstände einem Eigentümer zuzuordnen. Wenn mehrere Gegenstände markiert sind und dann bei einem Gegenstand der Besitzer geändert wird, dann gilt das für alle markierte Gegenstände. Dies ist während des Spiels auch nicht mehr zu ändern.

Als einzige Möglichkeit, dass der Spieler im Laufe der Handlung den Gegenstand straffrei nehmen darf, geht indem man sie einer Gilde zuordnet und einen Rang festleget. Diesen Rang muss der Spieler erreichen und dann kann der Gegenstand einfach genommen werden.
 
  • Like
Reaktionen: Jollina
hey, ich wollte bei morrowind das gefängnis nutzen, um aufs maximale lvl zu kommen! meine taktik derzeit ist es, mit absicht sich in ein bett von jemand anderen zu legen, damit ich ins gefängnis komme - weil ich keine leute umbringen will! das problem ist nur, ich muss an die 100x mich in ein bett legen, damit die geldstrafe in einer passablen höhe ist, damit es sich lohnt, ins gefängnis zu gehen.

meine frage: kann man mit nem script die geldstrafe erhöhen, wenn man sich in das bett von jemand anderem legt? so an die 1000 gold, statt nur 36 - wäre nice !
 
Ich benötige mehrere Scripts:
1. Ich brauche ein Script, mit dem ich einen gefälschten "funktionierenden" Exekutionsbefehl der Morag Tong erstellen kann.
2. Ich brauche ein Script, das bewirkt, dass eine Kreatur nur dann Schaden nimmt, wenn man selber einen bestimmten Zauber gewirkt hat.

Und: Ich weiß nicht, wie man einen Journaleintrag an den Tod einer Kreatur anhängt... :cry:

Schonmal danke.