Registrierung Häufig gestellte Fragen Suche Mitgliederliste Portal - Planet Skyrim.de Kalender Moderatoren und Administratoren Startseite
Morrowind&OblivionForum.de - PMM-Projects Network » The Elder Scrolls III: Morrowind » Morrowind Editor Help » script (button) probleme » Hallo Gast [registrieren|anmelden]
« Vorheriges Thema Nächstes Thema » Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Autor
Beitrag
Worf
Healer




Dabei seit: Januar 2003
Geschlecht:
Herkunft: Odai Plateau
Beiträge: 68

Worf ist offline
  script (button) problemeAntwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

hallo,

nach längerer zeit habe ich mich mal wieder mit dem editor beschäftigt und auch gleich wieder ein problem:

dieser script

begin laptop_script_0


short button
short desktop

If ( OnActivate == 1 )
if ( desktop == 0 )
MessageBox "Morrowind 98 / Keine Updates", "Uhrzeit", "Ausschalten"
set desktop to 1

endif
endif

if ( desktop == 1 )
set button to GetButtonPressed
if ( button == -1 )
return
elseif ( button == 1 )
If ( GameHour > 23.875 )
MessageBox, "It's close to midnight, p.m."
elseif ( GameHour > 23.625 )
MessageBox, "It's quarter to midnight, p.m."
elseif ( GameHour > 23.375 )
MessageBox, "It's half past eleven, p.m."
elseif ( GameHour > 23.125 )
MessageBox, "It's quarter past eleven, p.m."
elseif ( GameHour > 23 )
MessageBox, "It's just past eleven, p.m."
elseif ( GameHour > 22.875 )
MessageBox, "It's close to eleven, p.m."
elseif ( GameHour > 22.625 )
MessageBox, "It's quarter to eleven, p.m."
elseif ( GameHour > 22.375 )
MessageBox, "It's half past ten, p.m."
elseif ( GameHour > 22.125 )
MessageBox, "It's quarter past ten, p.m."
elseif ( GameHour > 22 )
MessageBox, "It's just past ten, p.m."
elseif ( GameHour > 21.875 )
MessageBox, "It's close to ten, p.m."
elseif ( GameHour > 21.625 )
MessageBox, "It's quarter to ten, p.m."
elseif ( GameHour > 21.375 )
MessageBox, "It's half past nine, p.m."
elseif ( GameHour > 21.125 )
MessageBox, "It's quarter past nine, p.m."
elseif ( GameHour > 21 )
MessageBox, "It's just past nine, p.m."
elseif ( GameHour > 20.875 )
MessageBox, "It's close to nine, p.m."
elseif ( GameHour > 20.625 )
MessageBox, "It's quarter to nine, p.m."
elseif ( GameHour > 20.375 )
MessageBox, "It's half past eight, p.m."
elseif ( GameHour > 20.125 )
MessageBox, "It's quarter past eight, p.m."
elseif ( GameHour > 20 )
MessageBox, "It's just past eight, p.m."
elseif ( GameHour > 19.875 )
MessageBox, "It's close to eight, p.m."
elseif ( GameHour > 19.625 )
MessageBox, "It's quarter to eight, p.m."
elseif ( GameHour > 19.375 )
MessageBox, "It's half past seven, p.m."
elseif ( GameHour > 19.125 )
MessageBox, "It's quarter past seven, p.m."
elseif ( GameHour > 19 )
MessageBox, "It's just past seven, p.m."
elseif ( GameHour > 18.875 )
MessageBox, "It's close to seven, p.m."
elseif ( GameHour > 18.625 )
MessageBox, "It's quarter to seven, p.m."
elseif ( GameHour > 18.375 )
MessageBox, "It's half past six, p.m."
elseif ( GameHour > 18.125 )
MessageBox, "It's quarter past six, p.m."
elseif ( GameHour > 18 )
MessageBox, "It's just past six, p.m."
elseif ( GameHour > 17.875 )
MessageBox, "It's close to six, p.m."
elseif ( GameHour > 17.625 )
MessageBox, "It's quarter to six, p.m."
elseif ( GameHour > 17.375 )
MessageBox, "It's half past five, p.m."
elseif ( GameHour > 17.125 )
MessageBox, "It's quarter past five, p.m."
elseif ( GameHour > 17 )
MessageBox, "It's just past five, p.m."
elseif ( GameHour > 16.875 )
MessageBox, "It's close to five, p.m."
elseif ( GameHour > 16.625 )
MessageBox, "It's quarter to five, p.m."
elseif ( GameHour > 16.375 )
MessageBox, "It's half past four, p.m."
elseif ( GameHour > 16.125 )
MessageBox, "It's quarter past four, p.m."
elseif ( GameHour > 16 )
MessageBox, "It's just past four, p.m."
elseif ( GameHour > 15.875 )
MessageBox, "It's close to four, p.m."
elseif ( GameHour > 15.625 )
MessageBox, "It's quarter to four, p.m."
elseif ( GameHour > 15.375 )
MessageBox, "It's half past three, p.m."
elseif ( GameHour > 15.125 )
MessageBox, "It's quarter past three, p.m."
elseif ( GameHour > 15 )
MessageBox, "It's just past three, p.m."
elseif ( GameHour > 14.875 )
MessageBox, "It's close to three, p.m."
elseif ( GameHour > 14.625 )
MessageBox, "It's quarter to three, p.m."
elseif ( GameHour > 14.375 )
MessageBox, "It's half past two, p.m."
elseif ( GameHour > 14.125 )
MessageBox, "It's quarter past two, p.m."
elseif ( GameHour > 14 )
MessageBox, "It's just past two, p.m."
elseif ( GameHour > 13.875 )
MessageBox, "It's close to two, p.m."
elseif ( GameHour > 13.625 )
MessageBox, "It's quarter to two, p.m."
elseif ( GameHour > 13.375 )
MessageBox, "It's half past one, p.m."
elseif ( GameHour > 13.125 )
MessageBox, "It's quarter past one, p.m."
elseif ( GameHour > 13 )
MessageBox, "It's just past one, p.m."
elseif ( GameHour > 12.875 )
MessageBox, "It's close to one, p.m."
elseif ( GameHour > 12.625 )
MessageBox, "It's quarter to one, p.m."
elseif ( GameHour > 12.375 )
MessageBox, "It's half past noon, p.m."
elseif ( GameHour > 12.125 )
MessageBox, "It's quarter past noon, p.m."
elseif ( GameHour > 12 )
MessageBox, "It's just past noon, p.m."
elseif ( GameHour > 11.875 )
MessageBox, "It's close to noon, a.m."
elseif ( GameHour > 11.625 )
MessageBox, "It's quarter to noon, a.m."
elseif ( GameHour > 11.375 )
MessageBox, "It's half past eleven, a.m."
elseif ( GameHour > 11.125 )
MessageBox, "It's quarter past eleven, a.m."
elseif ( GameHour > 11 )
MessageBox, "It's just past eleven, a.m."
elseif ( GameHour > 10.875 )
MessageBox, "It's close to eleven, a.m."
elseif ( GameHour > 10.625 )
MessageBox, "It's quarter to eleven, a.m."
elseif ( GameHour > 10.375 )
MessageBox, "It's half past ten, a.m."
elseif ( GameHour > 10.125 )
MessageBox, "It's quarter past ten, a.m."
elseif ( GameHour > 10 )
MessageBox, "It's just past ten, a.m."
elseif ( GameHour > 9.875 )
MessageBox, "It's close to ten, a.m."
elseif ( GameHour > 9.625 )
MessageBox, "It's quarter to ten, a.m."
elseif ( GameHour > 9.375 )
MessageBox, "It's half past nine, a.m."
elseif ( GameHour > 9.125 )
MessageBox, "It's quarter past nine, a.m."
elseif ( GameHour > 9 )
MessageBox, "It's just past nine, a.m."
elseif ( GameHour > 8.875 )
MessageBox, "It's close to nine, a.m."
elseif ( GameHour > 8.625 )
MessageBox, "It's quarter to nine, a.m."
elseif ( GameHour > 8.375 )
MessageBox, "It's half past eight, a.m."
elseif ( GameHour > 8.125 )
MessageBox, "It's quarter past eight, a.m."
elseif ( GameHour > 8 )
MessageBox, "It's just past eight, a.m."
elseif ( GameHour > 7.875 )
MessageBox, "It's close to eight, a.m."
elseif ( GameHour > 7.625 )
MessageBox, "It's quarter to eight, a.m."
elseif ( GameHour > 7.375 )
MessageBox, "It's half past seven, a.m."
elseif ( GameHour > 7.125 )
MessageBox, "It's quarter past seven, a.m."
elseif ( GameHour > 7 )
MessageBox, "It's just past seven, a.m."
elseif ( GameHour > 6.875 )
MessageBox, "It's close to seven, a.m."
elseif ( GameHour > 6.625 )
MessageBox, "It's quarter to seven, a.m."
elseif ( GameHour > 6.375 )
MessageBox, "It's half past six, a.m."
elseif ( GameHour > 6.125 )
MessageBox, "It's quarter past six, a.m."
elseif ( GameHour > 6 )
MessageBox, "It's just past six, a.m."
elseif ( GameHour > 5.875 )
MessageBox, "It's close to six, a.m."
elseif ( GameHour > 5.625 )
MessageBox, "It's quarter to six, a.m."
elseif ( GameHour > 5.375 )
MessageBox, "It's half past five, a.m."
elseif ( GameHour > 5.125 )
MessageBox, "It's quarter past five, a.m."
elseif ( GameHour > 5 )
MessageBox, "It's just past five, a.m."
elseif ( GameHour > 4.875 )
MessageBox, "It's close to five, a.m."
elseif ( GameHour > 4.625 )
MessageBox, "It's quarter to five, a.m."
elseif ( GameHour > 4.375 )
MessageBox, "It's half past four, a.m."
elseif ( GameHour > 4.125 )
MessageBox, "It's quarter past four, a.m."
elseif ( GameHour > 4 )
MessageBox, "It's just past four, a.m."
elseif ( GameHour > 3.875 )
MessageBox, "It's close to four, a.m."
elseif ( GameHour > 3.625 )
MessageBox, "It's quarter to four, a.m."
elseif ( GameHour > 3.375 )
MessageBox, "It's half past three, a.m."
elseif ( GameHour > 3.125 )
MessageBox, "It's quarter past three, a.m."
elseif ( GameHour > 3 )
MessageBox, "It's just past three, a.m."
elseif ( GameHour > 2.875 )
MessageBox, "It's close to three, a.m."
elseif ( GameHour > 2.625 )
MessageBox, "It's quarter to three, a.m."
elseif ( GameHour > 2.375 )
MessageBox, "It's half past two, a.m."
elseif ( GameHour > 2.125 )
MessageBox, "It's quarter past two, a.m."
elseif ( GameHour > 2 )
MessageBox, "It's just past two, a.m."
elseif ( GameHour > 1.875 )
MessageBox, "It's close to two, a.m."
elseif ( GameHour > 1.625 )
MessageBox, "It's quarter to two, a.m."
elseif ( GameHour > 1.375 )
MessageBox, "It's half past one, a.m."
elseif ( GameHour > 1.125 )
MessageBox, "It's quarter past one, a.m."
elseif ( GameHour > 1 )
MessageBox, "It's just past one, a.m."
elseif ( GameHour > 0.875 )
MessageBox, "It's close to one, a.m."
elseif ( GameHour > 0.625 )
MessageBox, "It's quarter to one, a.m."
elseif ( GameHour > 0.375 )
MessageBox, "It's half past midnight, a.m."
elseif ( GameHour > 0.125 )
MessageBox, "It's quarter past midnight, a.m."
else
MessageBox, "It's just past midnight, a.m."
endif
set desktop to 0

else
MessageBox, "Shutting Down"
set desktop to 0

endif

endif




end laptop_script_0


ist auf ein gegenstand belegt, der wenn man ihn aktiviert eine message box öffnen soll mit zwei buttons
das funzt auch, nur wenn ich auf den "uhrzeit" button drücke, dann bricht der script ab und es passiert nichts mehr wenn ich auf den gegenstand klicke und wenn ich auf den ausschalten button drücke, dann zeigt er mir die uhrzeit an.

habe nach anleitung von scripting for dummies 6 gehandelt.

dort steht nämlich :

Begin my_first_script
Short controlvar
Short button
If ( OnActivate == 1 )
If ( controlvar == 0)
MessageBox "Voiceless it cries, wingless flutters, toothless bites, mouthless mutters.
What is it?", "Bat", "Old woman", "Wind", "Wraith"
Set controlvar to 1
elseif controlvar > 1
activate
endif
endif
if (controlvar == 1)
set button to GetButtonPressed
if ( button == -1 )
return
elseif ( button == 2)
MessageBox "The answer was correct"
Activate
set controlvar to 2
else
MessageBox "The answer was wrong"
set controlvar to -1
endif
endif
End


als beispiel



bitte um antwort


__________________
IT'S A GOOD DAY TO DIE

Dieser Beitrag wurde von Worf am 06.04.2004, 18:25 Uhr editiert.

06.04.2004, 17:56 Profil von Füge  deiner Freunde-Liste hinzu Email an Worf senden
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:
if ( button == -1 )
return
elseif ( button == 1 )

Ist das ein Tipfehler?

Normalerweise beginnt es bei 0 und steigt mit jedem weiteren Button um eins an.
z.B.:

set button to Getbuttonpressed

if (button == 0)
.
.
.
endif

if (button == 1)
.
.
.
endif

Kann sein das es mit -1 auch funktioniert (hab ich noch nie probiert), aber das ist das erstemal das ich es so sehe.


__________________


Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein

Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach

06.04.2004, 21:38 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
Worf
Healer




Dabei seit: Januar 2003
Geschlecht:
Herkunft: Odai Plateau
Beiträge: 68

Worf ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

ja hast recht, da war irgendwie der wurm drinne.
ich habe den script jetzt vervollständigt:

begin laptop_0_script
short button
short desktop


if ( menumode == 1 )
return
endif

if ( OnActivate == 0 )
if ( desktop == 0 )
return
endif
endif

if ( desktop == 0 )
MessageBox, "Morrowind 98 / Kein Update", "Einpacken", "Uhrzeit"
set desktop to 1
endif

if ( desktop == 1 )
set button to GetButtonPressed

if ( button == 0 )
set desktop to 0
Disable
player->addItem, "laptop_invi_0", 1
playSound "Item Misc Up"
elseif ( button == 1 )
set desktop to 0
If ( GameHour > 23.875 )
MessageBox, "It's close to midnight, p.m."
elseif ( GameHour > 23.625 )

(... du Uhrzeiten habe ich jetzt ma rausgelassen, nimmt so viel platz weg)

MessageBox, "It's just past midnight, a.m."
endif

endif
endif


end laptop_0_script



so funktioniert das jetzt.

aber ich habe jetzt ein weiteres ähnliches problem.
am besten erzähle ich mal, was ich vorhabe:
ich möchte einen laptop in morrowind erstellen mit dem man verschiedene dinge machen kann. die füge ich jetzt einzeln in die scripts ein, damit man die fehler besser eingrenzen kann.
im folgenden script kommt noch die wetteränderung hinzu. ich möchte, dass wenn man den wetter button dückt eine neue message box kommt wo man dann das wetter einstellen kann. hier der folgende script.
in diesem fall funktioniert der button "wetter" nicht.


begin laptop_1_script
short button
short desktop
short wetter

if ( menumode == 1 )
return
endif

if ( OnActivate == 0 )
if ( desktop == 0 )
return
endif
endif

if ( desktop == 0 )
MessageBox, "Morrowind 98 / Erstes Update", "Einpacken", "Uhrzeit", "Wetter"
set desktop to 1
endif

if ( desktop == 1 )
set button to GetButtonPressed

if ( button == 0 )
set desktop to 0
Disable
player->addItem, "laptop_invi_1", 1
playSound "Item Misc Up"
elseif ( button == 1 )
set desktop to 0
If ( GameHour > 23.875 )
MessageBox, "It's close to midnight, p.m."
elseif ( GameHour > 23.625 )

(... du Uhrzeiten habe ich jetzt ma rausgelassen, nimmt so viel platz weg)

MessageBox, "It's just past midnight, a.m."
endif

elseif ( button == 2 )
set desktop to 0
MessageBox "Welches Wetter wünscht Ihr Euch ?" "Klar" "Bewölkt" "Nebel" "Trüb" "Regen" "Gewitter" "Aschesturm" "Peststurm"
set wetter to 1
endif
endif

if ( wetter == 1)

set button to GetButtonPressed

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

if ( button == 0 )

PlaySound "Mysticism Cast"
ChangeWeather, "Ascadian Isles Region" , 0
ChangeWeather, "Ashlands Region" , 0
ChangeWeather, "Azura's Coast Region" , 0
ChangeWeather, "Bitter Coast Region" , 0
ChangeWeather, "Grazelands Region" , 0
ChangeWeather, "Molag Mar Region" , 0
ChangeWeather, "Red Mountain Region" , 0
ChangeWeather, "Sheogorad" , 0
ChangeWeather, "West Gash Region" , 0



endif

if ( button == 1 )

PlaySound "Mysticism Cast"
ChangeWeather, "Ascadian Isles Region" , 1
ChangeWeather, "Ashlands Region" , 1
ChangeWeather, "Azura's Coast Region" , 1
ChangeWeather, "Bitter Coast Region" , 1
ChangeWeather, "Grazelands Region" , 1
ChangeWeather, "Molag Mar Region" , 1
ChangeWeather, "Red Mountain Region" , 1
ChangeWeather, "Sheogorad" , 1
ChangeWeather, "West Gash Region" , 1


endif

if ( button == 2 )

PlaySound "Mysticism Cast"
ChangeWeather, "Ascadian Isles Region" , 2
ChangeWeather, "Ashlands Region" , 2
ChangeWeather, "Azura's Coast Region" , 2
ChangeWeather, "Bitter Coast Region" , 2
ChangeWeather, "Grazelands Region" , 2
ChangeWeather, "Molag Mar Region" , 2
ChangeWeather, "Red Mountain Region" , 2
ChangeWeather, "Sheogorad" , 2
ChangeWeather, "West Gash Region" , 2


endif

if ( button == 3 )

PlaySound "Mysticism Cast"
ChangeWeather, "Ascadian Isles Region" , 3
ChangeWeather, "Ashlands Region" , 3
ChangeWeather, "Azura's Coast Region" , 3
ChangeWeather, "Bitter Coast Region" , 3
ChangeWeather, "Grazelands Region" , 3
ChangeWeather, "Molag Mar Region" , 3
ChangeWeather, "Red Mountain Region" , 3
ChangeWeather, "Sheogorad" , 3
ChangeWeather, "West Gash Region" , 3


endif

if ( button == 4 )

PlaySound "Mysticism Cast"
ChangeWeather, "Ascadian Isles Region" , 4
ChangeWeather, "Ashlands Region" , 4
ChangeWeather, "Azura's Coast Region" , 4
ChangeWeather, "Bitter Coast Region" , 4
ChangeWeather, "Grazelands Region" , 4
ChangeWeather, "Molag Mar Region" , 4
ChangeWeather, "Red Mountain Region" , 4
ChangeWeather, "Sheogorad" , 4
ChangeWeather, "West Gash Region" , 4


endif

if ( button == 5 )

PlaySound "Mysticism Cast"
ChangeWeather, "Ascadian Isles Region" , 5
ChangeWeather, "Ashlands Region" , 5
ChangeWeather, "Azura's Coast Region" , 5
ChangeWeather, "Bitter Coast Region" , 5
ChangeWeather, "Grazelands Region" , 5
ChangeWeather, "Molag Mar Region" , 5
ChangeWeather, "Red Mountain Region" , 5
ChangeWeather, "Sheogorad" , 5
ChangeWeather, "West Gash Region" , 5


endif

if ( button == 6 )

PlaySound "Mysticism Cast"
ChangeWeather, "Ascadian Isles Region" , 6
ChangeWeather, "Ashlands Region" , 6
ChangeWeather, "Azura's Coast Region" , 6
ChangeWeather, "Bitter Coast Region" , 6
ChangeWeather, "Grazelands Region" , 6
ChangeWeather, "Molag Mar Region" , 6
ChangeWeather, "Red Mountain Region" , 6
ChangeWeather, "Sheogorad" , 6
ChangeWeather, "West Gash Region" , 6


endif

if ( button == 7 )

PlaySound "Mysticism Cast"
ChangeWeather, "Ascadian Isles Region" , 7
ChangeWeather, "Ashlands Region" , 7
ChangeWeather, "Azura's Coast Region" , 7
ChangeWeather, "Bitter Coast Region" , 7
ChangeWeather, "Grazelands Region" , 7
ChangeWeather, "Molag Mar Region" , 7
ChangeWeather, "Red Mountain Region" , 7
ChangeWeather, "Sheogorad" , 7
ChangeWeather, "West Gash Region" , 7


endif


endif
endif



end laptop_1_script


__________________
IT'S A GOOD DAY TO DIE

06.04.2004, 22:24 Profil von Füge  deiner Freunde-Liste hinzu Email an Worf senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

@Heph: -1 ist schon richtig, das heist, dass kein button bisher gedrückt wurde. 0 steht schon für den ersten Button, Computer zählen immer ab 0....

@denkomischenklingonenmitderschärpe: Dir sind da wahrscheinlich einige if-Blöcke zu gross geraten, die engine kann nur eine gewise blockgrösse überspringen. Wird ein block zwischen if und endif grösser, springt die engine beim versuch, an das endif zu springen, mitten in den code. Vorschlag: teste das ganze erstmal mit kürzeren blöcken, wenn es dann funktioniert musst Du die blöcke aufteilen.


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

06.04.2004, 23:44 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Worf
Healer




Dabei seit: Januar 2003
Geschlecht:
Herkunft: Odai Plateau
Beiträge: 68

Worf ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

@ denkleinenschneideraufdempromenadendeck

wenn ich die uhrzeit rausnehme und also nur noch 2 button da habe, ( "einpacken" und "wetter" )
funzt das.

bedeutet das, dass ich mein vorhaben (da sollten ja eigentlich noch mehr funktionen hinzukommen) vergessen kann ?
oder kann ich da vielleicht mit einem trick arbeiten,
sowas wie z.B. if (...) start script "..." ?


__________________
IT'S A GOOD DAY TO DIE

07.04.2004, 00:47 Profil von Füge  deiner Freunde-Liste hinzu Email an Worf senden
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:
Orginal von Garak:
@Heph: -1 ist schon richtig, das heist, dass kein button bisher gedrückt wurde. 0 steht schon für den ersten Button, Computer zählen immer ab 0....

Ich hab nie -1 verwendet, hat trotzdem immer funktioniert. Hm, da muß mein Scripting-Lehrer wohl vergessen haben mir was zu erklären.

@Worf:
Bei großen Scripts die sich leicht in einzelne Blöcke teilen lassen würde ich sowieso mit StartScript arbeiten. Nicht nur wegen der Übersichtlichkeit, sondern auch wegen der Performance. Zu große If-Blöcke lassen sich leicht vermeiden, wenn du einfach eine zusätzliche Variabel einführst.

z.B.:

if
..if
....if
......if
........if
..........if
............set xy to 1
..........endif
........endif
......endif
....endif
..endif
endif

if ( xy == 1)
..if
.
.
etc.


__________________


Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein

Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach

07.04.2004, 07:59 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

nun, er überspringt eben bei button = -1 die übrigen abfragen - könnte man als performanceverbesserung sehen, aber innerhalb einer Messagebox sind die frames sowieso ganz egal. Man braucht es nicht wirklich, Dein scriptlehrer hat dir nichts wesentliches vorenthalten


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

07.04.2004, 09:34 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Worf
Healer




Dabei seit: Januar 2003
Geschlecht:
Herkunft: Odai Plateau
Beiträge: 68

Worf ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

ich habe jetzt die einzelnen scripte rausgenommen
und im hauptscript sieht das jetzt so aus (auszug) :

elseif ( button == 1 )
set desktop to 0
StartScript "laptop_clock"
elseif ( button == 2 )
set desktop to 0
StartScript "laptop_wetter"

bei der uhrzeit habe ich jetzt das problem, dass der script nicht mehr aufhört, heißt er sagt mir immer und immer wieder die uhrzeit.

bei dem wetter script sagt er jetzt "EXPRESSION Error"
ist dieser script vielleicht nicht mehr mit bloodmoon kompatibel ?


wetter script

begin laptop_wetter

short wetter

if ( wetter == 0 )
MessageBox "Welches Wetter wünscht Ihr Euch ?" "Klar" "Bewölkt" "Nebel" "Trüb" "Regen" "Gewitter" "Aschesturm" "Peststurm"
set wetter to 1
endif


if ( wetter == 1)

set button to GetButtonPressed

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

if ( button == 0 )


(hier steht wieder die ganze if button ...
change wetter in region ... sache ; siehe obigen beitrag)



endif



endif
endif

end laptop_wetter

uhrzeit script

begin laptop_clock


If ( GameHour > 23.875 )
MessageBox, "It's close to midnight, p.m."
( der ganze uhrzeit script wie im obigen beitrag )
MessageBox, "It's just past midnight, a.m."
endif


end laptop_clock


__________________
IT'S A GOOD DAY TO DIE

Dieser Beitrag wurde von Worf am 07.04.2004, 13:07 Uhr editiert.

07.04.2004, 13:06 Profil von Füge  deiner Freunde-Liste hinzu Email an Worf senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

wie gesagt - wenn der if-block zu lang wird (und ich meine NICHT die Schachtelungstiefe, sondern den reinen Abstand if-endif) springt die scriptengine mitten in den code - wesshalb die fehlermeldungen relativ unvorhersagbar sind. aber ob das jetzt beim wetterscript zutrifft? gute frage... Bloodmoon-inkompatibel solte es allerdings nicht sein - nur kannst Du mit bloodmoon nicht mehr alle wetterlagen in eine Box packen, da man nur 9 Buttons pro messagebox einsetzen kannst aund es mit snow und snowstorm 10 Wetterlagen gibt...

wegen der ewigen wiederholung: ans ende des scriptes muss natürlich ein "stopscript laptop_clock", sonst wird es im nächsten frame wieder abgearbeitet.


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

07.04.2004, 13:12 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Worf
Healer




Dabei seit: Januar 2003
Geschlecht:
Herkunft: Odai Plateau
Beiträge: 68

Worf ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

ich habe jetzt einen ähnlichen script erstellt, wo die if - endif abstände eigentlich nicht zu lang sein dürften und dort wird mir derselbe fehler gemeldet (im spiel, wenn ich den button drücke):
script-error : EXPRESSION in laptop_medi

hier der script:

begin laptop_medi

short medi

if ( medi == 0 )
MessageBox "Welche Funktion soll genutzt werden ?" "Krankheit heilen" "Pest heilen" "Leben auffüllen" "Mana wiederherstellen"
set medi to 1
endif

if ( medi == 1)

set button to GetButtonPressed
endif

if ( button == 0 )
if ( Player->GetCommonDisease == 1 )
Cast "Cure Common Disease Other" Player
else
MessageBox "Ihr habt keine Krankheit." "OK"
endif
Set medi to 0
endif

if ( button == 1 )
if ( Player->GetBlightDisease == 1 )
Cast "Cure Blight Disease" Player
else
MessageBox "Ihr seid nicht an der Pest erkrankt." "OK"
endif
Set medi to 0
endif

if ( button == 2 )
Cast "laptop_lebensenergie" Player
Set medi to 0
endif

if ( button == 3 )
Cast "laptop_mana" Player
Set medi to 0
endif


end laptop_medi



ich weiß jetzt nich ob man bei "set button to GetButtonPressed" schon ein endif setzen darf, aber es kommt immer der gleiche fehler, ob ich das endif nun dort habe, oder am ende.

das mit StopScript für die uhrzeit hat übrigens geklappt, danke vielmals


__________________
IT'S A GOOD DAY TO DIE

Dieser Beitrag wurde von Worf am 07.04.2004, 14:06 Uhr editiert.

07.04.2004, 14:03 Profil von Füge  deiner Freunde-Liste hinzu Email an Worf senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

mal abgesehen davon, dass du Das script natürlich auch zu gegebener zeit wieder stoppen mußt, stellt sich hier natürlich die frage, von wo aus das script läuft - liegt es in der welt auf einem Activator, geht der cast-befehl in ordnung. wenn Du es im inventar liegen hast, macht cast probleme... wenn es (wie ich annehme) won einem anderen script gestartet wird, zählt trotzdem der "liegeplatz" des startenden scriptes als lokaler bereich (also als das objekt, das Deinen cast-befehl ausführen soll)

expression ist aber im normalfall kein einzelner fehler - da kommt fast immer noch ein left eval oder right eval danach, um zu zeigen, auf welcher seite eines Vergleiches der Fehler sitzt. Beliebt bei den actor->Befehl - Sequenzen sind übrigens zickigkeiten mit spaces und klammern. Das script hier sieht für mich den Schreinscripten sehr ähnlich, vieleicht solltest Du es mal mit diesen abgleichen?


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

07.04.2004, 14:36 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Worf
Healer




Dabei seit: Januar 2003
Geschlecht:
Herkunft: Odai Plateau
Beiträge: 68

Worf ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

also , der ganze haupt-script ( der wo StartScript ... drinne steht ) liegt auf einem activator in der welt.

ich habe die shrine scripte als beispiel für diesen genommen. es kommt right eval danach.

wie schon gesagt der gleiche fehler (+ right eval ) kommt auch beim wetter script. also müsste da doch irgendwie ein gleicher fehler drin sein.

es tut mir ja leid, dass ich euch hiermit nerve, nur ich hatte schon so viele mods angefange, die ich wegen solcher fehler aufgeben musste, da wollte ich jetzt einfach mal eine machen die fertig wird.


__________________
IT'S A GOOD DAY TO DIE

07.04.2004, 14:53 Profil von Füge  deiner Freunde-Liste hinzu Email an Worf senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

meine Güte, ich bin ja wohl blind&blöd: Du musst Button als Short-Variable definieren - der Compiler meckert das nicht an, weil es schon genug andere scripts gibt, in denen eine variable namens "Button" existiert.

Sorry, da hatt ich tomaten auf den augen!


sag mal, war das ein test? oder nur purer zufall, dass Du das Stichwort Button schon im titel lieferst?


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

07.04.2004, 15:15 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Worf
Healer




Dabei seit: Januar 2003
Geschlecht:
Herkunft: Odai Plateau
Beiträge: 68

Worf ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

das war wohl eher zufall

danke, dieser fehler ist jetzt behoben

wo sollte StopScript stehen ? im haupt-script oder in den einzelnen scripten, die durch StartScript gestartet werden ?
Wenn ich das in den einzelnen Scripten stehen habe, dann wird der script (einmal ausgelöst) nie wieder gestartet. der wetter script wird sogar vorzeitig abgebrochen, heißt es kommt kein sound, sowie keine wetteränderung. nehme ich das StopScript raus, dann funzt das zwar, aber er fragt mich in einer Endlosschleife.
bis jetzt funzt das StopScript nur bei der Uhrzeit.

beim medi script habe ich jetzt sowieso ein problem, denn es kommt gar nicht erst eine messageBox mit ner frage, sondern gleich "ihr seid nicht an der pest erkrankt". ich habe mir den script ganz genau angeguckt, aber ich finde keinen fehler.


P.S. sollte ich wider erwarten diese probleme alle in griff bekommen, dann werde ich den script natürlich morrowindmods.de zur verfügung stellen.


__________________
IT'S A GOOD DAY TO DIE

Dieser Beitrag wurde von Worf am 07.04.2004, 16:05 Uhr editiert.

07.04.2004, 15:43 Profil von Füge  deiner Freunde-Liste hinzu Email an Worf senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

nunja, pmm-projects wird das Angebot wohl annehmen, Planetmorrowind und Morrowindmods leiten nur noch dorthin weiter....

das Stopscript muss jeweils dorthin, wo die funktion erfüllt ist - also nach dem changeweather oder cast. soll wirklich sofort gestoppt werden, setzt Du noch ein Return dahinter, da stopscript streng genommen erst ab dem folgenden Frame greift, der rest nach stopscript wird noch ein mal abgearbeitet.

Das problem mit der heilfunktion könnte sein, dass Du wieder einen ok-button für die "fehlermeldungen" einführst - eine Buttonlose Messagebox tut es da doch auch, so langsam wird schon niemand gucken. Zwar ist es prinzipiell möglich, mehrere messageboxen mit einem Script zu verwalten, aber dabei verliert man zu schnell die übersicht. Ich meide es wie die pest


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

07.04.2004, 16:42 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Worf
Healer




Dabei seit: Januar 2003
Geschlecht:
Herkunft: Odai Plateau
Beiträge: 68

Worf ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

vielen dank

ich habe den StopScript mit ner Variable eingegrenzt.
alà

if ( button >= 0 )
set stopper to 1
endif

if ( stopper == 1 )
set stopper to 0
StopScript laptop_medi
endif

das funzt jetzt

beim mediscript habe ich die zweite messagebox einfach rausgenommen und jetzt funzts.

das mit zur verfügung stellen habe ich eigentlich nur so gesagt, damit auch ihr, wenn ihr wollt etwas für eure tolle hilfe hier kriegt.

vielen dank nochmal


__________________
IT'S A GOOD DAY TO DIE

Dieser Beitrag wurde von Worf am 07.04.2004, 18:43 Uhr editiert.

07.04.2004, 17:05 Profil von Füge  deiner Freunde-Liste hinzu Email an Worf senden
GreyWanderer
Crusader



Dabei seit: Januar 2004
Geschlecht:
Herkunft: Cuiviénen
Beiträge: 465

GreyWanderer ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Also nur so nebenbei...wieso hast du bei den Buttons mit dem Wetter kein elseif benutzt? Weil manchmal kommt es (ist einem Freund passiert) vor, dass bei solchen Abfragen einfach die Engine streikt, weil kein elseif sondern ständig if und endif benutzt wurde. Sein ermüdender Satz nach Behebung des Fehlers: "Ich habe grade den Gebrauch von elseif gelernt" Also

if ( Button == 0 )
...
elseif ( Button == 1 )
...
elseif ( Button == 2 )
...
endif

und nicht

if ( Button == 0 )
...
endif
if ( Button == 1 )
...
endif
if ( Button == 2 )
...
endif


__________________

Abenteuer Mittel Erde
     Please visit us!

15.04.2004, 22:38 Profil von Füge  deiner Freunde-Liste hinzu Email an GreyWanderer senden
  « Vorheriges Thema Nächstes Thema »
Neues Thema erstellen Antwort erstellen
Gehe zu:

Design by: Garak - Powered by: Burning Board 1.1.1 © 2001 WoltLab GbR