Construction Set Skriptthread zum Construction Set

Ich würde sagen mit
Code:
scn Lichtscript
If GetGameHour => 6 ; Wenn es später als 6 in der früh ist
 Enable Lichtreferenz
Else
 Disable Lichtreferenz
End
lg
Dacri

EDIT:Ok, sry vergiss den schmarrn, läuft leider ned :/.
EDIT2: Ok, hab jetz selber noch ne Scriptfrage...
was is daran Falsch:
Code:
scn name
Short Button
Begin OnActivate
MessageBox "Text" ,"Ja" ,"Nein"
Set Button to GetButtonPressed
If GetButtonPressed == 0 
Set GameHour to GameHour + 1
Cast Zauber Player
Else
return
Endif
End
Das ganze sollte jetz, wenn man auf "ja" drückt die Uhrzeit eine Stunde vorstellen, also so als ob man geschlafen/gewartet hätte und dann den Zauber auf den Player setzen (der Zauber ist ein Effekt, der 600 sek. dauert)
Was passiert? Wenn ich auf Ja oder auf Nein drücke geht einfach die messagebox weg und nix ändert sich...
Danke schonmal:)
 
Zuletzt bearbeitet:
Ok, und wie muss ich mit GameHour umgehen, um Tageszeiten abzufragen und dementsprechend Lichtquellen zu enablen/Disablen
Ich würde sagen mit
Code:
scn Lichtscript
If GetGameHour => 6 ; Wenn es später als 6 in der früh ist
 Enable Lichtreferenz
Else
 Disable Lichtreferenz
End
lg
Dacri

EDIT:Ok, sry vergiss den schmarrn, läuft leider ned :/.
gamehour ist eine globale Variable und kein Befehl! (also ohne "get")
dann noch aus "=>", ">=" machen. Allerdings sollte man immer einen Bereich angeben, weil >=6 bedeutet 6-24Uhr.
Das Ende des Bereichs schreibst du mit "&& gamehour < x" hinter den Anfang.
 
Du musst den GetButtonPressed-Teil in einen GameMode-Block verlegen. ;)
Ok, das hab ich gemacht, aber das ändert nix an der ganzen sache :( es passiert immer noch nix :cry:
mein script sieht nu so aus:
Code:
scn name
Short Button
Begin OnActivate
MessageBox "Text" ,"Ja" ,"Nein"
End
Begin GameMode
Set Button to GetButtonPressed
If GetButtonPressed == 0 
Set GameHour to GameHour + 1
Cast Zauber Player
Else
return
Endif
End

EDIT: Oke, sry. Problem gefunden, lag daran, dass das "set button to getbuttonpressed" im falschen blockm war.

EDIT2: Trotzdem habe ich noch ein Problem mit dem "cast" befehl...der bewirkt einfach rein garnix. vl hilfts zu wissen, dass der Zauber ne eigenschaft is und der script auf nem activator liegt...
 
Zuletzt bearbeitet:
Danke, das geht jetz:) Und was is hier falsch?

Code:
[SIZE=2]
scn Script
Short Button
Begin OnActivate
If Player.GetItemCount Player.GetItemCount Item < 1 || IPlayer.GetItemCount tem < 1 || Player.GetItemCount Item < 1
MessageBox "Text"
else
MessageBox "Text","Item" ,"Item" ,"Item"
Endif
Set Button to GetButtonPressed
End
Begin GameMode
If GetButtonPressed == 0 && Player.GetItemCount Item >= 1 && Player.GetItemCount Item >= 1
MessageBox "Text"
Elseif GetButtonPressed == 0 && Player.GetItemCount Item < 1 || Player.GetItemCount Item < 1
MessageBox "Text"
Elseif GetButtonPressed == 1 && Player.GetItemCount Item >= 2 && Player.GetItemCount Item >= 1
Messagebox "Text"
Elseif GetButtonPressed == 1 && Player.GetItemCount Item < 2 || Player.GetItemCount Item < 1
MessageBox "Text"
ELseif GetButtonPressed == 2 && Player.GetItemCount Item >= 10 && Player.GetItemCount Item >= 1
MessageBox "Text"
Elseif GetButtonPressed == 2 && Player.GetItemCount Item < 10|| Player.GetItemCount Item < 1
MessageBox "Text"
Endif
End 
[/SIZE]
Es passiert nur etwas, wenn ich auf die erste Auswahlmöglichkeit drücke, und die nötigen Items vorhanden sind. Ansonsten passiert rein garnix:huh: WIeso?

Danke schonmal:)
lg
Dacri
 
Tut mir leid, aber da ist rein gar nichts zu erkennen!
1: gewöhn dir an Einzurücken
2: Es handelt sich doch um mehrere verschiedene Items, oder? Das muss im Script erkennbar sein. (welches jeweils gemeint ist)
3: In Zeile 4 sind einige Syntax-Fehler
 
@Dacri:
Kannst Du das Script bitte nochmal sinnvoll, also mit Einschüben (Leertaste) und ohne Platzhalter, schreiben?!

Und schreibe darunter bitte, den von dir gewünschten Ablauf des Skriptes als Text (Zeile für Zeile!). Denn manche deiner Abfrage ergeben für mich absolut keinen Sinn.
 
Hab den Script nur kurz ausm cs rauskopiert und die IDs ersetzt...im cs ist das ganze schön ordentlich :Dund eingerückt. schreib später den ganzen script nochmal sauber, hab ihn grad nicht zur hand.
 
So, erstmal sry für Doppelpost, aber sonst wärs ned bemerkt worden.
Und sry weil der script oben ned ordentlich ist, hab ihn nur noch schnell reingemacht bevor ich ausm haus bin und gehofft er wird verstanden^^ hier die ausführliche Form, wie sie im CS steht:
Code:
[SIZE=2]scn DPHBJWorkingPlaceScript[/SIZE]
 
[SIZE=2]Short Button[/SIZE]
 
[SIZE=2]Begin OnActivate[/SIZE]
[SIZE=2]If Player.GetItemCount MiddleClassPewterknife01 < 1 || Player.GetItemCount RepairHammer < 1 || Player.GetItemCount Tongs01 < 1[/SIZE]
[SIZE=2] MessageBox "Ihr habt das nötige Werkzeug nicht! Ihr benötigt eine Zange, einen Hammer und ein Messer. Das Werkzeug sollte auf der Werkbank liegen."[/SIZE]
[SIZE=2]else[/SIZE]
[SIZE=2] MessageBox "Welche Knochen wollt ihr  Verarbeiten?" ,"Armknochen" ,"Oberschenkelknochen" ,"Brustkorb"[/SIZE]
[SIZE=2]Endif[/SIZE]
[SIZE=2]Set Button to GetButtonPressed[/SIZE]
[SIZE=2]End[/SIZE]
 
[SIZE=2]Begin GameMode[/SIZE]
[SIZE=2]If GetButtonPressed == 0 && Player.GetItemCount Quill01 >= 1 &&  Player.GetItemCount SkelBoneThin01 >= 1[/SIZE]
[SIZE=2] Player.RemoveItem SkelBoneThin01 1[/SIZE]
[SIZE=2] Player.RemoveItem Quill01 1[/SIZE]
[SIZE=2] Player.AddItem DPHBJBoneArrow 1[/SIZE]
[SIZE=2] MessageBox "Ihr habt aus einem Armknochen und einer Feder einen Pfeil hergestellt."[/SIZE]
[SIZE=2]Elseif GetButtonPressed == 0 && Player.GetItemCount Quill01 < 1 ||  Player.GetItemCount SkelBoneThin01 < 1[/SIZE]
[SIZE=2] MessageBox "Ihr habt die nötigen Zutaten nicht! Vielleicht solltet ihr den Bauplan noch einmal ansehen."[/SIZE]
[SIZE=2]Elseif GetButtonPressed == 1 && Player.GetItemCount Quill01 >= 2 && Player.GetItemCount SkelBigBone01 >= 1[/SIZE]
[SIZE=2] Player.RemoveItem SkelBigBone01 1[/SIZE]
[SIZE=2] Player.RemoveItem Quill01 2[/SIZE]
[SIZE=2] Player.AddItem DPHBJBoneArrow 2[/SIZE]
[SIZE=2] Messagebox "Ihr habt aus einem Oberschenkelknochen und zwei Federn zwei Pfeile hergestellt."[/SIZE]
[SIZE=2]Elseif GetButtonPressed == 1 && Player.GetItemCount Quill01 < 2 ||  Player.GetItemCount SkelBigBone01 < 1[/SIZE]
[SIZE=2] MessageBox "Ihr habt die nötigen Zutaten nicht! Vielleicht solltet ihr den  Bauplan noch einmal ansehen."[/SIZE]
[SIZE=2]ELseif GetButtonPressed == 2 && Player.GetItemCount Quill01 >= 10 && Player.GetItemCount SkelRibcage01 >= 1[/SIZE]
[SIZE=2] Player.RemoveItem SkelRibcage01 1[/SIZE]
[SIZE=2] Player.RemoveItem Quill01 10[/SIZE]
[SIZE=2] Player.AddItem DPHBJBoneArrow 10[/SIZE]
[SIZE=2] MessageBox "Ihr habt aus einem Brustkorb und zehn Federn zehn Pfeile hergestellt."[/SIZE]
[SIZE=2]Elseif GetButtonPressed == 2 && Player.GetItemCount Quill01 < 10 || Player.GetItemCount SkelRibcage01 < 1[/SIZE]
[SIZE=2] MessageBox "Ihr habt die nötigen Zutaten nicht! Vielleicht solltet ihr den Bauplan noch einmal ansehen."[/SIZE]
[SIZE=2]Endif[/SIZE]
[SIZE=2]End[/SIZE]

Schmelz schrieb:
3: In Zeile 4 sind einige Syntax-Fehler
Also Zeile 4 funktioniert soweit eigentlich Einwandfrei und hat auch keine Probleme gemacht...

Zu meinem Problem nochmal: Im zweiten Block passiert nur etwas, wenn die allererste Bedingung zutrifft, ansonsten geht einfach nur die MessageBox weg:huh:

vl kann mir jetz jemand helfen?
lg
Dacri
 
Zuletzt bearbeitet:
Mir fällt jetzt spontan auf, dass du im zweiten Abschnitt immer getButtonPressed abfragst. Du solltest aber die Variable button abfragen.

Zeile 4 von oben: "If Player.GetItemCount Player.GetItemCount Item < 1 ||..."
 
  • Like
Reaktionen: Dacri
Mir fällt jetzt spontan auf, dass du im zweiten Abschnitt immer getButtonPressed abfragst. Du solltest aber die Variable button abfragen.
:? Dummheit...Hoffentlich wars das :) Danke!

Zeile 4 von oben: "If Player.GetItemCount Player.GetItemCount Item < 1 ||..."
:oops:war wohl auch kleiner fehler, beim schnell reinkopiern...
lg
Dacri

EDIT: Musste zwar noch bissl was ändern, aber jetz funzts. Danke :)
 
Zuletzt bearbeitet:
Ich habe ein kleines Sayto Problem. Der NPC soll den Spieler anreden, wenn er eine Triggerzone betreten hat.

scn (Name)

float timer

; Activates linked Parent object once

short triggered
ref target
ref mySelf

begin onTrigger player

if triggered == 0
set triggered to 1
set target to getParentRef
set mySelf to getSelf
target.activate mySelf 1
(NPC Ref).sayto player (Topic ID) 1

endif

end

begin onReset

set triggered to 0

end

Wenn ich die Zone aber betrete, macht der NPC gar nichts. Was habe ich falsch gemacht?

Weiss dazu den wirklich niemand Rat? Nichtmal eine kleine Antwort dazu?
 
Irgendwie verstehe ich das Script nicht.
"getParentRef" von einer Triggerzone!??? und das soll dann die Triggerbox selbst aktivieren????
 
Du willst doch folgendes Zenoario: Spieler trifft Triggerzone, NPC redet mit Spieler, oder?
Code:
ScriptName ...

doonce

Begin OnTrigger Player

if doonce == 0
   NPCRef.startconversation player TopicID
   set doonce to 1
endif

end
 
Du willst doch folgendes Zenoario: Spieler trifft Triggerzone, NPC redet mit Spieler, oder?
Code:
ScriptName ...

doonce

Begin OnTrigger Player

if doonce == 0
   NPCRef.startconversation player TopicID
   set doonce to 1
endif

end

Das ist fast richtig, nur das es ein indirektes Gespräch ist, also ohne Dialogbox. Das heisst, ich möchte dazu den Befehl "Sayto" benutzen, und dieser will nicht richtig funktionieren.
 
2 Fragen

Hallo ich hab 2 Fragen:

1. Wie stelle ich es an das eine Quest beendet/aktualisiert wird wenn ich einen bestimmten Npc töte.

2. Danch (also nachdem die Quest beendet bzw. der Npc tot) soll in einem Container eine Belohnung erscheinen.

Also im Prinzip das Prinzip der DB :lol:

Da ich von scripten ungefähr so viel wie von französisch verstehe (man weiß wie es klingt aber nicht wie man es schreibt) wäre eine ausfürhliche Beschreibung schön :).

LG: DaedraKing

Ps.: Schon mal jetzt SORRY für die blöde Frage :roll:
 
Ich würde sagen machs so:
Code:
scn Name
Begin GameMode
 If [I]IDDesNPCs[/I].GetDead
  SetStage [I]IDDerQUest Queststage[/I]
  [I]ReferenzDesContainers[/I].AddItem [I]IDDesItems 1[/I]
 Endif
End

Wenn Jetzt Der NPC stirbt wird die Quest auf Stage x gesetzt und in in den einen container (musst erst die referenz-ID im render window ändern --> doppelklick auf den container und dann ganz oben. Auserdem muss "persistent Reference" angehakt sein) der eine gegenstand einmal dazugemacht.
Übrigens is es garkeine Blöde Frage, irgendwoher musst dus ja erfahren :)
lg
Dacri
 
  • Like
Reaktionen: DaedraKing