[Release] Muddy's D2NT

05/09/2011 22:10 Energie[Russ]#1816
Kann man eig. abstellen das der Bot beim Kampf (z.b. vs Seis --> Merc wird angegriffen und bekommt erstmal pots und stadtdessen das der Bot auch angreifen soll, sammelt er gemütlich erstmal pots auf und der merc wird die ganze zeit angegriffen)??
05/09/2011 23:03 Aceridos#1817
Quote:
Originally Posted by Knurrhuhn View Post
joo, das pit-skript scheint dahingehend sehr anfällig zu sein. ich habs mittlerweile rausgenommen. hatte sowohl mit ner light-sorc als auch mit ner fo/fb-sorc ~50% restarts.

ohne pit unter 5%
Das kann ich aber entkräften, am PitScript ist alles wunderbar
[Only registered and activated users can see links. Click Here To Register...]
jeder der 4 Chars macht Pit
05/09/2011 23:13 GruenerApfel#1818
ich hab bei meiner sorc es über memory (also keinen gesetzten punkt) ... nun wollte ich eigentlich das der bot es beim precast mit einbezieht und castet, ... macht er aber nicht

jmd ne idee wo man das einstellen kann ?
05/09/2011 23:51 Aceridos#1819
Müsste wohl das hier sein
Code:
	// Set this to true if you would like to switch slots right after casting BC, BO and Shout. If set to false, your char will remain with the BO Slot until the whole precast procedure is done.
	MWConfig_SwitchSlotsAfterBoPrecast = true;
in der Charconfig unter deinen "Was soll ich 'PreCasten'" Einstellungen
05/10/2011 00:36 letsid#1820
kann mir jemand mal attak einstellungen für ne light soso posten?

Meine combat einstellungen sind:
Hab relativ viele chickens und wollt mal schauen obs vll daran liegt.
Code:
//------------------------------------------------------------------------------
	// Attack Configuration
	//------------------------------------------------------------------------------
	
	// Specify your attack skills below. NOTE: Constants for all skill ids can be found in "scripts\libs\common\MWSkills.ntl".
	NTConfig_AttackSkill[0] = MWS_THUNDER_STORM;		// This skill is used once whenever attacking a new target. Set to 0 to deactivate.
	NTConfig_AttackSkill[1] = MWS_LIGHTNING	// Primary skill to bosses.
	NTConfig_AttackSkill[2] = 0;	// Primary untimed skill to boss. Set to 0 to deactivate.
	NTConfig_AttackSkill[3] = MWS_CHAIN_LIGHTNING;	// Primary skill to others.
	NTConfig_AttackSkill[4] = 0;	// Primary untimed skill to others. Set to 0 to deactivate.
	NTConfig_AttackSkill[5] = MWS_CHAIN_LIGHTNING;				// Secondary skill in case monster is immune to primary skill. Set to 0 to deactivate.
	NTConfig_AttackSkill[6] = 0;	// Secondary untimed skill. Set to 0 to deactivate.
	NTConfig_AttackSkill[7] = 0;	// Alternative untimed skill which is used if the target is immune to your untimed skill - mostly useful for FB/FO/Meteor sorcs or other sorcs that are using the same untimed skills. Set to 0 to deactivate.
	// Set to true if you want to clear area after killing boss. NOTE: This only affects a few botscripts.
	NTConfig_ClearPosition = true;
	
	// Set to true to clear area when killing a boss and the position is crowded by monsters. NOTE: Setting this to true may cause NTA_KillMonster() to fail way more often.
	MWConfig_ClearBossPosition = false;
	
	// This is the number of attacks to be performed before the the character tries to move to another position. Set to 0 not to reposition.
	MWConfig_AttacksBeforeRepositioning = 5;

	// Define a time limit for your attacks for each type of monster.
	MWConfig_AttackTimeLimit[0] = 20;	// Maximum time in seconds to attack a normal monster
	MWConfig_AttackTimeLimit[1] = 120;	// Maximum time in seconds to attack a super unique monster
	MWConfig_AttackTimeLimit[2] = 30;	// Maximum time in seconds to attack a champion
	MWConfig_AttackTimeLimit[3] = 120;	// Maximum time in seconds to attack a bosse
	MWConfig_AttackTimeLimit[4] = 30;	// Maximum time in seconds to attack a minion
	
	// Define when a monster is considered immune by entering the index of one or more of your attack skills. As an example: [1, 3] means that a monster is considered immune if it is immune to both NTConfig_AttackSkill[1] and NTConfig_AttackSkill[3], whatever those may be.
	MWConfig_CheckImmunitySkills = [0, 1];
	
	// Select the behaviour of your character when encountering a monsters that is considered immune referring to the definition above.
	// 0: Don't do anything. (D2NT default)
	// 1: Get close to the monster, use static field if the monster is not immune to lightning.
	// 2: Skip the monster.
	// 3: Attack the monster using NTConfig_AttackSkill[8] and NTConfig_AttackSkill[9]
	NTConfig_BehaviourOnImmuneMonster = 3;
	
	NTConfig_AttackSkill[8] = MWS_CHAIN_LIGHTNING;	// Skill to be used against user defined immunes.
	NTConfig_AttackSkill[9] = MWS_CHAIN_LIGHTNING;	// Untimed Skill to be used against user defined immunes.
	
	// Always check if monsters are closing in and back off, in case they get too close. NOTE: You should at least have 105FCR in order to make this work smoothly.
	MWConfig_KeepDistanceToMonsters = true;
	// If you don't wish to evade monsters in a certain area, add it's areaid as an exception below. NOTE: All areaids can be found in "sdk\areas.txt".
	// MWConfig_EvasionExceptions.push(<areaid1>, <areaid2>, <areaidn>);
	
	// Check self safe in field (NOT in town). Set to 0 if you won't.
	// 0x01 : Potion
	// 0x02 : Poison
	// 0x04 : Amplify Damage
	// 0x08 : Weaken
	// 0x10 : Iron Maiden
	// 0x20 : Decrepify
	// 0x40 : Lower Resist
	NTConfig_CheckSelfSafe = 0;
	//NTConfig_CheckSelfSafe = 0x04|0x40;
	
	// Check merc's safe in field (NOT in town). Set to 0 if you won't.
	// 0x01 : Death
	// 0x02 : Poison
	// 0x04 : Amplify Damage
	// 0x08 : Weaken
	// 0x10 : Iron Maiden
	// 0x20 : Decrepify
	// 0x40 : Lower Resist
	NTConfig_CheckMercSafe = 0x01;

	//NTConfig_CheckMercSafe = 0x01|0x04|0x10|0x40; 

	// Cast Static Field until monster's HP lower below this percentage. Set to 100 not to use static field.
	NTConfig_CastStatic = 60;
	
	// Select the monsters you with to attack using static field. NOTE: If you do not add any monsters, static will be used against all monsters.
	MWConfig_StaticTargets.push(156); // Andariel
	MWConfig_StaticTargets.push(211); // Duriel
	MWConfig_StaticTargets.push(242); // Mephisto
	MWConfig_StaticTargets.push(243); // Diablo
	MWConfig_StaticTargets.push(544); // Baal
	MWConfig_StaticTargets.push(GetLocaleString(22500)); // Eldritch The Rectifier
	MWConfig_StaticTargets.push(GetLocaleString(22435)); // Shenk The Overseer
05/10/2011 01:05 Muddy Waters#1821
Quote:
Originally Posted by -Nemesis1337- View Post
@Muddy:
Also die Erweiterung mit Print(Selling) klappt super :D
Wills nurnoch für alle lesbar schreiben, damit die leecher wissen wanns nen Unique im Shop zu kaufen gibt.
Code:
		if(item.quality == 7)
			Print("Selling " + NTC_ItemQualityToD2Color[MWC_GetItemColorInt(item)] + item.name.split("\n")[0]);
			Say("Selling " + NTC_ItemQualityToD2Color[MWC_GetItemColorInt(item)] + item.name.split("\n")[0]);
Klappt net, weils wahrscheinlich net möglich is in Farben puplic zu schreiben, wie muss ich des abändern damits geht? :)

Achja wo stehen eig. die Itemcodes? 7= Unique? Was is dann Set usw.?
Im Zweifel immer zuerst in die ItemAlias library schauen:
Code:
var _NTIPAliasQuality = new Array();
_NTIPAliasQuality["lowquality"]=1;
_NTIPAliasQuality["normal"]=2;
_NTIPAliasQuality["superior"]=3;
_NTIPAliasQuality["magic"]=4;
_NTIPAliasQuality["set"]=5;
_NTIPAliasQuality["rare"]=6;
_NTIPAliasQuality["unique"]=7;
_NTIPAliasQuality["crafted"]=8;
Zu deinem Code: das geht so nicht, die geschweiften Klammern bei einer if-Anweisung dürfen nur weggelassen werden, wenn nur eine einzige Anweisung folgt, ansonsten müssen Klammern gesetzt werden.

Die Ausgabe sollte ausserdem funktionieren, wenn du die Farben rausnimmst:
Code:
if(item.quality == 7)
{
	Print("Selling " + NTC_ItemQualityToD2Color[MWC_GetItemColorInt(item)] + item.name.split("\n")[0]);
	Say("Selling " + item.name.split("\n")[0]);
}
Quote:
Originally Posted by Energie[Russ] View Post
Kann man eig. abstellen das der Bot beim Kampf (z.b. vs Seis --> Merc wird angegriffen und bekommt erstmal pots und stadtdessen das der Bot auch angreifen soll, sammelt er gemütlich erstmal pots auf und der merc wird die ganze zeit angegriffen)??
Ich habe den Satz jetzt 3 mal gelesen und verstehe die Aussage trotzdem nicht. Wenn es geht, bitte etwas aufgeräumter. ;)

Quote:
Originally Posted by GruenerApfel View Post
ich hab bei meiner sorc es über memory (also keinen gesetzten punkt) ... nun wollte ich eigentlich das der bot es beim precast mit einbezieht und castet, ... macht er aber nicht

jmd ne idee wo man das einstellen kann ?
Code:
//------------------------------------------------------------------------------
// Precast Configuration
//------------------------------------------------------------------------------

// Your precast skills can be defined in the array below. NOTE: Battle Command, Battle Orders and Shout will be cast automatically. Constants for all skill ids can be found in "scripts\libs\common\MWSkills.ntl".
MWConfig_PrecastSkills = [MWS_SHIVER_ARMOR, MWS_ENCHANT, MWS_ENERGY_SHIELD];

// Set this to true if you would like to switch slots right after casting BC, BO and Shout. If set to false, your char will remain with the BO Slot until the whole precast procedure is done.
MWConfig_SwitchSlotsAfterBoPrecast = false;
Sollte so an sich funktionieren. :)

LG
Muddy
05/10/2011 01:43 19Miami#1822
Ich frag nochmal, kann man bei Nihla einstellen dass er ihn skippt wenn er light immun is? hab das gefunden -- >[Only registered and activated users can see links. Click Here To Register...]
05/10/2011 09:51 Muddy Waters#1823
Quote:
Originally Posted by 19Miami View Post
Ich frag nochmal, kann man bei Nihla einstellen dass er ihn skippt wenn er light immun is? hab das gefunden -- >[Only registered and activated users can see links. Click Here To Register...]
Finde ich etwas unsauber, versuch es mal so:
Code:
/**
*	This file was modified by [Only registered and activated users can see links. Click Here To Register...]
*	Check the programming section for updates and further scripts
*	Last Update: 09:50 10.05.2011
*/

var _NTNihlathak_Locations = new Array(8, 4);

_NTNihlathak_Locations[0] = [12519, 5203, 12522, 5227]; // Top Left
_NTNihlathak_Locations[1] = [12704, 5019, 12692, 5022]; // Top Right
_NTNihlathak_Locations[2] = [12705, 5391, 12723, 5413]; // Bottom Right
_NTNihlathak_Locations[3] = [12889, 5206, 12898, 5228]; // Bottom Left
_NTNihlathak_Locations[4] = [12519, 5203, 12522, 5196]; // Top Left
_NTNihlathak_Locations[5] = [12704, 5019, 12692, 5413]; // Top Right
_NTNihlathak_Locations[6] = [12705, 5391, 12727, 5022]; // Bottom Right
_NTNihlathak_Locations[7] = [12889, 5206, 12898, 5192]; // Bottom Left

const _NTN_DAMAGE_TYPE = NTA_DAMAGE_LIGHTNING;
const _NTN_MAX_RESISTANCE = 99;

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

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

	MWC_Initialize();
	
	var _location, _nihla;

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

	NTTMGR_TownManager();

	if(!NTTM_TownMove("waypoint"))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTTM_TownMove, 39, "waypoint");
		return;
	}

	if(!NTM_TakeWaypoint(123))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTM_TakeWaypoint, 45, 123);
		return;
	}

	NTP_DoPrecast(true);

	if(!NTM_MoveToStair(me.areaid, 124))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveToStair, 53, me.areaid, 124);
		return;
	}

	if(!NTM_TakeStair(124))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTM_TakeStair, 59, 124);
		return;
	}
		
	if(!MWConfig_SkipOnTombVipers || !NTC_FindUnit(NTC_UNIT_MONSTER, 597))
	{
		_location = NT_FindNihlathakInt();

		if(_location == -1)
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NT_FindNihlathakInt, 67);
			return;
		}

		if(!NTM_MoveTo(me.areaid, _NTNihlathak_Locations[_location][2], _NTNihlathak_Locations[_location][3]))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 75, me.areaid, _NTNihlathak_Locations[_location][2], _NTNihlathak_Locations[_location][3]);
			return;
		}

		if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NTTMGR_CheckSafe, 81, NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
			return;
		}
		
		_nihla = NTC_FindUnit(NTC_UNIT_MONSTER, 526, 3);
		
		if(_nihla && NTA_GetResistance(_nihla, _NTN_DAMAGE_TYPE) <= _NTN_MAX_RESISTANCE)
		{
			Print("˙c1Skipping Nihlatak due to immunity...");
			_nihla = null;
		}

		if(_nihla && NTA_KillMonster(526))
		{
			if(NTConfig_ClearPosition)
				NTA_ClearPosition();
		
			NTSI_PickItems();
		}
		else if(!NTConfig_PindleskinExtension)
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NTA_KillMonster, 94, 526);
			return;
		}
	}
	else
		Print("˙c1Tomb Vipers detected - Skipping Nihlatak...");
	
	if(NTConfig_PindleskinExtension)
	{
		for(var i = 0; i < 2; i++)
		{
			if(!NTM_MoveToStair(me.areaid, 123 - i))
			{
				NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveToStair, 107, me.areaid, 123 - i);
				return;
			}

			if(!NTM_TakeStair(123 - i))
			{
				NTC_SendMsgToScript("MWBotGame.ntj", NTM_TakeStair, 113, 123 - i);
				return;
			}
		}

		if(!NTM_MoveToStair(me.areaid, 121))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveToStair, 120, me.areaid, 121);
			return;
		}

		if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NTTMGR_CheckSafe, 126, NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
			return;
		}

		NTP_DoPrecast(false);

		if(!NTM_TakeStair(121))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NTM_TakeStair, 134, 121);
			return;
		}

		if(!NTM_MoveTo(me.areaid, 10061, 13234))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 140, me.areaid, 10061, 13234);
			return;
		}

		if(!NTA_KillMonster(GetLocaleString(22497)))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NTA_KillMonster, 146, GetLocaleString(22497));
			return;
		}

		if(NTConfig_ClearPosition)
			NTA_ClearPosition();

		NTSI_PickItems();
		
		MWL_FindItem();
	}

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

// Internal function
function NT_FindNihlathakInt()
{
	var i, x, y;
	var _nihlathak;
	var _mindist = 999999;
	var _currdist;
	var _location = -1;

	_nihlathak = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT, 462);

	if(!_nihlathak || _nihlathak.length < 1)
		return _location;

	x = _nihlathak[0].roomx*5 + _nihlathak[0].x;
	y = _nihlathak[0].roomy*5 + _nihlathak[0].y;

	for(i = 0 ; i < 8 ; i++)
	{
		_currdist = GetDistance(_NTNihlathak_Locations[i][0], _NTNihlathak_Locations[i][1], x, y);

		if(_currdist < _mindist)
		{
			_mindist = _currdist;
			_location = i;
		}
	}

	return _location;
}
LG
Muddy
05/10/2011 10:48 GruenerApfel#1824
Quote:
Originally Posted by Muddy_Waters View Post


Code:
//------------------------------------------------------------------------------
// Precast Configuration
//------------------------------------------------------------------------------

// Your precast skills can be defined in the array below. NOTE: Battle Command, Battle Orders and Shout will be cast automatically. Constants for all skill ids can be found in "scripts\libs\common\MWSkills.ntl".
MWConfig_PrecastSkills = [MWS_SHIVER_ARMOR, MWS_ENCHANT, MWS_ENERGY_SHIELD];

// Set this to true if you would like to switch slots right after casting BC, BO and Shout. If set to false, your char will remain with the BO Slot until the whole precast procedure is done.
MWConfig_SwitchSlotsAfterBoPrecast = false;
Sollte so an sich funktionieren. :)

LG
Muddy
hatte ich gehabt bzw hab ich immernoch, aber sie castet weder ench noch es ... liegt es vielleicht daran das ich n memory im cta slot habe und weder es noch ench geskillt is ?
05/10/2011 10:58 Muddy Waters#1825
Quote:
Originally Posted by GruenerApfel View Post
hatte ich gehabt bzw hab ich immernoch, aber sie castet weder ench noch es ... liegt es vielleicht daran das ich n memory im cta slot habe und weder es noch ench geskillt is ?
Ja, liegt es. Da ich gerade keine Lust habe das ordentlich umzusetzen, hier mal die schnelle Variante; ändere einfach den case NTC_CHAR_CLASS_SORCERESS innerhalb der NTP_DoPrecast() Funktion wie folgt:
Code:
		case NTC_CHAR_CLASS_SORCERESS:
			if(refresh)
				NTC_SwapWeapons();
			// Thunder Storm
			if(MWConfig_PrecastSkills.indexOf(MWS_THUNDER_STORM) > -1 && (refresh || !me.GetState(38)))
				NTC_CastSkill(MWS_THUNDER_STORM, NTC_HAND_RIGHT);
			// Energy Shield
			if(refresh && MWConfig_PrecastSkills.indexOf(MWS_ENERGY_SHIELD) > -1)
				NTC_CastSkill(MWS_ENERGY_SHIELD, NTC_HAND_RIGHT);
			// Shiver Armor
			if(MWConfig_PrecastSkills.indexOf(MWS_SHIVER_ARMOR) > -1 && (refresh || !me.GetState(88)))
				NTC_CastSkill(MWS_SHIVER_ARMOR, NTC_HAND_RIGHT);
			// Chilling Armor
			else if(MWConfig_PrecastSkills.indexOf(MWS_CHILLING_ARMOR) > -1 && (refresh || !me.GetState(20)))
				NTC_CastSkill(MWS_CHILLING_ARMOR, NTC_HAND_RIGHT);
			// Frozen Armor
			else if(MWConfig_PrecastSkills.indexOf(MWS_FROZEN_ARMOR) > -1 && (refresh || !me.GetState(10)))
				NTC_CastSkill(MWS_FROZEN_ARMOR, NTC_HAND_RIGHT);
			// Enchant
			if(MWConfig_PrecastSkills.indexOf(MWS_ENCHANT) > -1)
			{
				_merc = NTC_GetMerc();

				if(_merc && !_merc.GetState(16))
					NTC_CastSkill(MWS_ENCHANT, NTC_HAND_RIGHT, _merc);
				if(!me.GetState(16))
					NTC_CastSkill(MWS_ENCHANT, NTC_HAND_RIGHT);
			}
			if(refresh)
				NTC_SwapWeapons();
			break;
LG
Muddy
05/10/2011 12:18 GruenerApfel#1826
und dann is mir noch aufgefallen das er obwohl "ident @ cain" auf true steht das er net immer bei cain die sachen idendifiziert ... und da dann stellenweise items unid sellt, obwohl sie in der pick it stehen (zumeist rares logischerweise) und nicht moneymakeritems sind

ich geh mal davon aus das er, wenns nur ein zwei items sind, zwecks schnelleren runs, net extra zu cain rennt sonder halt eigentlich via ident scroll idendifiziert und da dann irgendwie das ganze net sauber durchführt und nein am lag kanns net liegen da es bei mir auch auftritt wenn nur ein einzelner bot an ist

und beim [Only registered and activated users can see links. Click Here To Register...] hat sich noch nix geändert oder .. also immer beim mulen die alten ungecrafteten items rauswerfen und neue suchen lassen wenn ich den bot neu starte ??
05/10/2011 12:32 Muddy Waters#1827
Kann es sein, dass dein Char keinen Tome bei sich trägt? Wenn ja, liegt das sehr wahrscheinlich daran. ;)

Zum Craften:
Das reicht eventuell, wenn du den überflüssigen Initialisierungsaufruf aus der TownManager library entfernst.

Da ich gerade nicht mehr weiss, wo der genau stand, hier die ganze library:
Ich habe dir auch mal den Part hervorgehoben, der dafür sorgt, dass Cain erst ab 2 Items aufgesucht wird, kannst du ja ändern, wenn du magst.
Auch wenn Cain durchaus auch ausgelassen werden kann, wenn dein Char forced Unids bei sich trägt, somit bietet sich ein ID Tome dennoch an. ;)

LG
Muddy
05/10/2011 13:41 GruenerApfel#1828
Quote:
Originally Posted by Muddy_Waters View Post
Kann es sein, dass dein Char keinen Tome bei sich trägt? Wenn ja, liegt das sehr wahrscheinlich daran. ;)

Zum Craften:
Das reicht eventuell, wenn du den überflüssigen Initialisierungsaufruf aus der TownManager library entfernst.

Da ich gerade nicht mehr weiss, wo der genau stand, hier die ganze library:
Ich habe dir auch mal den Part hervorgehoben, der dafür sorgt, dass Cain erst ab 2 Items aufgesucht wird, kannst du ja ändern, wenn du magst.
Auch wenn Cain durchaus auch ausgelassen werden kann, wenn dein Char forced Unids bei sich trägt, somit bietet sich ein ID Tome dennoch an. ;)

LG
Muddy
ne ofc trägt er keinen folianten zu identen dabei wenn er zu cain rennt... war aber imo auch net das problem da er sich ne scroll kauft und dann identen will aber irgendwie führt er das net sauber aus und sellt die items dann einfach

da ich keine sachen unid lasse stört mich das mit cain eher weniger, werds also dahingehend ändern das er bei jedem item
cain benutzt... sollte das problem dahingehend auch lösen imo
05/10/2011 13:58 Energie[Russ]#1829
Quote:
Originally Posted by GruenerApfel View Post
ne ofc trägt er keinen folianten zu identen dabei wenn er zu cain rennt... war aber imo auch net das problem da er sich ne scroll kauft und dann identen will aber irgendwie führt er das net sauber aus und sellt die items dann einfach

da ich keine sachen unid lasse stört mich das mit cain eher weniger, werds also dahingehend ändern das er bei jedem item
cain benutzt... sollte das problem dahingehend auch lösen imo
war auch bei mir so.. kauft sich ident scroll.. verkauft item ohne zu iden. und schmeißt scroll weg --> einfach ident tomb kaufen und prob gelöst
05/10/2011 14:33 Muddy Waters#1830
Alternativ kann man auch einfach die Funktion ausbessern, die das Problem auslöst. ;)

Das würde dann so aussehen:
Code:
function NTT_GetScroll(type)
{
	var _items;
	var i, j;

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

	for(i = 0; i < 5; i++)
	{
		if(i > 0)
			NTC_PingDelay(200);
		
		if(type)
			_items = me.GetItems(529);
		else
			_items = me.GetItems(530);

		if(_items)
		{
			for(j = 0; j < _items.length; j++)
			{
				if(_items[j].mode == 0 && _items[j].itemloc == MWC_LOC_INVENTORY)
					return _items[j];
			}
		}
	}

	return null;
}
LG
Muddy