Register for your free account! | Forgot your password?

You last visited: Today at 22:01

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

Advertisement



[D2NT] .login/Game Nr

Discussion on [D2NT] .login/Game Nr within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jan 2010
Posts: 58
Received Thanks: 37
[D2NT] .login/Game Nr

Den Code der starter.ntj mit dem hier ersetzten.

Es gibt die Möglichkeit einzustellen, dass er ".login" beim ersten Betreten des Channels schreibt und dass er den Namen des nächsten Spiel in den Channel schreibt.

Ich habe keine Variablen gesehen, die für den Spielnamen zuständig sind (denke mal das wird alles im Manager gemacht), daher lasse ich im Script selbst mit zählen, was zur Folge hat, das der Spielname mit jedem "Neustart" der starter.ntj bei 01 anfängt.

Code:
var gameMinLength		= 180000;	// time in milliseconds, minimum game length, 180 seconds default (1 game/3 minutes)

var unableToConnectRetry	= 5;		// time in minutes to retry connecting on connection fail (real value is +/- 1 min)
var realmDownRetry		= 120;		// time in minutes to retry connecting on a realm down (default is 120 minutes)
var disconnectedRetry		= 5;		// time in minutes to retry on a disconnection (usually ip ban related)
var cdkeyInUseRetry		= 5;		// time in minutes to retry on a cdkey in use error message (set to 0 to stop)
var connectingToBnetTimeout	= 20000;	// time in milliseconds to wait for a login to time out and click cancel and retry
var characterScreenTimeout	= 10000;	// time in milliseconds to wait for character screen to appear
var pleaseWaitTimeout		= 10000;	// time in milliseconds to wait for a please wait popup
var createGameThreshold		= 5000;		// time in milliseconds to wait between making games
var createGameThresholdRandom	= 1000;		// time in milliseconds to randomly add +/- to the game create time
var createGameTimeout		= 15000;	// time in milliseconds to register a failed to create game
var waitInLineTimeout		= 60000;	// time in milliseconds to wait in lines for a create game (60 second default)
var characterSelectDelay	= 1000;		// time in milliseconds to wait before selecting a character on the char screen
var loginDelay			= 1000;		// time in milliseconds to wait before submitting login information
var clickDelay			= 500;		// wait X milliseconds before next action after a click event
var textDelay			= 500;		// wait X milliseconds before next action after inserting text into a textbox
var clickDelayRandom		= 500;		// random amount of time to add to a click
var textDelayRandom		= 500;		// random amount of time to add to a text set
var gameDoesNotExistDelayMin	= 600000;	// how long to wait when a Game Does Not Exist occurs - minimum - default 10 minutes
var gameDoesNotExistDelayMax	= 900000;	// how long to wait when a Game Does Not Exist occurs - maximum - default 15 minutes
var gameDoesNotExistTimeout	= 30000;	// how long to wait for the dialog to disappear (default 30 seconds, don't change this)
var joinChatAfterGame		= false;	// join chat after leaving a game
var joinRandomChannel		= false;	// if this is true, will join a random channel, otherwise it will use the channel below..
var joinChannelInChat		= "";		// leave blank to not join a private channel
var ChannelLogin		= true;		// if this is true, will write ".login" to the channel at first enter
var ChannelGameNr		= true;		// if this is true, will write number of next game to the channel (game name below is required)
var ChannelGameName		= ""		// the game name you use (e.g. game name at the manager = "test" you have to write "test-")
var waitBeforeEnterChatMin	= 1000;		// min how long to wait before entering chat
var waitBeforeEnterChatMax	= 2000;		// max how long to wait before entering chat
var waitInChatBeforeActionsMin	= 2000;		// min how long to wait before joining channel
var waitInChatBeforeActionsMax	= 3000;		// max how long to wait before joining channel

// DONT 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_SELECT_CHAR = 4;
const D2NT_MGR_CREATE_GAME = 5;
const D2NT_MGR_INGAME = 6;
const D2NT_MGR_RESTART = 7;
const D2NT_MGR_CHICKEN = 8;
const D2NT_MGR_PRINT_STATUS = 9;
const D2NT_MGR_PRINT_LOG = 10;

var lastGameMade = GetTickCount();
var lastGameStatus = 0;
var nextGameMake = 0;
var inGameAt = 0;
var chatActionsDone = false;
var lastGameFailed = false;
var GameNr = 1;

Include("controlInfo.ntl");

var controlData = new controlInfo();

function NTMain()
{
	Delay(1000);

	var _ingame = false;

	controlData.clickDelay = clickDelay;
	controlData.textDelay = textDelay;
	controlData.clickDelayRandom = clickDelayRandom;
	controlData.textDelayRandom = textDelayRandom;

	while(1)
	{
		if(me.ingame)
		{
			if(!inGameAt)
				inGameAt = GetTickCount();

			if(!_ingame)
			{
				_ingame = true;

				sendEventToOOG(D2NT_MGR_INGAME, "In Game", parseInt(gameMinLength/1000));
				lastGameStatus = 2; // in game successful
			}

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

				sendEventToOOG(D2NT_MGR_READY, "", 0);
			}

			locationAction(controlData.getLocation());

			Delay(500);
		}
	}
}

function locationAction(location)
{
	switch(location.id)
	{
	case 3: // Lobby Chat
		if(!chatActionsDone)
		{
			chatActionsDone = true;
			Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax));

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

				if(ChannelLogin != false)
				{
					Say(".login");
					ChannelLogin = false;
					Delay(1000);
				}

				if(ChannelGameNr != false)
				{
					if(GameNr < 10)
						Say("Next Game: " + ChannelGameName + "0" + GameNr);
					else
						Say("Next Game: " + ChannelGameName + GameNr);
					if(GameNr == 99)
						GameNr = 0;
					else
						GameNr = GameNr + 1;
					Delay(1000);
				}
			}
		}
	case 1:	// Lobby
		if(location.id == 1 && joinChatAfterGame)
		{
			Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
			controlData.click(controlData.controls.lobby.button.enterChat);
			break;
		}

		if(GetTickCount() > nextGameMake)
		{
			lastGameFailed = false;

			switch(lastGameStatus)
			{
			case 0:
				controlData.click(controlData.controls.lobby.button.create);
				nextGameMake = GetTickCount() + createGameTimeout; // set our timeout
				sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
				break;
			case 1: // game failed, rollover to reset timer
				inGameAt = GetTickCount(); // reset inGameAt, to wait how long we should have waited..
				lastGameFailed = true;
			case 2:
				outputGameLength();
				lastGameStatus = 0;
				setNextGameMake();
				sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
				break;
			}
		}
		else
			timeoutDelay(nextGameMake-GetTickCount(), location);
		break;

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

	case 4: // Create Game
		sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

		RunGC(); // run garbage collector between each game

		locationTimeout(5000, location);

		lastGameMade = GetTickCount();
		lastGameStatus = 1; // pending creation
		break;

	case 5: // Join Game
		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_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);

			sendEventToOOG(D2NT_MGR_SELECT_CHAR, location.name, 0);

			// reset last game made, so it doesnt make a game immediately
			inGameAt = 0;
			setNextGameMake();

			locationTimeout(5000, location);
		}
		else
		{
			timeoutDelay(realmDownRetry*60*1000, location);
			controlData.click(controlData.controls.characterSelect.button.exit);
		}
		break;

	case 13: // Realm Down - Character Select screen
		timeoutDelay(realmDownRetry*60*1000, location);
		controlData.click(controlData.controls.characterSelect.button.exit);
		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
		RunGC(); // run garbage collector between each game

		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_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, "Game 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
		inGameAt = Random(gameDoesNotExistDelayMin, gameDoesNotExistDelayMax);
		lastGameStatus = 0;
		setNextGameMake();

		locationTimeout(gameDoesNotExistTimeout, location);
		break;
	}
}

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));

	return _retString;
}
Anuroth is offline  
Thanks
4 Users
Old 02/12/2010, 04:10   #2

 
RezChams's Avatar
 
elite*gold: 0
Join Date: Mar 2009
Posts: 24,265
Received Thanks: 15,362
ersma danke ich kanns gebrauchen da ich baalruns mache
aber hier ne andere frage
da ich mehrere auf einmal laufen lasse würde ich gerne iwie machen das er die verschiedenen games listet nicht nur von einen

var ChannelGameName = "" // the game name you use (e.g. game name at the manager = "test" you have to write "test-")

regards~alex
RezChams is offline  
Old 02/13/2010, 07:05   #3
 
elite*gold: 0
Join Date: Apr 2009
Posts: 13
Received Thanks: 0
Erstmal danke für die schnelle antwort aber kommt da wie immer das nächste problem... Ich use den D2BS 1.1.2 und das isn ganz anderes spcript hab scho bissle rumprobiert aber das sind ja ntj dateien und ich hab da nur dbl dateien^^ kp wie ich da was ändern soll weil nix funzt was ich probier... soll ich mir nen anderen bot holn? wär schade weil eig. läuft der ja echt gut

//edit: So dachte mir jetzt probier ich mit D2NT wenns mit D2BS ned so geht wie ich will... Hab den neuen starter von dir reingehaun, config und alles eingestellt wies sein soll ( Die Anleitungen würd ich mal als idiotensicher bezeichnen ), umso lustiger find ichs, dass wenn ich auf "start" drück da gar nix startet ausser Titlebildschirm vom game.... (Und ja das wars) ^^

Help pls weiß nich woran das liegen kann hab ich vllt. i ne falsche version von dem ding? kp ich habs hier geloadet

//edit2: Falls nich sofort ne lösung bekannt wird kann mir vllt. jmd. nen link gebn zu ner anderen version von Diablo(start at star usw) vom D2BS? der funzt ja immerhin -.-

edit3: problem gelöst wer nen dia bot für d2bs mit start at star will melden
LHDII-Hellboy is offline  
Old 02/24/2010, 19:36   #4
 
BECKS-MACHT's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 96
Received Thanks: 2
kann man auch lvl req einstellen?
Wenn ja wo?

Danke ^^
BECKS-MACHT is offline  
Old 02/25/2010, 17:39   #5
 
Tyon's Avatar
 
elite*gold: 0
Join Date: Jul 2006
Posts: 1,440
Received Thanks: 525
Einfachste Lösung wäre halt die Benutzung eines Channel Bots.

@BECKS-MACHT
Welche level req?
Wenn du willst, dass dein Bot ein Game mit Level Limit erstellt musste per Hand das Level Req eingeben und ein Game starten.
Dannach macht der Bot das automatisch, da sich D2 deine Einstellungen merkt.
Tyon is offline  
Thanks
1 User
Old 03/08/2010, 15:57   #6
 
elite*gold: 0
Join Date: Feb 2010
Posts: 23
Received Thanks: 3
1000 Dank! Hab mir da echt nen Wolf gesucht :-) *knuddel*
exolizzle is offline  
Old 03/08/2010, 20:08   #7
 
x-richi-x's Avatar
 
elite*gold: 0
Join Date: Feb 2010
Posts: 32
Received Thanks: 5
Na endlich mal gibts wieder ne schöne erweiterung dür den D2NT.
Ich hätte nur einige fragen:
Wie ist es wenn ein Game durch Lagg zambricht und der Bot sich 2-3 mal nicht Einlogen kann. (wenn die Tür ned aufgeht)
Zählt diese änderung dan richtig weiter oder Falsch?

Oder

Wenn irgend so ein Spasti das nächste game erstellt.

Wenn das mal jemand testen könnte, währe supper.
Ich würds ja selber machen aber momentan mache ich Closed Runs.
x-richi-x is offline  
Old 03/08/2010, 23:42   #8
 
kal_el's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 7,310
Received Thanks: 2,205
Quote:
Originally Posted by x-richi-x View Post
Na endlich mal gibts wieder ne schöne erweiterung dür den D2NT.
Ich hätte nur einige fragen:
Wie ist es wenn ein Game durch Lagg zambricht und der Bot sich 2-3 mal nicht Einlogen kann. (wenn die Tür ned aufgeht)
Zählt diese änderung dan richtig weiter oder Falsch?

Oder

Wenn irgend so ein Spasti das nächste game erstellt.

Wenn das mal jemand testen könnte, währe supper.
Ich würds ja selber machen aber momentan mache ich Closed Runs.
wenn game 33 ned geht kommt 34....
wenn er nen join bug hat wartet er normalerweise 5 min... und probiert dann nochmal.
kal_el is offline  
Reply


Similar Threads Similar Threads
D2NT-Bot Fehlermeldung im Game
09/01/2010 - Diablo 2 - 3 Replies
Ja Servus, habe gerade eine Fehlermeldung im Game erhalten mit der ich nichts anfangen kann, hab eigendlich alles soweit eingestellt das es gehen müsste :P. Hab hier mal nen Screen gemacht von der Fehlermeldung. Bitte helft mir ;D http://img443.imageshack.us/f/unbenanntgz.png/ Grüße
[D2NT] Game Ansage @ Chn !!
06/13/2010 - Diablo 2 - 3 Replies
Hallo Leute ich hab ma gelesen das es da ein Code giebt die du Im bot einstelln kannst das er anstatt z.b. SAY:( Next Game ) ist dann SAY:( +game Keine Ahnung mehr weiter Dann sagt er das Game und pw Im chn , Kann mir wer da weiter helfen wie das wohl richtig heißt ???
d2nt join channel only @ login
05/13/2010 - Diablo 2 - 2 Replies
ja der d2nt joined ja den channel immer wieder neu obwohl er schon drinne ist. finde das ein wenig lästig. kann man das umstellen dass er nur nachm login den channel joined?
D2NT 3.1 game creat probleme
04/21/2010 - Diablo 2 - 1 Replies
hab jetzt des öftere beobachtet, das mein bot in der Lobby ist und im manager steht er is im Game wenn ich denn in den manager anklicke, springt er rum gamecreat und ingame timer laufen ab und dann mach er auch das game auf, aber nur dann wenn ich auch in den manager reinklick wenn ich was anderes offen hab verweilt der bestimmt stunden glaube ich hab alles eingestellt und giebt tage wo sie alle gut laufen nur manchmal hängts halt irgent wie
d2nt frage (game länge)
03/30/2010 - Diablo 2 - 1 Replies
servus, konnte über nacht nichts ins bnet mit beiden cd key paaren. LIegts evtl daran das meine Games zu kurz sind? Por run brauche ich ~ 4 Minuten .. is das zu kurz? wie kann ich das höher stellen (damit er vor oder nach dem game wartet oder dazwischen) danke



All times are GMT +1. The time now is 22:01.


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.