[Release] Muddy's D2NT

06/15/2010 20:08 Diablofarmer#16
ich glaub das hast du falsch verstanden, nicht jeder hat die Rechte seine Modifikationen direkt zu einzubaun, es sollte nur eine hand voller leute, die Rechte haben, scripte zu uppen...
Suppen versalzt man nur , wenn einer im Alleingang seinen Kopf durchsetzen möchte ..
Naja die Vorteile einer Gruppenarbeit mit fähigen leuten überwiegen liegen für mich klar auf der Hand , aber war auch nurn Vorschlag :)
06/15/2010 20:43 GoA_TrancE#17
I mean this as example:

215 Stones of jordans sold to merchants
[here scripts wait 5 minutes for next SOJ Sale] - i want this [here scripts wait 10 (or more) minutes for next SOJ Sale]
[no SOJs sold]
[script continue]
[left game]
06/15/2010 21:59 Muddy Waters#18
Quote:
Originally Posted by Diablofarmer View Post
ich glaub das hast du falsch verstanden, nicht jeder hat die Rechte seine Modifikationen direkt zu einzubaun, es sollte nur eine hand voller leute, die Rechte haben, scripte zu uppen...
Suppen versalzt man nur , wenn einer im Alleingang seinen Kopf durchsetzen möchte ..
Naja die Vorteile einer Gruppenarbeit mit fähigen leuten überwiegen liegen für mich klar auf der Hand , aber war auch nurn Vorschlag :)
Läuft. :)

Quote:
Originally Posted by GoA_TrancE View Post
I mean this as example:

215 Stones of jordans sold to merchants
[here scripts wait 5 minutes for next SOJ Sale] - i want this [here scripts wait 10 (or more) minutes for next SOJ Sale]
[no SOJs sold]
[script continue]
[left game]
Guess you didn't really got the point then, but anyway.

To change the idle time for the initial soj message in the game, change your NTBotGame.ntj at line 140 to this:
Code:
if(!LoopRunning)
            {
                if(InitialTime+5E3 >= GetTickCount())
                    LoopRuntime = ++MessageCount*10*60E3; // Wait 10 Minutes for the very first message in a game
                else
                    LoopRuntime = ++MessageCount*5*60E3; // Wait (5 Minutes * Number of Soj Messages) for any other message
                LoopMode = 1;
                NT_AntiIdle();
            }
            else
                LoopRuntime = ++MessageCount*5*60E3;
Untested, should still do fine though. This should also show how to change the idle mode runtime generally. ;)

Regards
Muddy
06/15/2010 23:35 GoA_TrancE#19
thanks :)
06/17/2010 17:16 lortl#20
@muddy
Ich wollte das NTBotGame-Skript so abändern, dass es auch für Leute funktioniert, die nicht "deinen" Bot benützen und nur die Exp anzeige haben wollen....
Klappt bis jetzt auch alles, das einzige Problem ist, dass wenn ein Skript zu Ende läuft, das nächste nicht beginnt

Code:
var CurScriptIndex = 0;
var LastScript = false;


var CurScriptIndex = 0;
var LastScript = false;

// World Event/Soj Sale
var MessageCount = 0;
var SojSoldString = "";
var SojCount = 0;
var InitialSojCount = 0;
var InitialTime;
var RunScript = false;
var LoopRunning = false;
var LoopRuntime = 0;
var LoopMode = -1;

var CloneDiabloString = "";
var CloneDiabloNotify = false;

// Statistics... :)
var GameStartTick;
var GameStartExp;
var TotalGold = 0;
var Errors = 0;
var GameStartCharLevel;
var GoldPerScript = 0;
var PreGold;
var OutputString;
var RvUsed = 0;
var MpUsed = 0;
var HpUsed = 0;
var LootedMonstersCount = 0;
var PickedItemsCount = 0;
var myCounter = 0;

function NTMain()
{
	GameStartTick = GetTickCount();
	SetStatusText("ÿc8Initializing...");
	Delay(1000);

	//Print("ÿc4[+] NTBot 4.2 [+]");

	Include("libs/common/NTCommon.ntl");
	NTC_IncludeLibs();
	NTC_IncludeConfig("NTBot/char_configs");

	NT_LoadConfig();
	NTSI_LoadNIPFiles("NTBot/item_configs");

	if(NTConfig_StartDelay > 0);
		NTC_Delay(NTConfig_StartDelay);

	SetUIState(0x0A, true);

	NTT_GetCorpses();

	GameStartExp = me.GetStat(13);
	GameStartCharLevel = NT_GetRequiredExp(me.GetStat(12));
	PreGold = NTC_MyGold();

	if(NTConfig_Script.length > 0)
	{
		NTCU_InitCubing();

		NTT_ClearInventory();
		NTT_ClearBelt();

		Load("NTBot/tools/NTToolsThread.ntj");

		if(NTConfig_CheckCloneDiablo)
		{
		 	CloneDiabloString = GetLocaleString(11005);
			RegisterEvent(EVENT_GAMEMSG, NT_GameMsgEvents);
		}

		RegisterEvent(EVENT_KEYDOWN, NT_KeyEvents);
		RegisterEvent(EVENT_SCRIPTMSG, NT_ScriptMsgEvents);

		Load("NTBot/bots/" + NTConfig_Script[CurScriptIndex]);
		SetStatusText("Running " + NTConfig_Script[CurScriptIndex]);

		while(!LastScript || CloneDiabloNotify)
		{
			NTC_Delay(500);
		}
	}
	SetStatusText("ÿc1Exiting game...");
	
	if(Errors > 1)
		OutputString = "ÿc1Game" + ((me.gamename.slice(me.gamename.lastIndexOf('-')+1))? " ("+ me.gamename.slice(me.gamename.lastIndexOf('-')+1) + ") " : " ") + "was finished!;";
	else
		OutputString = "ÿ48A209Game" + ((me.gamename.slice(me.gamename.lastIndexOf('-')+1))? " ("+ me.gamename.slice(me.gamename.lastIndexOf('-')+1) + ") " : " ") + "was finished successfully!;";
	OutputString += (GameStartCharLevel != NT_GetRequiredExp(me.GetStat(12)) && NT_GetRequiredExp(me.GetStat(12)) != -1)? "ÿc2!!! Level up (" + me.GetStat(12) + ") !!!\n" : "";
	OutputString += "ÿc0Game Duration:ÿc8 " + ((parseInt((GetTickCount()-GameStartTick)/36E5) >= 1) ? parseInt((GetTickCount()-GameStartTick)/36E5) + "h " : "") + (parseInt((GetTickCount()-GameStartTick)/6E4)) + "m " + (parseInt((GetTickCount()-GameStartTick)/1000)%60) + "s";
	OutputString += ((me.GetStat(13)-GameStartExp) && (GameStartCharLevel == NT_GetRequiredExp(me.GetStat(12)))?"\nÿc0Absolute Experience Gain:ÿc8 " + (me.GetStat(13)-GameStartExp) : "");
	OutputString += ((me.GetStat(13)-GameStartExp) && (GameStartCharLevel == NT_GetRequiredExp(me.GetStat(12)))?"\nÿc0Relative Experience Gain:ÿc8 " + ((NT_GetRequiredExp(me.GetStat(12)+1)-NT_GetRequiredExp(me.GetStat(12)) != 0)?((me.GetStat(13)-GameStartExp)/(NT_GetRequiredExp(me.GetStat(12)+1)-NT_GetRequiredExp(me.GetStat(12)))*100).toFixed(4) + "%" : "Invalid") : "");
	OutputString += ((RvUsed || MpUsed || HpUsed)?"\nÿc0Potions Used:ÿc1 [" + HpUsed + "]ÿc3 [" + MpUsed + "]ÿ7E0064 [" + RvUsed + "]":"");
	OutputString += ((NTC_MyGold()-PreGold > 0)?"\nÿc0Total Gold Gathered:ÿc8 " + ((NTC_MyGold()-PreGold <= 1E5)?((NTC_MyGold()-PreGold)/1E3).toFixed(1) + "k":((NTC_MyGold()-PreGold)/1E6).toFixed(2) + "mio") : "");
	OutputString += (PickedItemsCount)?"\nÿc0Items Picked:ÿc8 " + PickedItemsCount : "";
	OutputString += (LootedMonstersCount)?"\nÿc0Corpses Looted:ÿc8 " + LootedMonstersCount : "";
	OutputString +=	(Errors)?"\nÿc1Error Occurrence: " + Errors : "";
	
	NTC_SendLogToOOG(NTC_LOG_COMMON, OutputString);
	ExitGame();
}

function NT_GameMsgEvents(msg, type)
{
	if(type == 4 && msg.indexOf(CloneDiabloString) != -1)
	{
		CloneDiabloNotify = true;

		NTC_SendLogToOOG(NTC_LOG_COMMON, "ÿc4" + CloneDiabloString);
		SetStatusText(CloneDiabloString);

		me.maxgametime = 0;

		NTC_StopScript(NTConfig_Script[CurScriptIndex]);
		NTC_Delay(500);

		NTTM_CheckAct();
	}
}

function NT_KeyEvents(keycode)
{
	//Print("Keycode: " + keycode);
	var _script = NTC_FindScript(NTConfig_Script[CurScriptIndex]);
	switch(keycode)
	{
		case 19: // pause (PAUSE)

			if(_script)
			{
				if(_script.running)
				{
					_script.Stop();
					NTC_Delay(300);
					ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
					SetStatusText("ÿc1Stopped ÿc4" + NTConfig_Script[CurScriptIndex]);

				}
				else
				{
					Load("NTBot/bots/" + NTConfig_Script[CurScriptIndex]);
					SetStatusText("ÿc2Running ÿc4" + NTConfig_Script[CurScriptIndex]);
				}
			}
			break;

		case 36: // show coordinates (POS1/HOME)
			Print("Current Position: (ÿc2" + me.x + "ÿc0|ÿc1" + me.y + "ÿc0) [ÿc7" + me.areaid + "ÿc0]");
			break;
		case 46: // exit (DEL)
			RunScript = true;
			SetStatusText("ÿc1Exiting game...");
				
			OutputString = "ÿ258CDDGame" + ((me.gamename.slice(me.gamename.lastIndexOf('-')+1))? " ("+ me.gamename.slice(me.gamename.lastIndexOf('-')+1) + ") " : " ") + "was finished by User!;";
			OutputString += (GameStartCharLevel != NT_GetRequiredExp(me.GetStat(12)))? "ÿc1Level Up!\n" : "";
			OutputString += "ÿc0Game Duration:ÿc8 " + ((parseInt((GetTickCount()-GameStartTick)/36E5) >= 1) ? parseInt((GetTickCount()-GameStartTick)/36E5) + "h " : "") + (parseInt((GetTickCount()-GameStartTick)/6E4)) + "m " + (parseInt((GetTickCount()-GameStartTick)/1000)%60) + "s";
			OutputString += ((me.GetStat(13)-GameStartExp) && (GameStartCharLevel == NT_GetRequiredExp(me.GetStat(12)))?"\nÿc0Absolute Experience Gain:ÿc8 " + (me.GetStat(13)-GameStartExp) : "");
			OutputString += ((me.GetStat(13)-GameStartExp) && (GameStartCharLevel == NT_GetRequiredExp(me.GetStat(12)))?"\nÿc0Relative Experience Gain:ÿc8 " + ((NT_GetRequiredExp(me.GetStat(12)+1)-NT_GetRequiredExp(me.GetStat(12)) != 0)?((me.GetStat(13)-GameStartExp)/(NT_GetRequiredExp(me.GetStat(12)+1)-NT_GetRequiredExp(me.GetStat(12)))*100).toFixed(4) + "%" : "Invalid") : "");
			OutputString += ((RvUsed || MpUsed || HpUsed)?"\nÿc0Potions Used:ÿc1 [" + HpUsed + "]ÿc3 [" + MpUsed + "]ÿ7E0064 [" + RvUsed + "]":"");
			OutputString += ((NTC_MyGold()-PreGold > 0)?"\nÿc0Total Gold Gathered:ÿc8 " + ((NTC_MyGold()-PreGold <= 1E5)?((NTC_MyGold()-PreGold)/1E3).toFixed(1) + "k":((NTC_MyGold()-PreGold)/1E6).toFixed(2) + "mio") : "");
			OutputString += (PickedItemsCount)?"\nÿc0Items Picked:ÿc8 " + PickedItemsCount : "";
			OutputString += (LootedMonstersCount)?"\nÿc0Corpses Looted:ÿc8 " + LootedMonstersCount : "";
			OutputString +=	(Errors)?"\nÿc1Error Occurrence: " + Errors : "";
	
			NTC_SendLogToOOG(NTC_LOG_COMMON, OutputString);
				
			if(NTConfig_PublicMode)
				Say("Next game!");
			NTC_PingDelay(2000);
			ExitGame();
			break;
		


	}
} 

function NT_ScriptMsgEvents(msg)
{
	var _area;

		switch(msg)
		{
		case "SCRIPT_END":
			if(++CurScriptIndex < NTConfig_Script.length)
			{
				if(NTConfig_ShowGoldPickupsPerScript)
				{
					if(GoldPerScript > 0)
						Print("ÿc8Picked " + (GoldPerScript/1E3).toFixed(1) + "k gold running " + NTConfig_Script[CurScriptIndex-1]);
					
					GoldPerScript = 0;
				}
				NTTM_CheckAct();
				Load("NTBot/bots/" + NTConfig_Script[CurScriptIndex]);
				SetStatusText("ÿc2Running ÿc4" + NTConfig_Script[CurScriptIndex]);
			}
			else
				LastScript = true;
			break;

		case "SET_DEFAULT_STATUS":
			var _script = NTC_FindScript(NTConfig_Script[CurScriptIndex]);
			if(_script)
			{
				NTC_Delay(2500);
				if(_script.running)
					SetStatusText("ÿc2Running ÿc4" + NTConfig_Script[CurScriptIndex]);
				else
					SetStatusText("ÿc1Stopped ÿc4" + NTConfig_Script[CurScriptIndex]);
			}
			else
				SetStatusText("ÿc1Cannot set default status!");
			break;
		default:
			Print("ÿc1" + NTConfig_Script[CurScriptIndex] + " : " + msg + " failed");

			_area = GetArea();

			if(_area)
				NTC_SendLogToOOG(NTC_LOG_COMMON, "ÿE00000" + NTConfig_Script[CurScriptIndex] + " : " + msg + " failed (" + _area.name + ")");
			else
				NTC_SendLogToOOG(NTC_LOG_COMMON, "ÿE00000" + NTConfig_Script[CurScriptIndex] + " : " + msg + " failed (unknown area)");

			Errors++;
			if(++CurScriptIndex < NTConfig_Script.length)
			{
				NTTM_CheckAct();
				Load("NTBot/bots/" + NTConfig_Script[CurScriptIndex]);
				SetStatusText("ÿc2Running ÿc4" + NTConfig_Script[CurScriptIndex]);
			}
			else
				LastScript = true;
			break;
		}


}


function NT_EvaluateInputData(msg)
{
	switch(msg.split("_")[1])
	{
		case "LOOTED":
			LootedMonstersCount++;
			break;
		case "PICKED":
			PickedItemsCount++;
			break;
		case "SCRIPTGOLD":
			GoldPerScript += parseInt(msg.split("_")[2]);
			break;
		case "HPDRANK":
			HpUsed++;
			break;
		case "MPDRANK":
			MpUsed++;
			break;
		case "RVDRANK":
			RvUsed++;
			break;
	}
}



function NT_GetRequiredExp(level)
{
	// Returns the experience necessary for the specified level
	var _reqExp = -1;
	if(!level || level < 2 || level > 99)
		return _reqExp;
	switch(level)
	{
		case 99:
			_reqExp = 3520485254;
			break;
		case 98:
			_reqExp = 3229426756;
			break;
		case 97:
			_reqExp = 2962400612;
			break;
		case 96:
			_reqExp = 2717422497;
			break;
		case 95:
			_reqExp = 2492671933;
			break;
		case 94:
			_reqExp = 2286478756;
			break;
		case 93:
			_reqExp = 2097310703;
			break;
		case 92:
			_reqExp = 1923762030;
			break;
		case 91:
			_reqExp = 1764543065;
			break;
		case 90:
			_reqExp = 1618470619;
			break;
		case 89:
			_reqExp = 1484459201;
			break;
		case 88:
			_reqExp = 1361512946;
			break;
		case 87:
			_reqExp = 1248718217;
			break;
		case 86:
			_reqExp = 1145236814;
			break;
		case 85:
			_reqExp = 1050299747;
			break;
		case 84:
			_reqExp = 963201521;
			break;
		case 83:
			_reqExp = 883294891;
			break;
		case 82:
			_reqExp = 809986056;
			break;
		case 81:
			_reqExp = 742730244;
			break;
		case 80:
			_reqExp = 681027665;
			break;
		case 79:
			_reqExp = 624419793;
			break;
		case 78:
			_reqExp = 572485967;
			break;
		case 77:
			_reqExp = 524840254;
			break;
		case 76:
			_reqExp = 481128591;
			break;
		case 75:
			_reqExp = 441026148;
			break;
		case 74:
			_reqExp = 404234916;
			break;
		case 73:
			_reqExp = 370481492;
			break;
		case 72:
			_reqExp = 339515048;
			break;
		case 71:
			_reqExp = 311105466;
			break;
		case 70:
			_reqExp = 285041630;
			break;
		case 69:
			_reqExp = 261129853;
			break;
		case 68:
			_reqExp = 239192444;
			break;
		case 67:
			_reqExp = 219066380;
			break;
		case 66:
			_reqExp = 200602101;
			break;
		case 65:
			_reqExp = 183662396;
			break;
		case 64:
			_reqExp = 168121381;
			break;
		case 63:
			_reqExp = 153863570;
			break;
		case 62:
			_reqExp = 140783010;
			break;
		case 61:
			_reqExp = 128782495;
			break;
		case 60:
			_reqExp = 117772849;
			break;
		case 59:
			_reqExp = 107672256;
			break;
		case 58:
			_reqExp = 98405658;
			break;
		case 57:
			_reqExp = 89904191;
			break;
		case 56:
			_reqExp = 82104680;
			break;
		case 55:
			_reqExp = 74949165;
			break;
		case 54:
			_reqExp = 68384473;
			break;
		case 53:
			_reqExp = 62361819;
			break;
		case 52:
			_reqExp = 56836449;
			break;
		case 51:
			_reqExp = 51767302;
			break;
		case 50:
			_reqExp = 47116709;
			break;
		case 49:
			_reqExp = 42850109;
			break;
		case 48:
			_reqExp = 38935798;
			break;
		case 47:
			_reqExp = 35344686;
			break;
		case 46:
			_reqExp = 32050088;
			break;
		case 45:
			_reqExp = 29027522;
			break;
		case 44:
			_reqExp = 26254525;
			break;
		case 43:
			_reqExp = 23710491;
			break;
		case 42:
			_reqExp = 21376515;
			break;
		case 41:
			_reqExp = 19235252;
			break;
		case 40:
			_reqExp = 17270791;
			break;
		case 39:
			_reqExp = 15468534;
			break;
		case 38:
			_reqExp = 13815086;
			break;
		case 37:
			_reqExp = 12298162;
			break;
		case 36:
			_reqExp = 10906488;
			break;
		case 35:
			_reqExp = 9629723;
			break;
		case 34:
			_reqExp = 8458379;
			break;
		case 33:
			_reqExp = 7383752;
			break;
		case 32:
			_reqExp = 6397855;
			break;
		case 31:
			_reqExp = 5493363;
			break;
		case 30:
			_reqExp = 4663553;
			break;
		case 29:
			_reqExp = 3902260;
			break;
		case 28:
			_reqExp = 3203826;
			break;
		case 27:
			_reqExp = 2563061;
			break;
		case 26:
			_reqExp = 2050449;
			break;
		case 25:
			_reqExp = 1640359;
			break;
		case 24:
			_reqExp = 1312287;
			break;
		case 23:
			_reqExp = 1049830;
			break;
		case 22:
			_reqExp = 839864;
			break;
		case 21:
			_reqExp = 671891;
			break;
		case 20:
			_reqExp = 537513;
			break;
		case 19:
			_reqExp = 430010;
			break;
		case 18:
			_reqExp = 344008;
			break;
		case 17:
			_reqExp = 275207;
			break;
		case 16:
			_reqExp = 220165;
			break;
		case 15:
			_reqExp = 176132;
			break;
		case 14:
			_reqExp = 140906;
			break;
		case 13:
			_reqExp = 112725;
			break;
		case 12:
			_reqExp = 90180;
			break;
		case 11:
			_reqExp = 72144;
			break;
		case 10:
			_reqExp = 57715;
			break;
		case 9:
			_reqExp = 44396;
			break;
		case 8:
			_reqExp = 32886;
			break;
		case 7:
			_reqExp = 22680;
			break;
		case 6:
			_reqExp = 14175;
			break;
		case 5:
			_reqExp = 7875;
			break;
		case 4:
			_reqExp = 3750;
			break;
		case 3:
			_reqExp = 1500;
			break;
		case 2:
			_reqExp = 500;
	}
	return _reqExp;
}
Hast du eine Ahnung woran das liegen könnte? Ich habe eigentlich keine Ahnung von dem Zeugs, und habe nur bischen zusammenkopiert und gelöscht.. wird aber wohl ein kleiner Fehler sein?!
06/17/2010 20:39 Muddy Waters#21
Quote:
Originally Posted by lortl View Post
@muddy
Ich wollte das NTBotGame-Skript so abändern, dass es auch für Leute funktioniert, die nicht "deinen" Bot benützen und nur die Exp anzeige haben wollen....
Klappt bis jetzt auch alles, das einzige Problem ist, dass wenn ein Skript zu Ende läuft, das nächste nicht beginnt

Code:
var CurScriptIndex = 0;
var LastScript = false;


var CurScriptIndex = 0;
var LastScript = false;

// World Event/Soj Sale
var MessageCount = 0;
var SojSoldString = "";
var SojCount = 0;
var InitialSojCount = 0;
var InitialTime;
var RunScript = false;
var LoopRunning = false;
var LoopRuntime = 0;
var LoopMode = -1;

var CloneDiabloString = "";
var CloneDiabloNotify = false;

// Statistics... :)
var GameStartTick;
var GameStartExp;
var TotalGold = 0;
var Errors = 0;
var GameStartCharLevel;
var GoldPerScript = 0;
var PreGold;
var OutputString;
var RvUsed = 0;
var MpUsed = 0;
var HpUsed = 0;
var LootedMonstersCount = 0;
var PickedItemsCount = 0;
var myCounter = 0;

function NTMain()
{
    GameStartTick = GetTickCount();
    SetStatusText("ÿc8Initializing...");
    Delay(1000);

    //Print("ÿc4[+] NTBot 4.2 [+]");

    Include("libs/common/NTCommon.ntl");
    NTC_IncludeLibs();
    NTC_IncludeConfig("NTBot/char_configs");

    NT_LoadConfig();
    NTSI_LoadNIPFiles("NTBot/item_configs");

    if(NTConfig_StartDelay > 0);
        NTC_Delay(NTConfig_StartDelay);

    SetUIState(0x0A, true);

    NTT_GetCorpses();

    GameStartExp = me.GetStat(13);
    GameStartCharLevel = NT_GetRequiredExp(me.GetStat(12));
    PreGold = NTC_MyGold();

    if(NTConfig_Script.length > 0)
    {
        NTCU_InitCubing();

        NTT_ClearInventory();
        NTT_ClearBelt();

        Load("NTBot/tools/NTToolsThread.ntj");

        if(NTConfig_CheckCloneDiablo)
        {
             CloneDiabloString = GetLocaleString(11005);
            RegisterEvent(EVENT_GAMEMSG, NT_GameMsgEvents);
        }

        RegisterEvent(EVENT_KEYDOWN, NT_KeyEvents);
        RegisterEvent(EVENT_SCRIPTMSG, NT_ScriptMsgEvents);

        Load("NTBot/bots/" + NTConfig_Script[CurScriptIndex]);
        SetStatusText("Running " + NTConfig_Script[CurScriptIndex]);

        while(!LastScript || CloneDiabloNotify)
        {
            NTC_Delay(500);
        }
    }
    SetStatusText("ÿc1Exiting game...");
    
    if(Errors > 1)
        OutputString = "ÿc1Game" + ((me.gamename.slice(me.gamename.lastIndexOf('-')+1))? " ("+ me.gamename.slice(me.gamename.lastIndexOf('-')+1) + ") " : " ") + "was finished!;";
    else
        OutputString = "ÿ48A209Game" + ((me.gamename.slice(me.gamename.lastIndexOf('-')+1))? " ("+ me.gamename.slice(me.gamename.lastIndexOf('-')+1) + ") " : " ") + "was finished successfully!;";
    OutputString += (GameStartCharLevel != NT_GetRequiredExp(me.GetStat(12)) && NT_GetRequiredExp(me.GetStat(12)) != -1)? "ÿc2!!! Level up (" + me.GetStat(12) + ") !!!\n" : "";
    OutputString += "ÿc0Game Duration:ÿc8 " + ((parseInt((GetTickCount()-GameStartTick)/36E5) >= 1) ? parseInt((GetTickCount()-GameStartTick)/36E5) + "h " : "") + (parseInt((GetTickCount()-GameStartTick)/6E4)) + "m " + (parseInt((GetTickCount()-GameStartTick)/1000)%60) + "s";
    OutputString += ((me.GetStat(13)-GameStartExp) && (GameStartCharLevel == NT_GetRequiredExp(me.GetStat(12)))?"\nÿc0Absolute Experience Gain:ÿc8 " + (me.GetStat(13)-GameStartExp) : "");
    OutputString += ((me.GetStat(13)-GameStartExp) && (GameStartCharLevel == NT_GetRequiredExp(me.GetStat(12)))?"\nÿc0Relative Experience Gain:ÿc8 " + ((NT_GetRequiredExp(me.GetStat(12)+1)-NT_GetRequiredExp(me.GetStat(12)) != 0)?((me.GetStat(13)-GameStartExp)/(NT_GetRequiredExp(me.GetStat(12)+1)-NT_GetRequiredExp(me.GetStat(12)))*100).toFixed(4) + "%" : "Invalid") : "");
    OutputString += ((RvUsed || MpUsed || HpUsed)?"\nÿc0Potions Used:ÿc1 [" + HpUsed + "]ÿc3 [" + MpUsed + "]ÿ7E0064 [" + RvUsed + "]":"");
    OutputString += ((NTC_MyGold()-PreGold > 0)?"\nÿc0Total Gold Gathered:ÿc8 " + ((NTC_MyGold()-PreGold <= 1E5)?((NTC_MyGold()-PreGold)/1E3).toFixed(1) + "k":((NTC_MyGold()-PreGold)/1E6).toFixed(2) + "mio") : "");
    OutputString += (PickedItemsCount)?"\nÿc0Items Picked:ÿc8 " + PickedItemsCount : "";
    OutputString += (LootedMonstersCount)?"\nÿc0Corpses Looted:ÿc8 " + LootedMonstersCount : "";
    OutputString +=    (Errors)?"\nÿc1Error Occurrence: " + Errors : "";
    
    NTC_SendLogToOOG(NTC_LOG_COMMON, OutputString);
    ExitGame();
}

function NT_GameMsgEvents(msg, type)
{
    if(type == 4 && msg.indexOf(CloneDiabloString) != -1)
    {
        CloneDiabloNotify = true;

        NTC_SendLogToOOG(NTC_LOG_COMMON, "ÿc4" + CloneDiabloString);
        SetStatusText(CloneDiabloString);

        me.maxgametime = 0;

        NTC_StopScript(NTConfig_Script[CurScriptIndex]);
        NTC_Delay(500);

        NTTM_CheckAct();
    }
}

function NT_KeyEvents(keycode)
{
    //Print("Keycode: " + keycode);
    var _script = NTC_FindScript(NTConfig_Script[CurScriptIndex]);
    switch(keycode)
    {
        case 19: // pause (PAUSE)

            if(_script)
            {
                if(_script.running)
                {
                    _script.Stop();
                    NTC_Delay(300);
                    ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
                    SetStatusText("ÿc1Stopped ÿc4" + NTConfig_Script[CurScriptIndex]);

                }
                else
                {
                    Load("NTBot/bots/" + NTConfig_Script[CurScriptIndex]);
                    SetStatusText("ÿc2Running ÿc4" + NTConfig_Script[CurScriptIndex]);
                }
            }
            break;

        case 36: // show coordinates (POS1/HOME)
            Print("Current Position: (ÿc2" + me.x + "ÿc0|ÿc1" + me.y + "ÿc0) [ÿc7" + me.areaid + "ÿc0]");
            break;
        case 46: // exit (DEL)
            RunScript = true;
            SetStatusText("ÿc1Exiting game...");
                
            OutputString = "ÿ258CDDGame" + ((me.gamename.slice(me.gamename.lastIndexOf('-')+1))? " ("+ me.gamename.slice(me.gamename.lastIndexOf('-')+1) + ") " : " ") + "was finished by User!;";
            OutputString += (GameStartCharLevel != NT_GetRequiredExp(me.GetStat(12)))? "ÿc1Level Up!\n" : "";
            OutputString += "ÿc0Game Duration:ÿc8 " + ((parseInt((GetTickCount()-GameStartTick)/36E5) >= 1) ? parseInt((GetTickCount()-GameStartTick)/36E5) + "h " : "") + (parseInt((GetTickCount()-GameStartTick)/6E4)) + "m " + (parseInt((GetTickCount()-GameStartTick)/1000)%60) + "s";
            OutputString += ((me.GetStat(13)-GameStartExp) && (GameStartCharLevel == NT_GetRequiredExp(me.GetStat(12)))?"\nÿc0Absolute Experience Gain:ÿc8 " + (me.GetStat(13)-GameStartExp) : "");
            OutputString += ((me.GetStat(13)-GameStartExp) && (GameStartCharLevel == NT_GetRequiredExp(me.GetStat(12)))?"\nÿc0Relative Experience Gain:ÿc8 " + ((NT_GetRequiredExp(me.GetStat(12)+1)-NT_GetRequiredExp(me.GetStat(12)) != 0)?((me.GetStat(13)-GameStartExp)/(NT_GetRequiredExp(me.GetStat(12)+1)-NT_GetRequiredExp(me.GetStat(12)))*100).toFixed(4) + "%" : "Invalid") : "");
            OutputString += ((RvUsed || MpUsed || HpUsed)?"\nÿc0Potions Used:ÿc1 [" + HpUsed + "]ÿc3 [" + MpUsed + "]ÿ7E0064 [" + RvUsed + "]":"");
            OutputString += ((NTC_MyGold()-PreGold > 0)?"\nÿc0Total Gold Gathered:ÿc8 " + ((NTC_MyGold()-PreGold <= 1E5)?((NTC_MyGold()-PreGold)/1E3).toFixed(1) + "k":((NTC_MyGold()-PreGold)/1E6).toFixed(2) + "mio") : "");
            OutputString += (PickedItemsCount)?"\nÿc0Items Picked:ÿc8 " + PickedItemsCount : "";
            OutputString += (LootedMonstersCount)?"\nÿc0Corpses Looted:ÿc8 " + LootedMonstersCount : "";
            OutputString +=    (Errors)?"\nÿc1Error Occurrence: " + Errors : "";
    
            NTC_SendLogToOOG(NTC_LOG_COMMON, OutputString);
                
            if(NTConfig_PublicMode)
                Say("Next game!");
            NTC_PingDelay(2000);
            ExitGame();
            break;
        


    }
} 

function NT_ScriptMsgEvents(msg)
{
    var _area;

        switch(msg)
        {
        case "SCRIPT_END":
            if(++CurScriptIndex < NTConfig_Script.length)
            {
                if(NTConfig_ShowGoldPickupsPerScript)
                {
                    if(GoldPerScript > 0)
                        Print("ÿc8Picked " + (GoldPerScript/1E3).toFixed(1) + "k gold running " + NTConfig_Script[CurScriptIndex-1]);
                    
                    GoldPerScript = 0;
                }
                NTTM_CheckAct();
                Load("NTBot/bots/" + NTConfig_Script[CurScriptIndex]);
                SetStatusText("ÿc2Running ÿc4" + NTConfig_Script[CurScriptIndex]);
            }
            else
                LastScript = true;
            break;

        case "SET_DEFAULT_STATUS":
            var _script = NTC_FindScript(NTConfig_Script[CurScriptIndex]);
            if(_script)
            {
                NTC_Delay(2500);
                if(_script.running)
                    SetStatusText("ÿc2Running ÿc4" + NTConfig_Script[CurScriptIndex]);
                else
                    SetStatusText("ÿc1Stopped ÿc4" + NTConfig_Script[CurScriptIndex]);
            }
            else
                SetStatusText("ÿc1Cannot set default status!");
            break;
        default:
            Print("ÿc1" + NTConfig_Script[CurScriptIndex] + " : " + msg + " failed");

            _area = GetArea();

            if(_area)
                NTC_SendLogToOOG(NTC_LOG_COMMON, "ÿE00000" + NTConfig_Script[CurScriptIndex] + " : " + msg + " failed (" + _area.name + ")");
            else
                NTC_SendLogToOOG(NTC_LOG_COMMON, "ÿE00000" + NTConfig_Script[CurScriptIndex] + " : " + msg + " failed (unknown area)");

            Errors++;
            if(++CurScriptIndex < NTConfig_Script.length)
            {
                NTTM_CheckAct();
                Load("NTBot/bots/" + NTConfig_Script[CurScriptIndex]);
                SetStatusText("ÿc2Running ÿc4" + NTConfig_Script[CurScriptIndex]);
            }
            else
                LastScript = true;
            break;
        }


}


function NT_EvaluateInputData(msg)
{
    switch(msg.split("_")[1])
    {
        case "LOOTED":
            LootedMonstersCount++;
            break;
        case "PICKED":
            PickedItemsCount++;
            break;
        case "SCRIPTGOLD":
            GoldPerScript += parseInt(msg.split("_")[2]);
            break;
        case "HPDRANK":
            HpUsed++;
            break;
        case "MPDRANK":
            MpUsed++;
            break;
        case "RVDRANK":
            RvUsed++;
            break;
    }
}



function NT_GetRequiredExp(level)
{
    // Returns the experience necessary for the specified level
    var _reqExp = -1;
    if(!level || level < 2 || level > 99)
        return _reqExp;
    switch(level)
    {
        case 99:
            _reqExp = 3520485254;
            break;
        case 98:
            _reqExp = 3229426756;
            break;
        case 97:
            _reqExp = 2962400612;
            break;
        case 96:
            _reqExp = 2717422497;
            break;
        case 95:
            _reqExp = 2492671933;
            break;
        case 94:
            _reqExp = 2286478756;
            break;
        case 93:
            _reqExp = 2097310703;
            break;
        case 92:
            _reqExp = 1923762030;
            break;
        case 91:
            _reqExp = 1764543065;
            break;
        case 90:
            _reqExp = 1618470619;
            break;
        case 89:
            _reqExp = 1484459201;
            break;
        case 88:
            _reqExp = 1361512946;
            break;
        case 87:
            _reqExp = 1248718217;
            break;
        case 86:
            _reqExp = 1145236814;
            break;
        case 85:
            _reqExp = 1050299747;
            break;
        case 84:
            _reqExp = 963201521;
            break;
        case 83:
            _reqExp = 883294891;
            break;
        case 82:
            _reqExp = 809986056;
            break;
        case 81:
            _reqExp = 742730244;
            break;
        case 80:
            _reqExp = 681027665;
            break;
        case 79:
            _reqExp = 624419793;
            break;
        case 78:
            _reqExp = 572485967;
            break;
        case 77:
            _reqExp = 524840254;
            break;
        case 76:
            _reqExp = 481128591;
            break;
        case 75:
            _reqExp = 441026148;
            break;
        case 74:
            _reqExp = 404234916;
            break;
        case 73:
            _reqExp = 370481492;
            break;
        case 72:
            _reqExp = 339515048;
            break;
        case 71:
            _reqExp = 311105466;
            break;
        case 70:
            _reqExp = 285041630;
            break;
        case 69:
            _reqExp = 261129853;
            break;
        case 68:
            _reqExp = 239192444;
            break;
        case 67:
            _reqExp = 219066380;
            break;
        case 66:
            _reqExp = 200602101;
            break;
        case 65:
            _reqExp = 183662396;
            break;
        case 64:
            _reqExp = 168121381;
            break;
        case 63:
            _reqExp = 153863570;
            break;
        case 62:
            _reqExp = 140783010;
            break;
        case 61:
            _reqExp = 128782495;
            break;
        case 60:
            _reqExp = 117772849;
            break;
        case 59:
            _reqExp = 107672256;
            break;
        case 58:
            _reqExp = 98405658;
            break;
        case 57:
            _reqExp = 89904191;
            break;
        case 56:
            _reqExp = 82104680;
            break;
        case 55:
            _reqExp = 74949165;
            break;
        case 54:
            _reqExp = 68384473;
            break;
        case 53:
            _reqExp = 62361819;
            break;
        case 52:
            _reqExp = 56836449;
            break;
        case 51:
            _reqExp = 51767302;
            break;
        case 50:
            _reqExp = 47116709;
            break;
        case 49:
            _reqExp = 42850109;
            break;
        case 48:
            _reqExp = 38935798;
            break;
        case 47:
            _reqExp = 35344686;
            break;
        case 46:
            _reqExp = 32050088;
            break;
        case 45:
            _reqExp = 29027522;
            break;
        case 44:
            _reqExp = 26254525;
            break;
        case 43:
            _reqExp = 23710491;
            break;
        case 42:
            _reqExp = 21376515;
            break;
        case 41:
            _reqExp = 19235252;
            break;
        case 40:
            _reqExp = 17270791;
            break;
        case 39:
            _reqExp = 15468534;
            break;
        case 38:
            _reqExp = 13815086;
            break;
        case 37:
            _reqExp = 12298162;
            break;
        case 36:
            _reqExp = 10906488;
            break;
        case 35:
            _reqExp = 9629723;
            break;
        case 34:
            _reqExp = 8458379;
            break;
        case 33:
            _reqExp = 7383752;
            break;
        case 32:
            _reqExp = 6397855;
            break;
        case 31:
            _reqExp = 5493363;
            break;
        case 30:
            _reqExp = 4663553;
            break;
        case 29:
            _reqExp = 3902260;
            break;
        case 28:
            _reqExp = 3203826;
            break;
        case 27:
            _reqExp = 2563061;
            break;
        case 26:
            _reqExp = 2050449;
            break;
        case 25:
            _reqExp = 1640359;
            break;
        case 24:
            _reqExp = 1312287;
            break;
        case 23:
            _reqExp = 1049830;
            break;
        case 22:
            _reqExp = 839864;
            break;
        case 21:
            _reqExp = 671891;
            break;
        case 20:
            _reqExp = 537513;
            break;
        case 19:
            _reqExp = 430010;
            break;
        case 18:
            _reqExp = 344008;
            break;
        case 17:
            _reqExp = 275207;
            break;
        case 16:
            _reqExp = 220165;
            break;
        case 15:
            _reqExp = 176132;
            break;
        case 14:
            _reqExp = 140906;
            break;
        case 13:
            _reqExp = 112725;
            break;
        case 12:
            _reqExp = 90180;
            break;
        case 11:
            _reqExp = 72144;
            break;
        case 10:
            _reqExp = 57715;
            break;
        case 9:
            _reqExp = 44396;
            break;
        case 8:
            _reqExp = 32886;
            break;
        case 7:
            _reqExp = 22680;
            break;
        case 6:
            _reqExp = 14175;
            break;
        case 5:
            _reqExp = 7875;
            break;
        case 4:
            _reqExp = 3750;
            break;
        case 3:
            _reqExp = 1500;
            break;
        case 2:
            _reqExp = 500;
    }
    return _reqExp;
}
Hast du eine Ahnung woran das liegen könnte? Ich habe eigentlich keine Ahnung von dem Zeugs, und habe nur bischen zusammenkopiert und gelöscht.. wird aber wohl ein kleiner Fehler sein?!
Was ich momantan nur sehe ist, dass du ganz zu Beginn die Variablen CurScriptIndex und LastScript doppelt deklarierst, das ist so schonmal definitiv kein sauberer Stil. ;)

Ansonsten wäre mehr Input toll. Was passiert ganz exakt? Gibt es Fehlermeldungen?

Lg
Muddy
06/17/2010 21:54 lortl#22
Hey, danke... habe das übersehen^^ (kann leider nur c++ "programmieren" und habe von java eigentlich keine ahnung :P schlechte ausrede :))

Naja, eine Fehlermeldung gibts nicht. Das erste Skript läuft ab, dann sollte er eigentlich ein tp machen um in die Stadt zu gehen(damit das nächste Skript aktiv werden kann), passiert aber gar nicht mehr. Char bleibt einfach stehen->chicken oder maxtimeleave...

Ich habe mein überarbeitetes Skript mit dem normalen Standartskript verglichen, und finde nichts, dass irgendwie eine Bedingung fehlt damit das nächste Skript ausgeführt wird...
06/18/2010 15:37 Muddy Waters#23
Quote:
Originally Posted by lortl View Post
Hey, danke... habe das übersehen^^ (kann leider nur c++ "programmieren" und habe von java eigentlich keine ahnung :P schlechte ausrede :))

Naja, eine Fehlermeldung gibts nicht. Das erste Skript läuft ab, dann sollte er eigentlich ein tp machen um in die Stadt zu gehen(damit das nächste Skript aktiv werden kann), passiert aber gar nicht mehr. Char bleibt einfach stehen->chicken oder maxtimeleave...

Ich habe mein überarbeitetes Skript mit dem normalen Standartskript verglichen, und finde nichts, dass irgendwie eine Bedingung fehlt damit das nächste Skript ausgeführt wird...
Die Ausrede ist wirklich extrem schlecht, ich selbst kann auch nur C++, verstehe damit aber JavaScript problemlos. Zumal JavaScript auch noch deutlich leichter ist als C++... :p

Wenn sich nichts weiteres findet versuch folgendes: Bau überall in den entsprecheden Ablauf, den du überprüfen willst, durchnummerierte Testausgaben ein und lass das Ganze damit durchlaufen. Dabei findest du dann hoffentlich die Stelle, bei der es nicht mehr weiter geht und weisst wo du ansetzen musst. Quasi so eine Art Debug Modus des kleinen Mannes, wie ihn jede anständige IDE hat.

Wirklich offensichtliche Fehler sehe ich derzeit jedenfalls keine weiteren, aber ich habs auch nicht so mit Fehlersuche, darum versuche ich immer, Fehler von vornherein zu vermeiden. :D

Lg
Muddy
06/18/2010 16:49 Diablofarmer#24
selbst wenn du Muddy´s komplette NTBotGame.ntj bisauf
NTI_ClearLoc();
übernimmst, springt er von allein nich zum nächsten script,
mit pagedown ( also skipscript ) gehts dann und zeigt nachm Run im manager auch brav an, was er soll.
finde den fehler bzw das problem auch nich, sry
06/18/2010 18:28 lortl#25
Werde wohl versuchen, die ganze EXP-Anzeige von Grund auf neu in die originale Ntbotgame Datei einzufügen... mal schauen was dabei rauskommt :)
06/18/2010 19:00 Diablofarmer#26
jo das ging mir heute auch den ganzen tag durchn kopf, hab aber keine zeit :(
teilst du uns deine Ergebnisse mit ? :)
06/18/2010 20:32 Muddy Waters#27
Quote:
Originally Posted by lortl View Post
Werde wohl versuchen, die ganze EXP-Anzeige von Grund auf neu in die originale Ntbotgame Datei einzufügen... mal schauen was dabei rauskommt :)
Du gibst aber schnell auf... :rolleyes:

Mich würde es erst recht reizen, wenn es nicht auf Anhieb so will wie ich will. :) Ich gucke mal ob ich das Problem mit dem Script reproduzieren kann und teste dann mal selbst.

Dabei wollte ich eigentlich an meinem Stalker Script weitermachen, aber das hat schließlich Zeit. :)
Jemand ne elegante Idee, wie ich am besten die Verläufe der Ebenen, sprich welche Ebene nach welcher kommt, einbinde? Ich würds spontan mit nem statisch konstanten und Teilweise mehrdimensionalen Array Lösen, aber ich höre mir natürlich gerne einfachere Vorschläge an.

Lg
Muddy
06/18/2010 22:42 mara1234#28
Super teil dein bot, aber das mit der xp anzeige würde mich auch mal interessieren, einfach nur wieviel xp habe ich in dem letzen spiel bekommen. das wäre sehr geil.

t4t
06/19/2010 12:56 Muddy Waters#29
Quote:
Originally Posted by mara1234 View Post
Super teil dein bot, aber das mit der xp anzeige würde mich auch mal interessieren, einfach nur wieviel xp habe ich in dem letzen spiel bekommen. das wäre sehr geil.

t4t
Wo ist das Problem? Es steht dir schließlich frei meine Variante zu nutzen. ;)
Auch wenn ich es immer wieder Interessant finde, wie alle so auf diese Kleinigkeiten abfahren. Da sind doch eine Reihe an anderen Dingen enthalten, die vom Programmieraufwand deutlich anspruchsvoller waren als eine einfache Exp Anzeige, auf die geht aber seltsamerweise niemand ein. :D

@lortl
Ich habe es gestern Abend mal kurz getestet, bei mir funktioniert der Scripwechsel auch mit deinem abgespeckten Script einwandfrei.
Eventuell sind bei dir auch einfach irgendwelche Variablen nicht definiert, in der Richtung würde ich nochmal forschen.
Ich habe trotzdem relativ schnell wieder auf mein Script gewechselt, man ist eben doch schon an etwas mehr Komfort gewöhnt. :)

Lg
Muddy
06/19/2010 15:40 lortl#30
Quote:
Originally Posted by Muddy_Waters View Post

@lortl
Ich habe es gestern Abend mal kurz getestet, bei mir funktioniert der Scripwechsel auch mit deinem abgespeckten Script einwandfrei.
Eventuell sind bei dir auch einfach irgendwelche Variablen nicht definiert, in der Richtung würde ich nochmal forschen.
Ich habe trotzdem relativ schnell wieder auf mein Script gewechselt, man ist eben doch schon an etwas mehr Komfort gewöhnt. :)

Lg
Muddy
hm, liegt dann wohl an den anderen scripts... da ich ja nur deine ntbotgame datei nehme. Muss ich die anderen Dateien wohl durchforsten :)