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 if if if else, else endif verzweiflung » 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
hochbass
Vampire




Dabei seit: November 2002
Geschlecht:
Herkunft:
Beiträge: 1037

hochbass ist offline
  Script if if if else, else endif verzweiflungAntwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Bei folgendem Aufbau

If ( Status =1)
if ( MyLevel < Solllevel)
MessageBox "Neuer Level"
.....Aktionen
.....Mylevel +1
.....Return ; für jeden Frame

elseif ( Mylevel >= Solllevel)

.....Aktionen
Messagebox " Sollwerte gespeichert"
Set Status to 0
endif
endif

wird der Elseif Zweig nie abgearbeitet.

Die Statusgeschichte soll erst nach Erreichen der Sollwerte umschalten. Dazu müssen oben mehrere Durchläufe stattfinden.

Die Frames laufen durch, meine Erhöhung findet statt bis der Sollwert erreicht wird ( Messagebox 1 erscheint korrekt) und dann passiert nichts mehr. Messagebox 2 wird nicht erreicht , aber der Status bleibt ewig auf 1 , also wird die Geschichte doch abgearbeitet., oder nicht?

Edit: Das ist nur ein Prinzipbeispiel des Scripts
Ist der syntax so richtig. Ich vermute das mein Programm keine else oder elseif mehr abarbeitet nur noch if-Befehle


2. Kann mal bitte jemand testen ob der Befehl

SetLevel über variablen zu bestücken geht.
Bei mir wird dabei stets Level 0 zugewiesen

z.B. SetLevel, Mylevel





__________________
"The White Wolf of Lokken Mountain"
Releasetreath

Dieser Beitrag wurde von hochbass am 13.06.2004, 16:26 Uhr editiert.

13.06.2004, 14:47 Profil von Füge  deiner Freunde-Liste hinzu Email an hochbass senden Homepage von hochbass Füge hochbass in deine Contact-Liste ein
Ranma
Mage



Dabei seit: September 2003
Geschlecht: keine Angabe
Herkunft:
Beiträge: 208

Ranma 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

wenn das das ganze script is is es klar da stutus nie den wert 1 erreicht!


__________________

The
Modder

is

ALIVE
Computerfachwissen für alle

13.06.2004, 15:46 Profil von Füge  deiner Freunde-Liste hinzu
Mondkalb
Nightblade




Dabei seit: Januar 2003
Geschlecht:
Herkunft:
Beiträge: 753

Mondkalb 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

Muss es nicht "else" statt "elseif" heißen?
Sonst fehlt ein "else".


__________________
Die Wahrheit zu verbergen ist nicht nur dumm - es ist fatal.
(Sorine Relicbane, Soldevischer Ketzer)

13.06.2004, 15:51 Profil von Füge  deiner Freunde-Liste hinzu Email an Mondkalb senden Homepage von Mondkalb
Garak
Admin




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

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

nein, elseif ist völlig OK - ich denke eher, dass es an der Länge des anweisungsblocks liegt - so, wie es aussieht, ist der sprungpointer bei if-bedingungen (also die information, wie viel übersprungen werden muss, wenn die bedingung NICHT zutrifft) nur 8 Bit lang - sollen mehr als 256 bytes programmcode übersprungen werden, landen die sprünge schlimmstenfalls im nichts, mit glück werden (wie hier) teilbedingungen nur nicht ausgewertet. versuch, lange blöcke aufzuteilen.


__________________
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

13.06.2004, 17:06 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Mondkalb
Nightblade




Dabei seit: Januar 2003
Geschlecht:
Herkunft:
Beiträge: 753

Mondkalb 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

Akzeptiert der Editor das wirklich? Bei allen Programmiersprachen ist üblicherweise If...else oder if...elseif...else normal.


__________________
Die Wahrheit zu verbergen ist nicht nur dumm - es ist fatal.
(Sorine Relicbane, Soldevischer Ketzer)

13.06.2004, 18:11 Profil von Füge  deiner Freunde-Liste hinzu Email an Mondkalb senden Homepage von Mondkalb
Garak
Admin




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

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

ja, er nimmt es an - die begrenzung bei anderen sprachen liegt wohl darin begründet, dass diese sprachen danach eine effektivere case-anweisung anbieten.


__________________
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

13.06.2004, 19:07 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
hochbass
Vampire




Dabei seit: November 2002
Geschlecht:
Herkunft:
Beiträge: 1037

hochbass 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

Und dieser setLevel Befehl ?
Ich muß jeden Level separat auslesen und um eins erhöht zurückspielen, das gibt so ca 10x 10 verschachtelte If-Anweisungen

@Garak
Zwischen den If endif -Blöcken stevken so an die 35 ModStat-Befehle.
Für die IF- Bedingung macht er das richtig.
in der else-Bedingung stecken 35 verschiedene
Set [Variable] to GetStat.

Aber er macht die Umschaltung auch nicht, wenn ich im Else nur einen Schalter umschalte und den Rest in den nächsten Frame schicke.


__________________
"The White Wolf of Lokken Mountain"
Releasetreath

13.06.2004, 19:16 Profil von Füge  deiner Freunde-Liste hinzu Email an hochbass senden Homepage von hochbass Füge hochbass in deine Contact-Liste ein
Garak
Admin




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

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 muss ja auch nach abarbeitung des erfüllten blocks zum endif springen... versuch bitte, die gleiche struktur, aber nur minimale befehlsblöcke - messageboxes vieleicht? - wenn es dann auch nicht klappt, weiss ich auch nicht, warum...


__________________
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

13.06.2004, 19:27 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
HaggY
Oceanic




Dabei seit: Juli 2003
Geschlecht:
Herkunft: Erde
Beiträge: 1543

HaggY 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 wäre es, wenn du dafür eine schleife nimmst? so könntest du den verschachtelten if und elseif codeblock umgehen.
also ungefähr so.

set var = 0
set levelmarker = 0

do
set var = var + 1
if mylevel = var
set levelmarker = var
endif
if not levelmarker = 0
exit do
endif
loop

msgbox "you have reached level" & levelmarker

(ich kenne die äquivalenten befehle nicht, aber das mw-script scheint vb ja sehr ähnlich zu sein)


__________________
"Er verliert die Balance... "

13.06.2004, 20:54 Profil von Füge  deiner Freunde-Liste hinzu Email an HaggY senden Füge HaggY in deine Contact-Liste ein
Ranma
Mage



Dabei seit: September 2003
Geschlecht: keine Angabe
Herkunft:
Beiträge: 208

Ranma 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

du meist sicher while-schleifen...


__________________

The
Modder

is

ALIVE
Computerfachwissen für alle

13.06.2004, 21:11 Profil von Füge  deiner Freunde-Liste hinzu
HaggY
Oceanic




Dabei seit: Juli 2003
Geschlecht:
Herkunft: Erde
Beiträge: 1543

HaggY 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 genau, kann man ja mit boolean-werten machen und dann einfach zu endlos-schleifen umfunktionieren.


__________________
"Er verliert die Balance... "

13.06.2004, 21:21 Profil von Füge  deiner Freunde-Liste hinzu Email an HaggY senden Füge HaggY in deine Contact-Liste ein
Garak
Admin




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

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

richtig, while ist die einzige schleife, die morrowind kennt, aber leider ist while auch sterbenslangsam - und eine schleife "über alle Attribute" verhindert die starre befehlsstruktur von morrowind.


__________________
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

13.06.2004, 21:28 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
  « 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