Construction Set Skriptthread zum Construction Set

Sry ich brauch schon wieder eure hilfe mein Projekt braucht soviele script
und meine fgeht meistens net und bis die gehen dauert das ne tag:cry:
Hoffentlich könnt ihr mir helfen.
Ich brauch so ein script wei zB bei SI so ähnlich halt:p

Also:


Jedes monat hab ich die möglichkeit wenn ich ein bestimmtes buch öffne
erscheint eine messages Box : balbal1
balba 2 (-schreib dan selber was)

Wenn ich die möglichkeit 2wähle passiert nix wähle ich jedoch möglickeit 2
erscheinen an einem marker eine gewisse anzahl an NPCs..

Ich weiß verdammt schweres Script aber bitt hoffentlich kann mir wer helfen.

LG
Dyras;)
 
Kannst du das bitte nochmal deutlich schreiben (was du meinst) sonst versteht das nämlich niemand... Lies dir deinen post doch mal durch, es ist schwer da sinn reinzubringen....
 
oK:?

Also der Spieler kann jedes Monat ein Buch benutzen wo dan die messages
box kommt ob er seine Stadt verteidigen will oder oder net. Wenn er es verteidigen will erscheinen an einem marker 8 NPCs.--


LG
Dyras
 
Jo, stimmt. Besonders dieser Teil ergibt keinen Sinn:
Wenn ich die möglichkeit 2wähle passiert nix wähle ich jedoch möglickeit 2[...]
Aber ich nehme an, du meinst es so:
Code:
Wenn ich die möglichkeit 1 wähle, passiert nix, wähle ich jedoch möglickeit 2[...]
Also am besten setzt du diese NPC's da hin, wo sie erscheinen sollen. Anschließend gibst du einem von denen eine Referenz und aktivierst "Initialy Disabled" und "Persistenz Reference". Bei den anderen NPC's aktivierst du lediglich "Initialy Disbaled" und gibst bei dem Tab "Enable Parent" den NPC mit der Referenz an. Nun sollte dieser Script auf das Buch:
Code:
scn AufDemBuchSCRIPT

short month
short msg1
short button

Begin OnActivate
If month == 0
set month to gamemonth
Endif

If ( month == gamemonth )

If month != 12
set month to gamemonth + 1
Else
set month to 1
Endif
set msg1 to 1
Endif
Activate

End

Begin GameMode
set button to getbuttonpressed
If msg1 == 1
Messagebox "Wollt ihr die Stadt verteidigen?" "Wir haben keine Chance! Flieht!" "Ich werde nicht weichen!"
If button == 0
;macht nichts
elseif button == 1
[Referenz des NPC's].enable
set msg1 to 0
Endif
End
MfG Gildur
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Dyras
naja ich weiß net glaub net das sowas möglich ist sonst würde man so ne idee ja irgendwo in Oblivion finden-oder

LG
Dyras
 
Ich versuchs mal

Code:
scn BarterScript

short DoOnce
long PlayerGold
ref ItemRef

[URL="http://cs.elderscrolls.com/constwiki/index.php/MenuMode"]Begin Menumode 1008[/URL]                                       ;Container, Barter
 [URL="http://cs.elderscrolls.com/constwiki/index.php/GetInSameCell"]If GetInSameCell Player[/URL]                                  ;Abfrage kann man evtl. weglassen
  if DoOnce == 0                                          ;ist nötig, da sonst PlayerGold in jedem Frame des Handelsbildschirms bestimmt wird
   set PlayerGold to Player.GetItemCount Gold001
   set DoOnce to 1
  endif
 endif
End

[URL="http://cs.elderscrolls.com/constwiki/index.php/OnTrigger"]Begin OnTrigger Player[/URL]
 if Player.GetItemCount Gold001 <= PlayerGold - 1000
[URL="http://cs.elderscrolls.com/constwiki/index.php/Avoiding_Message_Spam"]  set ItemRef to Player.PlaceAtMe [ID des Geschenks]
  ItemRef.Activate Player[/URL]                                ;zum verhindern von "Message-Spam"
  MessageBox "Da ihr ein solch guter Kunde seit erhaltet ihr ein Geschenk des Hauses."
 endif
 set PlayerGold to 0
 set DoOnce to 0
End
Nachteil ist halt, dass das Skript auch aktiviert wird, wenn man 1000 Gold in einer Truhe ablegt. Lässt sich aber verhindern, indem der Player einfach keine Truhen in der Zelle des Triggers erreichen & benutzen kann.


Oder hast du das mit der Messagebox anders gemeint?
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Skoomadieb
Das sieht ja schon mal sehr gut aus! *FREU*:D Ja das mit der Messagebox wollte ich genau so machen,hast meine Gedanken gelesen was?!;)
Noch eine Frage :"wieso steht ganz unten: set playergold to 0"?



Edit: Ok der Erste versuch ist gescheitert,wenn ich das Script im CS speichern will kommen diese Meldungen:

Nr.1:
Warning
---------------------------
Script 'dpSEGiftScript', line 8:
Unknown variable or function 'GetItemValue'.

Nr.2:
Warning
---------------------------
Script 'dpSEGiftScript', line 8:
Syntax Error. Missing expression in set command.

*HEUL*
 
Zuletzt bearbeitet:
@ LowPost: was bewirkt eigentlich der Befehl GetItemValue?
Mir kam der Befehl so bekannt vor, dennoch aber irgendwie fremd. Auch in Der Liste im CSWiki habe ich leider nichts gefunden. Was bewirkt der (Obwohl ich es mir ungefähr denken könnte). Ist er wirklich existent?
 
Zuletzt bearbeitet:
Das sieht ja schon mal sehr gut aus! *FREU*:D Ja das mit der Messagebox wollte ich genau so machen,hast meine Gedanken gelesen was?!;)
Nö, das war einfach die einfachste Variante. ;)
Hätte ja sein können, dass du eine MessageBox haben willst mit mehreren Auswahlmöglichkeiten, was das Geschenk ist.

Noch eine Frage :"wieso steht ganz unten: set playergold to 0"?

set PlayerGold to 0 wird bei jeder Triggerauslösung ausgelöst und setzt den Wert PlayerGold zurück auf 0. Das ist deshalb nötig, da man ansonsten nach einem Kauf für mehr als 1000 Gold bei jeder Triggerung dem Spieler ein neues "Geschenk" gegeben wird, bis er wieder in den Handelsmodus wechselt. Mit dieser Zeile passiert das nur einmal.

Edit: Ok der Erste versuch ist gescheitert,wenn ich das Script im CS speichern will kommen diese Meldungen:

Nr.1:
Warning
---------------------------
Script 'dpSEGiftScript', line 8:
Unknown variable or function 'GetItemValue'.

Nr.2:
Warning
---------------------------
Script 'dpSEGiftScript', line 8:
Syntax Error. Missing expression in set command.

*HEUL*
Die Fehlermeldungen bedeuten, dass das CS den Befehl GetItemValue in der Zeile 8 des Skripts 'dpSEGiftScript' nicht kennt und dadurch dem Setbefehl ein Parameter fehlt.
Entstehung: Verwechslung

@ LowPost: was bewirkt eigentlich der Befehl GetItemValue?
Mir kam der Befehl so bekannt vor, dennoch aber irgendwie fremd. Auch in Der Liste im CSWiki habe ich leider nichts gefunden. Was bewirkt der (Obwohl ich es mir ungefähr denken könnte). Ist er wirklich existent?

GetItemValue hab ich verwechselt mit GetItemCount. :oops:Ich hab's im oberen Skript auch korrigiert.
btw: ich glaub mit OBSE kommt sogar ein so lautender Befehl dazu, der währe aber bei Gold normalerweiße immer 1 ;)


Mir ist gerade ein anderer Fehler aufgefallen, warum das Skript nicht funktionieren kann.
Probier's mal damit:
Code:
scn dpSEGiftScript

short DoOnce
long PlayerGold
ref ItemRef

Begin Menumode 1008                                       ;Container, Barter
 If GetInSameCell Player                                  ;Abfrage kann man evtl. weglassen
  if DoOnce == 0                                          ;ist nötig, da sonst PlayerGold in jedem Frame des Handelsbildschirms bestimmt wird
   set PlayerGold to Player.GetItemCount Gold001
   set DoOnce to 1
  endif
 endif
End

Begin OnTrigger Player
 if Player.GetItemCount Gold001 <= PlayerGold - 1000
  set ItemRef to Player.PlaceAtMe [ID des Geschenks]
  ItemRef.Activate Player                                ;zum verhindern von "Message-Spam"
  MessageBox "Da ihr ein solch guter Kunde seit erhaltet ihr ein Geschenk des Hauses."
 endif
 set PlayerGold to 0
 set DoOnce to 0
End
Andere Unsicherheit die mir aufgefallen ist ist, dass der Spieler nach dem Handel vor der Triggerauslösung das Gold abwerfen könnte. Vllt. lässt sich dafür aber auch eine Lösung finden.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Skoomadieb
SUPER:-D,ich habs grade ca.10mal getestet und es funzt einwandfrei !!!:hah:
Danke Low Post !!! Mir ist da aber noch eine Sache aufgefallen,die zwar nicht so schlimm ist,aber schön währe :D!

Und zwar wenn der Player jetzt das Geschenk beim rausgehen bekommt,kann man leider nicht sehen was er da bekommen hat! Normalerweise sieht man das doch oben im Bild,was dem Inventar hinzugefügt wurde!:)
 
Also MessageSpam produzieren?
Meinetwegen. Dazu musst du einfach
Code:
  set ItemRef to Player.PlaceAtMe [ID des Geschenks]
  ItemRef.Activate Player
mit
Code:
  Player.AddItem [ID des Geschenks] 1
ersetzen.

Also so:
Code:
scn dpSEGiftScript

short DoOnce
long PlayerGold

Begin Menumode 1008                                       ;Container, Barter
 If GetInSameCell Player                                  ;Abfrage kann man evtl. weglassen
  if DoOnce == 0                                          ;ist nötig, da sonst PlayerGold in jedem Frame des Handelsbildschirms bestimmt wird
   set PlayerGold to Player.GetItemCount Gold001
   set DoOnce to 1
  endif
 endif
End

Begin OnTrigger Player
 if Player.GetItemCount Gold001 <= PlayerGold - 1000
  Player.AddItem [ID des Geschenks] 1
  MessageBox "Da ihr ein solch guter Kunde seit erhaltet ihr ein Geschenk des Hauses."
 endif
 set PlayerGold to 0
 set DoOnce to 0
End

Wegen dem Abwerf-Problem: Wenn der Spieler nur Handeln kann während er auf dem Trigger steht sollte das ohne Probleme funktionieren. Die MessageBox kommt dann halt direkt nach beenden des Gesprächs so dass der Spieler keine Chance hat Gold abzuwerfen...zumindest, falls Trigger nicht im Menumode getriggert werden.
 
  • Like
Reaktionen: Skoomadieb
Nein es gibt keine Probleme mit dem handeln oder das der Player Gold abwirft!!!:-D Der Trigger ist ca.drei Schritte vor der Türe,und von der Laden-Theke bis zum Trigger sinds ca.5 Schritte!:D Es ist alles perfekt mit deinem Script !8) DANKE noch mal Low Post!!!:hail:

Ich hätte da noch eine andere Sache die ich nicht zu lösen weiß,es sei denn man könnte sie mit einem Hammer Script lösen!!!:-D Aber diese Sache mag ich nicht wirklich hier posten,da sie sonst zuviel über meinen neuen mod verraten würde!!!Und der cool \ toll \ oder nett effect währe dahin!;)Dürfte ich dich über PN danach fragen??? (*SCHLEIM*)
 
Zuletzt bearbeitet:
ich brauch einen script der auf "Knopfdruck" (So ein activator) eine feindliche kreatur "beschwört" und das beliebig oft.

Und dann noch einen script den ich auf eine tür lege, der bewirkt das wenn entweder "global 1" oder "global 2" auf 1 gesetzt werden die tür disabled wird. (ich hoffe es ist verständlich was ich meine^^)
 
hi,

zu 1.: Ich würde ich es so machen:
Code:
scn ActivatorSCRIPT

short myself

Begin OnActivate
set myself to getself
myself.cast [ID des Beschöwrungszaubers]
End
Ich bin mir jetzt nicht total sicher, ob das stimmt, weil ich mich nicht so mit Zaubern auskenne, sollte aber klappen.

zu 2.: Lege einfach diesen Script auf die Tür:
Code:
scn DoorSCRIPT

Begin GameMode
If ( global1 == 1 ) || ( global2 == 1 )
disable
Endi
End
MfG Gildur
 
  • Like
Reaktionen: Elros
Kann es sein das ich myself durch player ersetzen muss? so funktioniert das nämlich nicht!
geht auch nicht... komisch...
weiß jemand ne lösung?