Seite 1 von 1

Möglichkeit abzufragen, wo sich die Gruppe befindet? (Kampf,

Verfasst: 05. Okt 2015, 13:16
von Yuan DeLazar
Hallo,

Frage wie im Titel. Sinn ist, dass ichmöchte, dass jemand im Kampf eine Item-Schaltfläche (wohl klicken, aber) nicht nutzen kann. Ginge das, wenn es solch eine Abfrage nicht gibt, vielleicht über specialstate, der ja die 4 Bereiche unterscheidet? Lässt sich einer (oder mehrere) davon gezielt ansteuern, bzw. lassen sie sich unterscheiden?

Verfasst: 05. Okt 2015, 13:23
von Lares
[quote='Yuan DeLazar','index.php?page=Thread&postID=117471#post117471']...dass jemand im Kampf eine Item-Schaltfläche (wohl klicken, aber) nicht nutzen kann.[/quote]
Wenn es nur darum geht, ein Item in einem Kampf nicht zuzulassen, kannst du dich am neuen Free-DLC orientieren. Denn da ist es mit den Seeleninstrumenten auch nicht erlaubt, sie im Kampf zu benutzen, um die Elfenlieder zu spielen. D.h., das ist wegen dem Zeitaufwand (Spieldauer) nur außerhalb des Kampfes möglich.

Verfasst: 05. Okt 2015, 13:45
von Yuan DeLazar
Wow, das war einfach. Klasse Tipp, danke!

Code: Alles auswählen

if (hasEffect ({"who":curchar,"which":"battlestance_1"})) inbattle = true;
if (hasEffect ({"who":curchar,"which":"battlestance_2"})) inbattle = true;
if (hasEffect ({"who":curchar,"which":"battlestance_3"})) inbattle = true;
EDIT: Wenn es jetzt noch die Möglichkeit gäbe, zw. Stadt/Land/Fluss zu unterscheiden, wäre es das Sahnehäubchen.

Verfasst: 05. Okt 2015, 14:50
von Lares
[quote='Yuan DeLazar','index.php?page=Thread&postID=117476#post117476']Wenn es jetzt noch die Möglichkeit gäbe, zw. Stadt/Land/Fluss zu unterscheiden, wäre es das Sahnehäubchen.[/quote]
Das ist meines Wissens nicht so einfach, da du dann jede Stadt und jedes Dungeon dafür benennen musst, welches im Spiel vorkommt.

Wie du hier siehst, wird das über res.dungeon geregelt:
[spoiler]

Code: Alles auswählen

	if (canAct(NiraId)) {
		if (res.dungeon == "thorwal") {
			if (getSpecialState("map.thorwal_nira") != 1) return 2;
		}
		if (res.dungeon == "rukian") {
			startDialogue("Rukian_First_Impressions");
			return "tobecontinued";
		}
[/spoiler]
Aber du siehst auch, das ich hier nur spezielle Städte abfragen will. In deinen Fall müsstest du dann alle Städte und Dungeons aufnehmen und dort dann deine Bedingung dran knüpfen. Ob das einfacher möglich wäre, weiß ich nicht.

Verfasst: 05. Okt 2015, 14:55
von Yuan DeLazar
Das wäre zumindest eine, wenn auch aufwändige, Möglichkeit. Aber wie bekommst du / wie ist "res" definiert? Das ist die entscheidente Info :)

Verfasst: 05. Okt 2015, 15:12
von Lares
[quote='Yuan DeLazar','index.php?page=Thread&postID=117483#post117483']Das wäre zumindest eine, wenn auch aufwändige, Möglichkeit. Aber wie bekommst du / wie ist "res" definiert? Das ist die entscheidente Info :)[/quote]
Stimmt ja, da fehlt noch was:

Code: Alles auswählen

	var res = getLocation();

Verfasst: 05. Okt 2015, 15:13
von Mordbrenner
http://wiki.schicksalsklinge.com/index.php/GetLocation

Und für Reiserouten könnte man theoretisch auf jede Route feste events setzen, die einen special-State gemäß der jeweiligen Route setzen und den dann abfragen.

Verfasst: 05. Okt 2015, 15:20
von Lares
[quote='Mordbrenner','index.php?page=Thread&postID=117486#post117486']Und für Reiserouten könnte man theoretisch auf jede Route feste events setzen, die einen special-State gemäß der jeweiligen Route setzen und den dann abfragen.[/quote]
Ui, das hört sich aber auch sehr aufwendig an, da man dann bei jeder Route darauf Rücksicht nehmen müsste. Also so wie ich deinen Vorschlag verstehe heißt das, sobald ich eine Stadt verlasse, gibt es das interne routeevent, das mir durch den gesetzten SpecialState sagt, das ich nun z.B. auf "seawater" reise. D.h., das muss bei jeder Stadt, bei jedem Beginn einer Reiseroute, entsprechend gesetzt werden. Kann man das nicht irgendwie abfragen, auf welcher Route (seawater, freshwater, mountain, etc.) ich mich gerade befinde?

Verfasst: 05. Okt 2015, 15:28
von Lares
Ich habe mich gerade gefragt, wie lunatic bei den Namenlosen Tagen die Dungeons, die Städte und die Schiffsreisen abgefragt hat. Da habe ich mal in den Free-DLC geschaut und folgendes gefunden:

[spoiler]

Code: Alles auswählen

var inDungeon, inTown, onMap, inHostel, inTavern, inTemple, atHealer, atDealer;
function forward() {
//check chance Wölfe

if (getSpecialState("map.nd_woelfe") != 1) {
inDungeon = false;
inTown = false;
onMap = false;
inHostel = false;
inTavern = false;
inTemple = false;
atHealer = false;
atDealer = false;
atHouse = false;
atSmith = false;
onStreet = false;
onSea = false;

//check for Map, Dungeon or Town

if (typeof(getCurrentTriggerData) == "function") inTown = true;

if (typeof(OnTrigger) == "function") inDungeon = true;

if (!inTown && !inDungeon) onMap = true;

if (inTown) var td = getCurrentTriggerData("triggertyp");

if (onMap) {
	if (getCurrentRouteType() == "sea" || getCurrentRouteType() == "highsea") { onSea = true; onMap = false; }
	}
	
[/spoiler]
Es gibt wohl dann doch eine Vereinfachung, zu prüfen, wo sich die Helden gerade befinden. :)

EDIT: lunatic war schneller. :)

Verfasst: 05. Okt 2015, 15:31
von Mordbrenner
Na prima, geht ja doch einfacher als gedacht :)

Verfasst: 05. Okt 2015, 18:24
von Yuan DeLazar
Danke, Jungs! Wie immer sehr erkenntnisreich mit euch :-)