Bot nach einer gewissen Zeit stopen

10/01/2011 03:05 jokeffect#1
Hallo,

also erstmal, ich wusst nicht genau wie ich das Thema jetzt nennen sollte und ob es hier hinein gehört. Falls nicht tut es mir Leid.

Mein Problem ist, das ich meinen Bot ca von 1 Uhr Nachts bis Mittags 13-16 Uhr laufen habe. Da ich eigentlich nicht so auf das 24/7 botusen stehe wollte ich fragen, ob es nicht einen Script gibt mit dem ich dem Bot sage, das er nach 5 Stunden auf hören soll oder wenigstens nach einer bestimmten Anzahl an Runs. Hoffe mir kann jemand helfen!

Mfg Joke ;)
10/01/2011 11:42 Muddy Waters#2
Wenn es dir reicht, wenn der Bot einfach im selben Spiel bleibt und sich ab und zu mal bewegt, ließe sich das umsetzen. Wenn man es gerne komplizierter hat, könnte man es sogar so machen, dass der Bot im Hauptmenu wartet, wobei das dann schon sehr viel aufwändiger ist, als die erste Variante.

Wie genau soll das ablaufen?

LG
Muddy
10/01/2011 16:11 jokeffect#3
Es würde schon reichen wenn er einfach in dem letzten Game stehen bleibt.
Danke für so schnelle Antwort ^^
10/02/2011 11:35 Muddy Waters#4
Quote:
Originally Posted by jokeffect View Post
Es würde schon reichen wenn er einfach in dem letzten Game stehen bleibt.
Danke für so schnelle Antwort ^^
Du müsstest aber trotzdem noch dazu sagen, welche D2NT Version du verwendest, damit man so ungefähr weiß, wie man das ganze gestaltet, damit es hinterher auch kompatibel ist. ;)

LG
Muddy
10/02/2011 15:21 jokeffect#5
Ich benutz den [Only registered and activated users can see links. Click Here To Register...] hier, also deinen^^
10/05/2011 15:22 Muddy Waters#6
Ich habe mal schnell ein Script dafür geschrieben, wobei ich direkt mal dazu sage, dass ich es wenig bis garnicht getestet habe und es durchaus noch fehlerlastig sein könnte:
Code:
/**
*	This file was written by [Only registered and activated users can see links. Click Here To Register...]
*	Check the programming section for updates and further scripts
*	Last Update: 13:45 05.10.2011
*/

var Runtimes = "16:00-22:00;23:00-6:00";

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

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

	MWC_Initialize();

	var _now, _runtimes, _startTime, _endTime;
	var i;
	
	NTTMGR_TownManager();

	me.maxgametime = 0;
	_runtimes = Runtimes.replace(/ /g, "").split(";");
	_startTime = new Array();
	_endTime = new Array();
	
	for(var i = 0; i < _runtimes.length; i++)
		_runtimes[i] = _runtimes[i].replace(/0([0-9])/g, "$1"); // Get rid of zeroes at that might lead to misinterpretations when parsing.

	while(true)
	{
		_now = new Date();

		if(_now)
		{
			for(i = 0; i < _runtimes.length; i++)
			{
				_startTime.hours = parseInt(_runtimes[i].split("-")[0].split(":")[0]);
				_startTime.minutes = parseInt(_runtimes[i].split("-")[0].split(":")[1]);
				
				_endTime.hours = parseInt(_runtimes[i].split("-")[1].split(":")[0]);
				_endTime.minutes = parseInt(_runtimes[i].split("-")[1].split(":")[1]);
				
				if(isNaN(_startTime.hours) || isNaN(_startTime.minutes) || isNaN(_endTime.hours) || isNaN(_endTime.minutes) || _startTime.hours == _endTime.hours && _startTime.minutes == _endTime.minutes)
					continue;

				if(_startTime.hours < _endTime.hours) 
				{
					if(_startTime.hours <= _now.getHours() && _endTime.hours > _now.getHours())
					{
						if(_startTime.hours == _now.getHours() && _startTime.minutes <= _now.getMinutes() || _endTime.hours == _now.getHours() && _endTime.minutes > _now.getMinutes())
							break;
					}
				}
				else if(_startTime.hours == _endTime.hours)
				{
					if(_startTime.hours == _now.getHours() && _startTime.minutes <= _now.getMinutes() && _endTime.minutes >= _now.getMinutes())
						break;
				}
				else 
				{
					if(_startTime.hours <= _now.getHours() || _endTime.hours > _now.getHours())
					{
						if(_startTime.hours == _now.getHours() && _startTime.minutes <= _now.getMinutes() || _endTime.hours == _now.getHours() && _endTime.minutes > _now.getMinutes())
							break;
					}
				}
			}

			if(i < _runtimes.length)
				break;
		}
		
		if(me.act != 1 || !NTC_InTown())
			NTTM_CheckAct(1, true);
		
		switch(Random(0, 200))
		{
			case 0:
				NTTM_TownMove("gheed")
				break;
			case 25:
				NTTM_TownMove("charsi")
				break;
			case 50:
				NTTM_TownMove("akara")
				break;
			case 75:
				NTTM_TownMove("kashya")
				break;
			case 100:
				NTTM_TownMove("cain")
				break;
			case 125:
				NTTM_TownMove("stash")
				break;
			case 150:
				NTTM_TownMove("portalspot")
				break;
			case 175:
				NTTM_TownMove("waypoint")
				break;
			case 200:
				NTTM_TownMove("warriv")
				break;
			default:
				NTC_Delay(2500);
				break;
		}
		
		NTC_Delay(1000);
	}
	
	NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}
Du gibst oben analog zu dem verwendeten Format die Zeiträume (beliebig viel, getrennt mit Semikola) ein, in denen dein Bot laufen soll. Wenn du das Bot Scripst nun einfügst (sinnvollerweise als erstes Script) führt es ein Delay und einige zufällige Positionswechsel in einer Endlosschleife aus.
Bei jedem Durchlauf wird die aktuelle Uhrzeit geprüft, sobald diese in einem der angegebenen Intervalle liegt, wird das Script beendet.

Probier es am besten einfach mal aus. :)

LG
Muddy
10/06/2011 03:24 jokeffect#7
Super danke dir auf jeden Fall erst mal! Ich werde es wohl heute nicht mehr testen da ich zu müde bin, aber morgen auf jeden Fall. Nur eine Frage noch, wo kommt das jetzt genau rein? In die eigentliche Char config oder die global settings im char config Ordner?

Mfg Joke
10/06/2011 15:09 lanara#8
Ein neues Bot Script erstellen und in deiner Char Config hinzufügen, bzw. wenn du es bei allen Chars nutzen willst in der Global Config.

Und Muddy, arbeitet weiter daran User of the Year zu werden. :p
10/15/2011 17:03 modwx#9
nur so damit ich das richtig verstehe dein pc/laptop +Diablo soll aber an bleiben??

wenn nicht hol dir doch einfach nen shutdown timer.....dem sagste dann einfach so in 12stunden fährste runter^^