Construction Set Der Scriptthread

die Variable "Nicht" ist immer auf 0. Wozu brauchst Du sie?
Hast Du Tribunal installiert? Dann nimm statt "Day" lieber "Dayspassed"
setze "Tag" (des Entleerens) auf Dayspassed und "Tage" der Wiederbefüllung auf Dayspassed + 30.
Wenn "Tag" des Entleerens > 0 ist (also das Ding schonmal geleert wurde) dann musst Du kucken ob heute (daysPassed) >= Tage (der Wiederbefüllung) ist, ansonten gibt's nix. Falls doch musst Du zufällig die neue Menge auswürfeln und den Tag des Entleerens auf heute (daysPassed) setzen und Tage des Wiederbefüllens auf heute+30 usw.
 
Das mit Nichts. Upps da hatte ich was anderes Vor hatte nur vergessen alles weg zu machen.

Ich hatte erst nur MW als Master Fils jetzt wollte ich noch Tribunal mit reinnehmen da kommen ganz komische Fehler Meldungen. z.B
DataHandler: unrecognized form
Look in the Warning.txt file for more info.

Continue running executable?


Da steht wiederum


DataHandler: unrecognized form
Look in the Warnings.txt file for more info.
Chunk size 10 too big in chunk WEAT_ID in form REGN_ID.
Max size is 8, data truncated to "#
".
Unknown SSCR_ID in ConstructObject.
Unknown SSCR_ID in ConstructObject.
Unknown SSCR_ID in ConstructObject.
DataHandler: unrecognized form
Look in the Warnings.txt file for more info.


Habe es noch nicht getestet, meinst du das jetzt so

Code:
Begin ZZ_EbenErz_Script_01


Short Benutzt
Short Zufall
Short Zeit
short Tage
short Tag

If ( OnActivate == 1 )
If ( Benutzt == 1 )
MessageBox "Du hast aus diesem Felsen schon alles rausgeholt."
Return

ElseIf ( Benutzt == 0 )
set Zufall to Random 5
EndIf

if ( Player -> HasItemEquipped "Miner's Pick" == 0 )
MessageBox "Ihr habt keine Spitzhacke in der Hand."
return
endif

if ( GetDistance "Player" > 512 )
MessageBox "Ihr seid zu weit vom Felsen weg."
return
endif

If ( Zufall == 4 )
Player -> AddItem "ingred_raw_ebony_01" 4
set Tag to DaysPassed
set Tage to DaysPassed + 30
Set Zufall to 6
set Benutzt to 1
MessageBox "Du hast eine Riesige Menge Rohes Ebenerz aus dem Felsen gehauen."

ElseIf ( Zufall == 3 )
Player -> AddItem "ingred_raw_ebony_01" 3
set Tag to DaysPassed
set Tage to DaysPassed + 30
Set Zufall to 6
set Benutzt to 1
MessageBox "Du hast eine grosse Menge Rohes Ebenerz aus dem Felsen gehauen."

ElseIf ( Zufall == 2 )
Player -> AddItem "ingred_raw_ebony_01" 2
set Tag to DaysPassed
set Tage to DaysPassed + 30
Set Zufall to 6
set Benutzt to 1
MessageBox "Du hast eine normale Menge Rohes Ebenerz aus dem Felsen gehauen."

ElseIf ( Zufall == 1 )
Player -> AddItem "ingred_raw_ebony_01" 1
set Tag to DaysPassed
set Tage to DaysPassed + 30
Set Zufall to 6
set Benutzt to 1
MessageBox "Du hast eine kleine Menge Rohes Ebenerz aus dem Felsen gehauen."

ElseIf ( Zufall == 0 )
set Tag to DaysPassed
set Tage to DaysPassed + 30
set Benutzt to 1
Set Zufall to 6
Set Zeit to 1
MessageBox "Du hast nichts aus dem Felsen bekommen."

EndIf

If ( Tag > 0 )
If ( DaysPassed >= Tage )
set Tag to 0
Set Tage to 0
set Zeit to 0
set Benutzt to 0
set Zufall to 0
Return
EndIf
EndIf
EndIf
EndIf
End
 
Zuletzt bearbeitet:
Sry wegen der Doppelpost aber habe das obrige Script getestet aber es ist irgendwie irgendwo Falsch ich bekommt das Erz aber es soll sich ja nachen einem Monat erneuern und das tut es nicht.
 
Soweit ich weiß, hast du alle Ebenerzfelsen mit Activatorn ersetzt. Die Refillfunktion ist aber Containern vorbehalten.

Könntest du nicht in das Script noch eine Abfrage einbauen, dass wenn du abbaust wird eine Variable gesetzt. und am Anfang des Scripts vergleichst du diese immer mit der globalen Variable Month. Wenn sie übereinstimmen, lässt du das Script zurückspringen (return). Dann könnte man zwar im Extremfall an zwei Tagen hintereinander abbauen, dann aber erst wieder nach einem Monat. Also würde sich das Script relativ zuverlässig steuern, wann du wieder abbauen kannst.
 
Die Reihenfolge ist falsch- uund Du darfst doch nicht nach jedem Mal hacken den Zufall(sinhalt) neu berechnen.
etwa so:

if ( Benutzt == 1 )
; hier einfügen:
if ( DaysPassed > Tage )
set Benutzt to 0
return
endif
messagebox "Ihr habt schon alles rausgeholt"
; und es ist noch nichts nachgewachsen
;(so'n Blödsinn- aber für die Übung)
;...weiter normal wie oben


; ganz unten dann wo Du festlegst das der Container nun leer ist setzt du
set Tage to DaysPassed + 30
set Benutzt to 1

; usw...
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Lichtkrieger
Hab da mal ne neue Scriptanfrage:
Wenn der Player eine bestimmte Zutat 24 h lang nicht eingenommen hat sollte er einer konstanten Degeneration der Lebensenergie unterliegen.
 
Dazu brauchst du ein globales Script. Dieses musst du durch ein anderes Script oder einen Dialog mit dem Befehl StartScript my_giftscript starten.

Zusätzlich musst du noch eine Fähigkeit (unter Zauber) erstellen mit Lebensenergie entziehen 1 Punkt. Die nennst du my_lebensdegneration.

Das Script sollte etwa wie folgt aussehen:

Code:
begin my_giftscript

short state
float startzeit
short starttag

if ( state == 0 )
set startzeit to GameHour
set starttag to Day
set state to 1
endif

if ( state == 1 )
if ( Day != starttag )
if ( GameHour >= startzeit )
Player->AddSpell "my_lebensdegeneration"
set state to 2
endif
endif
endif

if ( state == 2 )
StopScript "my_giftscript"
set state to 3
endif

end
 
Killi- Das ist ja nur die Hälfte...

Das Problem an Zutaten ist das sie nicht mehr merken wenn sie gegessen werden- zu deutsch:
wenn der Spieler die Zutat schluckt ist das Script daran mit weg und es kann nicht mehr auf das Schlucken reagiert werden. Ein Umweg wäre der Zutat eine bestimmte magische Wirkung zu geben bzw. sich eine mit solcher auszusuchen und das globale Script ständig prüfen zu lassen wieviele Stück dieser Zutat im Inventar des Spieler sind und wenn der magische Effekt am Spieler auftritt (z.B. Ausdauer wiederherstellen bei einem Stück Brot) und just in diesem Moment auch gerade ein Brot aus dem Inventar des Spielers verschwindet dann könnte man annehmen er habe es gegessen... Allerdings könnte er es auch gleichzeitig aus dem Inventar entfernt und einen Ausdauer wiederherstellen -Trank eingenommen haben...
 
Stimmt, den Teil hatte ich vergessen. :oops:

Man könnte die Zutat aber mit einem SkipEquip versehen, sodass man sie nicht mehr essen kann. Dann wird aber abgefragt, wann sie aktiviert wird und man kann sie per Hand entfernen.
 
hoi

ich bräuchte mal nen Skript den man auf nen NPC legen kann. der soll bewirten das:

wenn man eine bestimmte klasse hat oder/und in der Kriegergilde ist vom beskripteten NPC angegriffen wird.

thx schonmal

mfg
Verganon
 
Soweit ich weiß, kann man Klassen und Fraktionen in einem Script nicht abfragen. Dafür bräuchtest du einen Dialog.

Du könntest es so machen:

Code:
begin my_script

short doOnce

if ( doOnce == 0 )
if ( MenuMode == 0 )
if ( GetDistance Player < 512 )
ForceGreeting
set doOnce to 1
endif
endif
endif

end

Im Dialog machst du dann halt verschiedene Greetings in denen du prüfst ob der Spieler eine der angegebenen Faktoren erfüllt. Dort schreibst du in die Resultbox dann jeweils
SetFight 100
StartCombat Player
GoodBye
 
  • Like
Reaktionen: Verganon
thx. eigentlich wollte ich ja, das man schon angegriffen wird, wenn man vor den stadttoren steht ohne dialog. aber dann man ischs halt anders :roll:

und wie mach ich das, das die dann auf einen zu gehen und gleich alle leute angreifen die von dem skript "befallen" sind? so wie bei den Wachen mein ich. irgentwie kann ich mich da net durchwurschteln. (kopfgeld soll dadurch nicht entstehen!)

mfg
Verganon
 
Du kannst in der Resultbox des Dialogs beliebig viele Leute gleichzeitig angreifen lassen:
NPC_ID->SetFight 100
NPC_ID->StartCombat Player

Dann wirkt ein NPC quasi als Trigger für alle anderen NPCs.
 
So, ich schreibe ich mal eine Frage hier rein. Ich plane gerade eine Halb-TC für MW, mehr will ich vorerst nicht verraten. Auf jeden Fall brauche ich ein Script, das dem Spieler einen magischen Effekt hinzufügt, sobald er eine komplette Rüstung angelegt hat. Bitte um richtige Scripts pls :D
 
Kein Problem:

Code:
begin set_nacht_script

short state
float timer

if ( MenuMode == 1 )
	return
endif

if ( state == 0 )
	if ( Player->HasItemEquipped "set_nacht_maske" == 1 )
		if ( Player->HasItemEquipped "set_nacht_mantel" == 1 )
		if ( Player->HasItemEquipped "set_nacht_tritt" == 1 )
			Player->AddSpell "setbonus_nacht"
			set state to 1
		endif
		endif
	endif
endif

if ( state == 1 )
	if ( Player->HasItemEquipped "set_nacht_maske" == 0 )
		set state to 2
	endif
	if ( Player->HasItemEquipped "set_nacht_mantel" == 0 )
		set state to 2
	endif
	if ( Player->HasItemEquipped "set_nacht_tritt" == 0 )
		set state to 2
	endif
endif

if ( state == 2 )
	set timer to timer + GetSecondsPassed
	if ( timer >= 120 )
		Player->RemoveSpell "setbonus_nacht"
		set timer to 0
		set state to 0
	endif
endif

end

Aus meinem Talismane-PI kopiert. Statt setbonus_nacht setzt du deinen gewünschten Zaubereffekt ein und statt der set_nacht_xy die von dir gewünschten Gegenstände.
 
Hallo, ich brauechte zwei Scripte, fuer Oblivion, aber ich glaube dass die recht aehnlich sind, Morrowind und Oblivion =).


Das erste Script, dass ich brauche soll bewirken, dass 5 Schalter in der richtigen Reihenfolge gedrueckt werden, die Schalter sind simple Activators mit den Namen 1,2,3,4 und 5 tragen. Nur wenn sie in der Reihenfolge 4251 gedrueckt werden soll sich eine Tuer oeffnen, also per Activate, ansonsten soll eine MessageBox kommen, dass die Kombination nicht stimmt =).
\
Das zweite Script soll bewirken, dass der Spieler die Zauber Infravision und Leben entdecken als dauerhafte Wirkung bekommt, wenn er eine bestimmte Distanz, sagen wir mal 5 Meter, also recht nah zu einem Objekt hat, ein unbewegliches. Die Spielerkontrollen sollen dann disabled werden, also dass sozusagen eine Art "Vision" entsteht und zwei Geister, also NPcs mit Chamaleoneffekt sollen erscheinen und der eine Geist den anderen angreifen. Klingt sehr komplex... Ist das machbar?


Liebe Gruesse

Nico