Construction Set Der Scriptthread

Konstitution -> Endurance
Geschicklichkeit -> Agility
Charisma -> Personality
Willenskraft -> Willpower

;)
 
Hallo, ich habe eine frage wie kann ich einen Trank erstellen der die Skills permanent steigert wie in Gothic?


Es wird das einfachste sein einen neuen Zauber, Typ Fähigkeit zu erstellen und dem Spieler diese Fähigkeit per Addspell zu verleihen -

das ist bei MW/Oblivion allerdings recht schwierig da der Trank nicht mehr "merkt" wenn er genommen wird. Es lässt sich mit OnPCEquip also leider nicht feststellen/ auswerten wenn der Spieler den Trank einnimmt.

So gibt es nur die Möglichkeit an den Trank einen anderen, möglichst seltenen/unbenutzten Effekt zu koppeln und von "aussen" (durch ein anderes Script) zu überwachen ob der Effekt des Trankes am Spieler aktiv und der Trank aus dem Inventar des Spielers verschwunden ist.

Damit das "kontrolliert" abläuft sollte vieleicht verhindert werden das der Spieler die Zelle mit dem Trank im Inventar nicht verlassen kann. Im Script des Trankes sollte also lediglich stehen

begin blablaTrank
disableTeleporting
end

an den Türen der Zelle

begin blablaTür
if ( Player-> GetItemCount "so ein Trank" > 0 )
if ( OnActivate )
messagebox "Ihr müsst den Trank erst trinken"
endif
endif

end

und an einem Aktivator/ NPC in der Zelle etwa so ein Script:

begin blablaCheck

short hatTrank
float Augenblick

if ( Player-> GetItemCount "so ein Trank" > 0 )
; hat der Spieler so einen Trank
; merken wir uns das mal
set hatTrank to 1

else
; er hat keinen Trank,

if ( hatTrank == 1 )
; hatte aber vorher einen
if ( Player-> GetEffect sEffectname )
; und steht jetzt unter einem Effekt (der an dem Trank vorhanden sein muss)
; siehe dazu Editor-Hilfe, Magic Effect List

set hatTrank to -1
; dann müsste er den Trank getrunken haben

Player-> Addspell "die neue Fähigkeit"
else
; der Trank ist weg- aber der Effekt nicht da?

; naja, möglicherweise ist der Effekt noch nicht aktiv solange das Inventar auf ist
; wir warten also kurz ab:

if ( MenuMode == 0 )
set Augenblick to Augenblick + GetSecondsPassed
if ( Augenblick >= 0.5 )
; eine halbe Sekunde nach Menü-Zu sollte reichen
; ist der Trank also irgendwie anders verschwunden
set hatTrank to 0
set Augenblick to 0
endif
endif

endif
endif

end
 
Zuletzt bearbeitet:
Ne- wenn man den Trank ablegt oder verkauft wirkt er ja nicht. Dafür sorgen ja diese Scripts (s.o.) und deswegen muss man ihn ja unter derartig kontrollierten Bedingungen verabreichen. Alternativ wäre es auch machbar von einem persistent markierten Aktivator/NPC per Startscript-Anweisung das Check-Script zu starten- dann müsste statt
set hatTrank to -1

da drin stehen:

stopscript blablaCheckScript
return
 
Ich suche ein Script, dass es ermöglicht, ein Objekt zu bewegen. Die Besonderheit ist, dass es möglich sein soll, den Spieler damit nach oben zu transportieren. Dass es in der Ebene gehen muss weiß ich aus Akrtwend(am Anfang mit dem Ruderboot) Ist das möglich und wenn ja, bitte das Skript hier Posten. Vielen dank im Voraus für eure Antworten! :)
 
Ich suche ein Script, dass es ermöglicht, ein Objekt zu bewegen. Die Besonderheit ist, dass es möglich sein soll, den Spieler damit nach oben zu transportieren. Dass es in der Ebene gehen muss weiß ich aus Akrtwend(am Anfang mit dem Ruderboot) Ist das möglich und wenn ja, bitte das Skript hier Posten. Vielen dank im Voraus für eure Antworten! :)


Schau auf Seite 8 in diesem Thread hier,

statt an der X-Achse (links-rechts wie im dortigen Script) muss das Objekt für Deinen Zweck lediglich an der Z-Achse (auf-ab) entlangbewegt werden.

Ob der Spieler auf dem Objekt draufsteht erfährst Du mit

if ( GetStandingPC )
; glaub ich...
;@Killfetzer: sag- war das der richtige?


Und mitbewegt wird der Spieler von dem Objekt automatisch wenn der Spieler vor Beginn der Bewegung draufstand und das Objekt Kollisionen hat
 
Zuletzt bearbeitet:
  • Like
Reaktionen: 1 Person
Danke Rene!
Mir ist nur die Verwendung dieses Befehls weiterhin schleierhaft.
Ich hätte jetzt gerne ein genaues Script, so dass ich es nur noch eintippen muss. :roll:
Folgender Aufbau:

Oben -- 1 Schalter: holen wenn unten, Fahren wenn oben
|
|
|
|
|
|
Unten -- 1 Schalter: Holen wenn oben, Fahren wenn unten


Das heißt, wenn der Spieler z.B. unten ist und nach oben möchte, der Aufzug aber oben ist, dann aktiviert er den Schalter und wartet, bis er unten ist. Dann stellt er sich auf den Aufzug und aktiviert den Schalter erneut. Oben angekommen steigt er aus.

D.h. jetzt ,dass ich jetzt zweimal beinahe dass selbe Script brauche. Einmal für unten einmal für oben. eins Reicht mir aber "schon" ;)
Es tut mir Leid, aber bei deinem Skript auf Seite 8 Blicke ich kein bisschen durch. :?

Edit: ich habe hier http://planetelderscrolls.gamespy.com/View.php?view=Mods.Detail&id=1047
was gefunden, damit werde ich jetzt erstmal rumprobieren.
 
Zuletzt bearbeitet von einem Moderator:
Na gut, zum mitdenken...

Erstens brauchst Du einen Aktivator- den Rufknopf, Du brauchst eigentlich zwei aber wir können zweimal den gleichen nehmen.
Dann brauchst Du natürlich die Kabine oder eine grosse Steinplatte- ich glaub die quadratische Alt-Gramfeste-Platte
in_OM_Plat512 (aus Tribunal) wäre geeignet, ist aber ein Static, müsstest Du also von der Tribunal-CD raussuchen und als Modell für den Aufzug einsetzen.

an die Aufzug-Platte ein Script, ich setze vorraus das die Platte im Editor an der untersten Position aufgestellt wurde. Die Hubhöhe beträgt im Script 512 Bildchirmeinheiten, die musst Du anpassen. Die Hub-Geschwindigkeit justierst Du indem Du den Wert für Richtung anpasst, ich würde sagen statt 1 und -1 nimm erstmal 16 und -16, probier dann 24 und 32 aus um die optimale Geschwindigkeit herauszufinden, im Beispielscript hab ich der Übersicht wegen 1 und -1 verwendet.

Ausserdem muss die Platte als persistent markiert, einmalig sein und eine eigene ID haben damit sie sich von aussen steuern lässt, ich nenn sie ab hier mal "Liftplatte".

an die Liftplatte kommt dann das Script


begin LiftPlatScript

short Richtung
; die Richtung in die die Liftplatte unterwegs ist
; positiv=aufwärts, negativ=abwärts, 0=Stillstand
short verlassen
; hat der Spieler die Liftplatte verlassen ( damit sie nicht ununterbrochen rauf und runter fährt)

float ganzOben
float ganzUnten

if ( GanzOben == GanzUnten )
; kann nur im allerersten Script-Durchlauf so sein...
; drum legen wir hier die Werte für die Hubhöhe fest
set GanzUnten to Getpos Z
set GanzOben to GanzUnten + 512
endif

if ( GetStandingPC == 0 )
; steht der Spieler nicht auf der Platte dann hat er sie also verlassen:
set verlassen to 1

else
; steht er wohl drauf,
; die Platte soll entweder durch Betreten oder einen Rufknopf
; ausgelösst werden können, das durch betreten ausgelöste passiert hier:

if ( Richtung == 0 )
; die Platte steht noch oder wieder still
if ( verlassen == 0 )
; wenn die Liftplatte grade oben oder unten angekommen ist soll sie warten
; bis der Spieler sie verlassen hat und nicht sofort wieder umkehren
; also raus hier:
return
endif
;hier steht die Platte also immer noch still...

if ( GetPos Z < GanzOben )
; und die Platte ist nicht oben, also setzen wir die Richtung aufwärts:
set Richtung to 1
elseif ( GetPos Z > GanzUnten )
; umgedreht- ist die Platte nicht unten dann soll sie nun runterfahren
set Richtung to -1
endif

endif
;platte in Bewegung und Spieler steht auch drauf, also merken wir uns das:
set verlassen to 0
endif

if ( Richtung == 0 )
; die Platte soll sich nicht bewegen, also wird das Script hier verlassen:
return
endif

; die Platte soll sich also bewegen:

moveworld Z Richtung
if ( Richtung > 0 )
; hier aufwärts

if ( Getpos Z >= GanzOben )
; hat die Platte den obersten Punkt erreicht halten wir an
set Richtung to 0
; und um sicher zu gehen stellen wir sie an die "richtige" Stelle
Setpos Z GanzOben
endif

elseif ( Richtung < 0 )
; hier abwärts das gleiche

if ( GetPos Z <= GanzUnten )
set Richtung to 0
Setpos Z GanzUnten
endif

endif

end

die Schalter, natürlich Aktivator sollten in der selben Zelle oder im gleichen Exterior-Bereich aufgebaut sein- um an beiden Rufknöpfen das gleiche Script und somit den gleichen Rufknopf für oben und unten verwenden zu können musst Du dir "merken" an welcher Z-Position Du den oberen Knopf aufstellst. Dabei unbedingt SnapToGrid verwenden oder die Z-Position manuell setzen damit es eine glatte Zahl für die Z-Position des oberen Knopfes wird.

Und dann ( erst nachdem die Liftplatte bereits aufgestellt, als persistent markiert ist und ihr Script trägt kannst Du das Rufknopf-Script speichern ) etwa so

begin RufknopfScript

short WelcherKnopf
; der Knopf mit der -1 ist der untere, der Knopf mit der 1 der obere

if ( WelcherKnopf == 0 )
; passiert nur beim ersten Durchlauf
if ( Getpos Z == hier gemerkteZ-Position des oberen Rufknopfes einsetzen)
; dann bin ich der obere Knopf und rufe die Platte nach oben
set WelcherKnopf to 1
else
; bin ich der untere Knopf...
set WelcherKnopf to -1
; für 1 und -1 musst Du dann wie im anderen Script den Wert der Hubgeschwindigkeit verwenden
endif
endif

if ( OnActivate )
set Liftplatte.Richtung to WelcherKnopf
endif

end

So, jetzt verdau das mal :D

PS: Natürlich kannst Du auch zwei verschiedene Rufknöpfe mit jeweils einem eigenem Script machen das sähe dann so aus:

begin ObererKnopf

if ( OnActivate )
set Liftplatte.Richtung to 1
endif

end

begin UntererKnopf

if ( OnActivate )
set Liftplatte.Richtung to -1
endif

end
 
Zuletzt bearbeitet:
  • Like
Reaktionen: 1 Person
Hi, ich würde gern ein Script machen, das veranlässt, dass der NPC seine Waffe die ganze Zeit gezogen hat.

Sorry, ich doppelposte...

Ich weiss nicht wie das bei einem lebendigen NPC geht- aber für einen toten (Kleiderständer, Armor-Mannequin):
kein Kreuz bei AutoCalc machen,
auch nicht nötig als persistent zu markieren,
die Health sollte auf 0 gesetzt sein,

begin blabla

short WaffeGezogen


if ( Cellchanged )
skipanim
set WaffeGezogen to 0
endif

if ( WaffeGezogen )
skipanim
return
endif

startcombat "Todd"
set WaffeGezogen to 1

end

anstelle von "Todd" muss lediglich die ID eines im Editor aufgestellten NPCs/ einer Kreatur stehen, es ginge auch "Player" dort einzusetzen doch könnte man dann wahrscheinlich nicht mit dem Mannequin in einer Zelle schlafen.
Aber ob's Dir hilft weiss ich nicht- vermutlich willst Du ja einen lebenden die Waffe ziehen lassen- evtl ginge das indem Du ein unsichtbares Opfer vor den stellst der die Waffe ziehen soll.
Dazu erstelle einfach eine neue Rasse- weil die erstmal weder Bodyparts noch Voies hat ist sie stumm und unsichtbar. Davon mach einen NPC, "meinOpfer"
im Script des Täters (benötigt allerdings Bloodmoon) könntest Du dann:

begin Täterscript

short nurEinmal

if ( JetztSchwertZiehen )
; also wenn ein bestimmter Tagebucheintrag oder sowas erfüllt ist

if ( nurEinmal == 0 )
; und es noch nicht passiert ist
PlaceAtMe "MeinOpfer" 1 0 0
set nurEinmal to 1
startCombat "meinOpfer"
endif
endif

if ( JetztSchwertEinstecken )
; also wenn ein bestimmter Tagebucheintrag oder sowas erfüllt ist
; sollte der Typ das Schwert wieder wegpacken mit:
stopcombat
endif

end

und am (unsichtbaren) Opfer-NPC:

begin Opferscript

if ( Getpos Z < 30000 )
moveworld Z 50
endif

end

somit fliegt das unsichtbare Opfer sofort nachdem es in die Welt gesetzt wurde in den Himmel hinauf und der Täter hat das Nachsehen. Und wie die NPCs mit gezogener Waffe herumstehen wenn sie einen in der Luft befindlichen, unerreichbaren NPC attackieren weisst Du ja- aber ob es für deinen Zweck ausreicht?
 
  • Like
Reaktionen: Valkaveli
vielen Dank, rene. mit dem was ich oben als Link gepostet habe komme ich nicht zurecht, ich schau mir jetzt mal deins an.
 
Danke erst mal. Eigentlich wollte ich ja, dass der NPC die Waffe die ganze Zeit trägt. (Kan ich da das if ( JetztSchwertZiehen ) weglassen?) Und wenn man den NPC ansprechen wollen würde, käme dann nicht die Nachricht "Dieser Charakter kämpft gerade"?:huh:
 
Sicher- da hast Du recht. Er wäre im Kampf und nicht ansprechbar es sei denn du tätest in sein Script noch einsetzen:

If ( OnActivate )
stopcombat
activate
endif
 
  • Like
Reaktionen: Valkaveli
Hi. 1. Ich brauche einen Script durch den, wenn ein bestimmter Tagebucheintrag vorhanden ist, ein NPC verschwindet, und an einer anderen Stelle, tot, auffindbar ist.;) Kann man soeinen Script machen?

2. Ich brauche einen Kampfgbegleiter-Script so dass einem eine Person im Kampf zur Seite steht. (Für die Projekt-Idee Scharesoft-Companions^^)

mfg, MorroFan
 
Zuletzt bearbeitet:
hi,
ich hoffe das liest noch jemand. ich wollt einen angelrutenscript schreiben. das hat nach vielen hin und her auch einigermaßen geklappt. das problem ist jetzt nur, dass wenn der skript im spiel geladen wird, eine fehlermeldung kommt in der es heißt, dass das objekt Z#ge nicht gefunden werden kann und das spiel abstürzt, obwohl ich definitiv nichts von Z#ge oder dersgleichen in meinem skript habe.
begin angelruteScript

long wasserlevel
long hoehe

if ( OnPCEquip == 1)
set wasserlevel to getwaterlevel
set hoehe to player->getpos, Z
if (hoehe<=wasserlevel)
(player->additem "random_scales" 1)
endif
endif

end angelruteScript

ich hoffe mir hilft noch jemand
grüße
konda
 
Du kannst per Script keine LeveldItems hinzufügen. Füge statt dessen lieber gleich die Schuppen (ingred_scales_01, glaub ich) dem Inventar des Spielers hinzu.
 
Hi,

Ich suche ein Script, welches sobald ein Musikstück zu Ende ist ein bestimmtes abspielt (z.B. Music/Ragox/test.mp3).

Danke schon mal im Voraus :)
 
Hi,

Ich suche ein Script, welches sobald ein Musikstück zu Ende ist ein bestimmtes abspielt (z.B. Music/Ragox/test.mp3).

Danke schon mal im Voraus :)

*mit arme wedel*

ich was ähnliches XD ich möcht gern eigene Musik in bestimmten Cells abspielen (in und outterrior - kann man das vielleicht machen, das die musik im menü nicht immer gleich auf Maximium gedreht wird?).
 
Ich würde gern ein script für eine Taverne machen. Wenn man reingeht soll man Musik hören. Wenn ein Musikstück zu Ende ist soll das nächste gespielt werden. Eine Endlosschleife sozusagen. :D