Construction Set Skriptthread zum Construction Set

Richtig, und das habe ich auch gemacht.
Allerdings greift das Script, wie schon gesagt, wohl noch auf zwei andere Scripte zu, und das, worauf es da zugreift, hat ebenfalls mit genau diesem Punkt zu tun.

Welche Scripte wären das dann? Das kann doch nicht sein, dass für eine so kleine Aktion soviele Scripte notwendig sind :?
 
@ death-lord:
"Enable" und "disable" bestimmt, ob das Objekt grundsätzlich da ist, mit KI etc... Wenn ein NPC unsichtbar ist - saa = 0 -, braucht man diesen Wert nur hochsetzen auf 1.
Vielleicht habe ich dein Problem auch falsch verstanden...

@ HawKy:
Soweit ich das überblicken kann, ist es nur ein Skript und zwar das, welches auf der Referenz/Quest "MG19Alchemy" liegt...
Habs nachgeguckt... es ist eine Quest.
Das Skript sieht so aus:
Code:
ScriptName MG19Script


;This script handles variable for quest MG19Alchemy
;control of item placement is handled by MG19ChestScript


short ingredvar			
short dayspassed
short update

float hourtimer
float currentday
float daycheck

Begin Gamemode

if ( update > 0 )
	if ( currentday != GameDaysPassed )

		set dayspassed to ( dayspassed + 1 )
		set currentday to GameDaysPassed
		set daycheck to GameDaysPassed

	endif
endif	

End

Begin Menumode

if ( update > 0 )
	if ( currentday != GameDaysPassed )

		set dayspassed to ( dayspassed + 1 )
		set currentday to GameDaysPassed

	endif
endif	

End
 
Zuletzt bearbeitet:
  • Like
Reaktionen: HawKy und death-lord
@ death-lord:
"Enable" und "disable" bestimmt, ob das Objekt grundsätzlich da ist, mit KI etc... Wenn ein NPC unsichtbar ist - saa = 0 -, braucht man diesen Wert nur hochsetzen auf 1.
Vielleicht habe ich dein Problem auch falsch verstanden...
Ja du hast es etwas falsch verstanden. Er soll vorher komplett nicht da sein. jetzt habe ich ihn von anfang enable, und wenn ich der konsole angreifer.enable einge steht da "invalid objectreferenz[...] are allowed in this context"oder so ähnlich. obwohlich ihm die Referenz angreifer gegeben habe. Aber warum?
 
Ganz Einfach da heisst oder hieß noch eine Refferenz so, genau das sagt dir der CS.
Immer noch derselbe fehler selbst mit einer anderen REF, außerdem sagt das die konsole nicht das CS das CS erkennt keinen fehler.
EDIT noch eine frage wie kann ich mit einem moveto befehl sagen das sich dergegenstand dem boden anppasst also, wenn er auf einem berg ist,soll der gegenstand nicht gerade sein sondern sich der oberfläche anpassen.
 
Zuletzt bearbeitet:
Das mit dem anpassen ist nicht möglich. Du kannst nur angeben, wie weit das Objekt von dem, zu dem es bewegt wird, weg sein soll.
http://cs.elderscrolls.com/constwiki/index.php/MoveTo

Ganz Einfach da heisst oder hieß noch eine Refferenz so, genau das sagt dir der CS.
In dem Falle würde das CS eine Meldung im Sinne von "ID is not unique" ausgeben. Diese Meldung, die nicht aus dem CS kommt, zeigt, dass angeblich eine unzulässige ID-Art verwendet wurde.

Löse das mal anders, indem du dem NPC bzw dessen Ref-ID als Variable speicherst und dann diese enablest.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: death-lord
hab wieder eine Scriptfrage:
Iwas läuft bei den Script falsch nachdem ersten, wenn ich ihn aktiviere und etwas auswähle passiert nichts.
Code:
scn Markusscript

short button
short doonce 
short warte
short nureinmal
short tag
ref markkus1
short nureinmal1

Begin onActivate
if nureinmal == 0
BegleiterREF.Startconversation player erstertext

set nureinmal to 1

endif
    if doonce == 0 && nureinmal == 1 
        Messagebox "Was wollt ihr machen?" "Reden" "Folge mir" "Warte!" "Halte dich aus meinen Kämpfen raus." "Kämpfe für mich""<Abruch>"
    endif
end

Begin GameMode

BegleiterREF.SetIgnoreFriendlyHits 1
if getdayofweek == 0 && tag == 0 && nureinmal == 1
player.removeitem 0000000F 400 
begleiterREF.additem 0000000F 400
set tag to 1
endif
if nureinmal1 == 0
set markkus1 to begleiterref
markkus1.moveto begleiterbeam
set nureinmal1 to 1
endif
if nureinmal == 1
addtopic reden
endif
if getdayofweek == 1 
set tag to 0
endif 
if folgen == 1
 
          if Player.IsSneaking == 0
               markkus1.SetForceSneak 0
          endif
          if (Player.IsSneaking == 1 && markkus1.IsInCombat == 0)
               markkus1.SetForceSneak 1
          endif
 
          if Player.IsWeaponOut == 1
               markkus1.SetAlert 1
          else
               markkus1.SetAlert 0
          endif
 if markkus1.IsInCombat == 0 && folgen == 1
               if (Player.GetPos z) > ((GetPos z) + 700)
                    markkus1.MoveTo Player
               elseif (Player.GetPos z) < ((GetPos z) - 700)
                    markkus1.MoveTo Player
               endif
               if (GetDistance Player > 5500)
                    markkus1.MoveTo Player
               endif
          endif

endif
    If doonce == 1
    Set button to getbuttonpressed
    
if button == 0
    markkus1.activate player
    set doonce to 0
    return
elseif button == 1 
    markkus1.Startconversation player Folge
    set folgen to 1
    set doonce to 0
    return
elseif button == 2
    markkus1.Startconversation player Warte
    set doonce to 0
    set folgen to 0
    return
elseif button == 3
    set doonce to 0
    markkus1.setactorvalue Aggression 0
return

elseif button == 4
    set doonce to 0    
    markkus1.setactorvalue Aggression 5    
    return
elseif button == 5
    set doonce to 0
    return
endif
endif
end Gamemode
 
Das "GameMode" nach dem "end" am Ende des Scripts, brauchst du gar nicht.
Vielleicht liegts ja daran, poste mal deine Fehlermeldung.

mfg Kahmul
 
Nun, das Problem ist, dass mit OnActivate nur eine der Sachen passiert. Setz den Teil mit Messagebox "" mal in den GameMode-Block, sodass OnActivate nur noch dieses beinhaltet:
Code:
begin OnActivate
if nureinmal == 0
BegleiterREF.Startconversation player erstertext

set nureinmal to 1

endif
end
Also meinst du so?
Code:
scn Markusscript

short button
short doonce 
short warte
short nureinmal
short tag
ref markkus1
short nureinmal1

Begin onActivate
if nureinmal == 0
BegleiterREF.Startconversation player erstertext

set nureinmal to 1

endif

end

Begin GameMode
  if doonce == 0 && nureinmal == 1 
        Messagebox "Was wollt ihr machen?" "Reden" "Folge mir" "Warte!" "Halte dich aus meinen Kämpfen raus." "Kämpfe für mich""<Abruch>"
    endif

BegleiterREF.SetIgnoreFriendlyHits 1
if getdayofweek == 0 && tag == 0 && nureinmal == 1
player.removeitem 0000000F 400 
begleiterREF.additem 0000000F 400
set tag to 1
endif
if nureinmal1 == 0
set markkus1 to begleiterref
markkus1.moveto begleiterbeam
set nureinmal1 to 1
endif
if nureinmal == 1
addtopic reden
endif
if getdayofweek == 1 
set tag to 0
endif 
if folgen == 1
 
          if Player.IsSneaking == 0
               markkus1.SetForceSneak 0
          endif
          if (Player.IsSneaking == 1 && markkus1.IsInCombat == 0)
               markkus1.SetForceSneak 1
          endif
 
          if Player.IsWeaponOut == 1
               markkus1.SetAlert 1
          else
               markkus1.SetAlert 0
          endif
 if markkus1.IsInCombat == 0 && folgen == 1
               if (Player.GetPos z) > ((GetPos z) + 700)
                    markkus1.MoveTo Player
               elseif (Player.GetPos z) < ((GetPos z) - 700)
                    markkus1.MoveTo Player
               endif
               if (GetDistance Player > 5500)
                    markkus1.MoveTo Player
               endif
          endif

endif
    If doonce == 1
    Set button to getbuttonpressed
    
if button == 0
    markkus1.activate player
    set doonce to 0
    return
elseif button == 1 
    markkus1.Startconversation player Folge
    set folgen to 1
    set doonce to 0
    return
elseif button == 2
    markkus1.Startconversation player Warte
    set doonce to 0
    set folgen to 0
    return
elseif button == 3
    set doonce to 0
    markkus1.setactorvalue Aggression 0
return

elseif button == 4
    set doonce to 0    
    markkus1.setactorvalue Aggression 5    
    return
elseif button == 5
    set doonce to 0
    return
endif
endif
end Gamemode
 
Ja, wobei sich noch herausstellen muss, ob der Rest auch so funktioniert.
Ich habe beispielsweise auch gerade ein Script, allerdings etwas länger, dass im Grunde korrekt ist, jedoch hat das Spiel anscheinend Probleme damit, Variablen richtig zu erkennen.
 
  • Like
Reaktionen: death-lord
Um mal ein Verständnisproblem zu lösen:
Soll der Spieler das Objekt erst ein zweites Mal aktivieren können, wenn der Dialog beendet ist, oder auch schon vorher?
Sonst gib mal dem Result-Skript des Dialogs folgende Zeile:
Code:
set <Ref-des-Activators>.nureinmal to 2

und dann auf dem Activator:
Code:
...
Begin onActivate
if nureinmal == 0
 set nureinmal to 1
 <Begleiter-Ref>.startConversation player <Topic-ID>
elseif nureinmal == 2
 set nureinmal to 3
endif
end
...

Edit: Habs wohl falsch verstanden...
 
Zuletzt bearbeitet: