Construction Set Der Scriptthread

Ok, jetzt wieder was zum Thema:
Bräuchte ein Script (oder besser einen Teil) der alle 15 Tage eine Kreatur "pruduziert" d.h. Sie wird bei ihm Plaziert mit PlaceOnMe dort plaziert. Dass soll aber alle 15 Tage passieren, also nicht nur ein einziges mal sondern alle 15 Tage. Die Kreatur ID heist jetzt einfach "ID"
-Teemperor
 
Begin MyScript

short date

if ( date == 0 )
set date to DaysPassed
set date to ( date + 15 ) ; wenn du die Zeile weglässt erstellt es die
;Kreatur auch gleich beim ersten mal
endif
if ( date <= DaysPassed )
set date to DaysPassed
set date to ( date + 15 )
... Kreatur erzeugen
endif

End
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Teemperor
Hi,

ich habe keine Script-Anfrage, sondern ein Script-Problem und hoffe, dass mir jemand sagen was an diesem script hier falsch ist, denn eigentlich habe ich nur copy-und paste gemacht.:oops:

Habe einen neuen sound mit einer eigenen wave-datei erstellt. Dann diesen auf einen activator gelegt und ein script aus der Liste namens "Waterfall" kopiert. Dann habe ich ein neues Script gewählt, den Namen geändert und die ID meines sounds gegen die bestehenden ausgetauscht und save!

Jetzt kriege ich beim Laden des Spiels immer ein paar unschöne Fehlermeldungen, siehe screens! Keine Ahnung was da los ist!:huh:

http://pic.leech.it/i/ce2b3/b30b81dmist1.jpg
http://pic.leech.it/i/982b1/6b750c46mist2.jpg


Greets, TheDaywalker!!!;)
 
dieses left eval kommt wenn bestimmte dinge gleich heißen (tagebucheinträge, scripte, etc.)

so steht es jedenfalls hier, uglybassplayer hatte das problem auf der vorherigen seite;)
ich denke also mal, dass du die ID TheDaywalker_Test schon einmal verwendet hast

mdMmEs, Luke
 
@Luke:


Das kann sein, dass die ID doppelt ist, zwar nicht in der TC, aber in meiner anderen Mod. Habe gerade versuch die ID des sounds zu ändern, aber der CS bietet mir keine Möglichkeit mehr sie zu editieren, nichtmal löschen geht?!

Man kann doch eigentlich bei allen Sachen die ID nachträglich ändern, wieso nicht bei sounds?:(


TheDaywalker;)
 
wie wärs, wenn du einfach den selben sound mit ner anderen ID einführst?
und/oder den sound mit der falschen ID mit tesame o.Ä "rauscleanst"?

mdMmDs, luke
 
  • Like
Reaktionen: TheDaywalker
@Luke:

Das hört sich aber sehr umständlich an, ich warte mal, ob es noch ne leichtere Möglichkeit gibt, trotzdem erstmal danke!:-D


TheDaywalker;)
 
Gibt es... öffne das CS und bereite alles vor um das TC-Plugin wie gewohnt zu laden. Bevor du aber gleich auf [OK] klickst, markierst du das TC-Plugin nochmal und klickst auf "DETAILS"... nun geht ein Fenster auf. Das scrollst runter bis irgendwo "SOUN" kommt. Hoffentlich hast du jetzt nicht zu viele eigene Sounds in der TC angelegt. Du wählst den "bösen" Eintrag aus, so dass er markiert ist und drückst [Del]... dann fragt er dich, ob die Ignore-Flag gesetzt werden soll. Da sagst du YES und machst das Fenster wieder zu. Jetzt öffnest du das Plugin mit OK und der böse Sound ist weg. Erstelle nun einfach einen neuen, ändere und speichere das Script entsprechend und speicher das Plugin ab. Fertig.
 
  • Like
Reaktionen: TheDaywalker
Ich weis nicht, ob dass Problem vor diesem hier schon abgeschlossen war, aber
ich schreib einfach meines rein.

Ich habe einen Tresor erstellt , bei dem nach dem Aktivieren eine MessageBox erscheint, die nach dem Code fragt. Dann hat man die Möglichkeit, mit den Buttons 1-9 den dreistelligen Code, der in den Globalen Variablen SaveFirstNumber, SaveSecondNumber und SaveThirdNumber gespeichert ist, einzugeben.
Dazu gibt es vie Schritte:

1. Button der 1. Stelle wird gedrückt, Variable wird auf Wert gesetzt.

2. Zweite MessageBox erscheint, zweite Stelle wird eingegeben.

3. Dritte Stelle wird eingegeben.

4. Überprüfung der Variablen

Der Save ist eine Tür und braucht desshalb keine "Rotate"-Befehle.

Mein Problem ist, dass sich irgendwie viele Message-Boxen überlappen und kein Button anklickbar ist, sobald man den Save aktiviert.

Hier ist der Script:

Begin SaveScript

short State
short MessageOn1
short MessageOn2
short MessageOn3
short button
short First
short Second
short Third
short Activated
short Code1
short Code2
short Code3
short Opened

set Code1 to SaveFirstNumber
set Code2 to SaveSecondNumber
set Code3 to SaveThirdNumber


if ( OnActivate == 1 )
if ( Opened == 0 )
set Activated to 1
return
else
set Opened to 0
Activate
endif
endif

if ( Activated == 1 )
if ( State == 0 )

set MessageOn1 to 1

if ( MessageOn1 == 1 )

MessageBox "Bitte gebt den Code ein. %.0f - %.0f - %.0f " First , Second , Third "1" "2" "3" "4" "5" "6" "7" "8" "9"

set button to GetButtonPressed

if ( button >= 0 )
set MessageOn1 to 0
endif

if ( button == 0 )
set First to 1
set State to 1
elseif ( button == 1 )
set First to 2
set State to 1
elseif ( button == 2 )
set First to 3
set State to 1
elseif ( button == 3 )
set First to 4
set State to 1
elseif ( button == 4 )
set First to 5
set State to 1
elseif ( button == 5 )
set First to 6
set State to 1
elseif ( button == 6 )
set First to 7
set State to 1
elseif ( button == 7 )
set First to 8
set State to 1
elseif ( button == 8 )
set First to 9
set State to 1
endif
endif

elseif ( State == 1 )
MessageBox "Bitte gebt den Code ein. %.0f - %.0f - %.0f " First , Second , Third "1" "2" "3" "4" "5" "6" "7" "8" "9"
set MessageOn2 to 1

if ( MessageOn2 == 1 )

set button to GetButtonPressed

if ( button >= 0 )
set MessageOn2 to 0
endif

if ( button == 0 )
set Second to 1
set State to 2
elseif ( button == 1 )
set Second to 2
set State to 2
elseif ( button == 2 )
set Second to 3
set State to 2
elseif ( button == 3 )
set Second to 4
set State to 2
elseif ( button == 4 )
set Second to 5
set State to 2
elseif ( button == 5 )
set Second to 6
set State to 2
elseif ( button == 6 )
set Second to 7
set State to 2
elseif ( button == 7 )
set Second to 8
set State to 2
elseif ( button == 8 )
set Second to 9
set State to 2
endif
endif
elseif ( State == 2 )
MessageBox "Bitte gebt den Code ein. %.0f - %.0f - %.0f " First , Second , Third "1" "2" "3" "4" "5" "6" "7" "8" "9"
set MessageOn3 to 1

if ( MessageOn3 == 1 )

set button to GetButtonPressed

if ( button >= 0 )
set MessageOn3 to 0
endif

if ( button == 0 )
set Third to 1
set State to 3
elseif ( button == 1 )
set Third to 2
set State to 3
elseif ( button == 2 )
set Third to 3
set State to 2
elseif ( button == 3 )
set Third to 4
set State to 3
elseif ( button == 4 )
set Third to 5
set State to 3
elseif ( button == 5 )
set Third to 6
set State to 3
elseif ( button == 6 )
set Third to 7
set State to 3
elseif ( button == 7 )
set Third to 8
set State to 3
elseif ( button == 8 )
set Third to 9
set State to 3
endif
endif
elseif ( State == 3 )
if ( First == Code1 ) && ( Second == Code2 ) && ( Third == Code3 )
Activate
MessageBox "Ihr habt den richtigen Code eingegeben."
set Activated to 0
set State to 0
set Third to 0
set Second to 0
set Opened to 1
set First to 0
set MessageOn1 to 0
set MessageOn2 to 0
set MessageOn3 to 0
else
MessageBox " Ihr habt den falschen Code eingegeben. "
set Activated to 0
set State to 0
set Third to 0
set Second to 0
set First to 0
set MessageOn1 to 0
set MessageOn2 to 0
set MessageOn3 to 0
endif
endif
endif

End SaveScript

Die Tab´s im Script sind wohl irgendwie velroren gegangen, sorry.
 
Zuletzt bearbeitet:
Mein Problem ist, dass sich irgendwie viele Message-Boxen überlappen und kein Button anklickbar ist, sobald man den Save aktiviert.
Nja, das wundert mich nicht ^^

Sorry, aber dein Script sieht ein wenig gruselig aus. Wenn du schon Globals für den Code definierst, brauchst du die nicht auch noch in lokale Variablen zu kopieren, um sie zu prüfen. Ausserdem hat dein Script heftige Endlosschleifen produziert, daher auch die Tonnen von Fenstern und das Prüfen am Ende war auch buggy. Aber keine Sorge, dass bekommt man hin. Probier mal das hier:

Code:
Begin BX_SafeScript
;powered by £exaTec
short Activated
short MessageOn
short button
short State
short NR1
short NR2
short NR3

IF ( OnActivate == 1 )
 set Activated to 1
endif

IF ( Activated == 0 )
 return
EndIF

IF ( State == 5 )
 set State to 0
 set Activated to 0
 IF   ( NR1 == LX_CODENR_1 )
  IF  ( NR2 == LX_CODENR_2 )
   IF ( NR3 == LX_CODENR_3 )
    MessageBox "Ihr habt den richtigen Code eingegeben."
    Activate
    return
   EndIF
  EndIF
 EndIF
 MessageBox " Ihr habt den falschen Code eingegeben. "
 return
EndIF

if ( State == 0 )
 set NR1 to 0
 set NR2 to 0
 set NR3 to 0
 set MessageOn to 1
EndIF

IF ( MessageOn == 1 )
 IF ( State <= 2 )
  MessageBox "Bitte gebt den Code ein: %.0f - %.0f - %.0f " NR1 , NR2 , NR3 "1" "2" "3" "4" "5" "6" "7" "8" "9"
 Else
  MessageBox "Bitte bestätigt den Code: %.0f - %.0f - %.0f " NR1 , NR2 , NR3 "BESTÄTIGEN" "VERWERFEN" "ABBRECHEN"
 EndIF
 set State to ( State + 1 )
 set MessageOn to 0
 Return
EndIF

set button to GetButtonPressed
IF ( button == -1 )
 return
EndIF

IF     ( State == 1 ) 
 set NR1 to ( button + 1 )
 set MessageOn to 1
ElseIF ( State == 2 ) 
 set NR2 to ( button + 1 )
 set MessageOn to 1
ElseIF ( State == 3 ) 
 set NR3 to ( button + 1 )
 set MessageOn to 1
ElseIF ( State == 4 )
 IF     ( button == 0 )
  set State to 5
  return
 ElseIF ( button == 2 )
  set Activated to 0
 EndIF
 set State to 0
EndiF

End BX_SafeScript
Damit sollte es funktionieren, ist 'ne Abwandlung eines Scripts, dass ich so ähnlich auch in meiner Hausmod einsetze...

Viel Spaß damit,
£exa
 
  • Like
Reaktionen: Atrus
Das er ein bisschen komisch ist, kann vieleicht daran liegen, dass ich einfach wild drauf los geschrieben habe und hinterher nur die gröbsten Fehler korrigiert habe.
Die Globalen waren aber dazu da, um den Code hinterher noch im Spiel verändern zu können
 
Die Globalen waren aber dazu da, um den Code hinterher noch im Spiel verändern zu können
Das ist ja auch wieterhin möglich, aber wie gesagt: Man definiert Globals, um auf die Werte von überall her einen Zugriff zu ermöglichen. Folglich mußt du die Global nicht in eine lokale Variable kopieren, wenn du sie nur abfragen willst. Du kannst sie direkt ansprechen. In eine Local kopieren müßtest du sie nur, wenn du den Wert im Script verändern willst, ohne die Global selbst zu ändern. Das macht dieses Script allerdings nicht, daher ist es unnötig und frißt nur Speicher ;)

Was das draufloscoden angeht... kenne ich - mit entsprechenden Resultaten :lol:
 
Jaja, gut. Also soweit läuft der Script ja, aber nachdem man im Spiel "Bestätigen" klickt, erscheint der bei mir sehr verhasste "EXPRESSION-ERROR", gefolgt von "Right eval".
Ich habe keine ahnung was die beiden bedeuten, wesshalb ich den Script nicht verbessern kann.
Trotzdem werde ich dich in den Credits erwähnen.
 
Hm. Bei mir funktioniert das Script tadellos. Der Fehler muß bei dir liegen. Mögliche Ursache:

Hast du nach dem Einbau meines Scripts deine Globals wieder reingeschrieben:

Code:
IF   ( NR1 == [COLOR="Red"][B]LX_CODENR_1[/B][/COLOR] )
Falls nicht existiert meine Global in deiner Mod natürlich nicht, das könnte das der Grund für das Problem sein. Falls doch, überprüfe die Schreibweise.

Es könnte auch sein, dass irgendeine der von mir benutzten lokalen Veriablen bei dir als Globale Variable existiert (durch irgendeine Mod, die ich nicht verwende), dann kann das auch problematisch sein.