Construction Set Der Scriptthread

The Nici

Gebannter Benutzer
Hallo,
in diesem thread kann man Scripts die nützlich sein könnten hinschreiben, oder fragen welche man brauchen könnte.

Das ganze wird so aufgebaut:

BEI EINER SCRIPTANFRAGE:
-Was muss das Script bewirken (Bitte ausführlich)
-Wird es an ein script angehängt
-an welches Mesh wird es angehängt (Optional)

SCRIPTVORSTELLUNG:
-Autor
-Was bewirkt das Script? (Bitte ausführlich)
-Für welche art von Typ (Creature, Activator, etc.) ist das Script geeignet
-Wurde das Script getestet? (Optional)

So, also, hier meine Anfrage:
Ich brauche ein script, bei dem bei jedem Magieschaden die Kreatur ein bisschen wächst (0.10) Es soll auch mehr HP und mehr Stärke bekommen (Also Strength +5 und HP +25)
Es wird das einzige Script auf der Creature sein
Es wird ein Monster sein.
[hr:101e7fa7fc]

Scriptvorstellung:
Autor: Eomer_13 (verbessert von The Nici)
Wirkung: Lässt die Kreatur 10-mal so gross werden. Kann auch mit anderen Scales machbar sein.
Für was ist es geeignet?: Eigentlich für alles.
Wurde das script getestet?: Sehr wahrscheinlich schon, aber Theoretisch müsste es gehen
Das Script:
Code:
begin Scalescript 
short doOnce

if ( doOnce == 0 ) 
setscale 10 
set doOnce to 1 
endif 

end
(Die zahl bei Setscale kann beliebig ausgetauscht werden, aber darf nicht 10 überschreiten)

So, hoffe jemand findet ein Script für mich ;)
 
Machbar schon, aber problematisch ist folgendes:
Während die physikalische/optische Grösse des Monsters wächst bleibt die RootCollisionNode oder BoundingBox bei der alten Grösse. Wenn das Monster zu gross ist trifft man die Box beim Zuschlagen nicht mehr weil sie im Körperinnneren verschwindet. Aber trotzdem hier das Script

begin HauMichGross

float resizeMe
float myScale
short isDead
short OnPCHitMe

if ( menumode == 1 )
return
endif

if ( isDead == 1 )
return
endif

set isDead to OnDeath
set resizeMe to OnPCHitMe * 0.25

if ( resizeMe == 0 )
return
endif

if ( myScale < 10 )
if ( myScale > 0 )

set myScale to myScale + resizeMe
setScale myScale

else
setscale 1.25
set myScale 1.25
endif
endif

end

Die 0.25 bestimmen die Grösse die pro Schlag dazukommt. Von weniger als 0.01 oder mehr als 1.0 würde ich abraten.
Ausserdem muss dann die 1.25 in beiden Zeilen unten (nach dem ersten Treffer) noch entsprechend angepasst werden
 
Wäre es nicht besser, für jedes Scriptproblem einen eigenen Thread aufzumachen?

Wenn jetzt 10 Leute in diesem ein Prob. haben, wirds sicher unübersichtlich
 
@Rene: Naja, dann amch ichs nur mit HP und Stärke^^ KAnn man denn das Kästchen nicht mitwachsen lassen?

@BM: was macht das für ein unterschied? Wenn jetzt jemand ein Script sucht das schon drinsteht weist man ihn auf dieses hin, beid en Threads wäre es nicht anders.
Zwischendiskussionen machen es unübersichtlich.
 
Das "Kästchen" (es ist nicht immer ein Kästchen, manchmal auch eine richtige Figur) kann man nicht dem SetScale-Befehl mit vergrössern. Es ist aber auch erst ab einer bestimmten Grösse (etwa zwischen 3.7 und 4.2) so weit drin das man nicht mehr trifft. Kommt drauf an was es für ein Vieh ist. Bei einer "schlanken" Goldenen Heiligen kann man sicher bis auf 6.5 oder so gehen während bei einem fetten Guar vieleicht schon bei 2.5 Schluss ist. Man muss es ausprobieren z.B. indem man in dem Script einen Check einsetzt. an der Stelle unter
if ( resizeMe == 0 )
return
endif

kann man zeitweilig zum Testen einsetzen

messagebox "Getroffen!"

Wenn beim Zuschlagen die Getroffen-Meldung nicht mehr kommt dann ist der Gegner schon zu gross. Die maximale Grösse wäre dann also
(Konsole auf, den Gegner anklicken, "SV(enter)" eintippen, den Wert für myScale ablesen und das zuletzt dazugerechnete wieder abziehen, dann hat man seine maximal brauchbare Grössenangabe.
 
So ich hab da auch mal ein paar Scriptfragen:

1. Weiß irgendjemand wie die (bzw. ob die) Restart-Funktion von Quests funktioniert?

2. Ich bräuchte ein Script, dass den Spieler, wenn er schläft um eine bestimmte Uhrzeit aufweckt. Das hört sich jetzt nicht so großartig an, aber mit den Schlafbefehlen bin ich noch nicht so klargekommen.

3. Wenn man sich für eine gewisse Zeit nicht bewegt, fängt die Kamera an, um den Spieler zu rotieren. Also wird es wahrscheinlich eine Variable geben, in der gespeichert ist, wie lange man sich nicht bewegt hat. Kann man diese Variable abfragen, sodass man eine bestimmtes Script auslösen kann, wenn sich der Spieler zu lange nicht bewegt?
 
1. Quests "restarten" geht eigentlich nicht. Man kann zwar mit dem Befehl
setJournal "journalName" 0
ein Tagebuch auf 0 zurücksetzen aber ob das wirklich in allen Bereichen des Spieles so angenommen wird? Meist werden ja irgendwelche zusätzlichen Werte gesetzt, Tote abgefragt usw.

2.
if ( GetPCSleep == 1 )
if ( GameHour >= Aufstehzeit )
WakeUpPC
endif
endif

3. Ich vermute das dazu verwendete Gamesetting kann höchstens einen Wert entgegennehmen (wie lang maximal untätig herumgestanden wird) aber wahrscheinlich gibt es keine Möglichkeit, die bereits verstrichene Zeit abzufragen. Aber Du kannst ja mal unter Gameplay/Gamesettings durchstöbern, vieleicht findest Du da was.
 
Hi,
Ich suche ein Lift-Script. Kann wer mir das machen?

Danke schonmal^^

EDIT: Genauer:
Eine Plattform soll zu einem Vulkan hochfahren. Sie macht das immer wieder, ohne Schalterbetätigung. Immer rauf, runter rauf runter. es ist ein Plattform. (x/ex_dwrv_block10) als Activator. Also ist die ID "ex_dwrv_block10activator" Ganz geil wär wenn eine Dampfmaschine daran auch noch hochkommt, aber dafür muss man wohl einfach das gleiche Script drauflegen.
Die Endposition ist: 133971, 157487, 5796 [0,0, 315] 16,19
Die Startposition ist: 133971, 157487, 1889 [0,0, 315] 16,19
 
Zuletzt bearbeitet:
Gehts etwas präziser?
Soll der Lift automatisch fahren? Oder soll der Spieler ihn aktivieren? Wenn er ihn aktivieren soll, wie soll er das? Durch einen Schalter oder indem er sich einfach in den Lift stellt? ;)
 
Kein Problem. Hier ist das Script:

begin dg_platform_aufab01

float timer
short hoehe

if ( MenuMode == 1 )
return
endif


if (hoehe == 0)
if (GetPos Z >= 5796 )
if (timer <= 3)
Set timer to timer + GetSecondsPassed
return
endif
if (timer > 3)
set hoehe to 1
Set timer to 0
PlaySound "Machinery"
return
endif
endif

if (GetPos Z < 5796 )
MoveWorld z 100
return
endif
endif

if (hoehe == 1)
if (GetPos Z <= 1889)
if (timer <= 3)
Set timer to timer + GetSecondsPassed
return
endif
if (timer > 3)
set hoehe to 0
Set timer to 0
return
endif
endif

if (GetPos Z > 1889)
MoveWorld z -100
return
endif
endif

end


Dieses Script bewegt die Platform nun nach oben, lässt sie dort 3 Sekunden warten und danach wieder herunterfahren. Dort wartet sie wieder 3 Sekunden und fängt von vorne an.
 
Neue Scriptanfrage:
Ich brauche ein Script, bei dem Man ein bestimmtes Item braucht, um passieren zu können. Man muss eine Eintrittskarte kaufen. Dann zeigt man sie einer Wache und die öffnet dann das Törchen und man kann durch.
Die ID des NPC ist Dwemer_Torwächter und die ID der Karte ist Dwemer_Passierschein.

Danke schonmal im Vorraus
 
Wenn ich dich richtig verstanden habe müsste es so gehen:
Code:
Öffne das Dialog-Fenster und erstelle ein neues Topic (z.B. Eintretten zu Dürfen) jetzt erstellst du bei Info/Response ein neue Zeile und schreibst ein Text. (z.B Willst du eine eintrittskarte kaufen) bei der ID kommt dann die [B]ID Dwemer_Torwächter[/B]. Bei Variable/Funktion kommt rein Item [B]Dwemer_Passierschein und auf < 1[/B]. Bei den Result-Fenster kommt rein [B]Choice: "Ja für 500Draken" 1 "Nö heute nicht" 2 [/B]
So das erste ist fertig jetzt musst du:
Code:
Im selben Topic bei Info/Response ein neue Zeiel machen (Hier fü 500 haste eine Eintrittskarte) die ÜBER der anderen ist (es wird immer von unten nach oben Abgefragt) 
Bei Id kommt das gleiche bei Variable/Funktion kommt [B]Funktion Choice = 1[/B] und [B]Item Gold_001 >= 500[/B]
im Result-Fenster kommt dann
[B]Player -> RemoveItem"Gold_001" 500
bei Funktion/Variable kommtPlayer -> AddItem "Dwemer_Eintrittskarte" 1[/B]

So jetzt machste:
Code:
bei Info/Response noch eins auch wieder über die anderen.(du hast nicht genug geld)
Id bleibt gleich
bei Funktion/Variable kommt [B]Funktion Choice = 1[/B] und [B]Item Gold_001 < 500[/B]
im Result kommt Nichst hin
Jetzt das vorletzte
Code:
bei Info/Response noch eins auch wieder über die anderen.(Warum nicht na gut wer nicht will der hat schon)
Id Bleibt gleich
bei Funktion/Variable kommt [B]Funktion Choice = 2[/B]
Im Result kommt nichts

Noch Eins dan ist es fertig:
Code:
bei Info/Response noch eins auch wieder über die anderen.(Du hast schon eine Karte)
Id Bleibt gleich
bei Funktion/Variable kommt [B]Item Dwemer_Eintrittskarte >= 1[/B]
Result kommt nichts
So fertig mit dn Dialogen:
Auf das Tor kommt folgendes Script:
Code:
Begin Dwemer_tor_Script_01

If ( OnActivate == 1 )
If ( GetItemCount "Dwemer_Eintrittskarte" >= 1 )
Activate
Return
EndIf
EndIf
End

So sollte es funktionieren Denke ich Habe es nicht getestet.
 
ich glaub, ich mach einfach ein Händler der das verkauft. dann muss ich nurnoch das letzte script benutzen.
Muss man dort nicht anstatt activate unlock machen? wenn es zugeschlossen ist und activate kommt würds ja zugeschlossen bleiben...
 
nee dadurch das
If ( OnActivate == 1 )
If ( GetItemCount "Dwemer_Eintrittskarte" >= 1 )

MUSST du die eintrittskarte haben sonst activiert sich die Tür nicht
 
ja du musst nichs abschlkiessen.
Wenn das mit
If ( GetItemCount "Dwemer_Eintrittskarte" >= 1 )
Nicht funzt
dann probier mal
If ( player -> GetItemCount "Dwemer_Eintrittskarte" >= 1 )
Ich weiß nicht mehr was man davon nehmen muss.