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 » Editor Archiv » erledigt: Zauber von Spruchrollen lernen » 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
Perlentieftaucher
Warrior




Dabei seit: Juli 2003
Geschlecht:
Herkunft: Osnabrück
Beiträge: 85

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

Hi Leute! Ich hab mal wieder n kleines Scripting Problem und ich komme einfach nicht darauf was ich falsch mache. Für meine Mod will ich das der Spieler einige mächtige Zaubersprüche nur von einer bestimmten Schriftrolle bzw. aus einem Buch lernen kann. Und das auch erst sobald er die nötigte Intelligenz besitzt. Allerdings kriege ich immer ne Fehlermeldung SCRIPT EXPRESSION: Right Eval. Diese Meldung bekomme ich übrigens auch bei allen Betten und Shrine Scripts und überhaupt in allen Scripts in denen die OnActivate Abfrage vorkommt. Laut Garak bedeutet das dass auf der rechten Seite einer Gleichung etwas nicht stimmt. Nur was stimmt bitteschon bei if ( OnActivate == 1 ) nicht? Naja hier mal das Script. Vielleicht hab ich ja doch was übersehen.

begin MY_bk_1stGrade_SC

short done

if ( done == 1 )
Return
endif

if ( OnActivate == 1 )
if ( GetIntelligence Player > 20 )
player-> AddSpell MY_Frenzy
player-> AddSpell MY_Light
player-> AddSpell MY_Chaossphere
player-> AddSpell MY_MagicShieldSmall
player-> AddSpell MY_Blind
player-> AddSpell MY_Calm
player-> AddSpell MY_Charm
player-> AddSpell MY_Sound
player-> AddSpell MY_EnergieBolt
player-> AddSpell MY_Erschrecken
MessageBox, "Zauber des ersten Grades erlernt!" "Ok"
set done to 1
return
endif
endif

if ( OnActivate == 1 )
if ( GetIntelligence Player < 20 )MessageBox, "Du hast noch nicht die nötige Intelligenz um diesen Grad zu erlernen!" "Ok"
set done to 1
endif
endif

end


__________________
Wirklichkeit ist ein vorübergehender Traum, aber ein Traum ist Wirklichkeit für eine Ewigkeit
Das Leben ist zwar bloß ein Spiel, aber die Grafik ist verdammt gut.

31.08.2003, 20:02 Profil von Füge  deiner Freunde-Liste hinzu Email an Perlentieftaucher senden Füge Perlentieftaucher in deine Contact-Liste ein
madmaxx
Ehrenmitglied




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

madmaxx 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

Wieder mal sorry für mein geringes Scriptverständniss aber muss es nicht Getintelligence->player heißen?


__________________

"Die Flamme unsrer Väter wird nie erlöschen
sie lodert in uns auf Ewigkeiten
die Zeit steht kurz still, wir erinnern uns
mit stolzem Gefühl."

Das aktuelle TESCSKompendium & einiges mehr findet ihr hier

31.08.2003, 20:08 Profil von Füge  deiner Freunde-Liste hinzu Email an madmaxx senden Homepage von madmaxx Füge madmaxx in deine Contact-Liste ein
Garak
Admin




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

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

Zitat:
Original von madmaxx
Wieder mal sorry für mein geringes Scriptverständniss aber muss es nicht Getintelligence->player heißen?



nein, maxx, sorry : Das Muster lautet immer

Objekt -> funktion

player -> Getintelligence ist also korrekt, und das sollte Perlentieftaucher auch in seinem Script ändern...


allerdings frage ich mich, warum das zu nem Right Eval führt - Left Eval wäre logischer - da muss der compiler wohl etwas gründlich missinterpretieren...


__________________
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

31.08.2003, 20:40 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
BleedingMoon
Mage




Dabei seit: August 2003
Geschlecht:
Herkunft:
Beiträge: 210

BleedingMoon 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

madmaxx könnte damit recht haben, dass es andersheißen müßte, also Player -> GetIntelligence
in diesem thread kommt das zum beispiel auch vor
getintelligence


und außerdem würd ich der übersichthalber, das skript so umschreiben:


begin MY_bk_1stGrade_SC

short done

if ( done == 1 ) ; <- braucht man wahrscheinlich nicht
Return ; ............. wenn man stopscript verwendet
endif

if ( OnActivate == 1 )
.......if ( Player -> GetIntelligence > 20 )
..............player -> AddSpell MY_Frenzy
..............player -> AddSpell MY_Light
..............player -> AddSpell MY_Chaossphere
..............player -> AddSpell MY_MagicShieldSmall
..............player -> AddSpell MY_Blind
..............player -> AddSpell MY_Calm
..............player -> AddSpell MY_Charm
..............player -> AddSpell MY_Sound
..............player -> AddSpell MY_EnergieBolt
..............player -> AddSpell MY_Erschrecken
..............MessageBox, "Zauber des ersten Grades erlernt!" "Ok"
.......else
..............MessageBox, "Du hast noch nicht die nötige Intelligenz um diesen Grad zu erlernen!" "Ok"
.......endif

set done to 1
return; (??) .... stopscript
endif



ist doch westentlich kürzer und du spartst dir eine if-abfrage und einen set-to-befehl...

allerdings könnte man auch noch für return, um das script zu beenden folgendes nehmen:

Zitat:
stopscript MY_bk_1stGrade_SC

verwenden... aber wie man das mit dem stopscript richtig handhabt, kann dir garak wohl besser sagen als ich


__________________
|. There are only 10 types of people in the world: those who understand binary, and those who don't .|

31.08.2003, 20:51 Profil von Füge  deiner Freunde-Liste hinzu Email an BleedingMoon senden Homepage von BleedingMoon
Garak
Admin




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

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

Stopscript funktioniert normalerweise mit Globalen scripts... bin mir unsicher, ob es bei direkt objektgebundenen Scripts auch korrekt arbeitet...


__________________
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

31.08.2003, 20:57 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
BleedingMoon
Mage




Dabei seit: August 2003
Geschlecht:
Herkunft:
Beiträge: 210

BleedingMoon 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

achso ok .... ich seh schon, ich wende das einfach besser gar net an...

@garak kannst du vielleicht mal, wenn du zeit und lust hast, in die FAQ reinschreiben, was nen left-right eval fehler ist?? würd mich nämlich mal brennend interessieren ;-)))


<- gerade zu faul zum googlen is *ggg*


__________________
|. There are only 10 types of people in the world: those who understand binary, and those who don't .|

31.08.2003, 21:04 Profil von Füge  deiner Freunde-Liste hinzu Email an BleedingMoon senden Homepage von BleedingMoon
madmaxx
Ehrenmitglied




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

madmaxx 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

was ich jetzt verstanden hab ist ein left eval fehler ein fehler auf der linken seite einer Gleichung z.B. wenn da das command statt das Objekt steht.
Right Eval müsste demnach ein fehler auf der rechten seite sein, z.B. falscher Wert oder sowas ^^


__________________

"Die Flamme unsrer Väter wird nie erlöschen
sie lodert in uns auf Ewigkeiten
die Zeit steht kurz still, wir erinnern uns
mit stolzem Gefühl."

Das aktuelle TESCSKompendium & einiges mehr findet ihr hier

31.08.2003, 21:39 Profil von Füge  deiner Freunde-Liste hinzu Email an madmaxx senden Homepage von madmaxx Füge madmaxx in deine Contact-Liste ein
Perlentieftaucher
Warrior




Dabei seit: Juli 2003
Geschlecht:
Herkunft: Osnabrück
Beiträge: 85

Perlentieftaucher 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

Mannomannomann! So schnell wie ihr antwortet kann man ja gar nicht nachschauen ! Riesengroßes Lob an das PMW Team "Schleim" !

@Garak: Okay, danke für den Tip! Ich werds mal so probieren und dann Morgen posten obs klappt.

@BleedingMoon: Mit StopScript hatte ich, wie Garak schon richtig vermutet hat Probleme bei Local Scripts, deswegen benutze ich immer den done bwz. doonce Befehl. Hat auch immer gut geklappt. Und das mit der Schreibweise. Ich hab Scripting for Dummies (teilweise) gelesen. Seitdem benutze ich auch diese Schreibweise. Beim reinkopieren wurd es nur seltsamerweise so untereinandergesetzt.

Was mir gerade noch einfällt, ich glaube das mit dem Right Eval liegt an der OnActivate Abfrage da ich mit der ja auch in Betten und Schrein Scripts immer ein Right Eval kriege. Nur wieso? Ich hab in meiner Mod ca 900 Scripts. Kann es sein das irgendein Script den OnActivate Befehl verändert, deaktiviert oder in anderer Art und Weise beeinflusst? Wenn ja dann bin ich schon n ganzes Stückchen weiter und kann mich auf die Suche nach dem Fehler machen.


__________________
Wirklichkeit ist ein vorübergehender Traum, aber ein Traum ist Wirklichkeit für eine Ewigkeit
Das Leben ist zwar bloß ein Spiel, aber die Grafik ist verdammt gut.

Dieser Beitrag wurde von Perlentieftaucher am 31.08.2003, 22:11 Uhr editiert.

31.08.2003, 22:08 Profil von Füge  deiner Freunde-Liste hinzu Email an Perlentieftaucher senden Füge Perlentieftaucher in deine Contact-Liste ein
Garak
Admin




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

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

Ich glaub eher, dass Du die originalscripte auf schreinen und Betten ( versehentlich? ) verändert hat - das die scriptsprache befehle aushebeln könnte wär mir neu....


__________________
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

01.09.2003, 09:26 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Perlentieftaucher
Warrior




Dabei seit: Juli 2003
Geschlecht:
Herkunft: Osnabrück
Beiträge: 85

Perlentieftaucher 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

So. Ich habs jetzt mit player-> GetIntelligence gecheckt und wer hätte es gedacht? SCRIPT EXPRESSION!!! Ich hab drüber nachgedacht den OnActivate mit
( player-> GetItemCount MY_bk_1stGrade == 1 ) auszutauschen da der OA Befehl sowieso irgendwie "defekt" zu sein scheint Wär aber von der Lösung her aber nicht so schön. Is ja realistischer wenn man das Buch erst lesen muss um die Zauber zu lernen anstatt einfach nur das Buch bzw. die Spruchrolle in seinem Inventar zu haben.

@Garak: Nee ICH habe am Bed_Standard Script nichts verändert. Ich habs nur mal vor einiger Zeit mit nem eigenen Bed Script (Mitdemselben Code wie orig.) ersetzt weil ich dachte das könne den Fehler beheben. Habs aber schnell wieder durch das originale ersetzt weil mein Script merkwürdigerweise 2 Right Evals auslöste. Und an Shrine Scripts hab ich mich noch nie vergriffen. Ich meine die Shrine Scripts sind mir eigentlich egal. Nur eines ist klar: RightEval taucht IMMER in Scripts mit dem OnActivate Befehl auf. Was soll ich nur tun, den Befehl brauche ich!

Edit: So habs jetzt mit GetItemCount gemacht. Läuft auch soweit. Is nur komisch das man die Sprüche lernt sobald man das Buch in seinem Inventar hat. Aber was soll´s muss ich wohl irgendwie ohne den OnActivate Befehl auskommen...


__________________
Wirklichkeit ist ein vorübergehender Traum, aber ein Traum ist Wirklichkeit für eine Ewigkeit
Das Leben ist zwar bloß ein Spiel, aber die Grafik ist verdammt gut.

Dieser Beitrag wurde von Perlentieftaucher am 01.09.2003, 14:55 Uhr editiert.

01.09.2003, 14:09 Profil von Füge  deiner Freunde-Liste hinzu Email an Perlentieftaucher senden Füge Perlentieftaucher in deine Contact-Liste ein
Egalmoth
Scout



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

Egalmoth 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 Problem warum Dein Skript nach der "OnActivate"-Abfrage nicht läuft ist, weil Du als Resultat nicht Activate eingefügt hast. Das muß bei dieser Abfrage immer rein, sonst funzt das Skript nicht, frag´mich bitte nicht warum, habe es vergessen...

if ( OnActivate == 1 )
if ( blubs.. )
Activate
...

Hoffe, dass das der Fehler ist/ war.
Könnte auch daran liegen, dass Du nach MessageBox ´nen Komma gemacht hast, soweit ich das weiß und verwendet habe, muß da keines hin, und zischen

Player->AddSpell ...

würde ich kein Freizeichen setzen (Player natürlich noch groß schreiben) manchmal, oder ziehmlich häufig meckert Mw wegen solcher Kleinigkeiten, manchmal funktioniert das Skript trotzdem...

Warum Du beim Adden in Dein Inventar den Spruch lernst, wenn Du statt "OnActivate" "GetItemCount" verwendest, kommt daher, dass die Function guckt, ob Du die Rolle in Deinem Inventar hast, und wenn dass der Fall ist fragt das Skript die Intelligenz ab usw. ...

Ich hoffe ich konnte helfen

11.09.2003, 00:12 Profil von Füge  deiner Freunde-Liste hinzu Email an Egalmoth senden
Heavenfighter
Warrior




Dabei seit: Juli 2003
Geschlecht:
Herkunft:
Beiträge: 78

Heavenfighter 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:
Original von Perlentieftaucher
( player-> GetItemCount MY_bk_1stGrade == 1 )

Manchmal ist es ziemlich entscheidend,
player->GetItemCount MY_bk_1stGrade == 1
zu schreiben, ohne das Leerzeichen hinter dem Pfeil.
(-;

ben
<><

11.09.2003, 08:47 Profil von Füge  deiner Freunde-Liste hinzu Email an Heavenfighter senden
Perlentieftaucher
Warrior




Dabei seit: Juli 2003
Geschlecht:
Herkunft: Osnabrück
Beiträge: 85

Perlentieftaucher 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 weiss. Der Fehler lag auch daran das die OnActivate Abfrage allem Anschein nach "defekt" war und nicht an GetItemCount. Damit habe ich das Script dann ja auch letztendlich umgangen. Allerdings hab ich meine Mod aufgegeben weil ich einsah das ich ohne die OA Abfrage nicht weiterarbeiten konnte.


__________________
Wirklichkeit ist ein vorübergehender Traum, aber ein Traum ist Wirklichkeit für eine Ewigkeit
Das Leben ist zwar bloß ein Spiel, aber die Grafik ist verdammt gut.

Dieser Beitrag wurde von Perlentieftaucher am 11.09.2003, 15:18 Uhr editiert.

11.09.2003, 15:17 Profil von Füge  deiner Freunde-Liste hinzu Email an Perlentieftaucher senden Füge Perlentieftaucher in deine Contact-Liste ein
Perlentieftaucher
Warrior




Dabei seit: Juli 2003
Geschlecht:
Herkunft: Osnabrück
Beiträge: 85

Perlentieftaucher 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:
Original von Egalmoth
Das Problem warum Dein Skript nach der "OnActivate"-Abfrage nicht läuft ist, weil Du als Resultat nicht Activate eingefügt hast. Das muß bei dieser Abfrage immer rein, sonst funzt das Skript nicht, frag´mich bitte nicht warum, habe es vergessen...

if ( OnActivate == 1 )
if ( blubs.. )
Activate
...

Hoffe, dass das der Fehler ist/ war.
Könnte auch daran liegen, dass Du nach MessageBox ´nen Komma gemacht hast, soweit ich das weiß und verwendet habe, muß da keines hin, und zischen

Player->AddSpell ...

würde ich kein Freizeichen setzen (Player natürlich noch groß schreiben) manchmal, oder ziehmlich häufig meckert Mw wegen solcher Kleinigkeiten, manchmal funktioniert das Skript trotzdem...

Warum Du beim Adden in Dein Inventar den Spruch lernst, wenn Du statt "OnActivate" "GetItemCount" verwendest, kommt daher, dass die Function guckt, ob Du die Rolle in Deinem Inventar hast, und wenn dass der Fall ist fragt das Skript die Intelligenz ab usw. ...

Ich hoffe ich konnte helfen



Da erzählst du mir nichts neues das weiss ich alles. Ich meinte ja auch das es komisch rüberkommt wenn man die Spells lernt sobald man das Buch in seinem Inventar hat. Und wgen dem OnActivate Befehl: Siehe meine Antwort bei Heavenfighter.

PS: Wegen Komma und Zuweisungen bei Objekten. Ich achte penibelst auf solche Kleinigkeiten. Is mir gleich als erstes aufgefallen das MW ziemlich zickig ist


__________________
Wirklichkeit ist ein vorübergehender Traum, aber ein Traum ist Wirklichkeit für eine Ewigkeit
Das Leben ist zwar bloß ein Spiel, aber die Grafik ist verdammt gut.

11.09.2003, 15:23 Profil von Füge  deiner Freunde-Liste hinzu Email an Perlentieftaucher senden Füge Perlentieftaucher 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