[Release] Muddy's D2NT

04/11/2013 17:56 TomekkXo#6871
Hey,,,, all my chars works great, but with my hdin, full d2 window closed when diablo / baal are killed,and starts new... anyone know why? :(
04/11/2013 19:37 mirkoregge#6872
Quote:
Originally Posted by NerDxx™ View Post
Hi Leute habe mal drei fragen,

1.
Code:
Ist es möglich wenn der leader das tp aufmacht das er wartet bis 1 oder alle Leecher durch gehen und dann erst anfängt zu kämpfen?
2.
Code:
Ist es möglich das der Leader zb sagt Tp is safe! und der Leecher erkennt die nachricht und geht dann durch das tp ? ( das er die nachricht vom leader erkennt nicht zb wenn jemand anderes die nachricht sendet ??)
3.
Code:
Wenn der Leader ein spiel öffnet  und der Leecher joint , sagt der Leader Tristrun und der Leecher macht Tristrun , dann sagt der Leader Cowrun und der Leecher macht Cowrun , ist das möglich das der Leecher die Scripts Reihenfolge aus dem Chat auslesen kann?
wenn ja welche befehle sind das?

hoffe habt verstanden was ich meine ;D
zu 2.:
Code:
	//------------------------------------------------------------------------------
	// Chat Announcements
	//------------------------------------------------------------------------------
	
	// These announcements will not be made unless NTConfig_PublicMode is set to true. Set to "" not to post a message.
	// NOTE: You have to set a TPSafe message when using leechers and not entering unsafe TPs.
	
	MWConfig_Announcements.BaalThrone = "There are %d monster(s) in Throne!";
	MWConfig_Announcements.BaalTpNone = "TP up, no monsters close!";
	MWConfig_Announcements.BaalTpCold = "TP cold, %d monsters close!";
	MWConfig_Announcements.BaalTpWarm = "TP warm, %d monsters close!";
	MWConfig_Announcements.BaalTpHot = "TP hot, %d monsters close!";
	MWConfig_Announcements.BaalTpSafe = "TP is safe!";
	MWConfig_Announcements.BaalPreChamber = "Killing Baal!";
	MWConfig_Announcements.BaalKilled = "Next game!";
		
	MWConfig_Announcements.DiabloTpNone = "TP up, no monsters close!";
	MWConfig_Announcements.DiabloTpCold = "TP cold, %d monsters close!";
	MWConfig_Announcements.DiabloTpWarm = "TP warm, %d monsters close!";
	MWConfig_Announcements.DiabloTpHot = "TP hot, %d monsters close!";
	MWConfig_Announcements.DiabloTpSafe = "TP is safe!";
	MWConfig_Announcements.DiabloPre = "Killing Diablo!";
	MWConfig_Announcements.DiabloKilled = "Next game!";
und
Code:
MWConfig_Script.push(["NTBaalLeechFight.ntj", 10]); NTConfig_KillBaal = true; MWConfig_DoBaalPreAttack = true; MWConfig_EnterUnsafeTP = true; NTConfig_Leader = "LeaderNameGoesHere";
Quote:
Originally Posted by TomekkXo View Post
Hey,,,, all my chars works great, but with my hdin, full d2 window closed when diablo / baal are killed,and starts new... anyone know why? :(
check keys/run
[Only registered and activated users can see links. Click Here To Register...]
04/11/2013 23:19 NerDxx™#6873
Quote:
Originally Posted by mirkoregge View Post
MWConfig_GlobalSettings.ntj
Code:
	//------------------------------------------------------------------------------
	// Chat Announcements
	//------------------------------------------------------------------------------
	
	// These announcements will not be made unless NTConfig_PublicMode is set to true. Set to "" not to post a message.
	// NOTE: You have to set a TPSafe message when using leechers and not entering unsafe TPs.
	
	MWConfig_Announcements.BaalThrone = "There are %d monster(s) in Throne!";
	MWConfig_Announcements.BaalTpNone = "TP up, no monsters close!";
	MWConfig_Announcements.BaalTpCold = "TP cold, %d monsters close!";
	MWConfig_Announcements.BaalTpWarm = "TP warm, %d monsters close!";
	MWConfig_Announcements.BaalTpHot = "TP hot, %d monsters close!";
	MWConfig_Announcements.BaalTpSafe = "TP is safe!";
	MWConfig_Announcements.BaalPreChamber = "Killing Baal!";
	MWConfig_Announcements.BaalKilled = "Next game!";
		
	MWConfig_Announcements.DiabloTpNone = "TP up, no monsters close!";
	MWConfig_Announcements.DiabloTpCold = "TP cold, %d monsters close!";
	MWConfig_Announcements.DiabloTpWarm = "TP warm, %d monsters close!";
	MWConfig_Announcements.DiabloTpHot = "TP hot, %d monsters close!";
	MWConfig_Announcements.DiabloTpSafe = "TP is safe!";
	MWConfig_Announcements.DiabloPre = "Killing Diablo!";
	MWConfig_Announcements.DiabloKilled = "Next game!";
und
Char Config.
Code:
MWConfig_Script.push(["NTBaalLeechFight.ntj", 10]); NTConfig_KillBaal = true; MWConfig_DoBaalPreAttack = true; MWConfig_EnterUnsafeTP = true; NTConfig_Leader = "LeaderNameGoesHere";
Wie erkennt der bot das er das tp bei baal macht.?
Code:
MWConfig_Announcements.BaalTpNone = "TP up, no monsters close!";
Vielleicht in der NTBaal.ntj Selbst?
zb
Code:
	if(NTConfig_PublicMode)
		{
			NTM_MoveTo(me.areaid, 15112, 5004, 1, true);

			NTM_MakeTP();
			
			if(MWConfig_Announcements.BaalTpSafe)
				Say(MWConfig_Announcements.BaalTpSafe);
		}
zb bei Cow Leech, wie stellt man das da ein ?
Code:
MWConfig_Announcements.CowTpNone = "TP up, no monsters close!";
04/12/2013 01:42 whoranzone123#6874
Ich bin mir gerade nicht sicher ob ich die Frage richtig verstehe.
Quote:
Originally Posted by NerDxx™ View Post
Wie erkennt der bot das er das tp bei baal macht.?
Welcher Bot soll was erkennen ?
Der Leader portet zum Thronsaal und dann passiert folgendes (Aus der "NTBaal.ntj"):
Code:
		if(NTConfig_PublicMode)
		{
			if(_monsterCount > 1 && MWConfig_Announcements.BaalThrone)
				Say(MWConfig_Announcements.BaalThrone.replace(/%d/gi, _monsterCount));
			
			NTM_MoveTo(me.areaid, 15116, 5068);
			
			_monsterCount = MW_CountMonstersInThrone(20);
			
			if(_monsterCount > 1)
			{
				if(_monsterCount < 3 && MWConfig_Announcements.BaalTpCold)
					Say(MWConfig_Announcements.BaalTpCold.replace(/%d/gi, _monsterCount));
				else if(_monsterCount < 6 && MWConfig_Announcements.BaalTpWarm)
					Say(MWConfig_Announcements.BaalTpWarm.replace(/%d/gi, _monsterCount));
				else if(MWConfig_Announcements.BaalTpHot)
					Say(MWConfig_Announcements.BaalTpHot.replace(/%d/gi, _monsterCount));
			}
			else if(MWConfig_Announcements.BaalTpNone)
				Say(MWConfig_Announcements.BaalTpNone);
			
			NTM_MakeTP();
			
			NTA_ClearPosition(25, true, 2);
		}

		NT_ClearThroneInt();

		if(NTConfig_PublicMode)
		{
			NTM_MoveTo(me.areaid, 15112, 5004, 1, true);

			NTM_MakeTP();
			
			if(MWConfig_Announcements.BaalTpSafe)
				Say(MWConfig_Announcements.BaalTpSafe);
		}
Er zählt erst wieviele Monster im Thron sind und gibt dies als Text aus. Dann entscheidet er ob das TP Cold, Warm, Hot ist oder ob keine Gegner in der nähe sind (in der Reihenfolge) und gibt dies als Text aus. Dann macht er ein TP auf mit "NTM_MakeTP();". Anschliessend säubert er den Thronsaal mit "NT_ClearThroneInt();". Ist alles gesäubert teleportiert er zu einem bestimmten Punkte, öffnet ein TP und sagt, dass der Thron Safe ist.

Der Leecher hingegen steht in Town und sucht erstmal nach einem TP des Leaders.
z.B. in der "NTBaalLeech.ntj" findet man:
Code:
	for(var i = 0; i <= 200; i++)
	{
		if(NTC_InMyParty(NTConfig_Leader))
			break;
			
		if(!NTConfig_Leader)
		{
			_portal = NTM_FindPortalAreaInt(131, 0);
			
			if(_portal != -1)
			{
				_owner = _portal.GetParent();
				
				if(_owner && !NTC_InMyParty(_owner))
					NTConfig_Leader = _owner;
			}
		}

		NTC_Delay(200);
	}
Ist ein TP gefunden kannst du selbst festlegen, ob dein Leecher erst joinen soll wenn das TP safe ist, oder ob er direkt reingehen soll. Die Abfrage danach kommt sofort nach dem Code, den ich oben gepostet habe und den Wert dazu gibst du in der Charconfig selbst an. Beim Beispiel des BaalLeech sollte folgendes in der Charconfig stehen:
Code:
	MWConfig_Script.push(["NTBaalLeech.ntj", 10]); NTConfig_KillBaal = true; MWConfig_EnterUnsafeTP = false; NTConfig_Leader = "LeaderNameGoesHere";
wobei du dann bei "MWConfig_EnterUnsafeTP = false" angibst ob er auf ein Safe TP warten soll oder nicht.

Zum Cowleech kann ich dir nichts sagen, da ich spontan kein Cowleech Skript gefunden habe.
04/12/2013 07:18 fghtrt#6875
Quote:
Originally Posted by whoranzone123 View Post
Zum Cowleech kann ich dir nichts sagen, da ich spontan kein Cowleech Skript gefunden habe.
Sowas ist auch gar nicht implementiert. Reiner Leech ist nur bei Baalruns, Leechfight bei Diablo und Baal möglich.
04/12/2013 13:13 NerDxx™#6876
Danke für den ausführlichen beitrag wieder etwas dazu gelernt,


möchte mehrere scripts auf leechfight bearbeiten,
zb bei cow bin ich grade soweit das mein leecher durch das blaue portal geht möchte aber das er wartet bis der leader sagt tp is safe erst dann soll er durch gehen!!!
mir fehlt die Erfahrung , habe mich nie mit den scripts befasst Grund wissen ist vorhanden ;D


Wie erkennt der Leecher wann das tp safe ist?
welcher befehl in der "NTBaalLeech.ntj" ist das?

Korrigiere mich falls ich falsch liege

Code:
var _AllowedToEnterTP = false; // erlaubt durchs portal zu gehen = false
Der Leecher liest die nachrichten aus dem chat,

Code:
RegisterEvent(EVENT_GAMEMSG, NT_GameMsgEvents);
	
	var i;
	var _wave, _monsterCount, _starttick, _loops, _placedTraps, _portal, _owner;
	
	if(!NTTM_CheckAct(5, true))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTTM_CheckAct, 27, 5, true);
		return;
	}

Der Leecher geht zum Portalfeld
und sucht nach dem Portal vom leader der in der party ist.

Code:
NTTM_TownMove("portalspot");

	for(i = 0; i <= 200; i++)
	{
		if(NTC_InMyParty(NTConfig_Leader))
			break;
		
		if(!NTConfig_Leader)
		{
			_portal = NTM_FindPortalAreaInt(131, 0);
			
			if(_portal != -1)
			{
				_owner = _portal.GetParent();
				
				if(_owner && !NTC_InMyParty(_owner))
					NTConfig_Leader = _owner;
			}
		}


Code:
}

		NTC_Delay(200);
	}
	
	if(MWConfig_EnterUnsafeTP)
		_AllowedToEnterTP = true;   // wenn in der config erlaubt ist geht er durchs unsafetp = true

	while(NTC_InTown() && NTC_InMyParty(NTConfig_Leader))
	{
		if(_AllowedToEnterTP)
			NTM_UsePortal("BluePortal", 131, NTConfig_Leader);    // wenn der Leader in der party ist geht er durch blaue portal.
			
		NTC_Delay(500);
	}
Cow Leader Blue Portal
Code:
/**
*	This file was modified by [email][Only registered and activated users can see links. Click Here To Register...][/email]
*	Check the programming section for updates and further scripts
*	Last Update: 22:45 24.08.2011
*/

const _NTR_STRING_COW_KING = GetLocaleString(2850);
const _NTR_COW_KING_RANGE = 80;

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

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

	MWC_Initialize();

	var _wirtbody, _cube, _leg, _portal, _stash, _npc;
	var i;

	if(!NTTM_CheckAct(me.act, true))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTTM_CheckAct, 24, me.act, true);
		return;
	}

	NTTMGR_TownManager();

	if(!NTTM_TownMove("waypoint"))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTTM_TownMove, 32, "waypoint");
		return;
	}
	
	if(!NTM_TakeWaypoint(4))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTM_TakeWaypoint, 38, 4);
		return;
	}

	NTP_DoPrecast(true);
	
	if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_MONSTER, 737, 10, 10))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveToPresetUnit, 46, me.areaid, NTC_UNIT_MONSTER, 737, 10, 10);
		return;
	}

	if(!NTM_UsePortal("Portal", 38))
	{

		NTC_SendMsgToScript("MWBotGame.ntj", NTM_UsePortal, 52, "Portal", 38);
		return;
	}

	NTM_MoveTo(me.areaid, 25047, 5178);

	if(NTA_ClearPosition(10))
		NTSI_PickItems();

	_wirtbody = NTC_FindUnit(NTC_UNIT_OBJECT, 268);

	if(!_wirtbody)
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTC_FindUnit, 63, NTC_UNIT_OBJECT, 268);
		return;
	}

	if(NTM_MoveTo(_wirtbody.areaid, _wirtbody.x + 3, _wirtbody.y))
	{
		if(NTC_OpenChest(_wirtbody))
		{
			for(i = 0; i < 40; i++)
			{
				NTC_Delay(NTC_DELAY_FRAME);
				
				_leg = NTC_FindUnit(NTC_UNIT_ITEM, 88, 1);
				
				if(_leg)
					break;
			}
			
			if(!NTT_CheckSpace(_leg.xsize, _leg.ysize))
				NTTMGR_VisitTown();
			
			if(MWSI_PickupItem(_leg.classid))
				Print("ÿc4Got Leg");
		}
	}

	if(!_leg)
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTC_FindUnit, 79, NTC_UNIT_ITEM, 88, 1);
		return;
	}

	NTTM_CheckAct();
	
	NTTM_TownMove("akara");

	for(var i = 0; i < 10; i++)
	{
		_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_AKARA);
		
		if(_npc)
			break;
	}

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			if(NTT_DoTrade(_npc))
			{
				NTT_FillTome(_npc, 1);
				NTT_FillTome(_npc, 0);
				NTT_SecondTomeTP(_npc, "tbk", 1);
				
				_portal = NTR_GetTP();
				
				if(!_portal)
				{
					NTC_SendMsgToScript("MWBotGame.ntj", NTR_GetTP, 121);
					return;
				}
			}		
		}
		
		me.Cancel(1);
	}

	if(MWT_OpenStash())
	{
		_cube = me.GetItems(NTC_UNIT_CUBE);
			
		if(!_cube[0])
		{
			NTC_SendMsgToScript("MWBotGame.ntj", me.GetItems, 136, NTC_UNIT_CUBE);
			return;
		}
		
		if(NTCU_CheckCubeInventoryInt() > 0)
		{
			NTCU_OpenCubeInt(_cube[0]);
			
			if(NTCU_ClearCubeInt() < 1)
			{
				NTC_SendMsgToScript("MWBotGame.ntj", NTCU_ClearCubeInt, 148);
				return;
			}
			
			NTCU_CloseCubeInt();
		}

		NTCU_MoveItemToCubeInt(_cube[0],_leg);
		NTCU_MoveItemToCubeInt(_cube[0],_portal);

		MWCU_Transmute(_cube[0]);

		NTCU_CloseCubeInt();

		me.Cancel(1);
		
		NTC_Delay(250);
	}
	
	if(!NTR_TakeCowPortal(12))
	{
	
		NTC_SendMsgToScript("MWBotGame.ntj", NTR_TakeCowPortal, 169, 12);
		return;
	}
	
	NTM_MakeTP();
	
	if(MWConfig_Announcements.CowTpSafe)
	Say(MWConfig_Announcements.CowTpSafe);	

	NTP_DoPrecast();
	
	NTR_ClearRooms(150, NTC_UNIT_MONSTER, 773, _NTR_COW_KING_RANGE);

	NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}

// Internal functions
function NTR_GetTP()
{
	var _portals = me.GetItems("tbk");

	if (_portals)
	{
		for (var i = 0; i < _portals.length; i++)
		{
			if (_portals[i].mode == 0 && (_portals[i].itemloc != 0 || NTConfig_Columns[_portals[i].y][_portals[i].x] > 0))
			{
				return _portals[i];
			}
		}
	}
	return false;
}

function NTR_TakeCowPortal(range)
{
	var _portal;

	_portal = NTC_FindUnit(NTC_UNIT_OBJECT, 60, 5);

	if(_portal)
		return NTM_UsePortal("Portal", 39, "dummy", _portal);
	
	return false;
}

function NTR_ClearRooms(range, type, id, distance)
{
	var i;
	var _unit;
	var _preRoom;
	var _addRooms = new Array();
	var _removeRooms = new Array();

	if (distance)
	{
		_unit = GetPresetUnits(me.areaid, type, id);
		if (!_unit || _unit.length < 1)
			return false;
	}

	_preRoom = GetRoom();
	if (_preRoom)
	{
		do
		{
			if (distance)
			{
				if (GetDistance(_preRoom.x * 5, _preRoom.y * 5, _unit[0].roomx * 5, _unit[0].roomy * 5) < distance)
					continue;
			}
			_addRooms.push([_preRoom.x * 5, _preRoom.y * 5]);
		} while (_preRoom.GetNext());
	}

	if (_addRooms.length < 1)
		return false;

	_preRoom = [me.x, me.y];

	while (_addRooms.length > 0)
	{
		_addRooms.sort(function (a, b) { return (GetDistance(_preRoom[0], _preRoom[1], a[0], a[1]) - GetDistance(_preRoom[0], _preRoom[1], b[0], b[1])); });

		_removeRooms.push([_addRooms[0][0], _addRooms[0][1]]);

		for (i = 1; i < _addRooms.length; i++)
		{
			if (GetDistance(_preRoom[0], _preRoom[1], _addRooms[i][0], _addRooms[i][1]) <= GetDistance(_preRoom[0], _preRoom[1], _addRooms[0][0], _addRooms[0][1]))
			{
				_removeRooms.push([_addRooms[i][0], _addRooms[i][1]]);
			}
			else
				break;
		}

		if (_removeRooms.length > 1)
		{
			_removeRooms.sort(function (a, b) { return (b[0] - a[0]); });
			if (_removeRooms[0][0] <= _preRoom[0])
			{
				_removeRooms.sort(function (a, b) { return (b[1] - a[1]); });
				if (_removeRooms[0][1] <= _preRoom[1])
				{
					_removeRooms.sort(function (a, b) { return (a[0] - b[0]); });
					if (_removeRooms[0][0] >= _preRoom[0])
					_removeRooms.sort(function (a, b) { return (a[1] - b[1]); });
				}
			}
		}

		if (!range || GetDistance(me.x, me.y, _removeRooms[0][0], _removeRooms[0][1]) < range)
		{
			if (NTR_MoveTo(me.areaid, _removeRooms[0][0], _removeRooms[0][1], 3, true))
			_preRoom = _removeRooms[0];
		}

		for (i = 0; i < _addRooms.length; i++)
		{
			if (_addRooms[i][0] == _removeRooms[0][0] && _addRooms[i][1] == _removeRooms[0][1])
			{
				_addRooms.splice(i, 1);
				break;
			}
		}
		_removeRooms.length = 0;
	}
	return true;
}

function NTR_MoveTo(areaId, x, y, retry, isClearPath)
{
	if (x == me.x && y == me.y)
		return true;

	if (arguments.length < 4)
		retry = 3;
	if (arguments.length < 5)
		isClearPath = false;

	var j;
	var _path;
	var _preX, _preY;

	_path = GetPath(areaId, me.x, me.y, x, y, true);
	if (!_path)
		return false;

	for (var i = 0; i < _path.length; i++)
	{
		if (NTR_CheckCowKing() || NTR_CheckSafe(_path[i][0], _path[i][1], 15))
		{
			for (j = 0; j < retry; j++)
			{
				if (NTM_MoveTo(me.areaid, _path[i][0], _path[i][1]))
					break;
			}

			if (j >= retry)
				return false;
		}

		if (isClearPath && !NTR_CheckCowKing())
		{
			_preX = me.x;
			_preY = me.y;

			if(!MWR_ClearPosition(30, true))
				return false;

			NTP_DoPrecast();
			
			if (me.x != _preX || me.y != _preY)
			{
				if (!NTM_MoveTo(me.areaid, _preX, _preY))
					return false;
			}
		}
	}
	
	return true;
}


function NTR_CheckCowKing()
{
	var _cowKing = NTC_FindUnit(NTC_UNIT_MONSTER, _NTR_STRING_COW_KING);
	return (_cowKing && GetDistance(me, _cowKing) < _NTR_COW_KING_RANGE);
}


function NTR_CheckSafe(x, y, range)
{
	var i;
	var _target = NTC_FindUnit(NTC_UNIT_MONSTER);

	if (_target)
	{
		do
		{
			if (GetDistance(x, y, _target.x, _target.y) < range && _target.IsAttackable())
			{
				for (i = 0; i < 6; i++)
				{
					if (NTConfig_AttackSkill[i] && NTA_GetResistance(_target, _NTA_SkillDamage[i]) < 100)
					return false;
				}
			}
		} while (_target.GetNext());
	}

	return true;
}

function MWR_ClearPosition(range, pickitem, safelevel, openchests, usefinditem)
{
	var _orgx, _orgy;
	var _skiplist;
	var _attackcount = 0;
	var _target;
	var _distance, _mingid, _mindistance;
	var _result;
	
	switch(arguments.length)
	{
	case 0:
		range = 20;
	case 1:
		pickitem = false;
	case 3:
		openchests = true;
	case 4: 
		usefinditem = true;
	default:
		if(NTConfig_CheckSelfSafe < 0x01 && NTConfig_CheckMercSafe < 0x01)
			safelevel = 0;
		break;
	}

	_orgx = me.x;
	_orgy = me.y;

	for(var i = 0; i < 3; i++)
	{
		_skiplist = new Array();

		while(_attackcount < (i+1)*100)
		{
			if(NTR_CheckCowKing())
				return false;
			
			_mindistance = 1E6;

			_target = NTC_FindUnit(NTC_UNIT_MONSTER);

			if(_target)
			{
				do
				{
					if(_skiplist.indexOf(_target.gid) < 0)
					{
						if(_target.IsAttackable())
						{
							if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
							{
								_distance = GetDistance(me, _target);

								if(_distance < _mindistance)
								{
									_mingid = _target.gid;
									_mindistance = _distance;
								}
							}
						}
						else
							_skiplist.push(_target.gid);
					}
				} while(_target.GetNext());
			}

			if(_mindistance < 1E6)
			{
				_target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid, 1);

				if(_target)
				{
					if(MWConfig_ShowOverheadStatus)
						Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");

					_result = NTA_Attack(_target, (_attackcount % 30) == 0);
					
					if(MWConfig_ShowOverheadStatus)
						Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");

					switch(_result)
					{
						case 1:
							_skiplist.push(_mingid);
							break;
						case 2:
						case 3:
							if(MWConfig_PickItemsInstantly && (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12))
								NTSI_PickItems();
							_attackcount++;
							break;
						default:
							_attackcount = 1E6;
					}
				}
			}
			else
				break;
		}
	}

	if(_attackcount > 2)
	{
		switch(me.classid)
		{
			case NTC_CHAR_CLASS_PALADIN:
				if(parseInt(me.hp * 100 / me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp * 100 / me.mpmax) < NTConfig_UseRedemptionMP)
				{
					if(NTC_PutSkill(124, NTC_HAND_RIGHT))
						NTC_PingDelay(1000);
				}
				break;
			case NTC_CHAR_CLASS_BARBARIAN:
				if(usefinditem && MWConfig_UseFindItem && !NTR_CheckCowKing())
					MWL_FindItem(MWConfig_FindItemRange);
				break;
			case NTC_CHAR_CLASS_NECROMANCER:
				if(!NTR_CheckCowKing())
					MWA_RaiseMinions();
				break;
		}
	}
	
	if(pickitem && _attackcount > 0)
		NTSI_PickItems();

	if(MWConfig_OpenContainerMode == 2 && openchests && !NTR_CheckCowKing())
		MWL_OpenNearbyChests(MWConfig_OpenChestsRange);
	
	if(MWConfig_ActivateNearbyShrines)
		MWL_ActivateNearbyShrines();

	switch(safelevel)
	{
		case 1:
			return NTTMGR_CheckSafe(0x00, NTConfig_CheckMercSafe&0x01);
		case 2:
			return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
	}

	if(MWConfig_IdentAfterPickup)
		MWL_IDItemsAfterPickup();

	return true;
}

function NTT_SecondTomeTP(npc, type, amount)
{
	var _items;
	var _counter = 0;

	if(arguments.length < 1)
		return false;

	if(arguments.length < 2)
		type = 0;

	if(arguments.length < 0)
		amount = 1;

	if(amount == 0)
		return false;

	if(type)
		_items = npc.GetItems("tbk");

	if(_items)
	{
		if(_items.length > 0)
		{
			for(var i = 0 ; i < amount ; i++)
			{
				if(NTT_ShopItem(_items[0], npc, 2))
					_counter++;
			}
		}
	}
	return (_counter > 0);
}
CowLeechfight Blue Portal
Code:
/**
*	This file was modified by [Only registered and activated users can see links. Click Here To Register...]
*	Check the programming section for updates and further scripts
*	Last Update: 22:45 24.08.2011
*/

const _NTR_STRING_COW_KING = GetLocaleString(2850);
const _NTR_COW_KING_RANGE = 80;

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

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

	MWC_Initialize();

	var  _portal;
	var i;


                  if(!NTTM_CheckAct(1, true))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTTM_CheckAct, 26, 1, true);
		return;
	}
	

	NTTM_TownMove("portalspot");

   for(i = 0; i <= 300; i++) 
                                      {
                                          if(NTC_InMyParty(NTConfig_Leader))
                                          break;

                                          Delay(200);
                                       }   

                while(me.areaid == 1 && NTC_InMyParty(NTConfig_Leader))
                       {
                             NTM_UsePortal("BluePortal", 38, NTConfig_Leader);
   
                       }
	
	NTP_DoPrecast();
	
	NTR_ClearRooms(150, NTC_UNIT_MONSTER, 773, _NTR_COW_KING_RANGE);

	NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}



function NTR_TakeCowPortal(range)
{
	var _portal;

	_portal = NTC_FindUnit(NTC_UNIT_OBJECT, 60, 5);

	if(_portal)
		return NTM_UsePortal("Portal", 39, "dummy", _portal);
	
	return false;
}

function NTR_ClearRooms(range, type, id, distance)
{
	var i;
	var _unit;
	var _preRoom;
	var _addRooms = new Array();
	var _removeRooms = new Array();

	if (distance)
	{
		_unit = GetPresetUnits(me.areaid, type, id);
		if (!_unit || _unit.length < 1)
			return false;
	}

	_preRoom = GetRoom();
	if (_preRoom)
	{
		do
		{
			if (distance)
			{
				if (GetDistance(_preRoom.x * 5, _preRoom.y * 5, _unit[0].roomx * 5, _unit[0].roomy * 5) < distance)
					continue;
			}
			_addRooms.push([_preRoom.x * 5, _preRoom.y * 5]);
		} while (_preRoom.GetNext());
	}

	if (_addRooms.length < 1)
		return false;

	_preRoom = [me.x, me.y];

	while (_addRooms.length > 0)
	{
		_addRooms.sort(function (a, b) { return (GetDistance(_preRoom[0], _preRoom[1], a[0], a[1]) - GetDistance(_preRoom[0], _preRoom[1], b[0], b[1])); });

		_removeRooms.push([_addRooms[0][0], _addRooms[0][1]]);

		for (i = 1; i < _addRooms.length; i++)
		{
			if (GetDistance(_preRoom[0], _preRoom[1], _addRooms[i][0], _addRooms[i][1]) <= GetDistance(_preRoom[0], _preRoom[1], _addRooms[0][0], _addRooms[0][1]))
			{
				_removeRooms.push([_addRooms[i][0], _addRooms[i][1]]);
			}
			else
				break;
		}

		if (_removeRooms.length > 1)
		{
			_removeRooms.sort(function (a, b) { return (b[0] - a[0]); });
			if (_removeRooms[0][0] <= _preRoom[0])
			{
				_removeRooms.sort(function (a, b) { return (b[1] - a[1]); });
				if (_removeRooms[0][1] <= _preRoom[1])
				{
					_removeRooms.sort(function (a, b) { return (a[0] - b[0]); });
					if (_removeRooms[0][0] >= _preRoom[0])
					_removeRooms.sort(function (a, b) { return (a[1] - b[1]); });
				}
			}
		}

		if (!range || GetDistance(me.x, me.y, _removeRooms[0][0], _removeRooms[0][1]) < range)
		{
			if (NTR_MoveTo(me.areaid, _removeRooms[0][0], _removeRooms[0][1], 3, true))
			_preRoom = _removeRooms[0];
		}

		for (i = 0; i < _addRooms.length; i++)
		{
			if (_addRooms[i][0] == _removeRooms[0][0] && _addRooms[i][1] == _removeRooms[0][1])
			{
				_addRooms.splice(i, 1);
				break;
			}
		}
		_removeRooms.length = 0;
	}
	return true;
}

function NTR_MoveTo(areaId, x, y, retry, isClearPath)
{
	if (x == me.x && y == me.y)
		return true;

	if (arguments.length < 4)
		retry = 3;
	if (arguments.length < 5)
		isClearPath = false;

	var j;
	var _path;
	var _preX, _preY;

	_path = GetPath(areaId, me.x, me.y, x, y, true);
	if (!_path)
		return false;

	for (var i = 0; i < _path.length; i++)
	{
		if (NTR_CheckCowKing() || NTR_CheckSafe(_path[i][0], _path[i][1], 15))
		{
			for (j = 0; j < retry; j++)
			{
				if (NTM_MoveTo(me.areaid, _path[i][0], _path[i][1]))
					break;
			}

			if (j >= retry)
				return false;
		}

		if (isClearPath && !NTR_CheckCowKing())
		{
			_preX = me.x;
			_preY = me.y;

			if(!MWR_ClearPosition(30, true))
				return false;

			NTP_DoPrecast();
			
			if (me.x != _preX || me.y != _preY)
			{
				if (!NTM_MoveTo(me.areaid, _preX, _preY))
					return false;
			}
		}
	}
	
	return true;
}


function NTR_CheckCowKing()
{
	var _cowKing = NTC_FindUnit(NTC_UNIT_MONSTER, _NTR_STRING_COW_KING);
	return (_cowKing && GetDistance(me, _cowKing) < _NTR_COW_KING_RANGE);
}


function NTR_CheckSafe(x, y, range)
{
	var i;
	var _target = NTC_FindUnit(NTC_UNIT_MONSTER);

	if (_target)
	{
		do
		{
			if (GetDistance(x, y, _target.x, _target.y) < range && _target.IsAttackable())
			{
				for (i = 0; i < 6; i++)
				{
					if (NTConfig_AttackSkill[i] && NTA_GetResistance(_target, _NTA_SkillDamage[i]) < 100)
					return false;
				}
			}
		} while (_target.GetNext());
	}

	return true;
}

function MWR_ClearPosition(range, pickitem, safelevel, openchests, usefinditem)
{
	var _orgx, _orgy;
	var _skiplist;
	var _attackcount = 0;
	var _target;
	var _distance, _mingid, _mindistance;
	var _result;
	
	switch(arguments.length)
	{
	case 0:
		range = 20;
	case 1:
		pickitem = false;
	case 3:
		openchests = true;
	case 4: 
		usefinditem = true;
	default:
		if(NTConfig_CheckSelfSafe < 0x01 && NTConfig_CheckMercSafe < 0x01)
			safelevel = 0;
		break;
	}

	_orgx = me.x;
	_orgy = me.y;

	for(var i = 0; i < 3; i++)
	{
		_skiplist = new Array();

		while(_attackcount < (i+1)*100)
		{
			if(NTR_CheckCowKing())
				return false;
			
			_mindistance = 1E6;

			_target = NTC_FindUnit(NTC_UNIT_MONSTER);

			if(_target)
			{
				do
				{
					if(_skiplist.indexOf(_target.gid) < 0)
					{
						if(_target.IsAttackable())
						{
							if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
							{
								_distance = GetDistance(me, _target);

								if(_distance < _mindistance)
								{
									_mingid = _target.gid;
									_mindistance = _distance;
								}
							}
						}
						else
							_skiplist.push(_target.gid);
					}
				} while(_target.GetNext());
			}

			if(_mindistance < 1E6)
			{
				_target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid, 1);

				if(_target)
				{
					if(MWConfig_ShowOverheadStatus)
						Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");

					_result = NTA_Attack(_target, (_attackcount % 30) == 0);
					
					if(MWConfig_ShowOverheadStatus)
						Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");

					switch(_result)
					{
						case 1:
							_skiplist.push(_mingid);
							break;
						case 2:
						case 3:
							if(MWConfig_PickItemsInstantly && (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12))
								NTSI_PickItems();
							_attackcount++;
							break;
						default:
							_attackcount = 1E6;
					}
				}
			}
			else
				break;
		}
	}

	if(_attackcount > 2)
	{
		switch(me.classid)
		{
			case NTC_CHAR_CLASS_PALADIN:
				if(parseInt(me.hp * 100 / me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp * 100 / me.mpmax) < NTConfig_UseRedemptionMP)
				{
					if(NTC_PutSkill(124, NTC_HAND_RIGHT))
						NTC_PingDelay(1000);
				}
				break;
			case NTC_CHAR_CLASS_BARBARIAN:
				if(usefinditem && MWConfig_UseFindItem && !NTR_CheckCowKing())
					MWL_FindItem(MWConfig_FindItemRange);
				break;
			case NTC_CHAR_CLASS_NECROMANCER:
				if(!NTR_CheckCowKing())
					MWA_RaiseMinions();
				break;
		}
	}
	
	if(pickitem && _attackcount > 0)
		NTSI_PickItems();

	if(MWConfig_OpenContainerMode == 2 && openchests && !NTR_CheckCowKing())
		MWL_OpenNearbyChests(MWConfig_OpenChestsRange);
	
	if(MWConfig_ActivateNearbyShrines)
		MWL_ActivateNearbyShrines();

	switch(safelevel)
	{
		case 1:
			return NTTMGR_CheckSafe(0x00, NTConfig_CheckMercSafe&0x01);
		case 2:
			return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
	}

	if(MWConfig_IdentAfterPickup)
		MWL_IDItemsAfterPickup();

	return true;
}
04/12/2013 17:01 OxolarsoxO#6877
kleine techniche frage ich benutze
Code:
MWConfig_Script.push(["MWOrganHarvest.ntj", 30]); MWConfig_EnterInvalidUberPortals = true; MWConfig_PauseOnLackOfKeys = false; MWConfig_IntendedUberPortal = 0; // Matron's Den: 133; Forgotten Sands: 134; Furnace Of Pain: 135;
und
Code:
// ##### Keys ##########################
[Name] == KeyOfTerror
[Name] == KeyOfHate
[Name] == KeyOfDestruction

// ##### Organs ##########################
[Name] == Diablo'sHorn
[Name] == Baal'sEye
[Name] == Mephisto'sBrain
sind auch aktiv

blos der bot schmeißt immer die organe weg kann man das auch iwie beheben?
weil ich bin ja nicht ständig am pc ^^
04/12/2013 19:19 Muddy Waters#6878
Quote:
Originally Posted by NerDxx™ View Post
mir fehlt die Erfahrung , habe mich nie mit den scripts befasst Grund wissen ist vorhanden ;D

Wie erkennt der Leecher wann das tp safe ist?
welcher befehl in der "NTBaalLeech.ntj" ist das?
Was genau ist denn an Grundwissen vorhanden? Wie Funktionen in JS funktionieren und was es mit Scopes auf sich hat ist bekannt?

Die Erkennung läuft in der Tat über den Chat. Dazu wird zu Beginn des Scripts ein Event Handler für Chats Ereignisse zugewiesen. Dieser Event Handler ist nichts anderes als eine Funktion, die jedes mal aufgerufen wird, wenn ein Chat Event eintritt, also z.B. dann, wenn jemand etwas im Chat schreibt, aber etwa auch bei Server Nachrichten (z.B. bei World Events).

Das sieht dann so aus:
Code:
RegisterEvent(EVENT_GAMEMSG, NT_GameMsgEvents);
Dabei ist RegisterEvent() eine globale Funktion zum anhängen von Event Handlern, EVENT_GAMEMSG eine globale Konstante, die festlegt, dass hier ein Handler für Events vom Typ Game Message zugewiesen wird und zu guter letzt NT_GameMsgEvents als eine Funktion, die im Kontext, aus dem RegisterEvent() aufgerufen wird, definiert ist. Dem Namen nach zu urteilen ist NT_GameMsgEvents vermutlich im gleichen Script auf global Scope Ebene implementiert.

Quote:
Originally Posted by OxolarsoxO View Post
kleine techniche frage ich benutze
Code:
MWConfig_Script.push(["MWOrganHarvest.ntj", 30]); MWConfig_EnterInvalidUberPortals = true; MWConfig_PauseOnLackOfKeys = false; MWConfig_IntendedUberPortal = 0; // Matron's Den: 133; Forgotten Sands: 134; Furnace Of Pain: 135;
und
Code:
// ##### Keys ##########################
[Name] == KeyOfTerror
[Name] == KeyOfHate
[Name] == KeyOfDestruction

// ##### Organs ##########################
[Name] == Diablo'sHorn
[Name] == Baal'sEye
[Name] == Mephisto'sBrain
sind auch aktiv

blos der bot schmeißt immer die organe weg kann man das auch iwie beheben?
weil ich bin ja nicht ständig am pc ^^
Bindest du die entsprechenden NIP-Datei denn überhaupt bei dir in der Char Config ein (von Haus aus sollte eben diese Datei nicht eingebunden sein)?
04/12/2013 19:27 OxolarsoxO#6879
meinst du das?
Code:
	// Set to true to always check the selected Nips for errors after including them. Check "..\scripts\Logs\NipErrors.txt" for a precise error description!
	MWConfig_RunNipCheck = false;
das einfach auf true?
04/12/2013 19:53 Muddy Waters#6880
Nein, ich meine den Teil wo du festlegst, welche NIP-Dateien inkludiert werden sollen. Sieht ungefähr so aus:
Code:
//-----------------------------------------------------------------------------------
// NipFile Configuration
//-----------------------------------------------------------------------------------

NTConfig_NIPFilePath.push("private/normal.nip");
NTConfig_NIPFilePath.push("private/magic_rare.nip");
NTConfig_NIPFilePath.push("private/set.nip");
NTConfig_NIPFilePath.push("private/unique.nip");
NTConfig_NIPFilePath.push("private/craft.nip");
NTConfig_NIPFilePath.push("private/temp.nip");
04/12/2013 19:57 OxolarsoxO#6881
Quote:
Originally Posted by Muddy Waters View Post
Nein, ich meine den Teil wo du festlegst, welche NIP-Dateien inkludiert werden sollen. Sieht ungefähr so aus:
Code:
//-----------------------------------------------------------------------------------
// NipFile Configuration
//-----------------------------------------------------------------------------------

NTConfig_NIPFilePath.push("private/normal.nip");
NTConfig_NIPFilePath.push("private/magic_rare.nip");
NTConfig_NIPFilePath.push("private/set.nip");
NTConfig_NIPFilePath.push("private/unique.nip");
NTConfig_NIPFilePath.push("private/craft.nip");
NTConfig_NIPFilePath.push("private/temp.nip");
oh man ich bin so dumm dumm dumm :) danke ^^

kann man den mulestatus der am anfang kommt im d2nt manager kommt auch reseten? weil zb meine ersten chars sind wieder leer wird aber immer noch mit 100% angezeigt
04/12/2013 21:32 Muddy Waters#6882
Optimalerweise verwendest du zum Zugriff auf die Mulis den MWTools Entry Point und verlässt das Spiel dabei immer mit Druck auf die DEL-Taste - dabei wird das jeweilige Logfile überschrieben.

Alternativ kannst du auch einfach die zugehörigen [Only registered and activated users can see links. Click Here To Register...] Logfiles löschen, diese sollten sich im Ordner ./scripts/Logs/MuleManager befinden.
04/12/2013 23:57 NerDxx™#6883
Wer es Braucht hier,

Einfach nur etwas ändern , ihr müsst den Leader angeben
Code:
1. Im script
var _leader = "Euren Leader Name";

2.
In de Char config.
WConfig_Script.push(["XXXXXXX.ntj", 10]); NTConfig_Leader = "Leader Name"; MWConfig_EnterUnsafeTP = false;
Cow Leader ( Blaue Portal - Mit "Tp is safe!" Nachricht )
Code:
/**
*	This file was modified by [Only registered and activated users can see links. Click Here To Register...]
*	Check the programming section for updates and further scripts
*	Last Update: 22:45 24.08.2011
*/

const _NTR_STRING_COW_KING = GetLocaleString(2850);
const _NTR_COW_KING_RANGE = 80;

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

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

	MWC_Initialize();

	var _wirtbody, _cube, _leg, _portal, _stash, _npc;
	var i;

	if(!NTTM_CheckAct(me.act, true))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTTM_CheckAct, 24, me.act, true);
		return;
	}

	NTTMGR_TownManager();

	if(!NTTM_TownMove("waypoint"))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTTM_TownMove, 32, "waypoint");
		return;
	}
	
	if(!NTM_TakeWaypoint(4))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTM_TakeWaypoint, 38, 4);
		return;
	}

	NTP_DoPrecast(true);
	
	if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_MONSTER, 737, 10, 10))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveToPresetUnit, 46, me.areaid, NTC_UNIT_MONSTER, 737, 10, 10);
		return;
	}

	if(!NTM_UsePortal("Portal", 38))
	{

		NTC_SendMsgToScript("MWBotGame.ntj", NTM_UsePortal, 52, "Portal", 38);
		return;
	}

	NTM_MoveTo(me.areaid, 25047, 5178);

	if(NTA_ClearPosition(10))
		NTSI_PickItems();

	_wirtbody = NTC_FindUnit(NTC_UNIT_OBJECT, 268);

	if(!_wirtbody)
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTC_FindUnit, 63, NTC_UNIT_OBJECT, 268);
		return;
	}

	if(NTM_MoveTo(_wirtbody.areaid, _wirtbody.x + 3, _wirtbody.y))
	{
		if(NTC_OpenChest(_wirtbody))
		{
			for(i = 0; i < 40; i++)
			{
				NTC_Delay(NTC_DELAY_FRAME);
				
				_leg = NTC_FindUnit(NTC_UNIT_ITEM, 88, 1);
				
				if(_leg)
					break;
			}
			
			if(!NTT_CheckSpace(_leg.xsize, _leg.ysize))
				NTTMGR_VisitTown();
			
			if(MWSI_PickupItem(_leg.classid))
				Print("ÿc4Got Leg");
		}
	}

	if(!_leg)
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTC_FindUnit, 79, NTC_UNIT_ITEM, 88, 1);
		return;
	}

	NTTM_CheckAct();
	
	NTTM_TownMove("akara");

	for(var i = 0; i < 10; i++)
	{
		_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_AKARA);
		
		if(_npc)
			break;
	}

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			if(NTT_DoTrade(_npc))
			{
				NTT_FillTome(_npc, 1);
				NTT_FillTome(_npc, 0);
				NTT_SecondTomeTP(_npc, "tbk", 1);
				
				_portal = NTR_GetTP();
				
				if(!_portal)
				{
					NTC_SendMsgToScript("MWBotGame.ntj", NTR_GetTP, 121);
					return;
				}
			}		
		}
		
		me.Cancel(1);
	}

	if(MWT_OpenStash())
	{
		_cube = me.GetItems(NTC_UNIT_CUBE);
			
		if(!_cube[0])
		{
			NTC_SendMsgToScript("MWBotGame.ntj", me.GetItems, 136, NTC_UNIT_CUBE);
			return;
		}
		
		if(NTCU_CheckCubeInventoryInt() > 0)
		{
			NTCU_OpenCubeInt(_cube[0]);
			
			if(NTCU_ClearCubeInt() < 1)
			{
				NTC_SendMsgToScript("MWBotGame.ntj", NTCU_ClearCubeInt, 148);
				return;
			}
			
			NTCU_CloseCubeInt();
		}

		NTCU_MoveItemToCubeInt(_cube[0],_leg);
		NTCU_MoveItemToCubeInt(_cube[0],_portal);

		MWCU_Transmute(_cube[0]);

		NTCU_CloseCubeInt();

		me.Cancel(1);
		
		NTC_Delay(250);
	}
	
	if(!NTR_TakeCowPortal(12))
	{
	
		NTC_SendMsgToScript("MWBotGame.ntj", NTR_TakeCowPortal, 169, 12);
		return;
	}
	
	NTM_MakeTP();
	
	if(MWConfig_Announcements.BaalTpSafe)
	Say(MWConfig_Announcements.BaalTpSafe);	

	NTP_DoPrecast();
	
	NTR_ClearRooms(150, NTC_UNIT_MONSTER, 773, _NTR_COW_KING_RANGE);

	NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}

// Internal functions
function NTR_GetTP()
{
	var _portals = me.GetItems("tbk");

	if (_portals)
	{
		for (var i = 0; i < _portals.length; i++)
		{
			if (_portals[i].mode == 0 && (_portals[i].itemloc != 0 || NTConfig_Columns[_portals[i].y][_portals[i].x] > 0))
			{
				return _portals[i];
			}
		}
	}
	return false;
}

function NTR_TakeCowPortal(range)
{
	var _portal;

	_portal = NTC_FindUnit(NTC_UNIT_OBJECT, 60, 5);

	if(_portal)
		return NTM_UsePortal("Portal", 39, "dummy", _portal);
	
	return false;
}

function NTR_ClearRooms(range, type, id, distance)
{
	var i;
	var _unit;
	var _preRoom;
	var _addRooms = new Array();
	var _removeRooms = new Array();

	if (distance)
	{
		_unit = GetPresetUnits(me.areaid, type, id);
		if (!_unit || _unit.length < 1)
			return false;
	}

	_preRoom = GetRoom();
	if (_preRoom)
	{
		do
		{
			if (distance)
			{
				if (GetDistance(_preRoom.x * 5, _preRoom.y * 5, _unit[0].roomx * 5, _unit[0].roomy * 5) < distance)
					continue;
			}
			_addRooms.push([_preRoom.x * 5, _preRoom.y * 5]);
		} while (_preRoom.GetNext());
	}

	if (_addRooms.length < 1)
		return false;

	_preRoom = [me.x, me.y];

	while (_addRooms.length > 0)
	{
		_addRooms.sort(function (a, b) { return (GetDistance(_preRoom[0], _preRoom[1], a[0], a[1]) - GetDistance(_preRoom[0], _preRoom[1], b[0], b[1])); });

		_removeRooms.push([_addRooms[0][0], _addRooms[0][1]]);

		for (i = 1; i < _addRooms.length; i++)
		{
			if (GetDistance(_preRoom[0], _preRoom[1], _addRooms[i][0], _addRooms[i][1]) <= GetDistance(_preRoom[0], _preRoom[1], _addRooms[0][0], _addRooms[0][1]))
			{
				_removeRooms.push([_addRooms[i][0], _addRooms[i][1]]);
			}
			else
				break;
		}

		if (_removeRooms.length > 1)
		{
			_removeRooms.sort(function (a, b) { return (b[0] - a[0]); });
			if (_removeRooms[0][0] <= _preRoom[0])
			{
				_removeRooms.sort(function (a, b) { return (b[1] - a[1]); });
				if (_removeRooms[0][1] <= _preRoom[1])
				{
					_removeRooms.sort(function (a, b) { return (a[0] - b[0]); });
					if (_removeRooms[0][0] >= _preRoom[0])
					_removeRooms.sort(function (a, b) { return (a[1] - b[1]); });
				}
			}
		}

		if (!range || GetDistance(me.x, me.y, _removeRooms[0][0], _removeRooms[0][1]) < range)
		{
			if (NTR_MoveTo(me.areaid, _removeRooms[0][0], _removeRooms[0][1], 3, true))
			_preRoom = _removeRooms[0];
		}

		for (i = 0; i < _addRooms.length; i++)
		{
			if (_addRooms[i][0] == _removeRooms[0][0] && _addRooms[i][1] == _removeRooms[0][1])
			{
				_addRooms.splice(i, 1);
				break;
			}
		}
		_removeRooms.length = 0;
	}
	return true;
}

function NTR_MoveTo(areaId, x, y, retry, isClearPath)
{
	if (x == me.x && y == me.y)
		return true;

	if (arguments.length < 4)
		retry = 3;
	if (arguments.length < 5)
		isClearPath = false;

	var j;
	var _path;
	var _preX, _preY;

	_path = GetPath(areaId, me.x, me.y, x, y, true);
	if (!_path)
		return false;

	for (var i = 0; i < _path.length; i++)
	{
		if (NTR_CheckCowKing() || NTR_CheckSafe(_path[i][0], _path[i][1], 15))
		{
			for (j = 0; j < retry; j++)
			{
				if (NTM_MoveTo(me.areaid, _path[i][0], _path[i][1]))
					break;
			}

			if (j >= retry)
				return false;
		}

		if (isClearPath && !NTR_CheckCowKing())
		{
			_preX = me.x;
			_preY = me.y;

			if(!MWR_ClearPosition(30, true))
				return false;

			NTP_DoPrecast();
			
			if (me.x != _preX || me.y != _preY)
			{
				if (!NTM_MoveTo(me.areaid, _preX, _preY))
					return false;
			}
		}
	}
	
	return true;
}


function NTR_CheckCowKing()
{
	var _cowKing = NTC_FindUnit(NTC_UNIT_MONSTER, _NTR_STRING_COW_KING);
	return (_cowKing && GetDistance(me, _cowKing) < _NTR_COW_KING_RANGE);
}


function NTR_CheckSafe(x, y, range)
{
	var i;
	var _target = NTC_FindUnit(NTC_UNIT_MONSTER);

	if (_target)
	{
		do
		{
			if (GetDistance(x, y, _target.x, _target.y) < range && _target.IsAttackable())
			{
				for (i = 0; i < 6; i++)
				{
					if (NTConfig_AttackSkill[i] && NTA_GetResistance(_target, _NTA_SkillDamage[i]) < 100)
					return false;
				}
			}
		} while (_target.GetNext());
	}

	return true;
}

function MWR_ClearPosition(range, pickitem, safelevel, openchests, usefinditem)
{
	var _orgx, _orgy;
	var _skiplist;
	var _attackcount = 0;
	var _target;
	var _distance, _mingid, _mindistance;
	var _result;
	
	switch(arguments.length)
	{
	case 0:
		range = 20;
	case 1:
		pickitem = false;
	case 3:
		openchests = true;
	case 4: 
		usefinditem = true;
	default:
		if(NTConfig_CheckSelfSafe < 0x01 && NTConfig_CheckMercSafe < 0x01)
			safelevel = 0;
		break;
	}

	_orgx = me.x;
	_orgy = me.y;

	for(var i = 0; i < 3; i++)
	{
		_skiplist = new Array();

		while(_attackcount < (i+1)*100)
		{
			if(NTR_CheckCowKing())
				return false;
			
			_mindistance = 1E6;

			_target = NTC_FindUnit(NTC_UNIT_MONSTER);

			if(_target)
			{
				do
				{
					if(_skiplist.indexOf(_target.gid) < 0)
					{
						if(_target.IsAttackable())
						{
							if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
							{
								_distance = GetDistance(me, _target);

								if(_distance < _mindistance)
								{
									_mingid = _target.gid;
									_mindistance = _distance;
								}
							}
						}
						else
							_skiplist.push(_target.gid);
					}
				} while(_target.GetNext());
			}

			if(_mindistance < 1E6)
			{
				_target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid, 1);

				if(_target)
				{
					if(MWConfig_ShowOverheadStatus)
						Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");

					_result = NTA_Attack(_target, (_attackcount % 30) == 0);
					
					if(MWConfig_ShowOverheadStatus)
						Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");

					switch(_result)
					{
						case 1:
							_skiplist.push(_mingid);
							break;
						case 2:
						case 3:
							if(MWConfig_PickItemsInstantly && (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12))
								NTSI_PickItems();
							_attackcount++;
							break;
						default:
							_attackcount = 1E6;
					}
				}
			}
			else
				break;
		}
	}

	if(_attackcount > 2)
	{
		switch(me.classid)
		{
			case NTC_CHAR_CLASS_PALADIN:
				if(parseInt(me.hp * 100 / me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp * 100 / me.mpmax) < NTConfig_UseRedemptionMP)
				{
					if(NTC_PutSkill(124, NTC_HAND_RIGHT))
						NTC_PingDelay(1000);
				}
				break;
			case NTC_CHAR_CLASS_BARBARIAN:
				if(usefinditem && MWConfig_UseFindItem && !NTR_CheckCowKing())
					MWL_FindItem(MWConfig_FindItemRange);
				break;
			case NTC_CHAR_CLASS_NECROMANCER:
				if(!NTR_CheckCowKing())
					MWA_RaiseMinions();
				break;
		}
	}
	
	if(pickitem && _attackcount > 0)
		NTSI_PickItems();

	if(MWConfig_OpenContainerMode == 2 && openchests && !NTR_CheckCowKing())
		MWL_OpenNearbyChests(MWConfig_OpenChestsRange);
	
	if(MWConfig_ActivateNearbyShrines)
		MWL_ActivateNearbyShrines();

	switch(safelevel)
	{
		case 1:
			return NTTMGR_CheckSafe(0x00, NTConfig_CheckMercSafe&0x01);
		case 2:
			return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
	}

	if(MWConfig_IdentAfterPickup)
		MWL_IDItemsAfterPickup();

	return true;
}

function NTT_SecondTomeTP(npc, type, amount)
{
	var _items;
	var _counter = 0;

	if(arguments.length < 1)
		return false;

	if(arguments.length < 2)
		type = 0;

	if(arguments.length < 0)
		amount = 1;

	if(amount == 0)
		return false;

	if(type)
		_items = npc.GetItems("tbk");

	if(_items)
	{
		if(_items.length > 0)
		{
			for(var i = 0 ; i < amount ; i++)
			{
				if(NTT_ShopItem(_items[0], npc, 2))
					_counter++;
			}
		}
	}
	return (_counter > 0);
}
Cow Leechfight ( Blaue Portal - Mit "Tp is safe!" Nachricht )
Code:
/**
*	This file was modified by [Only registered and activated users can see links. Click Here To Register...]
*	Check the programming section for updates and further scripts
*	Last Update: 22:45 24.08.2011
*/

var _AllowedToEnterTP = false;

const _NTR_STRING_COW_KING = GetLocaleString(2850);
const _NTR_COW_KING_RANGE = 80;

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

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

	MWC_Initialize();

	RegisterEvent(EVENT_GAMEMSG, NT_GameMsgEvents);
        var _leader = "Leader Name"; // Name of leader's character in game (exactly)

	var  _portal;
	var i;


                  if(!NTTM_CheckAct(1, true))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTTM_CheckAct, 26, 1, true);
		return;
	}
	

	NTTM_TownMove("portalspot");

   for(i = 0; i <= 200; i++) 
   {
                                          if(NTC_InMyParty(NTConfig_Leader))
			break;
		
		if(!NTConfig_Leader)
		{
			_portal = NTM_FindPortalAreaInt(38, 0);
			
			if(_portal != -1)
			{
				_owner = _portal.GetParent();
				
				if(_owner && !NTC_InMyParty(_owner))
					NTConfig_Leader = _owner;
			}
		}

		NTC_Delay(200);
	}
	
	if(MWConfig_EnterUnsafeTP)
		_AllowedToEnterTP = true;

	while(NTC_InTown() && NTC_InMyParty(NTConfig_Leader))
	{
		if(_AllowedToEnterTP)
			NTM_UsePortal("BluePortal", 38, NTConfig_Leader);
			
		NTC_Delay(500);
	}
	
	NTP_DoPrecast();
	
	NTR_ClearRooms(150, NTC_UNIT_MONSTER, 773, _NTR_COW_KING_RANGE);

	NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}



function NTR_TakeCowPortal(range)
{
	var _portal;

	_portal = NTC_FindUnit(NTC_UNIT_OBJECT, 60, 5);

	if(_portal)
		return NTM_UsePortal("Portal", 39, "dummy", _portal);
	
	return false;
}

function NTR_ClearRooms(range, type, id, distance)
{
	var i;
	var _unit;
	var _preRoom;
	var _addRooms = new Array();
	var _removeRooms = new Array();

	if (distance)
	{
		_unit = GetPresetUnits(me.areaid, type, id);
		if (!_unit || _unit.length < 1)
			return false;
	}

	_preRoom = GetRoom();
	if (_preRoom)
	{
		do
		{
			if (distance)
			{
				if (GetDistance(_preRoom.x * 5, _preRoom.y * 5, _unit[0].roomx * 5, _unit[0].roomy * 5) < distance)
					continue;
			}
			_addRooms.push([_preRoom.x * 5, _preRoom.y * 5]);
		} while (_preRoom.GetNext());
	}

	if (_addRooms.length < 1)
		return false;

	_preRoom = [me.x, me.y];

	while (_addRooms.length > 0)
	{
		_addRooms.sort(function (a, b) { return (GetDistance(_preRoom[0], _preRoom[1], a[0], a[1]) - GetDistance(_preRoom[0], _preRoom[1], b[0], b[1])); });

		_removeRooms.push([_addRooms[0][0], _addRooms[0][1]]);

		for (i = 1; i < _addRooms.length; i++)
		{
			if (GetDistance(_preRoom[0], _preRoom[1], _addRooms[i][0], _addRooms[i][1]) <= GetDistance(_preRoom[0], _preRoom[1], _addRooms[0][0], _addRooms[0][1]))
			{
				_removeRooms.push([_addRooms[i][0], _addRooms[i][1]]);
			}
			else
				break;
		}

		if (_removeRooms.length > 1)
		{
			_removeRooms.sort(function (a, b) { return (b[0] - a[0]); });
			if (_removeRooms[0][0] <= _preRoom[0])
			{
				_removeRooms.sort(function (a, b) { return (b[1] - a[1]); });
				if (_removeRooms[0][1] <= _preRoom[1])
				{
					_removeRooms.sort(function (a, b) { return (a[0] - b[0]); });
					if (_removeRooms[0][0] >= _preRoom[0])
					_removeRooms.sort(function (a, b) { return (a[1] - b[1]); });
				}
			}
		}

		if (!range || GetDistance(me.x, me.y, _removeRooms[0][0], _removeRooms[0][1]) < range)
		{
			if (NTR_MoveTo(me.areaid, _removeRooms[0][0], _removeRooms[0][1], 3, true))
			_preRoom = _removeRooms[0];
		}

		for (i = 0; i < _addRooms.length; i++)
		{
			if (_addRooms[i][0] == _removeRooms[0][0] && _addRooms[i][1] == _removeRooms[0][1])
			{
				_addRooms.splice(i, 1);
				break;
			}
		}
		_removeRooms.length = 0;
	}
	return true;
}

function NTR_MoveTo(areaId, x, y, retry, isClearPath)
{
	if (x == me.x && y == me.y)
		return true;

	if (arguments.length < 4)
		retry = 3;
	if (arguments.length < 5)
		isClearPath = false;

	var j;
	var _path;
	var _preX, _preY;

	_path = GetPath(areaId, me.x, me.y, x, y, true);
	if (!_path)
		return false;

	for (var i = 0; i < _path.length; i++)
	{
		if (NTR_CheckCowKing() || NTR_CheckSafe(_path[i][0], _path[i][1], 15))
		{
			for (j = 0; j < retry; j++)
			{
				if (NTM_MoveTo(me.areaid, _path[i][0], _path[i][1]))
					break;
			}

			if (j >= retry)
				return false;
		}

		if (isClearPath && !NTR_CheckCowKing())
		{
			_preX = me.x;
			_preY = me.y;

			if(!MWR_ClearPosition(30, true))
				return false;

			NTP_DoPrecast();
			
			if (me.x != _preX || me.y != _preY)
			{
				if (!NTM_MoveTo(me.areaid, _preX, _preY))
					return false;
			}
		}
	}
	
	return true;
}


function NTR_CheckCowKing()
{
	var _cowKing = NTC_FindUnit(NTC_UNIT_MONSTER, _NTR_STRING_COW_KING);
	return (_cowKing && GetDistance(me, _cowKing) < _NTR_COW_KING_RANGE);
}


function NTR_CheckSafe(x, y, range)
{
	var i;
	var _target = NTC_FindUnit(NTC_UNIT_MONSTER);

	if (_target)
	{
		do
		{
			if (GetDistance(x, y, _target.x, _target.y) < range && _target.IsAttackable())
			{
				for (i = 0; i < 6; i++)
				{
					if (NTConfig_AttackSkill[i] && NTA_GetResistance(_target, _NTA_SkillDamage[i]) < 100)
					return false;
				}
			}
		} while (_target.GetNext());
	}

	return true;
}

function MWR_ClearPosition(range, pickitem, safelevel, openchests, usefinditem)
{
	var _orgx, _orgy;
	var _skiplist;
	var _attackcount = 0;
	var _target;
	var _distance, _mingid, _mindistance;
	var _result;
	
	switch(arguments.length)
	{
	case 0:
		range = 20;
	case 1:
		pickitem = false;
	case 3:
		openchests = true;
	case 4: 
		usefinditem = true;
	default:
		if(NTConfig_CheckSelfSafe < 0x01 && NTConfig_CheckMercSafe < 0x01)
			safelevel = 0;
		break;
	}

	_orgx = me.x;
	_orgy = me.y;

	for(var i = 0; i < 3; i++)
	{
		_skiplist = new Array();

		while(_attackcount < (i+1)*100)
		{
			if(NTR_CheckCowKing())
				return false;
			
			_mindistance = 1E6;

			_target = NTC_FindUnit(NTC_UNIT_MONSTER);

			if(_target)
			{
				do
				{
					if(_skiplist.indexOf(_target.gid) < 0)
					{
						if(_target.IsAttackable())
						{
							if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
							{
								_distance = GetDistance(me, _target);

								if(_distance < _mindistance)
								{
									_mingid = _target.gid;
									_mindistance = _distance;
								}
							}
						}
						else
							_skiplist.push(_target.gid);
					}
				} while(_target.GetNext());
			}

			if(_mindistance < 1E6)
			{
				_target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid, 1);

				if(_target)
				{
					if(MWConfig_ShowOverheadStatus)
						Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");

					_result = NTA_Attack(_target, (_attackcount % 30) == 0);
					
					if(MWConfig_ShowOverheadStatus)
						Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");

					switch(_result)
					{
						case 1:
							_skiplist.push(_mingid);
							break;
						case 2:
						case 3:
							if(MWConfig_PickItemsInstantly && (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12))
								NTSI_PickItems();
							_attackcount++;
							break;
						default:
							_attackcount = 1E6;
					}
				}
			}
			else
				break;
		}
	}

	if(_attackcount > 2)
	{
		switch(me.classid)
		{
			case NTC_CHAR_CLASS_PALADIN:
				if(parseInt(me.hp * 100 / me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp * 100 / me.mpmax) < NTConfig_UseRedemptionMP)
				{
					if(NTC_PutSkill(124, NTC_HAND_RIGHT))
						NTC_PingDelay(1000);
				}
				break;
			case NTC_CHAR_CLASS_BARBARIAN:
				if(usefinditem && MWConfig_UseFindItem && !NTR_CheckCowKing())
					MWL_FindItem(MWConfig_FindItemRange);
				break;
			case NTC_CHAR_CLASS_NECROMANCER:
				if(!NTR_CheckCowKing())
					MWA_RaiseMinions();
				break;
		}
	}
	
	if(pickitem && _attackcount > 0)
		NTSI_PickItems();

	if(MWConfig_OpenContainerMode == 2 && openchests && !NTR_CheckCowKing())
		MWL_OpenNearbyChests(MWConfig_OpenChestsRange);
	
	if(MWConfig_ActivateNearbyShrines)
		MWL_ActivateNearbyShrines();

	switch(safelevel)
	{
		case 1:
			return NTTMGR_CheckSafe(0x00, NTConfig_CheckMercSafe&0x01);
		case 2:
			return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
	}

	if(MWConfig_IdentAfterPickup)
		MWL_IDItemsAfterPickup();

	return true;
}

function NT_GameMsgEvents(msg, type)
{
	var _msg = msg.toLowerCase();
	
	if(type == 0 && _msg.indexOf(NTConfig_Leader.toLowerCase()) > -1 && MWConfig_Announcements.BaalTpSafe && _msg.indexOf(MWConfig_Announcements.BaalTpSafe.toLowerCase()) > -1)
		_AllowedToEnterTP = true;
}

Um eine meiner drei Frage zu beantworten

Quote:
Originally Posted by NerDxx™ View Post
Hi Leute habe mal drei fragen,

1.
Code:
Ist es möglich wenn der leader das tp aufmacht das er wartet bis 1 oder alle Leecher durch gehen und dann erst anfängt zu kämpfen?
2.
Code:
Ist es möglich das der Leader zb sagt Tp is safe! und der Leecher erkennt die nachricht und geht dann durch das tp ?
3.
Code:
Wenn der Leader ein spiel öffnet  und der Leecher joint , sagt der Leader Tristrun und der Leecher macht Tristrun , dann sagt der Leader Cowrun und der Leecher macht Cowrun , ist das möglich das der Leecher die Scripts Reihenfolge aus dem Chat auslesen kann?
wenn ja welche befehle sind das?

hoffe habt verstanden was ich meine ;D

Frage 2 unten im Spoiler,


_
04/16/2013 14:12 cyborg1992#6884
Meine bots laufen ganz normal von cow bis baal am schluss wenn sie baal gekillt haben stürzen sie ab und müssen sich neu einlogen wie kann man das beheben
04/16/2013 15:16 Gt-Kingz#6885
Quote:
Originally Posted by cyborg1992 View Post
Meine bots laufen ganz normal von cow bis baal am schluss wenn sie baal gekillt haben stürzen sie ab und müssen sich neu einlogen wie kann man das beheben
Stelle mal in der Char-Config des Leechers "NTConfig_LeechExitDelay = 1000;" ein, das könnte eine Ursache dafür sein.
So ist es zumindest beim Etal, weiß nicht ob Muddy dieselbe Funktion hat.