Construction Set Skriptthread zum Construction Set

Hallo,

Brauche mal Hilfe von Euch Cracks da draußen.
Das Szenario:
Mein Char läuft im Hafen Anvils, in Richtung eines
von mir in einer dunklen Ecke platzierten Healers.
Kurz vor diesem besagten Healer, soll ein Audiofile
aktiviert werden, der ihm mitteilt, doch mal rüber
zukommen.
Meine Frage daher, ist soetwas über ein Skript möglich
und wie müsste dieses aussehen, oder ist das nur über
eine Questerstellung und durch das Zuweisen von Dialogen möglich.
Bin für alle Tips offen..

mfg
 
Da gibt es verschiedene Möglichkeiten. Du kannst z.B. Triggerboxen um besagte dunkle Ecke legen und darauf ein Script legen:
Code:
scn Hallohallo

short doonce

Begin OnTriggerActor player
if doonce == 0
PlaySound [I][ID des Sounds][/I]
set doonce to 1
endif
end
Auf die Triggerboxen kannst du aber auch verzichten, indem du ein Script auf den Healer selbst legst:
Code:
scn SchonWiederHallo

short doonce

Begin GameMode
if (player.getdistance [U]1000[/U]) && (doonce == 0)
PlaySound3D [I][ID des Sounds]
[/I]set doonce to 1
endif
end
Bei der unterstrichenen Zahl kannst du variieren. Afaik entspricht eine Längeneinheit im Script ca. 1cm ingame.
Bei dieser Möglichkeit hast du auch noch den Vorteil, dass der Sound dann aus der Richtung des Healers kommen wird.

Für beide dieser Möglichkeiten musst du den Sound aber unter Miscellaneous -> Sounds ins CS einfügen und die ID dann ins Script einsetzen (ohne die eckigen Klammern).

P.S.: Juhu, hab gerade die erste Hälfte meines bisher längsten Scripts fertig :lol:
 
Hallo liebe erfahrene Skripter! :)


Ich stehe vor folgendem Problem:

Ich habe einen NPC gemacht, der sich als Begleiter bewähren soll.
Das ist ja alles schön und gut, und es funktioniert auch alles, doch ich habe vor ein Feature einzubauen. Er soll für mich kostenlos Sachen reparieren können. Allerdings erscheint aus anderen Gründen bereits eine Messagebox, wenn ich den NPC anklicke.

Ich wollte mal fragen, ob es möglich ist, dass der Begleiter die Sachen nach anklicken eines Buttons (z.B. "Repariere meine Sachen") genau dies tut.

Danke im Voraus!


Wave
 
Hallo

Ich hab eine Frage. Ich habe einen NPC mit einem AI-Package, in welchem ihm gesagt wird, er solle an einen bestimmten Punkt rennen. Doch irgendwie kommt mir immer ein anderer NPC dazwischen, der meinen NPC in ein Gespräch verwickelt und dieser dann wartet bis das Gespräch beendet ist und erst dann weiterrennt. Ist es möglich, diese konversationen zu unterdrücken, sodass mein NPC ohne unterbrechung direkt richtung Ziel geht? Hinweis: Er sollte nicht anhalten, da er brennt. Sonst erscheint meine Geschichte etwas unreal:D.
 
Ich habe ein klitzekleines Problem:

Ich müsste es hinkriegen, dass, wenn der Player etwas isst, einer bestimmte globale Variable ein neuer Wert zugewiesen wird. Wie bekommt man sowas hin?

Ablauf:
Player öffnet Inventar
Player isst (z.B.)Apfel
globale Variable xy bekommt Wert n
fertig
 
Standartapfel oder neu erstellter Apfel?

Bei neu erstelltem:
Code:
scn ApfelScript

Begin OnEquip Player
 set MeineGlobal to 1
End


Bei Standartapfel wird das ganze "etwas" komplizierter, da man weder auf den Spieler (für OnActorEquip), noch auf den Apfel ein Script legen kann, ohne Konflikte mit anderen PIs zu provozieren.
 
Es geht generell um Lebensmittel, die man konsumieren kann. Bisher gehe ich den Weg mit dem Skript auf dem Player und den OnActorEquip-Blocks für jedes einzelne Lebensmittel. Ich wäre nur interessiert, ob es noch andere Wege gäbe...
 
@hi wave,

direkt helfen kann ich Dir nicht, doch eventuell ein Tip.
Schau doch mal ins CS. Such Dir einen NPC, der InGame Sachen
reparieren kann.
Vielleicht findest Du dort einen Hinweis, oder kannst ein
Script nutzen bzw. umschreiben.

Brauche noch einmal Eure Hilfe.
Ein paar Posts vorher, hatte ich mein Problem schon beschrieben und
auch zwei Scriptvorschläge von Arcanum bekommen.
Script auf dem Trigger funktioniert, doch das auf dem NPC leider nicht.
Hier sein Vorschlag:

scn SchonWiederHallo

short doonce

Begin GameMode
if (player.getdistance 1000) && (doonce == 0)
PlaySound3D [ID des Sounds]
set doonce to 1
endif
end

Leider wird bei Scriperstellung, immer wieder ein Fehler in Zeile 6, in
Bezug auf den Wert 1000, ausgegeben.

Hier noch einmal die Erläuterung:
Mein Char läuft im Hafen Anvils, in Richtung eines
von mir in einer dunklen Ecke platzierten Healers.
Kurz vor diesem besagten Healer, soll ein Audiofile
aktiviert werden, der ihm mitteilt, doch mal rüber
zukommen.
Außerdem sollte das jedesmal passieren, wenn mein Char an diesem Punkt
vorbei kommt, was sehr wichtig wäre.
Hoffe auf Eure Hilfe..

mfg
 
Du musst das GetDistance irgentwie mit dem 1000 verknüpfen, entweder durch ==, !=, >, <, >=, oder <=.

Nur als Anmerkung:

== heißt "genau dann"
!= heißt "wenn nicht"
> heißt "wenn größer"
< heißt "wenn kleiner"
>= heißt "größer gleich"
<= heißt "kleiner gleich"

z.B. If ( Player.GetDistance == 1000 )

Dann passiert der folgende Block nur, wenn der Abstand genau 1000 ist.
Solltest Du, z.B. durch Teleportation näher herankommen, wird nix passieren. Dann müsstest Du einen anderen Operator verwenden.
 
Ich stoße beim Skripten auf ein Problem, nämlich kann ich meinen Skript nicht abspeichern, weil dann eine Fehlermeldung kommt "non-persistent reference cannot be used in script"
Kann mir einer von euch sagen was das heißen soll?
 
Du versuchst auf eine ID zuzugreifen, die non-persistent ist.
Um das Problem zu lösen:
Suche das Objekt, auf das Du zugreifen willst.
Mache einen Doppelklick darauf.
Setze einen Haken bei "Persistent Reference".
 
Ich benötige ein script

Hallo,

es kann sein das die Antwort auf meine Frage bereits hier im Thread irgendwo verborgen liegt aber ich habe nichts gefunden. Nehmt es also bitte nicht übel wenn dieses Script das ich benötige bereits vorgestellt wurde.

Also ich würde gerne einen Script erstellen das activiert wiert wenn die Lebensenergie des Spielers unter einen bestimmten Wert singt. Wie müsste ich dass machen??

Danke schonmal im Voraus:D
 
Als QuestScript

Code:
scn [IDDesScripts]

float fQuestDelayTime

Begin Gamemode
 set fQuestDelayTime to 0.5
 if ( Player.GetActorValue Health <= [Dein Grenzwert] )
  ;Hier kommt dann dein Code hin
 endif
End
 
  • Like
Reaktionen: Nerrox
Das ganze am besten als Questscript einer Dummyquest:
Code:
scn TollesScript

short doonce

Begin GameMode
if (player.getav Health <= [I]bestimmterWert[/I]) && (doonce == 0)
     ;was auch immer passieren soll
     set doonce to 1
elseif (player.getav health > [I]bestimmterWert[/I]) && (doonce == 1)
     set doonce to 0
endif
end
Das funktioniert dann auch öfters, wenn die Lebensenergie wieder geheilt wird und später wieder zu niedrig sinkt.

/Edit: Hmm... zu langsam...^^
 
  • Like
Reaktionen: Nerrox
Hi mal wieder,
ich habe mal gelesen, das man per Skript ein Objekt, ein Staticobjekt (vielleicht mit einer Clutterkollision) sich auf und ab bewegen lassen kann. Das heißt, man würde die Kollision sparen. Geht das? Es soll sich einfach auf der z-Achse um XXX nach oben und wieder nach unten bewegen, das immer wieder. Sollte das funktionieren, wäre das toll :)