Construction Set Der Scriptthread

Allerdings kannst du nicht erkennen, wann der Spieler einen Speer abwirft. Du kannst nur überwachen, wie viele er noch im Inventar hat (eigentlich nicht mal das...), aber der Spieler könnte den Speer ja auch einfach ablegen wollen. Das ginge mit so einem Script nicht mehr.
 
Also, ich hab sowas ähnliches mal gemacht, allerdings mußte der spieler da einen handschuh tragen und bekam immer, wenn er den handschuh trug, und von waffe x keine mehr hatte 15 stück geaddet und equiped. Der Nachteil hierbei ist, das man, während man den handschuh trägt, keine andern Waffen nutzen kann, da das Script immer die waffe x ausrüstet.
Ich kanns dir raussuchen, wenn du willst
mfg erc
 
frage. ich hab mal wieder nen Skript, der bewirken soll, das was zu bestimmten tageszeiten erscheint und verschwindet.

eigentlich soll dadurch der "Geist von Rung" (ja ich widme ihm gar ein ganzes Quest) zwischen 23Uhr und 1Uhr morgens erscheinen. aber er ist immer unsichtbar.

Code:
begin "Rung_erscheinung_geist"

short doOnce
if ( doOnce == 0 )
	if ( GameHour < 23 )
		disable
		set doOnce to 1
	endif
	if ( GameHour > 1 )
		disable
		set doOnce to 1
	endif
	else
	if ( GameHour >= 23 )
		if ( GameHour < 1 )
			Enable
			set doOnce to 0
		endif
	endif
endif


end

wo liegt der fehler?

und noch ein weiterer. hiermit soll eine Tür erscheinen, wenn ein bestimmter Tagebucheintrag da ist. ist der Eintrag neuer/älter ist die tür weg:

Code:
begin "Rungs_Schwerter_Quest_doorskr"

if (Journal "Void_Rungs_Schwerter" == 30)
	enable
endif
if (Journal "Void_Rungs_Schwerter" =! 30)
	disable
endif

end

thx schonmal für die Hilfe!

mfg
Verganon
 
Dein Problem liegt hier:

if ( GameHour >= 23 )
if ( GameHour < 1 )


Du forderst gleichzeitig, dass die Tageszeit größer als 23 und kleiner als 1 sein soll. Das geht nicht.
 
  • Like
Reaktionen: Verganon
Wenn er zwischen 23 und 1 Uhr sichtbar sein soll dann

Code:
begin blabla

short Sichtbar

if ( Sichtbar )

   if ( GameHour > 1 )
     if ( GameHour < 23 )
         disable
         set Sichtbar to 0
     endif
   endif

else

   if ( GameHour > 23 )
     Enable
     set Sichtbar to 1

   elseif ( Gamehour < 1 )
     Enable
     set Sichtbar to 1

   endif

endif

end
Und für das zweite Problem:

Du musst Abfragen

if ( GetJournalIndex "Journalname" == Wert )-
du hast nur Journal verwendet was eigentlich der Befehl ist einen Tagebucheintrag zu machen, das Script wäre also

Code:
begin "Rungs_Schwerter_Quest_doorskr"

if ( GetJournalIndex "Void_Rungs_Schwerter" == 30 )
    if ( GetDisabled )
       enable
    endif
else
    if ( GetDisabled == 0 )
          disable
   endif
endif

end
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Verganon
thx ihr beiden das hab ich nu inzwischen einigermaßen hingebogen :D

und wo liegt hier der fehler? sonst macht das erscheinen ja keinen sinn, wenn die tür von anfang an da ist :lol:

Code:
begin "Rungs_Schwerter_Quest_doorskr"

if (Journal "Void_Rungs_Schwerter" == 30)
	enable
endif
if (Journal "Void_Rungs_Schwerter" =! 30)
	disable
endif

end

und nochmal schonmal thx^^

mfg
Verganon
 
schonwieder ich (welche überraschung).

da Skriptet Spells für mich ein riesiges Fachchinesisch ist und ich nach ner halben stunde skripts durchgucken immernoch wenig plan hab, muss ich nochmals nerven.

also... ich möchte das man, sobald man ein bestimmtes Item bei sich trägt, einen Zauber bekommt mit dem man sich in einen Daedroth Verwandeln kann. Dann soll man unsterblich sein, und der Zauber dauert solange, bis die MP des spielers auf 0 gesunken sind. (man kann sich aber auch so wieder zurückverwandeln). was bitte is bei diesem (ich stells mir schon monströs vor) skript alles zu tun? :?

mfg
Verganon
 
Mehr Wünsche hast du nicht?

Also das mit dem Verwandeln kann ich schon mal nicht. Ich weiß nicht, wie das bei Scripted Spells gelöst ist, aber ich denke dir wird ein Kleidungsstück hinzugefügt, die alle deine Körperteile verdeckt und dafür das Aussehen einer Kreatur gibt.

Das mit dem Zauber geht aber noch.

Code:
begin my_ring_script

short doOnce

if (doOnce == 0 )
if ( OnPCEquip == 1 )
   Player->AddSpell "my_verwandlungszauber"
   set OnPCEquip to 0
   set doOnce to 1
endif
else
if ( Player->HasItemEquipped "my_ring" == 0 )
   Player->RemoveSpell "my_verwandlungszauber"
   set doOnce to 0
endif
endif

end
 
  • Like
Reaktionen: Verganon
Die Technik ist folgende:

Ein globales Script überwacht das Anwenden der Zauber - sobald der Spieler einen dieser benutzt wird er verwandelt. Ob er schon verwandelt ist speichert er in einer weiteren globalen Variable.

"MeinVerwandlungszauber" sollte sowas sein wie "Lebensenergie festigen 1 Punkt für 2 Sekunden an sich selbst bei Benutzen" also harmlos- besser wäre vieleicht ein anderer harmloser Effekt aus der Beschwörungs-Schule

z.B im globalen, dauerhaft laufenden Script:

if ( meineGlobaleSchonVerwandeltVariable == 0 )

if ( Player-> GetSpellEffects "meinVerwandlungszauber" )
placeatPC "meinDaedrothAktivator" 1 0 0
set meineGlobaleSchonVerwandeltVariable to 1
endif

endif

Dann geht das so:
An Stelle des Spielers wird also eine als Aktivator deklarierte Kopie der gewünschten Kreatur (hier Daedroth.nif) positioniert.

Der Spieler wird im Script des Aktivators auf 0.01 skaliert und bekommt eine unsichtbare Ganzkörper-Robe angezogen und eine unsichtbare Waffe in die Hand gedrückt.
Das ganze wird rückgängig gemacht wenn der Spieler entweder einen "Rückverwandlungszauber" anwendet oder optional auch wenn die Zeit der Verwandlung abgelaufen ist.
"meineGlobaleSchonVerwandeltVariable" würde auf 0 zurückgesetzt so das man sich ab dann wieder verwandeln kann.


Die "Kreatur" bzw. das Script am Aktivator überwacht dann selbst weiter welche Bewegungen der Spieler gerade macht und spielt dann diese Animationen ab und lässt regelmässig eine unsichtbare Bodenhöhe-Find-Kreatur vor sich fallen (z.b. ein auf 0.01 skaliertes Kwama -Würmchen mit 100% Chamäleon ( per PlaceAtMe einen Schritt vor mich - benötigt aber Bloodmoon) um nicht durch den Boden zu fallen.
Das fallengelassene Kwama-Würmchen speichert seine z-Position in einer globalen Variable wo der Kreaturen-Aktivator (Daedroth.nif) sie wieder ausliest.

Das Ding hat aber einige ernsthaft problematische Fehler und ich würde es nicht empfehlen.
Die üblen Fehler sind

1. funktioniert nicht in Interiors
2. keine Kollisionsabfrage - als "Daedroth" kannst Du einfach durch Wände/Felsen laufen
3. der Spieler wird von allen NPCs immer noch als Spieler wahrgenommen
- es sei denn du deklarierst ihn für diese Zeit als Werewolf- dann ist er wenigstens eine Bestie. Dennoch käm es auf Solstheim dann zu merkwürdigen Dialogen ("Du wirst mein Silber spüren- Untier!")
 
  • Like
Reaktionen: Verganon
oookay danke :D (was könnt ihr eigentlich nicht??? :eek: )

werds als vorlage benutzen :) vielleicht bekomm ich das mit den verwandlungen noch etwas besser geregelt, wer weiß wer weiß? :lol: (ich bezweifel es aber stark)

thx trotzdem!

mfg
Verganon
 
noch ein Tipp: Du kannst dir einfach den Daedroth auseinander schneiden, ihn als neue Rüssi einfügen und und dann per additem ausrüsten.
Einziges Problem hierbei ist, das der Spieler dann halt nicht so gebückt läuft, sondern aufrecht.
mfg erc
 
Hi
Ich hätte ihr eine neue Anfrage (vielleicht stand es schon irgendwo, hab es aber nicht gesehen) :
Ich will ein Skript auf eine Tür legen, dass sie sich nur dann öffnet, wenn ein bestimmter Tagebucheintrag vorhanden ist.

Vielleicht ist es ganz einfach, ich komm aber nicht drauf (hab' schon einiges probiert). Bitte helft mir!
 
Du hattest recht, es ist ganz einfach ;)
Oder zumindest kurz, je nachdem...

Code:
begin my_tuer_script

if ( GetJournalIndex "my_tagebuchtopic" == 100 )
  Activate
endif

end
 
begin my_tuer_script

if ( GetJournalIndex "my_tagebuchtopic" == 100 )
Activate
endif

end

Fehlt da nicht noch die OnActivate-Abfrage? Auf diese Art und Weise würde die Tür ja jedesmal aktiviert, wenn der Tagebucheintrag vorhanden ist und der Spieler sich im Raum mit der Tür befindet.

Müsste das nicht so aussehen:
Code:
begin my_tuer_script

short OnActivate

If (OnActivate == 1)
if ( GetJournalIndex "my_tagebuchtopic" == 100 )
  Activate
endif
endif

end

Evtl. könnte man es noch um die Begrünung erweitern, warum die Türe sich nicht öffnen lässt:
Code:
begin my_tuer_script

short OnActivate

If (OnActivate == 1)
if ( GetJournalIndex "my_tagebuchtopic" == 100 )
  Activate
else
 Messagebox "Schreib hier hinein, warum die Tür verschlossen bleibt."
endif
endif

end
 
  • Like
Reaktionen: Valkaveli
ein bischen so, wie der bitterpokal?
das müßte so gehen, aber sicher bin ich mir nich:

begin my_toller_trank

If (OnPCEquip == 1 )
player->modstrength 10
endif
endi

das sollte stärke um 10 heben.
Die Attribute sind:
Stärke -> Strength
Geschwindigkeit -> Speed
Intelligenz -> Intelligence
Glück -> Luck
und die anderen sind mir entfallen oO nur 1 1/2 Wochen kein MW und dann DAS *Schock*

mfg erc