Register for your free account! | Forgot your password?

You last visited: Today at 02:54

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

Advertisement



[Release] Muddy's D2NT

Discussion on [Release] Muddy's D2NT within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old 11/13/2011, 18:50   #4036
 
elite*gold: 0
Join Date: Aug 2009
Posts: 57
Received Thanks: 1
Hallo hab das Probelm, dass der bot nach dem Baal-Run komplett aus D2 geht und neu startet.

Ich bin mir fast zu 100% sicher, dass es an der GlobalSetting oder an der NTBot.ntj liegt.

Bitta da mal einen Blick reinwerfen.
Code:
/**
*	This file was written by 
*	Check the programming section for updates and further scripts
*	Last Update: 00:53 30.08.2011
*/

Include("libs/common/MWSkills.ntl");

function MW_LoadGlobalSettings()
{
	//------------------------------------------------------------------------------
	// General Configuration
	//------------------------------------------------------------------------------

	// Set to false will disable auto mule for all chars. Note that you have to set both this variable and MWConfig_Automule.Activated (in you char config) to true in order to enable auto mule for a char.	
	MWConfig_Automule.Enabled = false;
	
	// Set to true to buy items that match your Nips whenever visiting a merchant.
	MWConfig_DoShopping = true;
	
	// Set to true to have the status text show the script runtime. (Note: enabling this might lead to an increased number of crashes/restarts.)	
	MWConfig_EnableStatusTextTimer = false;
	
	// Set to true to always check the selected Nips for errors after including them. Check "..\scripts\Logs\NipErrors.txt" for a precise error description!
	MWConfig_RunNipCheck = false;

	// Set to true to run sorting algorithm whenever managing your stash.
	MWConfig_SortStash = true;
	
	// Set to true to run sorting algorithm if your stash is full and items are stored in your inventory.
	MWConfig_SortInventory = true;

	// Set to true to form a party even if public mode is deactivated.
	MWConfig_AutoParty = true;
	
	// This is the maximum number of errors that may occur in a single game. If more errors occur, your char will exit the game.
	MWConfig_GameErrorLimit = 3;
	
	// This is the delay in milliseconds before the first bot script is loaded.
	NTConfig_StartDelay = 1000;
	
	// This is the delay in milliseconds on area changes. Do not set this too low!
	NTConfig_AreaDelay = 750;
	
	// This is the delay in milliseconds before picking up items. Do not set this too low!
	NTConfig_SnagDelay = 750;
	
	// This is the delay in milliseconds after finishing a bot script.
	MWConfig_ScriptDelay = 1000;
	
	// Set to true to enable overhead status messages. NOTE: This will be visible for everyone in the game so you might not want to activate it when doing public games.
	MWConfig_ShowOverheadStatus = true;
	
	// Define which negative states on your char require visiting a healer when in town. Set to 0 not to visit a healer.
	// 0x02 : Poison
	// 0x04 : Amplify Damage
	// 0x08 : Weaken
	// 0x10 : Iron Maiden
	// 0x20 : Decrepify
	// 0x40 : Lower Resist
	MWConfig_CheckSelfSafeTown = 0x0C;
	
	// Define which negative states on your merc require visiting a healer when in town. Set to 0 not to visit a healer.
	// 0x02 : Poison
	// 0x04 : Amplify Damage
	// 0x08 : Weaken
	// 0x10 : Iron Maiden
	// 0x20 : Decrepify
	// 0x40 : Lower Resist
	MWConfig_CheckMercSafeTown = 0;
	
	//------------------------------------------------------------------------------
	// Chat Announcements
	//------------------------------------------------------------------------------
	
	// These announcements will not be made unless NTConfig_PublicMode is set to true. Set to "" not to post a message.
	// NOTE: You have to set a TPSafe message when using leechers and not entering unsafe TPs.
	
	MWConfig_Announcements.BaalThrone = "There are %d monster(s) in Throne!";
	MWConfig_Announcements.BaalTpNone = "TP up, no monsters close!";
	MWConfig_Announcements.BaalTpCold = "TP cold, %d monsters close!";
	MWConfig_Announcements.BaalTpWarm = "TP warm, %d monsters close!";
	MWConfig_Announcements.BaalTpHot = "TP hot, %d monsters close!";
	MWConfig_Announcements.BaalTpSafe = "TP is safe!";
	MWConfig_Announcements.BaalPreChamber = "Killing Baal!";
	MWConfig_Announcements.BaalKilled = "Next game!";
		
	MWConfig_Announcements.DiabloTpNone = "TP up, no monsters close!";
	MWConfig_Announcements.DiabloTpCold = "TP cold, %d monsters close!";
	MWConfig_Announcements.DiabloTpWarm = "TP warm, %d monsters close!";
	MWConfig_Announcements.DiabloTpHot = "TP hot, %d monsters close!";
	MWConfig_Announcements.DiabloTpSafe = "TP is safe!";
	MWConfig_Announcements.DiabloPre = "Killing Diablo!";
	MWConfig_Announcements.DiabloKilled = "Next game!";
	
	// Message to announce right before leaving a game.
	MWConfig_Announcements.NextGame = "Next game!";
	
	// Minimum char level to show level up message. Set to 99 to deactivate level up messages.
	MWConfig_Announcements.ShowLevelUpMessagMinLevel = 75;
	
	// These level up messages will be posted in chat whenever another player in game has a level up. (chosen randomly)
	MWConfig_Announcements.LevelUpMessages.push("Congratulations on level %level, %name!");
	MWConfig_Announcements.LevelUpMessages.push("Nice level up, %name!");
	MWConfig_Announcements.LevelUpMessages.push("Good job reaching level %level, %name!");
	MWConfig_Announcements.LevelUpMessages.push("Congratulations are in order, for %name just reached level %level!");
	
	//------------------------------------------------------------------------------
	// Bulletin Board Output Configuration
	//------------------------------------------------------------------------------
	
	// Select the path of your output textfile. The file extension .txt is added automatically.
	MWConfig_BulletinBoardFilePath = "Logs/BBOutput";
	
	// Select the mode for writing to the output textfile. Use 1 to overwrite the existing content and use 2 to append to the existing content.
	MWConfig_BulletinBoardFileMode = 1;
	
	// Define the colors used for replacing the D2 color codes. WARNING: You should not change these unless you are familiar with hexadecimal colors.
	MWConfig_BulletinBoardColors["white"] = "#FFFFFF";
	MWConfig_BulletinBoardColors["red"] = "#CD0000";
	MWConfig_BulletinBoardColors["green"] = "#00FF00";
	MWConfig_BulletinBoardColors["blue"] = "#3A5FCD";
	MWConfig_BulletinBoardColors["gold"] = "#8B814C";
	MWConfig_BulletinBoardColors["gray"] = "#606060";
	MWConfig_BulletinBoardColors["orange"] = "#FF8C00";
	MWConfig_BulletinBoardColors["yellow"] = "#FFFF00";
	
	//------------------------------------------------------------------------------
	// User Defined Commands
	//------------------------------------------------------------------------------
	
	// This feature allows you to assign some commands to your numpad.
	// The current assignment is shown by pressing "Numpad +".
	// 
	// Command Name					Description
	// -----------------------------------------------------------------------------
	// ShowChickenThresholds		Shows your chars current chicken thresholds.
	// ShowTotalGoldCarried			Shows the amount of gold your char currently carries.
	// ShowActiveStates				Shows the active states or your char.
	// ShowScriptOrder				Shows the current bot script schedule.
	// ShowStash					Shows the current layout of your stash and how many slots are used/unused.
	// ClearPosition_X				Kills all monsters in a radius of X. NOTE: Will not work while a bot script is running.
	// PickItems					Check for dropped items. NOTE: Will not work while a bot script is running.
	// RevealMap					Reveals the automap.
	// ShowEnemiesOnMap				Shows nearby enemies on automap.
	// ShowMisslesOnMap				Shows nearby missles on automap.
	// ShowKeysCarried				Shows how many of each type of key your character currently carries.
	// ShowOrgansCarried			Shows how many of each type of organ your character currently carries.
	// ShowRunesCarried				Shows how many runes of each type your character currently carries.
	// ShowItemLevel				Shows the item level and nip info of a selected item. NOTE: "Selected" means placed in your cube. ;)
	// WriteBBOutput				Generates BB Code output for a selected item's description. NOTE: "Selected" means placed in your cube. ;)
	// -----------------------------------------------------------------------------
	// ShowObjectUnits_X			Shows the properties of all object units in a radius of X.
	// ShowNpcUnits_X				Shows the properties of all npc units in a radius of X.
	// ShowPlayerUnits_X			Shows the properties of all player units in a radius of X.
	// ShowItemUnits_X				Shows the properties of all item units in a radius of X.
	// ShowTileUnits				Shows the properties of all nearby tile units.

	MWConfig_CommandAssignedToNumpad[0] = "ShowScriptOrder";
	MWConfig_CommandAssignedToNumpad[1] = "ShowStash";
	MWConfig_CommandAssignedToNumpad[2] = "ShowTotalGoldCarried";
	MWConfig_CommandAssignedToNumpad[3] = "ShowChickenThresholds";
	MWConfig_CommandAssignedToNumpad[4] = "ShowOrgansCarried";
	MWConfig_CommandAssignedToNumpad[5] = "ShowKeysCarried";
	MWConfig_CommandAssignedToNumpad[6] = "ShowRunesCarried";
	MWConfig_CommandAssignedToNumpad[7] = "ShowMisslesOnMap";
	MWConfig_CommandAssignedToNumpad[8] = "ShowEnemiesOnMap";
	MWConfig_CommandAssignedToNumpad[9] = "RevealMap";
	
	//------------------------------------------------------------------------------
	// World Event Configuration
	//------------------------------------------------------------------------------
	
	// Set to true to stop and wait some minutes after receiving "x Stones of Jordan sold to Merchants" message. Your char will switch acts every couple of minutes so he won't be kicked.
	MWConfig_CheckSojSales = true;
	
	// Set to true to wait ingame after receiving a "Diablo Walks the Earth" message. Your char will switch acts every couple of minutes so he won't be kicked.
	NTConfig_CheckCloneDiablo = true;
	
	// Enter an account name that will be informed about soj sales or world events. Leave empty not to wisper any account.
	MWConfig_WorldEventAccount = "";
	
	// This is the time in minutes your char will remain in the game in case of a world event. Set to 0 to wait infinitely.
	MWConfig_WorldEventWaitTime = 0;
	
	// This can be used to specify IPs of servers that are currently hot, i.e. if a considerable amount of sojs has been sold on a server and thus a World Event is in order. The char will check if his current game IP is included in your list and wait in case it is.
	MWConfig_HotServerIps = [-1, -1];
	
	// This is the time in minutes that you would like your char to wait for in case his current game is hosted on a hot server.
	MWConfig_HotIpIdleTime = 10;

	//------------------------------------------------------------------------------
	// Identification Configuration
	//------------------------------------------------------------------------------
	
	// Set to true to visit Deckard Cain in order to identify items. NOTE: Cain will NOT be visited if you char carries items that you like to be kept unidentified.
	MWConfig_IdentAtCain = true;
	
	// Set to true to always visit a merchant in order to sell items that are not required. If set to false, the char will drop these items, unless he is visiting a merchant anyway.
	MWConfig_AlwaysSellTrashItems = true;
	
	// Set to true to identify items when not in town. Items that do not meet your requirements will be dropped.
	MWConfig_IdentAfterPickup = false;
	
	// This is the minimum number of unid items to be carried before your char identifies them when not in town.
	MWConfig_MinItemsToIdent = 3;
	
	//------------------------------------------------------------------------------
	// Itemlog Configuration
	//------------------------------------------------------------------------------
	
	// Set to true to log both sold and kept items in an XML logfile that can be viewed in a browser. NOTE: For some reason that does not work using IE, try Firefox instead.
	// Also, using the XML log is known for increasing the number of crashes/restarts, better set this to false if you not necessarily need it.
	MWConfig_UseXMLItemlog = false;
	
	// Set to true to activate Nip debug mode. The Nip debug mode adds additional information to the item tooltips in the manager's item log that tells you exactly why an item was kept.
	MWConfig_NipDebugMode = false;
	
	// Set to true to log items in manager's log that were not required and therefore sold. NOTE: You should definately set this to false when running multiple bots. Use the XML log instead in order to keep track of sold items. ;)
	MWConfig_LogSoldItems = false;
	
	// Set to true to print how much gold was picked up during the last script after it is finished. Quite useful when using a goldbarb.
	MWConfig_ShowGoldPickupsPerScript = false;
	
	// Set to true to show a pick up message for gold.
	MWConfig_ShowGoldPickups = true;
	
	// Set to true to show a pick up message for potions.
	MWConfig_ShowPotionPickups = true;
	
	// This is the number of the lowest rune to be logged in the manager's item log when picked up. Mostly useful to keep your item log clean when collecting low runes. The default value 19 means that only runes equal or greater than LEM will be shown in the manager's item log.
	MWConfig_LowestRuneToLog = 0;
	
	// Set to true to create a Muddy's Mule Manager logfile at the end of every game.
	MWConfig_WriteMMMLog = true;
	
	// Set to true to write a common lofiles that logs how many gems, runes, keys, organs or essences your chars picked up.
	MWConfig_WriteCommonLog = false;
	
	// Show a drop notification on drops of items matching the below Nip line. Set to "" not to detect drops.
	MWConfig_ShowDroppedItemSpecs = "[Quality] == Unique || [Quality] == Set || [Type] == Rune || [Flag] == Runeword";
	
	//------------------------------------------------------------------------------
	// Pickit Configuration
	//------------------------------------------------------------------------------
	
	// Set to true to pick up possibly useful items before picking up low priority items like keys, scrolls, gold, potions, and runes <= FAL.
	MWConfig_PickUpPriorityItemsFirst = false;
	
	// Pick up all items that are likely to be worth a lot of gold whenever your character is about to visit town.
	MWConfig_PickUpMoneymakers = true;
	
	// This is the minimum quantity of TP scrolls in your tome. If you got less, scrolls will be picked up in order to fill your tome.
	MWConfig_MinimumTpScrollCount = 20;
	
	// This is the minimum quantity of ID scrolls in your tome. If you got less, scrolls will be picked up in order to fill your tome.
	MWConfig_MinimumIdScrollCount = 20;
	
	//------------------------------------------------------------------------------
	// Gambling Configuration
	//------------------------------------------------------------------------------
	
	// Set to true to enable gambling.
	NTConfig_Gamble = true;
	
	// This is the gold mount to start gambling.
	NTConfig_GambleStartGold = 2500000;
	
	// This is the gold mount to stop gambling.
	NTConfig_GambleStopGold = 150000;

	// Select which items are gambled by adding the classids of the desired items to the gambling array.
	NTConfig_GambleItem.push(520);		// Amulets
	NTConfig_GambleItem.push(522);		// Rings
	NTConfig_GambleItem.push(418);		// Circlets
	NTConfig_GambleItem.push(419);		// Coronets
	// NTConfig_GambleItem.push(334);	// Leather Gloves
	// NTConfig_GambleItem.push(335);	// Heavy Gloves
	// NTConfig_GambleItem.push(336);	// Chain Gloves
	// NTConfig_GambleItem.push(337);	// Light Gauntlets
	// NTConfig_GambleItem.push(338);	// Gauntlets
	// NTConfig_GambleItem.push(<classid>);
		
	//------------------------------------------------------------------------------
	// Cubing Configuration
	//------------------------------------------------------------------------------
	
	// Set to true to log cubing of gems in the manager's common log.
	MWConfig_ShowCubedGemsInCommonLog = false;
	
	// Set to true to always remove all items from cube after transmuting. If set to false, the item will remain in cube and is not removed until it interferes with another recipe.
	MWConfig_ClearCubeAfterCubing = false;
	
	// Set to true to enable an advanced cubing algorithm that allows collecting ingredients for multiple recipes at the same time.
	MWConfig_UseAdvancedCubingAlgorithm = true;
	
	// Set to true if you do not want kept low runes or gems to be used for cubing. Set to false to use them anyway.
	MWConfig_RestrictKeptItemsFromCubing = false;
	
	// *********************** Misc ***********************
	//NTConfig_CubingItem.push([NTCU_ESSENCE, 653]); // Essences --> Token
	
	// ****************** Transmute Gems ******************
	//NTConfig_CubingItem.push([NTCU_GEM, 560]);	// Flawless Amethyst
	//NTConfig_CubingItem.push([NTCU_GEM, 565]);	// Flawless Topaz
	//NTConfig_CubingItem.push([NTCU_GEM, 570]);	// Flawless Saphire
	//NTConfig_CubingItem.push([NTCU_GEM, 575]);	// Flawless Emerald
	//NTConfig_CubingItem.push([NTCU_GEM, 580]);	// Flawless Ruby
	//NTConfig_CubingItem.push([NTCU_GEM, 585]);	// Flawless Diamond
	//NTConfig_CubingItem.push([NTCU_GEM, 600]);	// Flawless Skull

	//NTConfig_CubingItem.push([NTCU_MAGIC, 420]);	// Magic Tiara
	//NTConfig_CubingItem.push([NTCU_MAGIC, 421]);	// Magic Diadem
	
	// ************* Transmute magic and rares *************
	//NTConfig_CubingItem.push([NTCU_MAGIC_CHARM, 603]);	// Magic Small Charm
	//NTConfig_CubingItem.push([NTCU_MAGIC_CHARM, 605]);		// Magic Grand Charm
	
	//NTConfig_CubingItem.push([MWCU_RARE, 421]); // Rare Diadem

	// ********************** Crafting *********************
	//NTConfig_CubingItem.push([NTCU_CRAFT_HITPOWER_GLOVES, 336]);	// Craft Chain Gloves
	//NTConfig_CubingItem.push([NTCU_CRAFT_HITPOWER_GLOVES, 382]);	// Craft Heavy Bracers
	//NTConfig_CubingItem.push([NTCU_CRAFT_HITPOWER_GLOVES, 452]);	// Craft Vambraces
	//NTConfig_CubingItem.push([NTCU_CRAFT_HITPOWER_RING, 522]);		// Craft Ring

	//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_HELM, 354]);		// Craft Casque
	//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_HELM, 424]);		// Craft Armet
	//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_BOOTS, 388]);		// Craft Battle Boots
	//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_BOOTS, 458]);		// Craft Mirrored Boots
	//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_GLOVES, 381]);		// Craft Sharkskin Gloves
	//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_GLOVES, 451]);		// Craft Vampirebone Gloves
	//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_BELT, 392]);		// Craft Mesh Belt
	//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_BELT, 462]);		// Craft Mithril Coil
	//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_AMULET, 520]);		// Craft Amulet
	//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_RING, 522]);		// Craft Ring

	//NTConfig_CubingItem.push([NTCU_CRAFT_CASTER_BOOTS, 455]);		// Craft Wyrmhide Boots
	//NTConfig_CubingItem.push([NTCU_CRAFT_CASTER_AMULET, 520]);		// Craft Amulet

	//NTConfig_CubingItem.push([NTCU_CRAFT_SAFETY_SHIELD, 447]);	// Craft Monarch
	//NTConfig_CubingItem.push([NTCU_CRAFT_SAFETY_AMULET, 520]);	// Craft Amulet
	
	// ****************** Transmute runes ******************
	//NTConfig_CubingItem.push([NTCU_RUNE_THUL, 562]);		// Transmute 3xTHUL --> 1xAMN
	//NTConfig_CubingItem.push([NTCU_RUNE_AMN, 557]);		// Transmute 3xAMN --> 1xSOL
	//NTConfig_CubingItem.push([NTCU_RUNE_SOL, 567]);		// Transmute 3xSOL --> 1xSHAEL
	//NTConfig_CubingItem.push([NTCU_RUNE_SHAEL, 577]);		// Transmute 3xSHAEL --> 1xDOL
	//NTConfig_CubingItem.push([NTCU_RUNE_DOL, 572]);		// Transmute 3xDOL --> 1xHEL
	//NTConfig_CubingItem.push([NTCU_RUNE_HEL, 582]);		// Transmute 3xHEL --> 1xIO
	//NTConfig_CubingItem.push([NTCU_RUNE_IO, 563]);		// Transmute 3xIO --> 1xLUM
	//NTConfig_CubingItem.push([NTCU_RUNE_LUM, 558]);		// Transmute 3xLUM --> 1xKO
	//NTConfig_CubingItem.push([NTCU_RUNE_KO, 568]);		// Transmute 3xKO --> 1xFAL
	//NTConfig_CubingItem.push([NTCU_RUNE_FAL, 578]);		// Transmute 3xFAL --> 1xLEM
	//NTConfig_CubingItem.push([NTCU_RUNE_LEM, 573]);		// Transmute 3xLEM --> 1xPUL
	NTConfig_CubingItem.push([NTCU_RUNE_PUL, 583]);			// Transmute 2xPUL --> 1xUM
	NTConfig_CubingItem.push([NTCU_RUNE_UM, 564]);			// Transmute 2xUM --> 1xMAL
	NTConfig_CubingItem.push([NTCU_RUNE_MAL, 559]);			// Transmute 2xMAL --> 1xIST
	//NTConfig_CubingItem.push([NTCU_RUNE_IST, 569]);		// Transmute 2xIST --> 1xGUL
	NTConfig_CubingItem.push([NTCU_RUNE_GUL, 579]);			// Transmute 2xGUL --> 1xVEX
	//NTConfig_CubingItem.push([NTCU_RUNE_VEX, 574]);		// Transmute 2xVEX --> 1xOHM
	//NTConfig_CubingItem.push([NTCU_RUNE_OHM, 584]);		// Transmute 2xOHM --> 1xLO
	//NTConfig_CubingItem.push([NTCU_RUNE_LO, 565]);		// Transmute 2xLO --> 1xSUR
	//NTConfig_CubingItem.push([NTCU_RUNE_SUR, 560]);		// Transmute 2xSUR --> 1xBER
	//NTConfig_CubingItem.push([NTCU_RUNE_BER, 570]);		// Transmute 2xBER --> 1xJAH
	//NTConfig_CubingItem.push([NTCU_RUNE_JAH, 580]);		// Transmute 2xJAH --> 1xCHAM
	//NTConfig_CubingItem.push([NTCU_RUNE_CHAM, 575]);		// Transmute 2xCHAM --> 1xZOD

	// ******************* Socket items ********************
	// Primary item must inlcluded in one of your .nip Files
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 429]);	// Socket Dusk Shroud
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 430]);	// Socket Wyrmhide
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 431]);	// Socket Scarab Husk
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 432]);	// Socket Wire Fleece
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 433]);	// Socket Diamond Mail
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 434]);	// Socket Loricated Mail
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 435]);	// Socket Bone Weave
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 436]);	// Socket Great Hauberk
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 437]);	// Socket Balrog Skin
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 438]);	// Socket Hellforge Plate
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 439]);	// Socket Kraken Shell
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 440]);	// Socket Lacquered Plate
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 441]);	// Socket Shadow Plate
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 442]);	// Socket Sacred Armor
	NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 443]);	// Socket Archon Plate

	//NTConfig_CubingItem.push([NTCU_SOCKET_WEAPON, 200]); NTConfig_CubingItem[NTConfig_CubingItem.length - 1].Ethereal = false; // Socket Berserker Axe
	NTConfig_CubingItem.push([NTCU_SOCKET_WEAPON, 255]);	// Socket Thresher
	NTConfig_CubingItem.push([NTCU_SOCKET_WEAPON, 256]);	// Socket Cryptic Axe
	//NTConfig_CubingItem.push([NTCU_SOCKET_WEAPON, 257]);	// Socket Great Poleaxe
	//NTConfig_CubingItem.push([NTCU_SOCKET_WEAPON, 258]);	// Socket Giant Thresher
	
	NTConfig_CubingItem.push([NTCU_SOCKET_SHIELD, 447]); NTConfig_CubingItem[NTConfig_CubingItem.length - 1].Ethereal = true; // Socket Monarch
	NTConfig_CubingItem.push([NTCU_SOCKET_SHIELD, 498]); NTConfig_CubingItem[NTConfig_CubingItem.length - 1].Ethereal = true; // Socket Sacred Targe
	NTConfig_CubingItem.push([NTCU_SOCKET_SHIELD, 502]); NTConfig_CubingItem[NTConfig_CubingItem.length - 1].Ethereal = true; // Socket Vortex Shield

	// ******************* Upgrade items *******************
	//NTConfig_CubingItem.push([NTCU_UPGRADE_E_UNIQUE_WEAPON, 295]);// Titan's Revenge : Exceptional -> Elite
	//NTConfig_CubingItem.push([NTCU_UPGRADE_N_UNIQUE_ARMOR, 337]);	// Magefist : Normal -> Exceptional
	//NTConfig_CubingItem.push([NTCU_UPGRADE_E_UNIQUE_ARMOR, 360]);	// Skin of the Vipermagi : Exceptional -> Elite
	//NTConfig_CubingItem.push([NTCU_UPGRADE_E_UNIQUE_ARMOR, 383]);	// Magefist or Lava Gout : Exceptional -> Elite
	//NTConfig_CubingItem.push([NTCU_UPGRADE_E_UNIQUE_ARMOR, 389]);	// Gore Rider : Exceptional -> Elite
	//NTConfig_CubingItem.push([NTCU_UPGRADE_E_UNIQUE_ARMOR, 477]);	// Arreat's Face : Exceptional -> Elite
	//NTConfig_CubingItem.push([NTCU_UPGRADE_E_UNIQUE_ARMOR, 481]);	// Herald Of Zakarum : Exceptional -> Elite

	//NTConfig_CubingItem.push([NTCU_UPGRADE_N_UNIQUE_ARMOR, 342]); // Goblin Toe N -> E
	//NTConfig_CubingItem.push([NTCU_UPGRADE_E_UNIQUE_ARMOR, 388]); // Goblin Toe E -> E
}
Code:
/**
*	This file was modified by 
*	Check the programming section for updates and further scripts
*	Last Update: 02/28/2011
*/

var GameMinLength				= 181000;		// 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				= 15;			// time in minutes to retry connecting on a realm down (default is 300 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			= 20000;		// time in milliseconds to wait between making games
var CreateGameThresholdRandom	= 5000;			// 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					= 1000;			// wait X milliseconds before next action after a click event
var TextDelay					= 2500;			// 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 JoinChatAfterLogin			= true;			// join chat after login
var JoinRandomChannel			= false;		// if this is true, will join a random channel, otherwise it will use the channel below..
var JoinChannelInChat			= "op zod";// leave blank not to join a private channel
var PerformChannelLogin			= false;		// type ".login" once after joining the channel
var ChannelUsers 				= new Array();	// dynamic array that holds channel users
var MaximumLocationLoops		= 5;			// The maximum number of loops for a single location; if the window is does not respond and is caught in an infinite loop it will be restarted when the number of loops exceeds the one you specify here
var JoinGameKeywords			= new Array("dia", "baal");
var JoinRandomGamesChars		= new Array("");
//---------------------------------------------------------------------------------------------------------------------------------------------------------
// Add any char/account here that is supposed to perform chat actions/game announcements or join a private channel
ChannelUsers.push("Maxmuster");
// Or
ChannelUsers.push("Maxmuster");

// The following key expressions will be replaced by their actual values:  %game --> "gamename-"  <>  %counter --> number of the next game  <>  %time --> time in seconds till game creation  <>  %password --> game password
// Note that the announcement will start after the first run, so there usually won't be any anncouncement right after login - If the gamename is undefined, the bot will try to load the backup file to announce the upcoming game properly
var GameAnnouncement			= "Creating %game%counter//in about %time seconds";			// Leave blank not to post a channel announcement
var GameAnnouncementDelay		= 5000;			// Wait X milliseconds before posting the announcement message (don't set this too low!)
var GameAnnouncementDelayRandom	= 500;			// Random amount of time to add to a to the announcement delay
var UseFileBackupTimeMax		= 30;			// Time in minutes that may pass since last file update - The backup File is updated at the beginning of every single game and is read everytime the name of your previous game is undefined (e.g. at restarts); Set to 0 to deactivate file backup
//----------------------------------------------------------------------------------------------------------------------------------------------------------
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_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 LocationLoops = new Array(2);
var ChatActionsDone = false;
var LastGameFailed = false;
var JoinedChannel = false;
var JustJoined = true;
var MadeAnnouncement = false;

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

var ControlData = new controlInfo();

function NTMain()
{
	var _ingame;
	
	Delay(1000);

	_ingame = false;

	ControlData.ClickDelay = ClickDelay;
	ControlData.TextDelay = TextDelay;
	ControlData.ClickDelayRandom = ClickDelayRandom;
	ControlData.TextDelayRandom = TextDelayRandom;

	while(true)
	{
		if(me.ingame)
		{
			if(!InGameAt)
				InGameAt = GetTickCount();
			
			if(!_ingame)
			{
				RunGC(); // run garbage collector between each game

				if(Load("NTBot/MWBotGame.ntj"))
				{
					_ingame = true;
					MadeAnnouncement = false;
					LocationLoops[1] = 0;
					
					MW_WriteBackupFile();
					
					if(me.playtype > 0)
						NT_SendEventToOOG(D2NT_MGR_INGAME, "In Game [IP:" + me.gameserverip.split(".")[3] + "]", 0);
					else
						NT_SendEventToOOG(D2NT_MGR_INGAME, "In Game", 0);

					LastGameStatus = 2; // in game successful
				}
			}

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

				NT_SendEventToOOG(D2NT_MGR_READY, "", 0);
			}

			NT_LocationAction(ControlData.getLocation());

			Delay(500);
		}
	}
}

function NT_LocationAction(location)
{
	var _randomChannel, _output, _control;
	
	MW_CheckLocationLoops(location);
	
	switch(location.id)
	{
	case 3: // Lobby Chat
		if(JustJoined)
		{
			JustJoined = false;
			if(MW_IsChannelUser())
				_output = "ÿc2Chat actions enabled!";
			else
				_output = "ÿc1Chat actions disabled!";
			
			for(var i = 0; i < 3; i++)
			{
				SetStatusText(_output);
				Delay(500);
				SetStatusText("");
				Delay(500);
			}
		}
		
		if(!ChatActionsDone && MW_IsChannelUser())
		{
			ChatActionsDone = true;
			
			Delay(Random(WaitInChatBeforeActionsMin, WaitInChatBeforeActionsMax));
			
			if(!JoinedChannel && (JoinRandomChannel || JoinChannelInChat != ""))
			{
				_randomChannel = NT_GetRandomString(Random(3,10));
				SetStatusText("ÿc8Joining Channel ÿc;" + (JoinRandomChannel ? _randomChannel : JoinChannelInChat));
				
				Delay(500);
				
				Say("/join " + (JoinRandomChannel ? _randomChannel : JoinChannelInChat));
				JoinedChannel = true;
				Say(".Login")				
				if(PerformChannelLogin)
				{
					SetStatusText("ÿc8Channel Login...");
					Say(".login");
					Delay(1000);
				}
			}
		}
	case 1:  // Lobby
		if(location.id == 1 && JoinChatAfterLogin)
		{
			Delay(Random(WaitBeforeEnterChatMin, WaitBeforeEnterChatMax));
			ControlData.click(ControlData.controls.lobby.button.enterChat);
			break;
		}
		if(GetTickCount() > NextGameMake)
		{
			LastGameFailed = false;

			switch(LastGameStatus)
			{
			case 0:
				if(JoinRandomGamesChars.indexOf(me.charname) > -1)
				{
					_control = ControlData.get(ControlData.controls.lobby.button.join);
					
					if(_control && _control.pressed)
					{
						ControlData.click(ControlData.controls.lobby.button.create);
						Delay(500);
					}

					ControlData.click(ControlData.controls.lobby.button.join);
				}
				else
				{
					_control = ControlData.get(ControlData.controls.lobby.button.create);
					
					if(_control && _control.pressed)
					{
						ControlData.click(ControlData.controls.lobby.button.join);
						Delay(500);
					}
					
					ControlData.click(ControlData.controls.lobby.button.create);
				}
				NextGameMake = GetTickCount() + CreateGameTimeout; // set our timeout
				NT_SendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
				break;
			case 1: // game failed, rollover to reset timer
				InGameAt = GetTickCount();
				LastGameFailed = true;
				Delay(5000);
				
			case 2:
				NT_OutputGameLength();
				LastGameStatus = 0;
				NT_SetNextGameMake();
				if(LastGameFailed)
				{
					SetStatusText("ÿc1Failed to join!");
					NT_SendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿBE0000Game creation failed!", 0);
					Delay(1000);
				}
				NT_SendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
				break;
			}
		}
		else
		{
			if(JoinChannelInChat && !MadeAnnouncement && MW_IsChannelUser())
			{
				if(MW_AnnounceGame())
					MadeAnnouncement = true;
			}
			
			MW_TimeoutDelay(NextGameMake - GetTickCount(), location, JoinRandomGamesChars.indexOf(me.charname) == -1);
		}
		break;
		
	case 2: // Waiting In Line
		if(GetTickCount()-LastGameMade > WaitInLineTimeout)
			ControlData.click(ControlData.controls.lobby.inLine.button.cancel);
		break;

	case 4: // Create Game
		if(JoinRandomGamesChars.indexOf(me.charname) == -1)
		{
			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);
			}
			
			NT_SendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

			NT_LocationTimeout(5000, location);

			LastGameMade = GetTickCount();
			LastGameStatus = 1; // pending creation
		}
		break;

	case 5: // Join Game
		if(JoinRandomGamesChars.indexOf(me.charname) > -1)
		{
			var _games, _game;

			_games = ControlData.get(ControlData.controls.lobby.join.textBox.gameList).GetText();
			_game = "";
			
			if(_games)
			{
				for(var i = 0; i < _games.length; i++)
				{
					for(var j = 0; j < JoinGameKeywords.length; j++)
					{
						if(_games[i].toLowerCase().indexOf(JoinGameKeywords[j].toLowerCase()) > -1)
						{
							_game = _games[i];
							i = _games.length;
							break;
						}
					}
				}
			}
			
			if(_game != "")
			{
				SetStatusText("ÿc8Joining Game: " + _game);
				Delay(250);
				ControlData.setText(ControlData.controls.lobby.join.editBox.gameName, _game);
				Delay(1000);
				ControlData.click(ControlData.controls.lobby.join.button.joinGame);

				NT_LocationTimeout(5000, location);
				LastGameMade = GetTickCount();
				LastGameStatus = 1; // pending creation
			}
			else
				Delay(2500);
			
			ControlData.click(ControlData.controls.lobby.button.create);
			Delay(500);
			ControlData.click(ControlData.controls.lobby.button.join);
			Delay(500);
		}
		break;

	case 6: // Ladder
		break;

	case 7: // Channel List
		break;

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

	case 9: // Login
		NT_SendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
		Delay(LoginDelay);

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

		NT_SendEventToOOG(D2NT_MGR_LOGIN, location.name, 0);

		NT_LocationTimeout(5000, location);
		break;

	case 10: // Login Error (this is a fatal error, so stop)
		NT_SendEventToOOG(D2NT_MGR_RESTART, location.name, 10);
		Delay(3500);
		break;

	case 11: // Unable To Connect
		MW_TimeoutDelay(UnableToConnectRetry*60*1000, location);
		ControlData.click(ControlData.controls.login.unableToConnect.button.ok);
		break;

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

		NT_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;
			NT_SetNextGameMake();
		}
		else
		{
			ControlData.click(ControlData.controls.characterSelect.button.exit);
			MW_TimeoutDelay(RealmDownRetry*60*1000, location);
		}
		break;

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

	case 14: // Character Select - Disconnected
		MW_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(!NT_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
		MW_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(!NT_LocationTimeout(ConnectingToBnetTimeout, location))
			ControlData.click(ControlData.controls.mainMenu.connecting.button.cancel);
		break;

	case 22: // Login - Invalid Cdkey (classic or xpac)
		NT_SendEventToOOG(D2NT_MGR_RESTART, location.name, 3600);
		Delay(3500);
		break;

	case 23: // Character Select - Connecting
		if(!NT_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(!NT_LocationTimeout(PleaseWaitTimeout, location))
			ControlData.click(ControlData.controls.lobby.pleaseWait.button.cancel);
		break;
		
	case 26: // Lobby - Game Name Exists
		NT_SendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿBE0000Game already exists", 0);
		SetStatusText("ÿc1Game already exists!");
		InGameAt = 0;
		LastGameStatus = 0;
		NT_SetNextGameMake();

		NT_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;
		NT_SetNextGameMake();

		NT_LocationTimeout(GameDoesNotExistTimeout, location);
		break;
	}
}

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

function NT_SetNextGameMake()
{
	LastGameMade = GetTickCount();
	NextGameMake = LastGameMade + CreateGameThreshold + Random(0 - CreateGameThresholdRandom, CreateGameThresholdRandom) + InGameAt;
	InGameAt = 0;
	ChatActionsDone = false;
}

function NT_OutputGameLength()
{
	var _duration;
	
	if(InGameAt)
	{
		_duration = GetTickCount() - InGameAt;

		if(_duration < GameMinLength)
			InGameAt = GameMinLength - _duration;
		else
			InGameAt = 0;
	}
}

function NT_LocationTimeout(time, location)
{
	var _endtime = GetTickCount() + time;

	while(ControlData.getLocation().id == location.id && _endtime > GetTickCount())
	{
		if(LocationLoops[1] > 1)
			NT_SendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " [" + MWC_ConvertTicksToTimeString(_endtime - GetTickCount()) + "] [" + LocationLoops[1] + "]", 0);
		else
			NT_SendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " [" + MWC_ConvertTicksToTimeString(_endtime - GetTickCount()) + "]", 0);
		
		Delay(1000);
	}

	return (ControlData.getLocation().id != location.id);
}

function MW_TimeoutDelay(time, location, showNextGameStatus)
{
	var _gamename, _outputString, _timeString;
	
	if(arguments.length < 3)
		showNextGameStatus = false;
	
	_endtime = GetTickCount() + time;
	_gamename = me.gamename;
	_timeString = "";
	
	if(!_gamename)
	{
		_gamename = MW_ReadBackupFile(0);
		
		if(_gamename)
			SetStatusText("ÿc8Using File Backup...");
	}
	
	while(_endtime > GetTickCount())
	{
		_timeString = " [" + MWC_ConvertTicksToTimeString(_endtime - GetTickCount()) + "]";
		
		NT_SendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + _timeString , 0);
		
		if(showNextGameStatus)
		{
			if(LastGameFailed && parseInt(_endtime-GetTickCount()) > CreateGameThreshold && parseInt((_endtime-GetTickCount())/1000) % 30 >= 0 && parseInt((_endtime-GetTickCount())/1000) % 30 <= 5)
			{
				_outputString = "ÿc1Last game failed!";
				_timeString = "";
			}
			else if(parseInt((_endtime-GetTickCount())/1000) >= 0)
			{
				if(_gamename && MW_GetGameCounter(_gamename, false))
					_outputString = "ÿc8Next game: " + MW_GetGameName(_gamename) + MW_GetGameCounter(_gamename, false);
				else
					_outputString = "ÿc8Game creation pending... ";
			}
			
			MWC_SetStatusText(_outputString, _timeString);
			
			if(me.ingame)
				_endtime = GetTickCount();
		}
		
		Delay(1000);
	}
	
	if(showNextGameStatus)
		SetStatusText("ÿc8Creating game...");
		
	return;
}

function NT_GetRandomString(length)
{
	_retString = "";
	_charSet = "0123456789abcdefghijklmnopqrstuvwxyz";

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

	return _retString;
}

function MW_GetGameName(lastGameString)
{
	if(!lastGameString)
		return "";
	else
		return lastGameString.substr(0, lastGameString.lastIndexOf('-') + 1);
}

function MW_GetGameCounter(lastGameString, simple)
{
	var _count, _countString;

	if(!lastGameString)
		return "-1";
	else
	{
		_countString = lastGameString.slice(lastGameString.lastIndexOf('-') + 1);
			
		if(_countString[0] == '0')
			_countString = _countString.substr(1);

		_count = parseInt(_countString) + 1;

		if(_count == 100)
			_count = 0;

		if(!simple)
		{
			if(_count <= 9)
				return '0' + _count;
		}

		return _count;
	}
}

function MW_IsChannelUser()
{
	for(var i = 0; i < ChannelUsers.length; i++)
	{
		if(me.account.toLowerCase() == ChannelUsers[i].toLowerCase() || me.charname.toLowerCase() == ChannelUsers[i].toLowerCase())
			return true;
	}
	return false;
}

function MW_ReadBackupFile(type)
{
	var _fhandle, _buffer, _time, _now, _retValue;
	
	_fhandle = FileOpen("/Logs/Temporary Data/" + me.charname + ".channel", 2);
	_retValue = "";
	_now = new Date();
	
	if(_fhandle && _now)
	{
		_buffer = _fhandle.ReadLine();
		
		if(_buffer)
		{
			_time = parseInt(_buffer);
			if(_now.getTime() - _time < UseFileBackupTimeMax*6E4)
			{
				_retValue = _fhandle.ReadLine();
				
				if(type > 0)
					_retValue = _fhandle.ReadLine();
			}
		}
		_fhandle.Close();
	}
	else if(_fhandle)
		_fhandle.Close();
	
	return _retValue;
}

function MW_WriteBackupFile()
{
	var _fhandle, _now;
	
	if(UseFileBackupTimeMax == 0)
		return false;
		
	_fhandle = FileOpen("/Logs/Temporary Data/" + me.charname + ".channel", 1);
	_now = new Date();

	if(_fhandle && _now)
	{
		_fhandle.WriteLine(_now.getTime());
		_fhandle.WriteLine(me.gamename);
		_fhandle.WriteLine(me.gamepassword);
		
		_fhandle.Close();
		
		return true;
	}
	else if(_fhandle)
		_fhandle.Close();
	
	return false;
}

function MW_CheckLocationLoops(location)
{
	if(!location)
		return false;
	
	if(!LocationLoops[0] || location.id != LocationLoops[0].id)
	{
		LocationLoops[0] = location;
		LocationLoops[1] = 0;
	}
	else if(LocationLoops[0].id != 5)
	{
		LocationLoops[1]++;
		
		if(LocationLoops[1] >= MaximumLocationLoops)
		{
			if(LocationLoops[1] < 1000)
				NT_SendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿBE0000Location Loop Restart!;ÿc1Location Loops: " + LocationLoops[1] + "\nÿBE0000Location: " + LocationLoops[0].name + "\nÿBE0000Location ID: " + LocationLoops[0].id, 0);
			
			LocationLoops[1] = 1000; // Make sure the location loop notification is only shown once
			
			NT_SendEventToOOG(D2NT_MGR_RESTART, location.name, 0);
		}
	}
	
	return true;
}

function MW_AnnounceGame()
{
	var _gamePass, _gameName, _gameText, _delay;

	_gameName = me.gamename;
	
	if(!_gameName)
		_gameName = MW_ReadBackupFile(0);
		
	_gamePass = me.gamepassword;
	
	if(!_gamePass)
		_gamePass = MW_ReadBackupFile(1);
		
	if(_gameName && !me.ingame)
	{
		_delay = (GameAnnouncementDelay > 5000) ? GameAnnouncementDelay : 5000;
		_delay += (GameAnnouncementDelayRandom > 500) ? Random(0, GameAnnouncementDelayRandom) : 500;
		
		_gameText = GameAnnouncement.replace("%password", ((_gamePass) ? _gamePass : "N/A"));
		_gameText = _gameText.replace("%game", MW_GetGameName(_gameName));
		_gameText = _gameText.replace("%counter", MW_GetGameCounter(_gameName, false));
		_gameText = _gameText.replace("%time", parseInt((NextGameMake - GetTickCount() - _delay + ClickDelay + TextDelay) / 1000 + 5));
	
		if(_gameText.indexOf("NaN") > -1)
			return false;
		
		if(parseInt((NextGameMake - GetTickCount() - _delay + ClickDelay + TextDelay) / 1000) > 3)
		{
			Delay(_delay);
			
			return Say(_gameText);
		}
	}
	
	return false;
}
Morphsepp is offline  
Old 11/13/2011, 19:06   #4037
 
elite*gold: 0
Join Date: Jan 2008
Posts: 467
Received Thanks: 38
wo kann man hot ip einstellen??wo trage ich die ein?
andy123 is offline  
Old 11/13/2011, 19:17   #4038
 
elite*gold: 0
Join Date: Aug 2009
Posts: 162
Received Thanks: 25
Quote:
Originally Posted by andy123 View Post
wo kann man hot ip einstellen??wo trage ich die ein?
in der MWConfig_GlobalSettings.ntl

unter -> World Event Configuration
icke_binnet is offline  
Old 11/13/2011, 19:22   #4039
 
elite*gold: 0
Join Date: Jul 2008
Posts: 51
Received Thanks: 1
hi ich hab ein großes vllt auch kleines problem, botte auf hc und zwischen drin hängt mein fenster sich mit (keine rückmeldung auf) dadurch is mir schon ein char hopps gegangen hat jmd dafür ne lösung??weil das kommt mal beim porten vor , dann bei game leave und bei wp use und dann steht das window und nix geht mehr^^ hab die version von 1.13d
kimi08 is offline  
Old 11/13/2011, 19:24   #4040
 
elite*gold: 0
Join Date: Jan 2008
Posts: 467
Received Thanks: 38
Quote:
Originally Posted by icke_binnet View Post
in der MWConfig_GlobalSettings.ntl

unter -> World Event Configuration
meinst du hier ???
MWConfig_HotServerIps = [-1, -1]; soll dann hier die ip rein? [255, 258, usw
andy123 is offline  
Old 11/13/2011, 19:29   #4041
 
elite*gold: 0
Join Date: Aug 2009
Posts: 162
Received Thanks: 25
Quote:
Originally Posted by andy123 View Post
meinst du hier ???
MWConfig_HotServerIps = [-1, -1]; soll dann hier die ip rein? [255, 258, usw
ja genau

"The char will check if his current game IP is included in your list and wait in case it is."
icke_binnet is offline  
Thanks
1 User
Old 11/13/2011, 19:58   #4042
 
elite*gold: 0
Join Date: Apr 2011
Posts: 15
Received Thanks: 1
Quote:
Originally Posted by Timbo1985 View Post
Hey!

Ich habe in meinem Itemlog leider immer nur die Meldung "Undefined" wenn ich mir die Stats eines Items angucken möchte.

Kann ich das irgendwie ändern, würde im Itemlog gerne die genauen Werte der Items sehen.

mfg
niemand ne idee?
Timbo1985 is offline  
Old 11/13/2011, 20:26   #4043
 
elite*gold: 0
Join Date: Nov 2011
Posts: 4
Received Thanks: 0
Huhu ...

Hab mal ne frage, und zwar würde ich gerne High-Itemlevel ringe und amulette zum craften farmen... , weiss aber nicht was ich in der items_config eintragen muss

Wäre nett wenn mir jemand der sich damit auskennt , was sich aufzusammeln lohnt , weiter helfen könnte und mir mal sagen was ich am besten in der pickit reinschreibe...

Danke im vorraus .... :P
Shitluck-ger is offline  
Old 11/13/2011, 20:35   #4044
 
elite*gold: 0
Join Date: Oct 2011
Posts: 69
Received Thanks: 21
Quote:
Originally Posted by Shitluck-ger View Post
Huhu ...

Hab mal ne frage, und zwar würde ich gerne High-Itemlevel ringe und amulette zum craften farmen... , weiss aber nicht was ich in der items_config eintragen muss

Wäre nett wenn mir jemand der sich damit auskennt , was sich aufzusammeln lohnt , weiter helfen könnte und mir mal sagen was ich am besten in der pickit reinschreibe...

Danke im vorraus .... :P
Gibt da paar sehr gute fertige Pickit´s in dem Tread:
Pirat104 is offline  
Old 11/13/2011, 20:46   #4045
 
elite*gold: 0
Join Date: Sep 2011
Posts: 33
Received Thanks: 1
Hi,

also meine Assa ist 3x besser equipped als meine 2 Sosos und trotzdem viel langsamer
hab jetzt einige Stunden an den Attacks rumgefeilt aber leider ohne großen Erfolg...

Problem ist folgendes: er castet solange Traps bis der Mob tot ist anstatt seine 5 zu legen und dann auf nen Main Skill zu switchen castet er einfach weiter Traps... das kostet pro Mop Gruppe ca 2-3 Sekunden und verlangsammt die Runs um ca 2 Minuten...

wenn jemand nen fix weiss bitte melden

gruss

Lotus
Lotus01 is offline  
Old 11/13/2011, 20:52   #4046
 
elite*gold: 0
Join Date: Jul 2008
Posts: 51
Received Thanks: 1
keiner ne idee ? is echt lästig das ich dann jedes mal manuel beenden muss
kimi08 is offline  
Old 11/13/2011, 20:57   #4047
 
elite*gold: 0
Join Date: Jan 2008
Posts: 467
Received Thanks: 38
iwie bin ich verpeilt. ich hab channel angegeben aber bin immer im open channel drinne.
was oder wo muss ich schreiben um mein op xxxxx zu joinen?? bitte um hilfe vs THX^^
andy123 is offline  
Old 11/13/2011, 21:43   #4048
 
elite*gold: 0
Join Date: Aug 2009
Posts: 4
Received Thanks: 0
Mehrere CD-Keys verwenden

So erstmal Hallo zusammen

Ich hab ein problem mit meinem D2NT bot.
Und zwar wollte ich mehrere CD Keys verwenden um meinen
Bot durchlaufen zu lassen. Daraufhin habe ich mir 2 CD Keys im
Internet gekauft. Habe das alles so eingestellt wie ich das in einer
Anleitung gesehen habe also mit den CDKeychanger mehrere MPQ´s erstellt
und die natürlich in den Diablo2 Ordner gepackt. So mein Problem ist jetzt
dass sobald mein Bot Startet ich eine Meldung beim einloggen bekomme:
"Unable to connect: This application was installed using a lord of destruction
CD key which is not authorized for battle.net use" Ich habe aber die CD Keys
rechtmäßig erworben?! Weiß jemand eine lösung?

Danke schonmal im vorraus
Jimmbou is offline  
Old 11/13/2011, 22:19   #4049
 
elite*gold: 0
Join Date: Oct 2011
Posts: 69
Received Thanks: 21
Quote:
Originally Posted by Jimmbou View Post
So erstmal Hallo zusammen

Ich hab ein problem mit meinem D2NT bot.
Und zwar wollte ich mehrere CD Keys verwenden um meinen
Bot durchlaufen zu lassen. Daraufhin habe ich mir 2 CD Keys im
Internet gekauft. Habe das alles so eingestellt wie ich das in einer
Anleitung gesehen habe also mit den CDKeychanger mehrere MPQ´s erstellt
und die natürlich in den Diablo2 Ordner gepackt. So mein Problem ist jetzt
dass sobald mein Bot Startet ich eine Meldung beim einloggen bekomme:
"Unable to connect: This application was installed using a lord of destruction
CD key which is not authorized for battle.net use" Ich habe aber die CD Keys
rechtmäßig erworben?! Weiß jemand eine lösung?

Danke schonmal im vorraus
vielleicht hilft dir das:

Pirat104 is offline  
Old 11/13/2011, 23:51   #4050
 
elite*gold: 0
Join Date: Nov 2011
Posts: 6
Received Thanks: 0
need help pls,

es lief alles und jetzt starte ich und er sagt bei jedem boss bzw. mob

NTA_KillMonster() failed

wo stell ich das ein...bzw. ich hab ja nix verändert...
roBOTTA is offline  
Reply


Similar Threads Similar Threads
[Release] D2NT 3.1 1.13c
07/17/2016 - Diablo 2 - 91 Replies
hi, hab eben den d2nt3.1 gefunden. ein neues baba script is dabei. release thread eon D2NT3.1
[Realease] Muddy's Waypoint Catcher
08/21/2013 - Diablo 2 Programming - 46 Replies
Moin zusammen, hier mal die erste Release Version eines kleinen Scripts genannt Waypoint Catcher. Das ganze ist jetzt nichtmal 24h alt, dementsprechend sind vermutlich noch einige Bugs vorhanden. Hinweise dazu nehme ich gerne entgegen. ;) Features: - Suchen sämtlicher Wegpunkte mit Ausnahme, wobei in Akt ein durch Probleme im Jail Bereich nach dem Wegpunkt Outer Cloister abgebrochen wird - Wahlweise auch mit TP an jedem gefundenen Wp, sodass man damit auch anderen (nicht-Bots) die...
[D2NT] Long Dia Release
05/10/2011 - Diablo 2 Programming - 28 Replies
Ein kleines Script für diablo, es startet beim eingang macht ein tp cleart den weg zum star macht am star noch ein tp dann läufts wie das normale nur cleart es schöner :) hoffe euch gefällts ich habs noch nicht wirklich getestet (2-3 runs) bugs können gerne hier gepostet werden verbesserungs vorschläge auch :D installation: 1.)Script in den Bot ordner kopieren 2.)Script im editor oder vergleichbaren öffnen 3.) Msg´s anpassen (ist nicht schwer) 4.) in der char config die zeile...
D2NT 3.0 Pickit release
10/22/2010 - Diablo 2 - 77 Replies
edit
Muddy's D2NT Help
07/29/2010 - Diablo 2 - 3 Replies
hi i just started to use the bot it work's great. how do i set up the skill's i use on my Sorc and pick up itme's? ..... if you reply to this post please use english



All times are GMT +1. The time now is 02:56.


Powered by vBulletin®
Copyright ©2000 - 2025, 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 ©2025 elitepvpers All Rights Reserved.