#3
Ich versuche mal es zu erklären.

Über einen Dialog soll eine Probe auf einen Zauber laufen. Wenn diese erfolgreich war, soll ein neues Item gespawnt werden, das die jeweiligen Effekte enthält. Es geht also nicht um die Modifizierung eines schon vorhandenen Items.

[Edit]

Folgender Dialog:
[spoiler]

aengste_dlg
1
= -5) {
var res = rollCheck({"who":selid,"which":"aengste","type":"spell","mod":0,"cost":5});
}
if (res.ok)


}]]>
true



[/spoiler]

Bei "if (res.ok) " bräuchte ich jetzt sowas wie "spawn item xy"
Zuletzt geändert von Marjak am 06. Dez 2016, 17:13, insgesamt 2-mal geändert.

#4
Ja, einfach giveItemTo (dann spawnt das item einfach im Inventar, oder showItemSetList, dann bekommst Du ein loot-Fenster.


giveItemTo(Item-ID,anzahl,Char-ID);

#5
@Mordbrenner und Yuan

Mordbrenner, Yuan, ich bräuchte mal eure Hilfe.

Also, ein Item spawnt, aber ich möchte abhängig von den verbliebenen ZfP* unterschiedliche Items spawnen lassen, bei 3 ZfP* Item XX und bei 4 Item AB. Aber irgendwie krieg ich immer nur dasselbe Item, egal ob die Zauberprobe erfolgreich war oder nicht.

Hier mal das, was ich habe:
[spoiler]

aengste_dlg
1
= -5) {
var res = rollCheck({"who":selid,"which":"aengste","type":"spell","mod":0,"cost":1});
}
if (res && res.ok)
tap = res.resrem;
if (tap = 5) giveItemTo(3,1,selid);
else if (tap = 4) giveItemTo(10,1,selid);
else if (tap = 3) giveItemTo(9,1,selid);
else if (tap = 2) giveItemTo(8,1,selid);
else if (tap = 1) giveItemTo(7,1,selid);
else if (tap = 0) giveItemTo(6,1,selid);


}]]>
true




[/spoiler]

Ziemlich sicher habe ich bei dem unteren Teil nur Klammern vergessen, aber wenn ihr kurz erklären könntet, wann eine bei if-Sätzen gesetzt werden müßte, wäre das super.

#6
ich seh da jetzt auf den ersten Blick keinen Fehler. Klammern brauchst Du nach einem if nur, wenn Du mehr als einen Befehl ausführen möchtest.

Allerdings fragst Du nur auf resrem 0 bis 5 ab. Was passiert, wenn >5?

Welches der items spawnt denn? Das erste oder das letzte?

Alternativ mal nach
tap = res.resrem;

folgendes einfügen:
debugLog("tap= "+tap);

Dann zeigt er Dir in der Konsole den Wert von tap an.

#7
[s]Es wird immer nur das 3. Item gespawnt, ganz egal, ob die Probe gelungen oder mißlungen ist.[/s]

Deine Anregung werde ich gleich mal ausprobieren.


[EDIT]

Bei tap=5 wird korrekt das 3. Item gespawnt, bei allen anderen tap (ausprobiert mit tap 3, 1 und Probe mißlungen) allerdings immer das 10. Item, was auf der Liste das erste else if...(else if (tap = 4) giveItemTo(10,1,selid);) ist.

[spoiler]
if (res && res.ok)
tap = res.resrem;
debugLog("tap= "+tap);
if (tap >= 5) giveItemTo(3,1,selid);
else if (tap = 4) giveItemTo(10,1,selid);
else if (tap = 3) giveItemTo(9,1,selid);
else if (tap = 2) giveItemTo(8,1,selid);
else if (tap = 1) giveItemTo(7,1,selid);
else if (tap = 0) giveItemTo(6,1,selid);
[/spoiler]

Irgendwie scheint er nur die ersten beiden Einträge zu nehmen
Zuletzt geändert von Marjak am 06. Dez 2016, 23:15, insgesamt 3-mal geändert.

#8
Gut, die Lösung war zwar nicht logisch, dafür aber ziemlich einfach.

Die Engine kann mit "tap = 3" nichts anfangen. Habe jetzt alle Tap-Einträge auf >="Wert" gesetzt und jetzt geht es.

Mordbrenner, vielen vielen Dank. Damit ist jetzt mein erster "Mod" fast fertig.
Antworten

Zurück zu „Modding“

cron