PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was ist an diesem Script falsch?



Phlebiac
27-10-04, 13:15
Folgendes Skript habe ich (modifiziert) aus Iladrions NPC Tutorial abgeschrieben.
Aber irgendwie scheint es da ein Problem zu geben.

Er schlägt irgendwie vor, dass ich etwas in Line 5 ändern soll. Aber ich wüßte nicht was.

begin yasmin_findin_script

short NoLore
short QuestState
short Init

if (MenuMode == 1)
return
endif

if (CellChanged == 1)
return
endif

if (Queststate >= 49)
return
endif

if (init != 1)
set init to 1
addtopic "My husband Yasar"
endif

if (GetHealth <= 0)
if (QuestState != 0)
if (Queststate != 50)
if (Queststate != 49)
Journal "AUW_Yasar's Diary" 99
endif
endif
endif
endif

end

Phlebiac
27-10-04, 13:15
Folgendes Skript habe ich (modifiziert) aus Iladrions NPC Tutorial abgeschrieben.
Aber irgendwie scheint es da ein Problem zu geben.

Er schlägt irgendwie vor, dass ich etwas in Line 5 ändern soll. Aber ich wüßte nicht was.

begin yasmin_findin_script

short NoLore
short QuestState
short Init

if (MenuMode == 1)
return
endif

if (CellChanged == 1)
return
endif

if (Queststate &gt;= 49)
return
endif

if (init != 1)
set init to 1
addtopic "My husband Yasar"
endif

if (GetHealth &lt;= 0)
if (QuestState != 0)
if (Queststate != 50)
if (Queststate != 49)
Journal "AUW_Yasar's Diary" 99
endif
endif
endif
endif

end

iladrion
27-10-04, 14:30
Also Zeile 5 wäre ja das

<pre class="ip-ubbcode-code-pre"> short Init </pre>

allerdings wüsste ich so nicht, was daran falsch sein sollte, denn den Variablennamen "init" habe ich in jedem 2. meiner Scripte als Variable drin, da sollte es keine Probs geben. Ist vielleicht im CS am Ende der Zeile noch irgendwie ein Sonderzeichen (zb Tab) hingeraten ? Sowas führt schnell zu Fehlern.

Also ich habs nochmal genau probiert, dein Script von oben kopiert und nur die beiden Journal-Zeilen ausdokumentiert, und der Script-Compiler des CS meldet mir keine Fehler beim Speichern des Scripts http://forums.ubi.com/infopop/emoticons/icon_confused.gif.

Nebenbei: Wenn du oben ein

<pre class="ip-ubbcode-code-pre">
if (Queststate &gt;= 49)
return
endif
</pre>

benutzt (gute Methode), dann brauchst du darunter nicht mehr abzufragen,

<pre class="ip-ubbcode-code-pre">

if (Queststate != 50)
</pre>

Denn wenn Queststate nicht größer 49 sein darf, um dort vorbei zu gelangen, dann kann darunter Queststate niemals 50 oder größer werden.

Phlebiac
28-10-04, 10:07
Vielleicht hilft es, wenn ich das Ganze noch etwas präziser ausführe:

Die Yasmin aus dem Script gibt dem Spieler den Auftrag, ihren Mann zu finden oder, falls dieser tot ist, sein Tagebuch zu ihr zu bringen.
Man findet dann irgendwo seine Leiche (da hab ich es doch tatsächlich geschafft mit Hilfe des MSFD ein Script für das Buch zu schreiben, dass das Journal updatet, wenn man es aufsammelt), nimmt das Buch mit und kommt damit zu Yasmin.

Dann sind folgende Einträge im Dialogeditor drin:

He is dead?
Oh, my dear Yasar, what did you do?
Did you find his diary?
ID: AUW_Yasmin_Findin
Function:
- Journal AUW_Yasar's Diary &gt; 5
- Journal AUW_Yasar's Diary &lt; 49
- Item AUW_Diary = 1
result: choice "Yes, I found it. Here you are." 1 "No, I am sorry, but I couldn't find any books near him." 2

Not even the diary could be saved.
Now I have nothing, I can bury.
I thank you anyway for telling me about him.
Please leave me now, I want to be alone.
ID: s.O.
Function:
- Function Choice = 2
result: Journal "AUW_Yasar's Diary" 49
ModDisposition -35
goodbye

You found it?
Oh, that's so kind of you. At least I have something, to remember him.
Here, take this as a little gift. It is not much, but it's all I can afford.
Please leave me now.
I want to be alone.
Function:
- Function Choice = 1
result: player -&gt; removeitem "AUW_Diary" 1
additem "AUW_Diary" 1
player -&gt; additem "gold_001" 150
Journal "AUW_Yasar's Diary" 50
ModDisposition +45
goodbye

Wenn man das Buch findet, wird das Journal auf 10 gesetzt. Die Antwort man habe das Buch nicht gefunden funktioniert wie geplant.
Wenn man die Frage nach dem Buch jedoch bejaht, tritt der Fehler auf.

Rung
28-10-04, 11:19
Hallo,

mir fällt da auch nichts Falsches auf, was diese Fehlermeldung verursachen könnte, aber wo soll denn der Tagebucheintrag "AUW_Yasar's Diary" 10 kommen? In dem Script da oben steht 99, wenn dem aber so wäre, dürfte Dein Dialog gar nicht erscheinen, weil, Du den ja mit
- Journal AUW_Yasar's Diary &gt; 5
- Journal AUW_Yasar's Diary &lt; 49
beschränkt hast, was ja bei 10 richtig wäre. Oder hab ich da jetzt etwas falsch verstanden?

Phlebiac
28-10-04, 11:59
Also das Tagebuch hat folgende Einträge:
1 Quest von Yasmin bekommen
10 Buch gefunden
49 Buch nicht zurückgegeben (Quest zu Ende)
50 Buch zurückgegeben (Quest zu Ende)
99 Yasmin tot (Quest zu Ende)

chris_tm
29-10-04, 05:45
<BLOCKQUOTE class="ip-ubbcode-quote"><font size="-1">quote:</font><HR>Originally posted by Phlebiac:
Er schlägt irgendwie vor, dass ich etwas in Line 5 ändern soll. Aber ich wüßte nicht was. <HR></BLOCKQUOTE>

Der exakte Wortlaut der Fehlermeldung ist bei sowas hilfreich, sonst muss man praktisch raten, woran es liegt.

Da der Fehler auftritt, wenn man die Frage bejaht könnte der im Resultwindow des Antworttextes liegen.

Da fällt mir als erstes die Zeile
<span class="ev_code_RED">ModDisposition +45</span>
auf.
Das <span class="ev_code_RED">+</span> ist überflüssig und das Programm könnte evtl. annehmen, dass Du "ModDispostion" wie eine Variable benutzen willst.
Noch dazu ist es die 5te Zeile im Resultwindow.
Das kann alles Zufall sein aber ich würde es einfach mal ohne das <span class="ev_code_RED">+</span> probieren.

Rein sicherheitshalber würde ich auch in der Zeile
<span class="ev_code_RED">additem "AUW_Diary" 1</span>
die Objekt ID des NPCs davorschreiben, also:
<span class="ev_code_RED">ObjektID-&gt;additem "AUW_Diary" 1</span>
Das muss aber auch nicht unbedingt ein Fehler sein.

Bleibt nur das Sprichwort:
Probieren geht über Studieren http://forums.ubi.com/infopop/emoticons/icon_wink.gif

Phlebiac
29-10-04, 09:33
Es scheint tatsächlich an der Zeile mit dem Item zu liegen. Ich hab sie einmal weggelassen, und dann hat es funktioniert.
Allerdings hat es auch nichts gebracht, die Objekt ID davor zu setzen.
Und dann scheint in dem Script noch etwas falsch zu sein.
Wenn ich den NPC töte, wird erstens permanent mein Journal upgedatet und zweitens erscheint die Nachricht auch immer noch, wenn ich die Quest schon erfüllt habe.