Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Diablo 2
You last visited: Today at 20:11

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[D2NT] GVEtalBot

Discussion on [D2NT] GVEtalBot within the Diablo 2 forum part of the Other Online Games category.

Reply
 
Old 06/02/2013, 23:48   #556

 
elite*gold: 315
The Black Market: 219/2/4
Join Date: Jul 2008
Posts: 3,284
Received Thanks: 1,133
Quote:
Originally Posted by Tanker_Tank View Post
Ich hab mal ne Frage, kann mir jemand nen gutes Dia Script für meinen Leader geben und ein Gutes Leechfighter für Dia??

Da das Script was beim Etal Bot von haus aus dabei ist, finde ich wirklich nicht gut..

Der Leader macht kein Hot Tp, sondern cleart erstmal bissle.. Die leecher laufen zu viel rum und killen unnötige Mops, die sollen einfach nur, fast Dia machen und nit, unnötig Zeit verplempern^^
Hätte ein gutes Leader Script, falls dein Hammer gutes Eq hat. So telt der Bot direkt auf De Seis und die anderen Siegelbosse. Solltest aber schon schon 3,7-4k life haben & Max Block natürlich. Habe 0% Chicken auf 1000+ Runs.
Ein Leecherscript für Fast Chaos habe ich leider nicht.
Gt-Kingz is offline  
Old 06/03/2013, 00:03   #557
 
elite*gold: 0
Join Date: Oct 2010
Posts: 343
Received Thanks: 18
Also ich nutze ein Dudu!! .. Vllt ist das doch etwas Hart, wenn der direkt drauf Telet, also Dudu ^^

ich gucks mir mal morgen genau an^^
Tanker_Tank is offline  
Old 06/03/2013, 09:19   #558

 
elite*gold: 315
The Black Market: 219/2/4
Join Date: Jul 2008
Posts: 3,284
Received Thanks: 1,133
Quote:
Originally Posted by Tanker_Tank View Post
Also ich nutze ein Dudu!! .. Vllt ist das doch etwas Hart, wenn der direkt drauf Telet, also Dudu ^^

ich gucks mir mal morgen genau an^^
Ja, vergiss es. Aber was passt dir am Leaderscript nicht?
Gt-Kingz is offline  
Old 06/03/2013, 16:17   #559
 
The Angerfist's Avatar
 
elite*gold: 430
Join Date: May 2010
Posts: 2,435
Received Thanks: 339
Bräucht mal kurz ein Vorschlag für mein Teamsetup, hab noch ein Platz frei und kann mich nicht wirklich für etwas entscheiden.
Momentan lauf ich immer mit:
1x Hdin mit Conc
1x Hdin mit Conv
1x Light Sorc
1x Blizz Sorc
1x Java
1x Bow Ama
1x Ele-Dudu

Alle Chars sind 90+ und mir gehts um fastdia + Baal.

Irgendein tip?
The Angerfist is offline  
Old 06/03/2013, 17:07   #560
 
elite*gold: 0
Join Date: Oct 2010
Posts: 343
Received Thanks: 18
mal ne Frage, was muss ich einstellen dass mein Bot, falls er stirbt, den Merc wiederholt^^

Und mir ist sowas dummes passiert, Bot stirbt und was los ?
Hab vergessen zu kontrollieren, ob er alles aufnehmen kann, falls er stirbt.. Halbes Inventar leer, da er nochmal gestorben ist und der erste boddy weg war^^

Haha
Tanker_Tank is offline  
Old 06/03/2013, 23:15   #561

 
elite*gold: 315
The Black Market: 219/2/4
Join Date: Jul 2008
Posts: 3,284
Received Thanks: 1,133
Quote:
Originally Posted by The Angerfist View Post
Bräucht mal kurz ein Vorschlag für mein Teamsetup, hab noch ein Platz frei und kann mich nicht wirklich für etwas entscheiden.
Momentan lauf ich immer mit:
1x Hdin mit Conc
1x Hdin mit Conv
1x Light Sorc
1x Blizz Sorc
1x Java
1x Bow Ama

Alle Chars sind 90+ und mir gehts um fastdia + Baal.

Irgendein tip?
Dir fehlt ein netter Druide, der Life-Boost kommt immer gut!

Quote:
Originally Posted by Tanker_Tank View Post
mal ne Frage, was muss ich einstellen dass mein Bot, falls er stirbt, den Merc wiederholt^^

Und mir ist sowas dummes passiert, Bot stirbt und was los ?
Hab vergessen zu kontrollieren, ob er alles aufnehmen kann, falls er stirbt.. Halbes Inventar leer, da er nochmal gestorben ist und der erste boddy weg war^^

Haha
In der Charconfig müsstest du UseMerc=true einstellen.
Jaa, kenne das. Da sollte man immer drauf achten, dass man keinen Str Bug hat.
Gt-Kingz is offline  
Old 06/04/2013, 16:46   #562
 
The Angerfist's Avatar
 
elite*gold: 430
Join Date: May 2010
Posts: 2,435
Received Thanks: 339
Quote:
Originally Posted by Gt-Kingz View Post
Dir fehlt ein netter Druide, der Life-Boost kommt immer gut!



In der Charconfig müsstest du UseMerc=true einstellen.
Jaa, kenne das. Da sollte man immer drauf achten, dass man keinen Str Bug hat.
€: Den Dudu hab ich vergessen. Laufe momentan mit 7/8 Chars und wie gesagt ein Platz ist immer frei.
The Angerfist is offline  
Old 06/11/2013, 10:07   #563
 
elite*gold: 0
Join Date: Oct 2010
Posts: 343
Received Thanks: 18
So mal ne Frage zu Craften und Cuben

Wenn ich meinen Bot gesagt habe er soll Craften und zwar die Blood und die Caster Crafts..
Ich brauche ja dafür Ral/Tir/Amn und normale Jewels..
Sammelt der Bot die auch? Oder muss ich extra in der Pickit einstellen er soll Ral/Tir/Amn runen sammeln?

Ist ne normale Frage
Tanker_Tank is offline  
Old 06/12/2013, 17:37   #564
 
The Angerfist's Avatar
 
elite*gold: 430
Join Date: May 2010
Posts: 2,435
Received Thanks: 339
Irgendwie spinnt ein Leecher von mir rum. Wollte noch einen Leecher Fastdia machen lassen, nur Bosse/Seals halt allerdings macht er Dia ganz normal. D.h. alle random Mobs und tps etc.

NTConfig_Script.push("NTChaosSanctuary.ntj");
NTConfig_Dodge = false; //
NTConfig_FastChaos = true; // Set true to clear seals/bosses, false for full
NTConfig_Entrance = false; // Set true to start from Entrance, false for Star
NTConfig_LeechSupport = false; // Set true to support leechers, false if not


Irgendwas falsch eingestellt?
The Angerfist is offline  
Old 06/12/2013, 20:06   #565

 
elite*gold: 315
The Black Market: 219/2/4
Join Date: Jul 2008
Posts: 3,284
Received Thanks: 1,133
Quote:
Originally Posted by The Angerfist View Post
Irgendwie spinnt ein Leecher von mir rum. Wollte noch einen Leecher Fastdia machen lassen, nur Bosse/Seals halt allerdings macht er Dia ganz normal. D.h. alle random Mobs und tps etc.

NTConfig_Script.push("NTChaosSanctuary.ntj");
NTConfig_Dodge = false; //
NTConfig_FastChaos = true; // Set true to clear seals/bosses, false for full
NTConfig_Entrance = false; // Set true to start from Entrance, false for Star
NTConfig_LeechSupport = false; // Set true to support leechers, false if not


Irgendwas falsch eingestellt?
Glaube das Leech-Script ist nicht für Fast Dia geeignet.
Gt-Kingz is offline  
Old 06/14/2013, 23:36   #566
 
The Angerfist's Avatar
 
elite*gold: 430
Join Date: May 2010
Posts: 2,435
Received Thanks: 339
Gibt es eine Möglichkeit das der Leader bei Baal Runs das Hottp nicht erst macht wenn fast alles down ist sondern direkt am anfang?
The Angerfist is offline  
Old 06/15/2013, 15:21   #567
 
elite*gold: 0
Join Date: Oct 2010
Posts: 343
Received Thanks: 18
Ja du musst ne anderes Baal Script benutzen...
Das was in dem Etal enthalten ist, ist nit so gut..

Ich schiecke dir mal mein Script für Baalruns ist besser als das vom etal

Code:
RegisterEvent(EVENT_SCRIPTMSG, HostileHandler);
var _hostilepause = false;
var poscount = 1;
var _trapsPreCasted;
function NTMain(){

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

	var i;
	var _wave;
	var _starttick;

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

	NTA_Initialize();

	if(!NTTM_CheckAct()){
		NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
		return;
	}
	NTTMGR_TownManager();
	if(!NTTM_TownMove("waypoint")){
		NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
		return;
	}
	if(!NTM_TakeWaypoint(129)){
		NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
		return;
	}
	NTP_DoPrecast(true);
	if(NTConfig_ClearWSK == 1){ // Chair add - checking what clear option has been selected. non specified = don't clear!
		clearpath = true;
	}
	else if(NTConfig_ClearWSK == 2){
		clearpath = 2;
	}
	else{
		clearpath = false;
	}
	if(clearpath != 2){ //Chair add - first block handles anything but full level clears 
		if(!NTM_MoveToStair(me.areaid, 130,0,0,clearpath)){ // Chair add - the clearpath variable is adjusted by NTConfig_ClearWSK above
			NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToStair()");
			return;
		}
		if(!NTM_TakeStair(130)){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeStair()");
			return;
		}
		if(!NTM_MoveToStair(me.areaid, 131,0,0,clearpath)){ // Chair add - the clearpath variable is adjusted by NTConfig_ClearWSK above
				NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToStair()");
				return;
		}
		if(NTConfig_MakeHelpTPBeforeThrone && NTConfig_PublicMode){
			NTM_MakeTP();
			Say(Baal_WSlvl3tpMSG);
			NTC_Delay(1000);
			NTP_DoPrecast(true);
		}
		if(!NTM_TakeStair(130+i)){ 	// stair var i isn't being used yet so not sure why you have it here??? doesn't get used until line 147
									
			NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeStair()");
			return;
		}
	}
	else{ 	//Chair add - This entire block handles the option to clear the entire lvl 2 and 3, not only the path. 
		if(!NTA_ClearLevel()){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
			return;
		}
		if(NTConfig_OpenChestsInArea && NTU_DontOpenAreas())
			OpenChestsInArea();	
		if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_TILE, 82)){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToPresetUnit()");
			return;
		}
		if(!NTM_TakeStair()){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeStair()");
			return;
		}
		if(NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe)){
			NTTMGR_VisitTown();
		}
		NTP_DoPrecast();
		if(!NTA_ClearLevel()){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
			return;
		}
		if(NTConfig_OpenChestsInArea && NTU_DontOpenAreas())
			OpenChestsInArea();	
		if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_TILE, 82)){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToPresetUnit()");
			return;
		}
		if(!NTM_TakeStair()){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeStair()");
			return;
		}
		if(NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe)){
			NTTMGR_VisitTown();
		}
		NTP_DoPrecast();
		if(!NTA_ClearLevel()){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
			return;
		}
		if(NTConfig_OpenChestsInArea && NTU_DontOpenAreas())
			OpenChestsInArea();	
	}	
	//End of things added by Chairman
	if(!NTM_MoveTo(me.areaid, 15112, 5068)){
		NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveTo()");
		return;
	}
	// Adding Doll Check
	if(NTConfig_CheckSoulKillers && NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2904))) {
		NTC_SendLogToOOG(NTC_LOG_COMMON, COLOR_1 + "Undead Soul Killers found.");
		NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
		return;
	}
	// End Doll Check
	if(NTConfig_PublicMode){
		if(NTConfig_MakeHotTP){
			NTM_MoveTo(me.areaid, 15116, 5068);
			NTC_PingDelay(1000);
			NTM_MoveTo(me.areaid, 15116, 5068);
			if(NTThrone_Announce)
				_announceTMobs();
			NTM_MakeTP();
			Say(Baal_HotTp);
		}
	}
	NT_ClearThroneInt();
	if(NTConfig_PublicMode){
		NTM_MoveTo(me.areaid, 15112, 5004, 1, true);
		NTM_MakeTP();
		Say(Baal_SafeTp);
	}
	while(1){
		NTM_MoveTo(me.areaid, prewavespot[0], prewavespot[1]);
		if(me.GetState(2))
			NTC_PutSkill(109, NTC_HAND_RIGHT);
		if(NTConfig_IdInField){
			NT_FieldID(); 
		}
		for(i = 0 ; i < 6 ; i++){
			_wave = NT_ThroneCheckInt();
			if(_wave > 0)
				break;
			NTC_Delay(500);
		}
		_starttick = GetTickCount();
		while(_wave == 0){
			if(!NT_ThronePreAttackInt())
				NTC_Delay(200);
			if(GetTickCount()-_starttick > 17000){
				NT_ClearThroneInt();
				_starttick = GetTickCount();
			}
			_wave = NT_ThroneCheckInt();
		}
		switch(_wave){
			case 1:
				if(NTConfig_TeleEachWave){
					NTM_TeleportTo(me.x+1, me.y+3);
                }				
				NTA_ClearPosition(40, true, 2);
				NTP_DoPrecast(false);
				break;
			case 2:
				if(NTConfig_TeleEachWave){
					NTM_TeleportTo(me.x+1, me.y+3);
                }				
				if(NTConfig_HolyBoltBaal)
					if (me.classid == NTC_CHAR_CLASS_PALADIN && NTConfig_AttackSkill[5] == 101)
						achmel();
				NTA_ClearPosition(40, true, 2);
				if(NTConfig_PsnW2){
					if(NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe)){
						NTTMGR_VisitTown();
					}
				}
				break;
			case 3:
				if(NTConfig_TeleEachWave){
					NTM_TeleportTo(me.x+1, me.y+3);
                }				
				NTA_ClearPosition(40, true, 2);				
				if(NTConfig_Wave3 > 0){
					NT_CheckHydraInt();
				}
				else
					NTC_Delay(3000);
				break;
			case 4:
				if(NTConfig_TeleEachWave){
					NTM_TeleportTo(me.x+1, me.y+3);
                }				
				NTA_ClearPosition(40, true, 2);
				break;
			case 5:
				if(NTConfig_TeleEachWave){
					NTM_TeleportTo(me.x+1, me.y+3);
                }				
				NTA_ClearPosition(40, true, 2);
				break;
			default:
				if(NTConfig_TeleEachWave){
					NTM_TeleportTo(me.x+1, me.y+3);
                }				
				NTA_ClearPosition(40, true, 2);
				break;
		}
		if(_wave != 0) // Need to force a one time cast/wave Assassin only 
			_trapsPreCasted = false;
		if(_wave == 5)
			break;
	}
	if(NTConfig_KillBaal){
		var _portal;
		if(NTConfig_PublicMode)
			Say(Baal_KillBaalMessage);
		if(NTConfig_TownBeforeBaal && NTT_CheckInventoryBeforeBoss()){			
			Delay(1000);
			if(NTConfig_PublicMode) {
				Say(Baal_FreeSpaceMessage);
			}	
			NTTMGR_VisitTown(); 
		}
		if(NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe)){
			NTTMGR_VisitTown();
		}
		NTM_MoveTo(me.areaid, 15092, 5010);
		NTP_DoPrecast(false);
		if(NTConfig_IdInField){
			NT_FieldID(); 
		}		
		/*
		while(NTC_FindUnit(NTC_UNIT_MONSTER, 543))
			NTC_Delay(500);
		*/
		for(var i = 0; i < 60; i++) {
			Delay(500);
			if(!NTC_FindUnit(NTC_UNIT_MONSTER, 543)) {
				break;
			}
			if(i >= 58) {
				Say("looks like baal is bugged");
				if(Baal_BSayNextGame.length > 0 && NTConfig_PublicMode) {
					Say(Baal_BSayNextGame + NTC_NextGameSayererer());	
				}
			}
		}
		_portal = NTC_FindUnit(NTC_UNIT_OBJECT, 563, 1);
		if(!_portal){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTC_FindUnit()");
			return;
		}
		if(!NTM_UsePortal("Portal", 132, null, _portal)){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTM_UsePortal()");
			return;
		}
		NTM_MoveTo(me.areaid, 15138, 5916);
		if(!NTA_KillMonster(544)){
			if(NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe)){
				NTTMGR_VisitTown();
			}
			NTC_SendMsgToScript("NTBotGame.ntj", "NTA_KillMonster()");
			return;
		}
		NTSI_PickItems();
	}
	Delay(500);
	if(NTConfig_PublicMode)
		Say(Baal_NextGameMessage);
	Delay(500)
	if(Baal_BSayNextGame.length > 0 && NTConfig_PublicMode)
		Say(Baal_BSayNextGame + NTC_NextGameSayererer());	
	Delay(1000);
	NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}

// Internal function
function NT_ClearThroneInt(){
	var _attackpos = [15112, 5068, 15075, 5065, 15114, 5045, 15114, 5012, 15095, 5024, 15078, 5013, 15092, 5040];
	for(var i = 0 ; i < _attackpos.length ; i += 2){
		NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1]);
		NTA_ClearPosition(25, true, 2);
	}
}

function NT_ThroneCheckInt(){
	var _monster;
	if(!NTC_FindUnit(NTC_UNIT_MONSTER, 543))
		return 5;
	_monster = NTC_FindUnit(NTC_UNIT_MONSTER);
	if(_monster){
		do{
			if(NTA_IsValidMonster(_monster)){
				if(_monster.classid == 23 || _monster.classid == 62)
					return 1;
				if(_monster.classid == 105 || _monster.classid == 381)
					return 2;
				if(_monster.classid == 557)
					return 3;
				if(_monster.classid == 558)
					return 4;
				if(_monster.classid == 571)
					return 5;
			}
		} while(_monster.GetNext());
	}
	return 0;
}

function NT_ThronePreAttackInt(){
	if(me.classid == NTC_CHAR_CLASS_SORCERESS){
		if(NTConfig_PreWaveSpam > 0){
			if(poscount == 1){
				poscount = 2;
				return NTC_CastSkill(NTConfig_PreWaveSpam, 0, KBLSpamPos[0], KBLSpamPos[1]);
			}
			else if(poscount == 2){
				poscount = 3;
				return NTC_CastSkill(NTConfig_PreWaveSpam, 0, KBLSpamPos[2], KBLSpamPos[3]);
			}
			else{
				poscount = 1;
				return NTC_CastSkill(NTConfig_PreWaveSpam, 0, KBLSpamPos[4], KBLSpamPos[5]);
			}
		}
	}
	else if(me.classid == NTC_CHAR_CLASS_DRUID){
		if(NTConfig_AttackSkill[3] == 245){
			return NTC_CastSkill(NTConfig_AttackSkill[3], 2, DruidPreAtt[0], DruidPreAtt[1]);
		}
	}
	else if(me.classid == NTC_CHAR_CLASS_NECROMANCER){
		if(NTConfig_PreWaveSpam > 0)
			return NTC_CastSkill(NTConfig_PreWaveSpam, _NTA_SkillHand[NTConfig_PreWaveSpam], NecroPreAtt[0], NecroPreAtt[1]);
	}	
	else if(me.classid == NTC_CHAR_CLASS_PALADIN){
		if(NTConfig_AttackSkill[3] == 112){
			NTC_PutSkill(NTConfig_AttackSkill[3], NTC_HAND_LEFT);
			NTC_PutSkill(NTConfig_AttackSkill[4], NTC_HAND_RIGHT);
			return NTC_CastSkill(NTConfig_AttackSkill[3], 2, 15092, 5028);
		}
	}
	else if(me.classid == NTC_CHAR_CLASS_ASSASSIN){
		var _attackPos = [15088,5023,15087,5032,15098,5022,15101,5034,15094,5029];
		if(NTConfig_UseTraps && !_trapsPreCasted){
			for(var i=0;i<5;i++) {
				if(i == 0 || i == 2 || i == 3) // Added delays to prevent trap miscast
					NTC_Delay(25);	
				if(NTConfig_TrapSet[i] > 0)
					NTC_CastSkill(NTConfig_TrapSet[i], NTC_HAND_RIGHT, _attackPos[i*2],_attackPos[(i*2)+1]);
			}
			_trapsPreCasted = true;
		}
		if(NTConfig_AttackSkill[3] == 256)
			if(me.GetSkillStatus(NTConfig_AttackSkill[3]) != 8)
				return NTC_CastSkill(NTConfig_AttackSkill[3], 2, 15093, 5030);		
	}
	return false;
}

function NT_CheckHydraInt(){
	var _hydra1, _hydra2, _hydra3;
	_hydra1 = NTC_FindUnit(NTC_UNIT_MONSTER, 351);
	_hydra2 = NTC_FindUnit(NTC_UNIT_MONSTER, 352);
	_hydra3 = NTC_FindUnit(NTC_UNIT_MONSTER, 353);
	if((_hydra1 && _hydra1.GetStat(172) != 2 && _hydra1.GetState(105))
	  || (_hydra2 && _hydra2.GetStat(172) != 2 && _hydra2.GetState(105))
	  || (_hydra3 && _hydra3.GetStat(172) != 2 && _hydra3.GetState(105))){
		if(NTConfig_Wave3 == 1)
			NTM_MoveTo(me.areaid, 15112, 5004); // right side
		else if(NTConfig_Wave3 == 2)
			NTM_MoveTo(me.areaid, 15073, 5002); // left side			
		if(me.GetState(2))
			NTC_PutSkill(109, NTC_HAND_RIGHT);
		NTC_PingDelay(3000);
	}
}

function achmel(){
	var x = 0;
	var _holdTargetHp = 0;
	NTC_PutSkill(NTConfig_AttackSkill[6], NTC_HAND_RIGHT);
	var _achmel = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(21852));
	while (_achmel && _achmel.hp > 0){
		_holdTargetHp = _achmel.hp;
		for(var i = 0; i < 5 ; i++){
			NTC_CastSkill(NTConfig_AttackSkill[5], NTC_HAND_LEFT, _achmel);
		}
		if(_holdTargetHp <= _achmel.hp && NTConfig_WalkAround) {
			x++;
			if(x % 2 == 0)
				NTM_WalkTo(me.x+10, me.y);
			else
				NTM_WalkTo(me.x-10, me.y);
		}
	}
	var _company = NTC_FindUnit(NTC_UNIT_MONSTER, 105);
	do{
		while (_company != null && _company.hp >0 && !_company.GetState(53) && !_company.GetState(96)){
			_holdTargetHp = _company.hp;
			for(var i = 0; i < 5 ; i++){
				NTC_CastSkill(NTConfig_AttackSkill[5], NTC_HAND_LEFT, _company);
			}
			if(_holdTargetHp <= _company.hp && NTConfig_WalkAround) {
				x++;
				if(x % 2 == 0)
					NTM_WalkTo(me.x+10, me.y);
				else
					NTM_WalkTo(me.x-10, me.y);
			}
		}
	} while (_company && _company.GetNext());
}

function HostileHandler(msg){
	if(msg == "pause"){
		if(_hostilepause){
			Print(COLOR_3 + "Resuming...");
			_hostilepause = false;
		}
		else{
			Print(COLOR_1 + "Pausing to kill hostiles...");
			_hostilepause = true;

			ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
			ClickMap(NTC_CLICK_RUP, NTC_SHIFT_NONE, null);

			while(_hostilepause)
				NTC_Delay(250);
		}
	}
}

function _announceTMobs() {

	var _throneMobs = [];
	var _count = [];

	_monster = NTC_FindUnit(NTC_UNIT_MONSTER);

	if(_monster){
		do {
			if(_outofTBounds(_monster.x, _monster.y))
				continue;
			switch(_monster.classid) {
				case 120:
				case 641: 
				case 733: _updateTMobs("Burning Soul");
					break;
				case 215:
				case 691: _updateTMobs("Undead Soul Killer");
					break;
				case 478:
				case 637: _updateTMobs("Hell Witch");
					break;
				case 77:
				case 598: _updateTMobs("Serpent Magus");
					break;
				case 133:
				case 697:
				case 731: _updateTMobs("Dark Lord");
					break;
				case 510: _updateTMobs("Blood Lord");
					break;
				case 310:
				case 699:
				case 700: _updateTMobs("Doom Knight");
					break;
				case 312:
				case 701:
				case 702:
				case 713: _updateTMobs("Oblivion Knight");
					break;
				case 361:
				case 687:
				case 712: _updateTMobs("Pit Lord");
					break;
				case 104:
				case 669:
				case 670: _updateTMobs("Horadrim Ancient");
					break;
				case 33:
				case 603: _updateTMobs("Assailant");
					break;
				default: _updateTMobs("Trash Mob");
					break;
			}
		} while(_monster.GetNext())
	}
			
	_sayTMobs();
	
	function _updateTMobs(Tmob) {
		var _tIndex = _throneMobs.indexOf(Tmob);
		if(_tIndex == -1) {
			_throneMobs.push(Tmob);
			_count.push(1);
		}
		else {
			_count[_tIndex]++;
		}
	}

	function _sayTMobs() {
		for(var i = 0; i < _throneMobs.length; i++) {
			Say(_count[i] + " " + (_count[i] == 1 ? _throneMobs[i] : (_throneMobs[i].charAt(_throneMobs[i].length - 1).toLowerCase() == "s" ? _throneMobs[i] + "'s" : (_throneMobs[i].indexOf("Witch") != -1 ? _throneMobs[i] + "es" : _throneMobs[i] + "s"))));
			Delay(100);
		}
	}
	
	function _outofTBounds(monX, monY) {
		if((monX >= 15072 && monX <= 15118 && monY >= 5002 && monY <=5073) || (monX >= 15087 && monX <= 15104 && monY >= 5073 && monY <= 5094))
			return false;
		return true;
	}
}
Tanker_Tank is offline  
Old 06/25/2013, 23:51   #568
 
elite*gold: 0
Join Date: Oct 2010
Posts: 59
Received Thanks: 8
leecher

kann es sein, dass in ein spiel joinen nur geht, wenn im (account-)namen des leaders keine unterstriche vorhanden sind? hat bei mir zumindest nicht funktioniert... einem account zu joinen, der keine unterstriche hat, ging sofort (auch wenn die join-zeit relativ hoch war, aber ich denke das einzustellen krieg ich hin).
ekaf.liam is offline  
Old 06/26/2013, 11:15   #569

 
elite*gold: 315
The Black Market: 219/2/4
Join Date: Jul 2008
Posts: 3,284
Received Thanks: 1,133
Quote:
Originally Posted by ekaf.liam View Post
kann es sein, dass in ein spiel joinen nur geht, wenn im (account-)namen des leaders keine unterstriche vorhanden sind? hat bei mir zumindest nicht funktioniert... einem account zu joinen, der keine unterstriche hat, ging sofort (auch wenn die join-zeit relativ hoch war, aber ich denke das einzustellen krieg ich hin).
MIt der Leechstarter v2.3 sollte es gehen.
Gt-Kingz is offline  
Thanks
1 User
Old 06/26/2013, 23:53   #570
 
elite*gold: 0
Join Date: Oct 2010
Posts: 59
Received Thanks: 8
Quote:
Originally Posted by Gt-Kingz View Post
MIt der Leechstarter v2.3 sollte es gehen.
hmm die benutze ich eigentlich.. hier ist mein code (namen sind in der eigentlichen datei natürlich richtig geschrieben). ist das nicht die version, die du meinst?

Code:
// commented out the /f l line, but can be uncommented if you wich
// added white screen of death fix and also some print txt for testing 2-17-11 stairbuilder
// added stagger leech joining 9-25-11 by stair
// added single /f l try to enter games for switching keys and missing the game join message 9-25-11 by stair
// added a while loop and manager print if a bad cd key is used or bad account or password stair 9-25-11
// added gameDoesNotExistDelay and txt file joining.  Must use updated leader entry point for the txt joining
// added 3 new config options tryLeaderGame1x, retryLeaderGame, tryLeaderGame1x 12-22-2011
// changed where the game count increase is called to right when bot enters chat instead of waiting for game name.  Saves a second or 2 credit for this goes to stib 1-21-12
// fixed /f l delay to only apply after the first /f l 1-21-12
// added fastJoin option.  read comments next to setting below 1/22/12
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// Renamed from LeechStarter2.3 to LeechStarter on 4/27/2013 by Tru
// Version of the LeechStarter remains at 2.3!

// =============================================================================
// Leader Account settings
// =============================================================================

var leaderAccountName = "xxx_yy"; 
var leaderName = "yyy";

// =============================================================================
// Leecher game entry delays use to stagger when leechers join game
// [characterName, delay in milliseconds] - leave these as-is to not use them
// =============================================================================

var leecher1 = ["characterName", 100];
var leecher2 = ["characterName", 750];
var leecher3 = ["characterName", 1250];
var leecher4 = ["characterName", 2000];

//==============================================================================
// join options
//==============================================================================

var useFL = true;  					// set true if you wish your leecher to use /f l to join games.  useFL MUST be set to 0 for this to work
var useFLCount = 0;					// this is seperate from the above setting allows you to use /f l to join, but will only spam /f l the set number of times.  set to 0 to disable
var delayFL = 5000;					// milliseconds before the bot will use the /f l command in loby
var reEnterSameGame = false;		// set to false to keep the bot from using /f l to re enter same game also must be set to false if you don't want bot to re enter same game for txt joining
var useTextFileJoin = false;  		// use txt file communication between leader and leecher to join games
var gameDoesNotExistDelay = 10;		// time to idle before trying if leader's game does not exist.  In seconds.
var tryLeaderGame1x = false;		// will only try to enter the game one time.  Good for when leader drops before leecher gets in.
var retryLeaderGame = 2;			// number of times you would like to try joining leaders game.  Note tryLeaderGame1x = true bypasses this and the delay below
var retryLeaderGameDelay = 10;		// time in seconds to delay between retrying to enter leaders game
var fastJoin = true;				// this has preconfigured delays for easy switching.  Gets you leecher in game in about 3 seconds.  THIS MAY CAUSE JOIN PROBLEMS FOR SOME USERS!!!!!
var ftjDelay = 180;					// time to idle before trying if leecher failed to join.  In seconds.

// =============================================================================
// Game password (leave blank if none)
// =============================================================================

var gamepassword = "zzz";

// =============================================================================
// UseCDKeyChangeTrick :
// if true, the follow bot will say his gamename/gamepwd (set in the OOG) in chat before each game
//          in order to increment his number of runs (to switch CDKeys after xx runs)
// if false, the follow bot will never change his CDKey
// =============================================================================

var UseCDKeyChangeTrick = false;

// =============================================================================
// Debug : set to true if you are experiencing problems with your JoinBot
// it will log in your OOG the lobby chat actions
// =============================================================================

var Debug = false;

////////////////////////////////////////////////////////////////////////////////
// Lobby chat settings :
////////////////////////////////////////////////////////////////////////////////

var joinChatAfterGame    = true;	// Set to true to join the chat after each game (needed for JoinBot)
var firstJoinMessage     = "";		// Message said when you first enter the chat
var chatMessageAfterGame = "";		// Message said after each game
var joinRandomChannel    = false; 	// if this is true, will join a random channel, otherwise it will use the channel below..
var joinChannelInChat    = "channel xyz";		// Name of the channel you want to join (leave blank if you want to stay in the default channel)

////////////////////////////////////////////////////////////////////////////////
// Delays:
////////////////////////////////////////////////////////////////////////////////
// Minimum game length, waits in the lobby if last game was too short
// I recommend to keep a value > 300000 (milliseconds) to avoid bnet temporary ban
var gameMinLength    		  = 420000; // Milliseconds

// Realm Delays
var unableToConnectRetry      = 20;		// Minutes
var realmDownRetry            = 480;	// Minutes
var disconnectedRetry         = 5;		// Minutes
var cdkeyInUseRetry           = 5;		// Minutes

if(fastJoin) { 
	// interface delays (milliseconds)
	var connectingToBnetTimeout    = 20000;
	var characterScreenTimeout     = 10000;
	var pleaseWaitTimeout          = 10000;
	var createGameThreshold        = 10000;
	var createGameThresholdRandom  = 1000;
	var createGameTimeout          = 15000;
	var waitInLineTimeout          = 15000;
	var characterSelectDelay       = 1000;
	var loginDelay                 = 1000;
	var clickDelay                 = 0;
	var textDelay                  = 0;
	var clickDelayRandom           = 0;
	var textDelayRandom            = 0;
	var gameDoesNotExistDelayMin   = 600000; // this not for leech configuration. Look for gameDoesNotExistDelay above
	var gameDoesNotExistDelayMax   = 900000; // this not for leech configuration. Look for gameDoesNotExistDelay above
	var gameDoesNotExistTimeout    = 30000;
	var waitBeforeEnterChatMin     = 1000;
	var waitBeforeEnterChatMax     = 2000;
	var waitInChatBeforeActionsMin = 2000;
	var waitInChatBeforeActionsMax = 3000;
} else {
	var connectingToBnetTimeout    = 20000;
	var characterScreenTimeout     = 10000;
	var pleaseWaitTimeout          = 10000;
	var createGameThreshold        = 10000;
	var createGameThresholdRandom  = 1000;
	var createGameTimeout          = 15000;
	var waitInLineTimeout          = 15000;
	var characterSelectDelay       = 1000;
	var loginDelay                 = 1000;
	var clickDelay                 = 500;
	var textDelay                  = 500;
	var clickDelayRandom           = 500;
	var textDelayRandom            = 500;
	var gameDoesNotExistDelayMin   = 600000; // this not for leech configuration. Look for gameDoesNotExistDelay above
	var gameDoesNotExistDelayMax   = 900000; // this not for leech configuration. Look for gameDoesNotExistDelay above
	var gameDoesNotExistTimeout    = 30000;
	var waitBeforeEnterChatMin     = 1000;
	var waitBeforeEnterChatMax     = 2000;
	var waitInChatBeforeActionsMin = 2000;
	var waitInChatBeforeActionsMax = 3000;
}

// Only for JoinBot (friend list delay, milliseconds)
var LeaderOfflineDelay         = 30000;
var LeaderInChatDelay          = 10000;
var GameIsFullDelay            = 30000;

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// DO NOT EDIT ANYTHING BELOW THIS
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

//D2NT Manager Command

const D2NT_MGR_LOADING = 1;
const D2NT_MGR_READY = 2;
const D2NT_MGR_LOGIN = 3;
const D2NT_MGR_CREATE_GAME = 4;
const D2NT_MGR_INGAME = 5;
const D2NT_MGR_RESTART = 6;
const D2NT_MGR_CHICKEN = 7;
const D2NT_MGR_PRINT_STATUS = 8;
const D2NT_MGR_PRINT_LOG = 9;

var lastGameMade     = GetTickCount();
var lastGameStatus     = 0;
var nextGameMake     = 0;
var inGameAt       = 0;
var chatActionsDone   = false;
var lastGameFailed     = false;
var sayChatMsgAfterGame = false;
var ftjcount = 0;

Include("libs/controlInfo.ntl");
Include("libs/common/NTColorConverter.ntl");

var controlData = new controlInfo();

var increaseGameCount = true;
var firstTimeFl = true;
var retryLeaderGameCount = 0;
var lastGame = "";
var retryFL = 0;
var game = '';
var _gamename = "";
var _gamepassword = "";
var _leaderOfflineTick = -LeaderOfflineDelay;
var _leaderInChatTick = -LeaderInChatDelay;
var _GameIsFullTick = -GameIsFullDelay;

function NTMain()
{
    Delay(1000);

    var _ingame = false;

    controlData.clickDelay = clickDelay;
    controlData.textDelay = textDelay;
    controlData.clickDelayRandom = clickDelayRandom;
    controlData.textDelayRandom = textDelayRandom;
    while(1)
    {
        if(me.ingame)
        {
            _gamename = me.gamename;
            _gamepassword = me.gamepassword;

            if(!inGameAt)
                inGameAt = GetTickCount();

            if(!_ingame)
            {
                RunGC(); // run garbage collector between each game

                if(Load("NTBot/NTBotGame.ntj"))
                {
                    if(!reEnterSameGame) { NT_File("logs/messagecomands/"+me.charname+"-lastgame.txt", 1, me.gamename); }	// writes current game for comparing to new game to join next time in lobby	
									
					retryFL = 0; // sets the counter back to 0 upon game entry.
					_ingame = true;
					retryLeaderGameCount = 0;
					firstTimeFl = true;
					increaseGameCount = true;
					
                    if(me.playtype > 0)
                        sendEventToOOG(D2NT_MGR_INGAME, "In Game[IP:" + me.gameserverip.split(".")[3] + "]", 0);
                    else
                        sendEventToOOG(D2NT_MGR_INGAME, "In Game", 0);

                    lastGameStatus = 2; // in game successful

                }
            }

            Delay(1000);
        }
        else
        {
            if(_ingame)
            {

			
				My_ExitGame_Check(); // out of korean modded d2nt fixes white screen of death
				_ingame = false;
                sayChatMsgAfterGame = true;

                sendEventToOOG(D2NT_MGR_READY, "", 0);
            }

            locationAction(controlData.getLocation());

            Delay(500);
        }
    }
}

function locationAction(location)
{
    switch(location.id)
    {
    case 3: // Lobby Chat
        sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
		//ftjcheck
		if (ftjcount >= 10 && lastGameStatus == 1) {
			sendEventToOOG(D2NT_MGR_PRINT_LOG, COLOR_1 + "FTJ detected...........Idling", 0);
			ftjcount = 0;
			inGameAt = 0;
			lastGameStatus = 0;
			setNextGameMake();
			locationTimeout(ftjDelay*1000, location);
		}
		//LogPrintSimple(me.account + "MyAccountTest.txt", me.account + " / " + me.charname) // this is to check for 2nd account login
		if (UseCDKeyChangeTrick && increaseGameCount) {
			sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
			increaseGameCount = false;
			Delay(1000);
		}
        if(!chatActionsDone)
        {  
			Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax));

            if(joinRandomChannel || joinChannelInChat != "")
            {
                Say("/join " + (joinRandomChannel ? getRandomString(Random(3,10)) : joinChannelInChat));
                Delay(1000);
            }

            if(firstJoinMessage)
            {
                Say(firstJoinMessage);
                Delay(200);
            }

            chatActionsDone = true;
        }

        if (chatMessageAfterGame && _gamename != "" && sayChatMsgAfterGame == true)
        {
            Say(chatMessageAfterGame);
            sayChatMsgAfterGame = false;
            Delay(200);
        }

        game = '';
		if(useTextFileJoin) {
			NT_RetrievenextGame(); //read message from txt file and set game and gamepassword vars from that 
		} 
		else {
			if(useFL || useFLCount > 0) {
				var _tick = GetTickCount();
				if ((_leaderOfflineTick < 0 || (_leaderOfflineTick + LeaderOfflineDelay) < _tick) // maybe play with this so it skips it for 30 seconds
				 && (_leaderInChatTick < 0 || (_leaderInChatTick + LeaderInChatDelay) < _tick)
				 && (_GameIsFullTick < 0 || (_GameIsFullTick + GameIsFullDelay) < _tick))
				{
					Delay(500);			
					DebugInOOG('Locating the leader : '+leaderAccountName);
					if(useFLCount > 0 && retryFL < useFLCount) {
						
						if(!firstTimeFl) {
							Delay(delayFL);
						} else {
							firstTimeFl = false;
						}
					
						Say('/f l');
						retryFL++;
					}
					else if(useFL) {
						if(!firstTimeFl) {
							Delay(delayFL);
						} else {
							firstTimeFl = false;
						}
						Say('/f l');
					}
					
				}
			}

			if(chat = controlData.get(controlData.controls.lobby.chat.textBox.channelText))
			{
				var found_leader = false;
				lines = chat.GetText();
				if(!lines) { break; }
				for (var line_id = lines.length - 1; line_id > -1; line_id--)
				{
					if (found_leader) // useless... :/
						break;

					if (lines[line_id].substring(0,1) == " ")
						continue;

					// retrieving the whole message
					var msg = lines[line_id].replace(/^\s+|\s+$/, "");
					var msglines = 1;
					while (lines[line_id+msglines] != undefined && lines[line_id+msglines].substring(0,2) == "  ")
					{
						msg += " " + lines[line_id+msglines].replace(/^\s+|\s+$/, "");
						msglines++;
					}
					if (msg.lastIndexOf(leaderName) >= 0)
						DebugInOOG("yc8found him :;"+msg);

					// checking if the msg is a friendly whisper
					if (msg.lastIndexOf(leaderName + ' (*' +leaderAccountName+')') > -1 || msg.lastIndexOf(leaderName + '@' + GateWayToName() + ' (*' +leaderAccountName+')') > -1)              
				   // if (msg.lastIndexOf(leaderName + ' (*' +leaderAccountName+')') > -1) // need to modify this and then add another to handle the "@USWest
					{																	// should be just a matter of leaderName + '@' and then register the 2nd line as game name
						 var regGameNameWhispered=/^.*in_new_game\s+(.*)$/gi; // replaced below with this to join on mesage upon entering game
						//var regGameNameWhispered=/^.*(game|partie|spiel|partita|partida).*(nomm[^\s]*|called|chiamata)\s*([\w\s-]*\w)\s*\.\s*$/gi;
						if (msg.match(regGameNameWhispered))
							game = msg.replace(regGameNameWhispered, "$1"); // replaced below with this to join on mesage upon entering game
							//game = msg.replace(regGameNameWhispered, "$3");

						if (game != '')
						{
							found_leader = true;
							break;
						}
					}

					// checking if the msg is from the friend list
					if (msg.lastIndexOf(': '+leaderAccountName+',') > -1)
					{
						found_leader = true;
						var regOffline=/^.*(offline|desconectado).*$/gi;
						var regInChat=/^.*(channel|canale?)\s*([\w\s-]*\w)\.?\s*$/gi;
						var regGameName=/^.*(game|partie|spiel|partita|partida)\s*([\w\s-]*\w)\s*\(priv[^\)]*\)\.\s*$/gi;

						if (msg.match(regOffline)
							&& (_leaderOfflineTick < 0 || (_leaderOfflineTick + LeaderOfflineDelay) < _tick))
						{
							DebugInOOG('Leader is offline, delay '+Math.round(LeaderOfflineDelay/1000)+' sec for next /f l.');
							_leaderOfflineTick = GetTickCount();
						}
						else if (msg.match(regInChat)
								&& (_leaderInChatTick < 0 || (_leaderInChatTick + LeaderInChatDelay) < _tick))
						{
							DebugInOOG('Leader is in the chat "'+msg.replace(regInChat, "$2")+'", delay '+Math.round(LeaderInChatDelay/1000)+' sec for next /f l.');
							_leaderInChatTick = GetTickCount();
						}
						else if (msg.match(regGameName)
								&& ((_leaderOfflineTick < 0 || (_leaderOfflineTick + LeaderOfflineDelay) < _tick)
									&& (_leaderInChatTick < 0 || (_leaderInChatTick + LeaderInChatDelay) < _tick)))
						{
							game = msg.replace(regGameName, "$2");
						}
						else if ((_leaderInChatTick < 0 || (_leaderInChatTick + LeaderInChatDelay) < _tick)
								&& (_leaderOfflineTick < 0 || (_leaderOfflineTick + LeaderOfflineDelay) < _tick))
						{
							// unhandled line, supposelly "In Realm"
							DebugInOOG('The leader was in the the lobby but not in chat, delay '+Math.round(LeaderInChatDelay/1000)+' sec for next /f l.');
							_leaderInChatTick = GetTickCount();
						}

						break;
					}
				}

				if (found_leader == false)
					DebugInOOG('I couldn\'t find the leader in my friend list!');
			}
			else
			{
				DebugInOOG('I can\'t read the chat!');
				//DebugInOOG('You probably haven\'t added the lobby chat controlinfo coordinates!');
				Delay(30000);
			}
		}
		if(!reEnterSameGame) { // added to check game name.  If same as last game then don't re enter.
			NT_RetrieveLastGame();
			//Delay(250);
			if(lastGame == game) {
				game = "";
			}
		}
		if (game!="")
		{
			DebugInOOG('Leader is in the game "' + game + '"');
			controlData.click(controlData.controls.lobby.button.join);
			Delay(100);
		}
		
        break;

    case 1:    // Lobby
		if(location.id == 1 && joinChatAfterGame)
        {
			//LogPrintSimple(me.account + "MyAccountTest.txt", me.account + " / " + me.charname) // this is to check for 2nd account login            
			Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
            controlData.click(controlData.controls.lobby.button.enterChat);

			break;
			
        }
        break;

    case 2: // Waiting In Line
        if(GetTickCount()-lastGameMade > waitInLineTimeout)
            controlData.click(controlData.controls.lobby.inLine.button.cancel);
        break;

    case 4: // Create Game
        if(!controlData.get(controlData.controls.lobby.create.editBox.gameName))
        {
            controlData.click(controlData.controls.lobby.button.join);
            Delay (500);
            controlData.click(controlData.controls.lobby.button.create);
            Delay (500);
            break;
        }

        sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

        locationTimeout(5000, location);

        lastGameMade = GetTickCount();
        lastGameStatus = 1; // pending creation
        break;  
		
	case 5: // Join Game
    if (game)
    {
		if(retryLeaderGameCount > 0 && retryLeaderGameDelay > 0) {
			Delay(retryLeaderGameDelay * 1000);
		}
		controlData.setText( controlData.controls.lobby.join.editBox.gameName, game);
        Delay (100);
        controlData.setText( controlData.controls.lobby.join.editBox.password, gamepassword);
		//SendCopyData("D2NT Manager", null, 9<<16, "-- Debug : " + COLOR_1 +me.charname);
		if(leecher1[0] == me.charname){
			Delay(leecher1[1]);
		}
		else if(leecher2[0] == me.charname){
			Delay(leecher2[1]);
		}
		else if(leecher3[0] == me.charname){
			Delay(leecher3[1]);
		}
		else if(leecher4[0] == me.charname){
			Delay(leecher4[1]);
		}		
		else{
			Delay(100);
		}
		if(tryLeaderGame1x && retryLeaderGame <= 0) {	
			NT_File("logs/messagecomands/"+me.charname+"-lastgame.txt", 1, game); // writes current game for comparing to new game to join next time in lobby	
			game = "";
		}
		if(retryLeaderGame > 0 && !tryLeaderGame1x && retryLeaderGameCount < retryLeaderGame) { // increases the leadergamecount
			retryLeaderGameCount++;
		}
		if(retryLeaderGame > 0 && !tryLeaderGame1x && retryLeaderGameCount >= retryLeaderGame) { // sets game name to "" because we have made as many attempts as configured to join
			game = "";
		}
		controlData.click(controlData.controls.lobby.join.button.joinGame);
		RunGC(); // run garbage collector between each game
		
        locationTimeout(5000, location);
        lastGameStatus = 1; // pending join
    }
    else
    {
        DebugInOOG('No game to join : cancelling');
        me.Cancel(1);
        Delay(1000);
    }

    break;
    case 6: // Ladder
        break;

    case 7: // Channel List
        break;

    case 8: // Main Menu
        if(controlData.getCurrentRealmIndex() == me.gatewayid)
        {
            outputGameLength();
            controlData.click(controlData.gameTypes[me.playtype]);
        }
        else
            controlData.click(controlData.controls.mainMenu.button.gateway);
        break;

    case 9: // Login
        sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
        Delay(loginDelay);

        controlData.setText(controlData.controls.login.editBox.accountName, me.account);

        sendEventToOOG(D2NT_MGR_LOGIN, location.name, 0);

        locationTimeout(5000, location);
        break;

    case 10: // Login Error (this is a fatal error, so stop)
        sendEventToOOG(D2NT_MGR_PRINT_LOG, COLOR_1 + "Bad Account or PW Entered.......Idling", 0);
		while(1) { Delay(500); }        
		//sendEventToOOG(D2NT_MGR_RESTART, location.name, 10);
        Delay(3500);
        break;

    case 11: // Unable To Connect
        timeoutDelay(unableToConnectRetry*60*1000, location)
        controlData.click(controlData.controls.login.unableToConnect.button.ok);
        break;

    case 12: // Character Select
        var _time, _control;

        sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);

        for(_time = 0 ; _time < characterScreenTimeout ; _time += 500)
        {
            _control = controlData.get(controlData.controls.characterSelect.textBox.characterInfo[me.charloc]);
            if(_control && _control.GetText() != undefined)
                break;

            Delay(500);
        }

        if(_time < characterScreenTimeout)
        {
            Delay(characterSelectDelay);

            controlData.click(controlData.controls.characterSelect.textBox.characters[me.charloc], 0, 0, 1);
            controlData.click(controlData.controls.characterSelect.textBox.characterInfo[me.charloc], 0, 0, 1);

            // reset last game made, so it doesnt make a game immediately
            inGameAt = 0;
            setNextGameMake();
        }
        else
        {
            controlData.click(controlData.controls.characterSelect.button.exit);
            timeoutDelay(realmDownRetry*60*1000, location);
        }
        break;

    case 13: // Realm Down - Character Select screen
        controlData.click(controlData.controls.characterSelect.button.exit);
        timeoutDelay(realmDownRetry*60*1000, location);
        break;

    case 14: // Character Select - Disconnected
        timeoutDelay(disconnectedRetry*60*1000, location);
        controlData.click(controlData.controls.characterSelect.disconnected.button.ok);
        break;

    case 15: // New Character
        break;    

    case 16: // Character Select - Please Wait popup
        if(!locationTimeout(pleaseWaitTimeout, location))
            controlData.click(controlData.controls.characterSelect.pleaseWait.button.cancel);
        break;

    case 17: // Lobby - Lost Connection - just click okay, since we're toast anyway
        controlData.click(controlData.controls.lobby.lostConnection.button.ok);
        break;

    case 18: // D2 Splash
        controlData.click(controlData.controls.d2Splash.textBox.copyright);
        break;

    case 19: // Login - Cdkey In Use
        timeoutDelay(cdkeyInUseRetry*60*1000, location);
        controlData.click(controlData.controls.login.cdkeyInUse.button.ok);
        break;

    case 20: // Single Player - Select Difficulty
        controlData.click(controlData.singlePlayerDifficulties[me.diff]);
        break;

    case 21: // Main Menu - Connecting
        if(!locationTimeout(connectingToBnetTimeout, location))
            controlData.click(controlData.controls.mainMenu.connecting.button.cancel);
        break;

    case 22: // Login - Invalid Cdkey (classic or xpac)
        sendEventToOOG(D2NT_MGR_PRINT_LOG, COLOR_1 + "Bad CD Key...........Idling", 0);
		while(1) { Delay(500); }
		//sendEventToOOG(D2NT_MGR_RESTART, location.name, 3600);
        Delay(3500);
        break;    

    case 23: // Character Select - Connecting
        if(!locationTimeout(characterScreenTimeout, location))
            controlData.click(controlData.controls.characterSelect.button.exit);
        break;

    case 24: // Server Down - not much to do but wait..
        break;

    case 25: // Lobby - Please Wait
        if(!locationTimeout(pleaseWaitTimeout, location))
            controlData.click(controlData.controls.lobby.pleaseWait.button.cancel);
        break;

    case 26: // Lobby - Game Name Exists
        sendEventToOOG(D2NT_MGR_PRINT_LOG, "yE00000Game already exists", 0);

        inGameAt = 0;
        lastGameStatus = 0;
        setNextGameMake();

        locationTimeout(15000, location);
        break;

    case 27: // Gateway Select
        controlData.clickRealmEntry(me.gatewayid);
        controlData.click(controlData.controls.gateway.button.ok);
        break;

    case 28: // Lobby - Game Does Not Exist
        sendEventToOOG(D2NT_MGR_PRINT_LOG, COLOR_1 + "Leader's game does not exist...........Idling", 0);
		Delay(gameDoesNotExistDelay*1000);
		inGameAt = Random(gameDoesNotExistDelayMin, gameDoesNotExistDelayMax);
        lastGameStatus = 0;
        setNextGameMake();

        locationTimeout(gameDoesNotExistTimeout, location);
        break;
    default:
		if (lastGameStatus == 1) {
			sendEventToOOG(D2NT_MGR_PRINT_STATUS, "Please Wait...", 0);
			for (ftjcount=0; ftjcount<=10 && !me.ingame; ftjcount++) {
				Delay(1000)
			}
		}
        DebugInOOG("Unhandled location : "+location.id);
        break;
    }
    DebugInOOG("Location : "+location.id);
}

function sendEventToOOG(locationId, statusString, pendingTime)
{
    return SendCopyData("D2NT Manager", null, (locationId<<16)|pendingTime, statusString);
}

function setNextGameMake()
{
    lastGameMade = GetTickCount();
    nextGameMake = lastGameMade + createGameThreshold + Random(0-createGameThresholdRandom, createGameThresholdRandom) + inGameAt;
    inGameAt = 0;
    chatActionsDone = false;
}

function outputGameLength()
{
    if(inGameAt)
    {
        duration = GetTickCount() - inGameAt;

        inGameAt = (duration < gameMinLength ? gameMinLength - duration : 0);
    }
}

function locationTimeout(time, location)
{
    endtime = GetTickCount() + time;

    while(controlData.getLocation().id == location.id && endtime > GetTickCount())
    {
        sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
        Delay(500);
    }
	
    return (controlData.getLocation().id != location.id);
}

function timeoutDelay(time, location)
{
    endtime = GetTickCount() + time;

    while(endtime > GetTickCount())
    {
        sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
        Delay(1000);
    }
}

function getRandomString(_length)
{
    _retString = "";
    _charSet = "0123456789abcdefghijklmnopqrstuvwxyz";

    while(_length--)
    {
        _retString += _charSet.charAt(Random(0, _charSet.length-1));
        Delay(1);
    }

    return _retString;
}
function DebugInOOG(logString)
{
    if (Debug)
        return SendCopyData("D2NT Manager", null, 9<<16, "-- Debug : " + logString);
    else
        return false;
}

function My_ExitGame_Check()
{
    for (var i = 0; i < 40; i++)
    {
        if (controlData.getLocation().id != undefined)
            break;

        if (i > 38)
        {
            LogPrintSimple(me.account + " StarterTest.txt", "White Screen of Death: Restarting")
			sendEventToOOG(D2NT_MGR_PRINT_LOG, COLOR_1 + "White Screen of Death: Restarting", 0);
            sendEventToOOG(D2NT_MGR_RESTART, "", 5);
            My_Delay(); // make sure and add this also
        }

        Delay(500);
    }
}

function My_Delay(retry)
{
    if (arguments.length < 1)
        retry = 20;

    while (retry-- > 0)
        Delay(1000);
}

function LogPrintSimple(filepath, mesg){ 

	var _filepath = filepath;
	var _mesg = mesg;
	
	var date = new Date().toLocaleFormat("<%a, %b %d, %H:%M>");
	var logfile = FileOpen(_filepath, 2); // opens file 
	if(!logfile)
		var logfile = FileOpen(_filepath, 1); // if file not there then creates it

	logfile.WriteLine(date + " " + _mesg );
	logfile.Close();
}

function GateWayToName(){
        switch(me.gatewayid){
                case 0: return 'USWest';
                case 1: return 'USEast';
                case 2: return 'Asia';
                case 3: return 'Europe';
                default: return 'ugly'; // not sure how asia1, asia2, etc work so adding this for now   
        }
}				
// modes 0 = read only, 1 = overwrite the file, 2 = add to file
function NT_File(path, mode, msg, delay) { //big thanks to all the koreans out there
    var _msg  = "";
    var _line = "";
    var _fileHandle;
    var _isFileCheck = false;

    if (arguments.length < 3) { msg   = ""; }
    if (arguments.length < 4) { delay = (mode > 0) ? 5 : 2; }

    while (delay--) {
        if (mode == 2 && !_isFileCheck) {
            _fileHandle = FileOpen(path, 0);
            if (!_fileHandle)
                _fileHandle = FileOpen(path, 1);

            if (_fileHandle)
                _fileHandle.Close();

            _isFileCheck = true;
        }

        _fileHandle = FileOpen(path, mode);
        if (_fileHandle)
            break;

        if (delay)
            Delay(200);
    }

    if (_fileHandle) {
        if (mode == 0) {
            while (!_fileHandle.eof) {
                _line = _fileHandle.ReadLine();
                if (_line || !_fileHandle.eof)
                    _msg += _line + msg;
            }
        }
        else if (msg)
            _fileHandle.WriteLine(msg);

        _fileHandle.Close();
    }

    return _msg;
}

function NT_RetrieveLastGame() {
	var grabLastGame = FileOpen("logs/messagecomands/"+me.charname+"-lastgame.txt", 0); // open file in read only
	if(!grabLastGame){
		var grabLastGame = FileOpen("logs/messagecomands/"+me.charname+"-lastgame.txt", 1); // because the file doesn't exist create it
	}
	if(grabLastGame){ 
		lastGame = grabLastGame.ReadLine(); //retrieve the line and set the lastGame variable to it so we can check it against the game we may want to join
		grabLastGame.Close();		
	}
	return;
}

function NT_RetrievenextGame() { // to retrieve game and pw
	var grabLine;
	var grabNextGame = FileOpen("logs/messagecomands/"+leaderName+"-nextgame.txt", 0); // open file in read only
	if(!grabNextGame){
		var grabNextGame = FileOpen("logs/messagecomands/"+leaderName+"-nextgame.txt", 1); // because the file doesn't exist create it
	}
	if(grabNextGame){ 
		grabLine = grabNextGame.ReadLine(); //retrieve the line and set the nextGame variable to it so we can check it against the game we may want to join
		game = grabLine.substring(0, grabLine.indexOf('/')); //extracting game name from beginning of line to the "/"
		gamepassword = grabLine.substring(grabLine.indexOf('/') + 1, grabLine.length); //Parse after symbol till end of line.	
		grabNextGame.Close();	
	}
	return;
}
// so now we need to add code to get the next game and pw as well as check it against the last game
ekaf.liam is offline  
Reply

Tags
bot, d2nt, etal, etalbot, gvetalbot


Similar Threads Similar Threads
help D2NT
12/27/2010 - Diablo 2 - 5 Replies
brauch mal bischen hilfe bei D2NT und zwar hat er ja die einstellung das er flüche nicht mehr heilen soll ok macht er soweit auser bei verstärktem schaden rennt der jedesmal in die stadt zu heilen, was sehr sehr zeitintensiev bei diaruns ist finde ich. wäre nice wen da jemand eine lösung kennt danke
d2nt leech bot einstellen... d2nt config error..
07/09/2010 - Diablo 2 Programming - 2 Replies
hey mein bot zeigt mir die ganze zeit ein error und habe die einstellungen in der anleitung genauso... was tun? habe leader acc/ char name eingetragen. beide flistet. die eine datei aus baalleech rausgeholt und umbenannt und die // weg genommen habe beim manager auch auf d2nt leech eingestelln
D2NT 3.1 BOT
06/04/2010 - Diablo 2 - 4 Replies
Hey! leider hört mein D2NT CO Baal leech bot immer nach einer Weile auf und steht nur noch im Chat. Ist dieser Fehler bekannt? Was kann man dagegen tun? Hoffe jemand kann mir helfen, danke! quapx
D2NT - Modded D2NT
11/08/2009 - Diablo 2 - 9 Replies
Hey, wollte nach ner langen Pause mal wieder den Bot starten. Hatte damals den normalen D2NT, hat mir auch gut gefallen. Frage mich grad nur welchen ich mir jetzt laden soll- den D2NT oder den modded D2NT? Wo ist der Unterschied?
D2NT 1.7.2 und NTBot 3.6 , Modded D2NT 1.7.2 und NTBot 3.6 welcher ist besser?
05/23/2009 - Diablo 2 - 11 Replies
Modded D2NT 1.7.2 und NTBot 3.6 D2NT 1.7.2 und NTBot 3.6 kann mir jemand sagen welcher von denen besser ist? oder wo die unterschiede sind?



All times are GMT +1. The time now is 20:14.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.