Kill Uniqes

05/28/2010 00:53 wessi86#1
Hi, also in meinem modifizierten D2NT kann ich in den jeweiligen Scripts einstellen, ob er das komplette Level clearen soll (NTConfig_ClearLevel), oder nur Uniques/Champions (NTConfig_ClearActLevel).
Jetzt wollte ich in die entsprechenden Skripte ne If-Else-Schleife einbauen, dass man dann in der Char-config das entsprechend einstellen kann.
Die Schleife sieht dann so aus:

Code:
	if(NTConfig_KillUniques)
	{
		if(!NTA_ClearActLevel())
		{
			NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
			return;
		}
	}

	else
	{
		if(!NTA_ClearLevel())
		{
			NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
			return;
		}
	}
In der Char-config sieht das dann z.B. so aus:
Code:
NTConfig_Script.push("Akt1-Mausoleum.ntj"); NTConfig_KillBloodRaven = false; NTConfig_KillBishibosh = true; NTConfig_KillUniques = false;
Das Problem ist, dass es bei manchen Skripten funktioniert (Flammenfluss) und bei anderen wiederum nicht (Mausoleum). Woran kann das liegen?
Ich muss noch dazu sagen, das ich überhaupt nicht programmieren kann, deshalb kann es auch sein, dass ich da totalen mist gemacht hab.

Hoffe, ihr könnt mir helfen.

mfg

Edit: Ich poste auch mal die Skripte.

Flammenfluss:

Mausoleum:
05/28/2010 12:15 Muddy Waters#2
Erstmal Kleinkram:
if-Bedingungen sind keine Schleifen, Schleifen haben die Eigenschaft mehrmals durchzulaufen bzw. durchlaufen zu können. ;)

Dann ist die Ausgabe im Fehlerfall bei dir identisch, obwohl es sich um zwei verschiedene Funktionen handelt die dort aufgerufen werden. Ist eine absolute Kleinigkeit, kann aber zu Verwirrung im Fehlerfall führen, weil du an der falschen Stelle suchst.
So müsste es aussehen:
Code:
    if(NTConfig_KillUniques)
    {
        if(!NTA_ClearActLevel())
        {
            NTC_SendMsgToScript("NTBotGame.ntj", [COLOR=Red]"NTA_ClearActLevel()"[/COLOR]);
            return;
        }
    }

    else
    {
        if(!NTA_ClearLevel())
        {
            NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
            return;
        }
    }
Ansonsten kann man an dieser Stelle sehr wenig sagen, ohne die tatsächlichen Scripte zu sehen. Ich persönlich würde noch hinterfragen, warum man zwei verschiedene Funktionen nimmt, die eigentlich fast gleich ablaufen, anstatt einfach eine zu nehmen und bei der dann einen entsprechenden Parameter einzuführen. :)

Lg
Muddy
05/28/2010 12:55 wessi86#3
Quote:
Originally Posted by Muddy_Waters View Post
Erstmal Kleinkram:
if-Bedingungen sind keine Schleifen, Schleifen haben die Eigenschaft mehrmals durchzulaufen bzw. durchlaufen zu können. ;)

Dann ist die Ausgabe im Fehlerfall bei dir identisch, obwohl es sich um zwei verschiedene Funktionen handelt die dort aufgerufen werden. Ist eine absolute Kleinigkeit, kann aber zu Verwirrung im Fehlerfall führen, weil du an der falschen Stelle suchst.
So müsste es aussehen:
Code:
	if(NTConfig_KillUniques)
	{
		if(!NTA_ClearActLevel())
		{
			NTC_SendMsgToScript("NTBotGame.ntj", [COLOR=Red]"NTA_ClearActLevel()"[/COLOR]);
");
			return;
		}
	}

	else
	{
		if(!NTA_ClearLevel())
		{
			NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
			return;
		}
	}
Ansonsten kann man an dieser Stelle sehr wenig sagen, ohne die tatsächlichen Scripte zu sehen. Ich persönlich würde noch hinterfragen, warum man zwei verschiedene Funktionen nimmt, die eigentlich fast gleich ablaufen, anstatt einfach eine zu nehmen und bei der dann einen entsprechenden Parameter einzuführen. :)

Lg
Muddy
Hey,
ok, daran lags. :) Danke dir! Ich versteh bloß nicht, warum dann immer die Uniques gekillt wurden (ClearActLevel), und das Skript nicht normal gecleart wurde (ClearLevel). Den Letzten Satz verstehe ich nicht^^
05/28/2010 14:17 Muddy Waters#4
Quote:
Originally Posted by wessi86 View Post
Hey,
ok, daran lags. :) Danke dir! Ich versteh bloß nicht, warum dann immer die Uniques gekillt wurden (ClearActLevel), und das Skript nicht normal gecleart wurde (ClearLevel). Den Letzten Satz verstehe ich nicht^^
Daran lags? :D

Ohne das nicht gut zu heissen, daran kann es gar nicht liegen, weil das nur eine Ausgabe betrifft. Und die auch nur im Fehlerfall. ;)

Das lag garantiert an etwas anderem...
Ich habe übrigen ein
Code:
");
zuviel gepostet, ich hoffe das hast du bemerkt und nicht so übernommen, denn das wäre tatsächlich falsch. ;)

Lg
Muddy
05/28/2010 14:46 wessi86#5
Quote:
Originally Posted by Muddy_Waters View Post
Daran lags? :D

Ohne das nicht gut zu heissen, daran kann es gar nicht liegen, weil das nur eine Ausgabe betrifft. Und die auch nur im Fehlerfall. ;)

Das lag garantiert an etwas anderem...
Ich habe übrigen ein
Code:
");
zuviel gepostet, ich hoffe das hast du bemerkt und nicht so übernommen, denn das wäre tatsächlich falsch. ;)

Lg
Muddy
hm, komisch. ich hab auf jeden fall nur das geändert. das
Code:
");
hab ich bemerkt ;)