D2Bot# mit Kolbot RELEASE - Ein neuer Bot für D2BS

12/02/2013 10:12 Talltree#2911
Also naja, mit dem neusten Core Update + Response time auf max habe ich in ~2000 Runs 8 Crashes gehabt in meiner Test Phase.

Heute Nacht Classic CS Team 380 Runs x 4 jeweils 1 Crash.
12/02/2013 22:27 using11#2912
Ich habe ein problem was mir auf gefallen ist, das problem ist nicht ei allen chars!

immer beispiel wenn mule game ist udn char wieder rausgeht oder wie bei smiter jetzt wenn er gekickt wird( weil 20min um sind) dann kommt sowas hier:
[22:23:58] <Eastmf-1> default.dbj was loaded out of game.
[22:23:58] <Eastmf-1> Restarting

was ist das?
12/03/2013 18:51 spankyvz#2913
Bei mir blockiert der Kolbot immer die Keys... wenn ich das Spiel stoppe oder er es automatisch schließt, wird anscheinend die Session nicht beendet oder sowas und ich kann den Key folglich nicht nutzen: Der Key wird verwendet von mir selbst. Gibts da eine Einstellung oder sowas die das Behebt?
12/03/2013 21:43 KingPinShadow#2914
Quote:
Originally Posted by IndianaHorst View Post
town chicken fail: vielleicht keine kohle um tps zu kaufen / dann kommt da natürlich ein fehler ^^.
Könnte auch daran liegen:
config.towncheck = true //go to town if out of potions

Wenn Du den leader manuell spielst, würde ich als entry: blank nehmen und halt bei der d2botfollow.dbj leader + follower einstellen.
in der charconfig vom leader: scripts.useraddons = true
bei den followern: scripts.useraddon = false und scripts.follower = true

darauf achten dass config.publicmode ein char (am besten der leader) die anderen einlädt (1) und die anderen der party beitreten (2)
also:
config.publicmode = 1 //beim leader in der charconfig
config.publicmode = 2 //bei den knechten



d2botblank nehmen wenn man manuell spielt: taste f12 = maphack an und pickit iin der charconfig einstellen dann hat man beides?! :D
sehr geil, danke Indi :D
12/04/2013 15:41 Texos1#2915
Tag Commy

Also ich benutze den D2BS jetzt schon sehr lange und kenne mich in der Funktionsweise etc. sehr gut aus.

Da mich jedoch das Maptelen ein wenig stört, wollte ich mich die Tage mal ransetzen und den Algorithmus verbessern.

Jedoch ist dieser im D2BS integriert, wodurch es natürlich schwer fällt es umzuschreiben.

Jetzt die Frage:
Gibts denn nicht ne möglichkeit, den Algorithmus umzuschreiben dass er nicht die "Walk-Route" zum abteleportieren nimmt, sondern falls man mal durch Wände eben schneller Teleportieren könnte diesen Weg nutzt?

Ist da was in Arbeit oder muss ich mich mal ranmachen? ^^

Lg und hoffe auf Antwort von Kolton ;)
12/04/2013 15:45 Oc3an#2916
Quote:
Originally Posted by spankyvz View Post
Bei mir blockiert der Kolbot immer die Keys... wenn ich das Spiel stoppe oder er es automatisch schließt, wird anscheinend die Session nicht beendet oder sowas und ich kann den Key folglich nicht nutzen: Der Key wird verwendet von mir selbst. Gibts da eine Einstellung oder sowas die das Behebt?
Kenne das nur als Bug vom Bnet.
12/04/2013 15:47 Texos1#2917
Quote:
Originally Posted by spankyvz View Post
Bei mir blockiert der Kolbot immer die Keys... wenn ich das Spiel stoppe oder er es automatisch schließt, wird anscheinend die Session nicht beendet oder sowas und ich kann den Key folglich nicht nutzen: Der Key wird verwendet von mir selbst. Gibts da eine Einstellung oder sowas die das Behebt?
Ja da liegt ein Bug in der Temp 10 Version vor.
Startet man ein Profil, beendet dieses, released den Key und drückt bei einem anderen Profil, welches den selben Key benutzt auf Next Key, freezed D2BS

Denke das wird in der nächsten Version gefixt ;)
12/04/2013 16:09 Stibi#2918
Quote:
Originally Posted by Texos1 View Post
Tag Commy

Also ich benutze den D2BS jetzt schon sehr lange und kenne mich in der Funktionsweise etc. sehr gut aus.

Da mich jedoch das Maptelen ein wenig stört, wollte ich mich die Tage mal ransetzen und den Algorithmus verbessern.

Jedoch ist dieser im D2BS integriert, wodurch es natürlich schwer fällt es umzuschreiben.

Jetzt die Frage:
Gibts denn nicht ne möglichkeit, den Algorithmus umzuschreiben dass er nicht die "Walk-Route" zum abteleportieren nimmt, sondern falls man mal durch Wände eben schneller Teleportieren könnte diesen Weg nutzt?

Ist da was in Arbeit oder muss ich mich mal ranmachen? ^^

Lg und hoffe auf Antwort von Kolton ;)
da is nix in arbeit
bezweifel dass er sich hier nochmal melden wird :)
12/04/2013 18:17 Xaiser1993#2919
Mein Pala (leader) rennt bei Gamestart immer zum Stash,droppt das Gold was er grad am Char hat (nicht das im Stash) und verlässt sofort das Spiel (wenn er in A4 startet,geht er zum A1 (townmove stash blabla) und verlässt dann halt sofort ohne Fehlermeldung,hat das jemand mal gehabt?
12/04/2013 23:56 xXSpeedboyXx#2920
[Only registered and activated users can see links. Click Here To Register...]

Die Sorc crasht dauernd. :(

Immer die Aussage:

Window has unexpectedly exited... starting profile

Hab den neuen Kolbot. Die eine Sorc ist genau so eingestellt wie die FBFO Sorc. Normalerweise sollte wenn auch sie crashen.

Echt komisch.
12/05/2013 09:48 Tobias6365#2921
Guten Tag alle zusammen,
Da alle so vom Kulbot schwärmen habe ich mich dazu entschieden ihn zu testen.

Einige Probleme die ich habe:

-Auf meinem Desktop-Rechner (Win7) bekomme ich ziemlich oft "Window has unexpectedly exited... starting profile". Woran liegt das ? Ich habe ein Sorc profil aufgesetzt und denke auch nach mehrfachem drübeschaun das alles richtig ist?! :(

-Auf meinem Laptop (Win8!!!!) hatte ich nach einer nacht 1220 restarts und nur 8 runs.
Das game schließt oft einfach und sagt es reagiert nicht mehr d.h. restart.

Kann mir einer Helfen diesem Bot doch noch auf die Sprünge zu helfen ?

PS: Ich habe bereits im Internet gesucht, jedoch haben die Support Threads teilweise mehr als 100 Seiten. ;(

Mfg Tobii

edit: es läuft alles im Admin modus
12/05/2013 11:14 I see Stars#2922
Jo Community, habe mir den Bot gerade runtergeladen manager geöffnet Profil erstellt und zack der schliesst sich sofort wieder und nur diablo wird geladen

was ist das?

Habs schon :) Musst es im Admin mode laufen lassen
12/06/2013 08:15 xXSpeedboyXx#2923
Edit: Danke @ Martin. Antwort war ja fix
12/06/2013 16:33 sgdynamo#2924
[Only registered and activated users can see links. Click Here To Register...]
läuft soweit =D
12/06/2013 16:59 KingPinShadow#2925
Hi,

was muss man machen, damit bei diablo das TP an Eingang, oder am Star sofort kommt ohne clearen, damit die Helfer auch da direkt reingehen !?! Habe
BoBarb als Leader (wegen classic-FK-runs) und
Sorc als Follower mit
2 Palas auch als Follower, die aber nur der Sorc folgen !
Der Barb könnte auch nach dem Bo Script gerne mithelfen, wenn das machbar wäre ?!?
Code:
/**
*	@filename	Diablo.js
*	@author		kolton
*	@desc		clear Chaos Sanctuary and kill Diablo
*/

function Diablo() {
	// sort functions
	this.entranceSort = function (a, b) {
		return getDistance(a.x, a.y, 7790, 5544) - getDistance(b.x, b.y, 7790, 5544);
	};

	this.starSort = function (a, b) {
		return getDistance(a.x, a.y, 7774, 5305) - getDistance(b.x, b.y, 7774, 5305);
	};

	// general functions
	this.getLayout = function (seal, value) {
		var sealPreset = getPresetUnit(108, 2, seal);

		if (!seal) {
			throw new Error("Seal preset not found. Can't continue.");
		}

		if (sealPreset.roomy * 5 + sealPreset.y === value || sealPreset.roomx * 5 + sealPreset.x === value) {
			return 1;
		}

		return 2;
	};

	this.initLayout = function () {
		this.vizLayout = this.getLayout(396, 5275);
		this.seisLayout = this.getLayout(394, 7773);
		this.infLayout = this.getLayout(392, 7893);
	};

	this.openSeal = function (classid) {
		var i, seal, warn;

		switch (classid) {
		case 396:
		case 394:
		case 392:
			warn = true;
			break;
		default:
			warn = false;
			break;
		}

		for (i = 0; i < 5; i += 1) {
			Pather.moveToPreset(me.area, 2, classid, classid === 394 ? 5 : 2, classid === 394 ? 5 : 0);

			seal = getUnit(2, classid);

			if (!seal) {
				return false;
			}

			if (seal.mode) { // for pubbies
				if (warn) {
					say(Config.Diablo.SealWarning);
				}

				return true;
			}

			warn = false;

			seal.interact();
			delay(classid === 394 ? 1000 : 500);

			if (!seal.mode) {
				if (classid === 394 && Attack.validSpot(seal.x + 15, seal.y)) { // de seis optimization
					Pather.moveTo(seal.x + 15, seal.y);
				} else {
					Pather.moveTo(seal.x - 5, seal.y - 5);
				}

				delay(500);
			} else {
				return true;
			}
		}

		return false;
	};

	this.getBoss = function (name) {
		var i, boss,
			glow = getUnit(2, 131);

		for (i = 0; i < 16; i += 1) {
			boss = getUnit(1, name);

			if (boss) {
				return Attack.clear(40, 0, name);
			}

			delay(250);
		}

		return !!glow;
	};

	this.vizierSeal = function () {
		print("Viz layout " + this.vizLayout);
		this.followPath(this.vizLayout === 1 ? this.starToVizA : this.starToVizB, this.starSort);

		if (!this.openSeal(395) || !this.openSeal(396)) {
			throw new Error("Failed to open Vizier seals.");
		}

		if (this.vizLayout === 1) {
			Pather.moveTo(7691, 5292);
		} else {
			Pather.moveTo(7695, 5316);
		}

		if (!this.getBoss(getLocaleString(2851))) {
			throw new Error("Failed to kill Vizier");
		}

		return true;
	};

	this.seisSeal = function () {
		print("Seis layout " + this.seisLayout);
		this.followPath(this.seisLayout === 1 ? this.starToSeisA : this.starToSeisB, this.starSort);

		if (!this.openSeal(394)) {
			throw new Error("Failed to open de Seis seal.");
		}

		if (this.seisLayout === 1) {
			Pather.moveTo(7771, 5196);
		} else {
			Pather.moveTo(7798, 5186);
		}

		if (!this.getBoss(getLocaleString(2852))) {
			throw new Error("Failed to kill de Seis");
		}

		return true;
	};

	this.infectorSeal = function () {
		print("Inf layout " + this.infLayout);
		this.followPath(this.infLayout === 1 ? this.starToInfA : this.starToInfB, this.starSort);

		if (!this.openSeal(392)) {
			throw new Error("Failed to open Infector seals.");
		}

		if (this.infLayout === 1) {
			delay(1);
		} else {
			Pather.moveTo(7928, 5295); // temp
		}

		if (!this.getBoss(getLocaleString(2853))) {
			throw new Error("Failed to kill Infector");
		}

		if (!this.openSeal(393)) {
			throw new Error("Failed to open Infector seals.");
		}

		return true;
	};

	this.diabloPrep = function () {
		var trapCheck,
			tick = getTickCount();

		while (getTickCount() - tick < 30000) {
			if (getTickCount() - tick >= 8000) {
				switch (me.classid) {
				case 1: // Sorceress
					if ([56, 59, 64].indexOf(Config.AttackSkill[1]) > -1) {
						if (me.getState(121)) {
							delay(500);
						} else {
							Skill.cast(Config.AttackSkill[1], 0, 7793, 5293);
						}

						break;
					}

					delay(500);

					break;
				case 3: // Paladin
					Skill.setSkill(Config.AttackSkill[2]);
					Skill.cast(Config.AttackSkill[1], 1);

					break;
				case 5: // Druid
					if (Config.AttackSkill[1] === 245) {
						Skill.cast(Config.AttackSkill[1], 0, 7793, 5293);

						break;
					}

					delay(500);

					break;
				case 6: // Assassin
					if (Config.UseTraps) {
						trapCheck = ClassAttack.checkTraps({x: 7793, y: 5293});

						if (trapCheck) {
							ClassAttack.placeTraps({x: 7793, y: 5293, classid: 243}, trapCheck);

							break;
						}
					}

					delay(500);

					break;
				default:
					delay(500);

					break;
				}
			} else {
				delay(500);
			}

			if (getUnit(1, 243)) {
				return true;
			}
		}

		throw new Error("Diablo not found");
	};

	this.followPath = function (path, sortfunc) {
		var i,
			cleared = [];

		for (i = 0; i < path.length; i += 2) {
			if (cleared.length) {
				this.clearStrays(cleared);
			}

			Pather.moveTo(path[i], path[i + 1]);
			Attack.clear(30, 0, false, sortfunc);

			// Push cleared positions so they can be checked for strays
			cleared.push([path[i], path[i + 1]]);
		}
	};

	this.clearStrays = function (cleared) {
		var i,
			unit = getUnit(1);

		if (unit) {
			do {
				if (Attack.checkMonster(unit)) {
					for (i = 0; i < cleared.length; i += 1) {
						if (getDistance(unit, cleared[i][0], cleared[i][1]) < 30 && Attack.validSpot(unit.x, unit.y)) {
							//me.overhead("we got a stray");
							Pather.moveToUnit(unit);
							Attack.clear(30);

							break;
						}
					}
				}
			} while (unit.getNext());
		}

		return true;
	};

	// path coordinates
	this.entranceToStar = [7794, 5517, 7791, 5491, 7768, 5459, 7775, 5424, 7817, 5458, 7777, 5408, 7769, 5379, 7777, 5357, 7809, 5359, 7805, 5330, 7780, 5317, 7774, 5305];
	this.starToVizA = [7759, 5295, 7734, 5295, 7716, 5295, 7718, 5276, 7697, 5292, 7678, 5293, 7665, 5276, 7662, 5314];
	this.starToVizB = [7759, 5295, 7734, 5295, 7716, 5295, 7701, 5315, 7666, 5313, 7653, 5284];
	this.starToSeisA = [7781, 5259, 7805, 5258, 7802, 5237, 7776, 5228, 7775, 5205, 7804, 5193, 7814, 5169, 7788, 5153];
	this.starToSeisB = [7781, 5259, 7805, 5258, 7802, 5237, 7776, 5228, 7811, 5218, 7807, 5194, 7779, 5193, 7774, 5160, 7803, 5154];
	this.starToInfA = [7809, 5268, 7834, 5306, 7852, 5280, 7852, 5310, 7869, 5294, 7895, 5295, 7919, 5290];
	this.starToInfB = [7809, 5268, 7834, 5306, 7852, 5280, 7852, 5310, 7869, 5294, 7895, 5274, 7927, 5275, 7932, 5297, 7923, 5313];

	// start
	Town.doChores();
	Pather.useWaypoint(107);
	Precast.doPrecast(true);

	if (!Pather.moveTo(7790, 5544)) {
		throw new Error("Failed to move to Chaos Sanctuary");
	}

	this.initLayout();

	if (Config.Diablo.Entrance) {
		Attack.clear(35, 0, false, this.entranceSort);
		Pather.moveTo(7790, 5544);
		Pather.makePortal();
		say(Config.Diablo.EntranceTP);
		Precast.doPrecast(true);
		this.followPath(this.entranceToStar, this.entranceSort);
	} else {
		Pather.moveTo(7774, 5305);
		Attack.clear(15, 0, false, this.starSort);
	}

	Pather.moveTo(7774, 5305);
	Pather.makePortal();
	say(Config.Diablo.StarTP);
	Attack.clear(30, 0, false, this.starSort);
	this.vizierSeal();
	this.seisSeal();
	Precast.doPrecast(true);
	this.infectorSeal();
	Pather.moveTo(7788, 5292);
	this.diabloPrep();
	Attack.kill(243); // Diablo
	Pickit.pickItems();

	return true;
}
Ja und bei Andariel wird irgendwie kein TP gemacht für die Helfer !?!

Code:
/**
*	@filename	Andariel.js
*	@author		kolton
*	@desc		kill Andariel
*/

function Andariel() {
	this.killAndariel = function () {
		var i,
			target = getUnit(1, 156);

		if (!target) {
			throw new Error("Andariel not found.");
		}

		for (i = 0; i < 300; i += 1) {
			if (!me.getState(121)) {
				Skill.cast(Config.AttackSkill[1], ClassAttack.skillHand[1], target);
			} else {
				if (Config.AttackSkill[2] > -1) {
					Skill.cast(Config.AttackSkill[2], ClassAttack.skillHand[2], target);
				} else {
					delay(300);
				}
			}

			if (target.mode === 0 || target.mode === 12) {
				return true;
			}

			if (getDistance(me, target) <= 10) {
				Pather.moveTo(me.x > 22548 ? 22535 : 22560, 9520);
			}
		}

		return target.mode === 0 || target.mode === 12;
	};

	Town.doChores();
	Pather.useWaypoint(35);
	Precast.doPrecast(true);

	if (!Pather.moveToExit([36, 37], true)) {
		throw new Error("Failed to move to Catacombs Level 4");
	}

	Pather.moveTo(22549, 9520);

	if (me.classid === 1 && me.gametype === 0) {
		this.killAndariel();
	} else {
		Attack.kill(156); // Andariel
	}

	delay(2000); // Wait for minions to die.
	Pickit.pickItems();

	return true;
}
Noch eine Frage, hat jemand ein besseres classic sript für den Kolton ?
Wenn man das Vizier script benutzt, killt die Sorc nur den einen Boss und wartet in der Stadt. Aber die anderen Helfer machen danach nicht weiter, kann mann da auch etwas ändern ? Weil die stehen einfach beim Seis Seal und machen nix mehr !
Sowas wo die Sorc durchs CS telt und TPs macht !

edit: Wenn der Bot in die Stadt geht um Tränke zu kaufen, kommt die Meldung townchickenfail und er crasht das game einfach ! Gold ist ohne Ende vorhanden ! Gamble ist aus !
Code:
// Town settings
	Config.HealHP = 50; // Go to a healer if under designated percent of life.
	Config.HealMP = 0; // Go to a healer if under designated percent of mana.
	Config.HealStatus = true; // Go to a healer if poisoned or cursed
	Config.UseMerc = true; // Use merc. This is ignored and always false in d2classic.
	Config.MercWatch = false; // Instant merc revive during battle.

	// Potion settings
	Config.UseHP = 75; // Drink a healing potion if life is under designated percent.
	Config.UseRejuvHP = 40;  // Drink a rejuvenation potion if life is under designated percent.
	Config.UseMP = 30; // Drink a mana potion if mana is under designated percent.
	Config.UseRejuvMP = 0; // Drink a rejuvenation potion if mana is under designated percent.
	Config.UseMercHP = 75; // Give a healing potion to your merc if his/her life is under designated percent.
	Config.UseMercRejuv = 0; // Give a rejuvenation potion to your merc if his/her life is under designated percent.
	Config.HPBuffer = 0; // Number of healing potions to keep in inventory.
	Config.MPBuffer = 0; // Number of mana potions to keep in inventory.
	Config.RejuvBuffer = 0; // Number of rejuvenation potions to keep in inventory.

	// Chicken settings
	Config.LifeChicken = 30; // Exit game if life is less or equal to designated percent.
	Config.ManaChicken = 0; // Exit game if mana is less or equal to designated percent.
	Config.MercChicken = 0; // Exit game if merc's life is less or equal to designated percent.
	Config.TownHP = 0; // Go to town if life is under designated percent.
	Config.TownMP = 0; // Go to town if mana is under designated percent.
Code:
/* Potion types for belt columns from left to right.
	 * Rejuvenation potions must always be rightmost.
	 * Supported potions - Healing ("hp"), Mana ("mp") and Rejuvenation ("rv")
	 */
	Config.BeltColumn[0] = "hp";
	Config.BeltColumn[1] = "mp";
	Config.BeltColumn[2] = "mp";
	Config.BeltColumn[3] = "rv";

	/* Minimum amount of potions. If we have less, go to vendor to purchase more.
	 * Set rejuvenation columns to 0, because they can't be bought.
	 */
	Config.MinColumn[0] = 2;
	Config.MinColumn[1] = 2;
	Config.MinColumn[2] = 2;
	Config.MinColumn[3] = 0;
Code:
Config.TownCheck = true; // Go to town if out of potions
wenn ich town check auf false stelle, sind nach kurzer Zeit die Tränke leer und er chickt wegen lowlife !!
Was kann mann da einstellen, brauche bitte Ratschläge !!