Das ganz sicher nicht, da müßte man viel zuviele persönliche Einstellungen entfernen + das würde dir eh nicht viel nützen. Nja, ich steh zwar an sich mehr auf "Hilfe zur Selbsthilfe", aber *seufz* hier mal die komplette, bereits editierte, verdächtige Datei. Leg dir eine Kopie der ...\Muddy's D2NT\scripts\libs\Common\NTCommon.ntl an und ersetze dann den Inhalt der orignialen hiermit:
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: 18:00 04.09.2011
*/
Include("libs/common/MWSkills.ntl");
var DEBUG_MASKS = new Array();
DEBUG_MASKS.Common = 0x000100;
DEBUG_MASKS.Itemlogger = 0x000200;
DEBUG_MASKS.Loot = 0x000400;
DEBUG_MASKS.UserCommands = 0x000800;
DEBUG_MASKS.Cubing = 0x001000;
DEBUG_MASKS.ItemParser = 0x002000;
DEBUG_MASKS.Move = 0x004000;
DEBUG_MASKS.Precast = 0x008000;
DEBUG_MASKS.SnagIt = 0x010000;
DEBUG_MASKS.Town = 0x020000;
DEBUG_MASKS.TownManager = 0x040000;
DEBUG_MASKS.TownMove = 0x080000;
DEBUG_MASKS.Attack = 0x100000;
/*
Bit - Function
0x01: File output
0x02: Console output
0x08: Tons of details
0x04: Some details
*/
const MWC_DEBUG_MODE = 0;
var MWC_BuyManaTriggered = false; // Status var to avoid infinite recursion
// Public D2BS constants
// Character Class
const NTC_CHAR_CLASS_AMAZON = 0;
const NTC_CHAR_CLASS_SORCERESS = 1;
const NTC_CHAR_CLASS_NECROMANCER = 2;
const NTC_CHAR_CLASS_PALADIN = 3;
const NTC_CHAR_CLASS_BARBARIAN = 4;
const NTC_CHAR_CLASS_DRUID = 5;
const NTC_CHAR_CLASS_ASSASSIN = 6;
// Act 1 NPCs
const NTC_NPC_ID_AKARA = 148;
const NTC_NPC_ID_WARRIV_ACT_1 = 155;
const NTC_NPC_ID_CHARSI = 154;
const NTC_NPC_ID_GHEED = 147;
const NTC_NPC_ID_KASHYA = 150;
const NTC_NPC_ID_CAIN_TRISTRAM = 146;
const NTC_NPC_ID_CAIN_ACT_1 = 265;
// Act 2 NPCs
const NTC_NPC_ID_FARA = 178;
const NTC_NPC_ID_LYSANDER = 202;
const NTC_NPC_ID_GREIZ = 198;
const NTC_NPC_ID_ELZIX = 199;
const NTC_NPC_ID_MESHIF_ACT_2 = 210;
const NTC_NPC_ID_DROGNAN = 177;
const NTC_NPC_ID_ATMA = 176;
const NTC_NPC_ID_WARRIV_ACT_2 = 175;
const NTC_NPC_ID_CAIN_ACT_2 = 244;
const NTC_NPC_ID_JERHYN = 201;
const NTC_NPC_ID_TYRAEL_ACT_2 = 251;
// Act 3 NPCs
const NTC_NPC_ID_MESHIF_ACT_3 = 264;
const NTC_NPC_ID_CAIN_ACT_3 = 245;
const NTC_NPC_ID_ALKOR = 254;
const NTC_NPC_ID_ASHEARA = 252;
const NTC_NPC_ID_ORMUS = 255;
const NTC_NPC_ID_HRATLI = 253;
// Act 4 NPCs
const NTC_NPC_ID_CAIN_ACT_4 = 246;
const NTC_NPC_ID_HALBU = 257;
const NTC_NPC_ID_TYRAEL_ACT_4 = 367;
const NTC_NPC_ID_JAMELLA = 405;
// Act 5 NPCs
const NTC_NPC_ID_CAIN_ACT_5 = 520;
const NTC_NPC_ID_TYRAEL_ACT_5 = 521;
const NTC_NPC_ID_LARZUK = 511;
const NTC_NPC_ID_ANYA_FROZEN_RIVER = 527;
const NTC_NPC_ID_ANYA_TOWN = 512;
const NTC_NPC_ID_MALAH = 513;
const NTC_NPC_ID_QUALKEHK = 515;
const NTC_NPC_ID_NIHLATHAK_TOWN = 514;
const NTC_NPC_ID_NIHLATHAK_HALLS_OF_VAUGHT = 526;
// UNIT types
const NTC_UNIT_PLAYER = 0;
const NTC_UNIT_NPC = 1;
const NTC_UNIT_MERC = NTC_UNIT_NPC;
const NTC_UNIT_MONSTER = NTC_UNIT_NPC;
const NTC_UNIT_OBJECT = 2;
const NTC_UNIT_MISSILE = 3;
const NTC_UNIT_ITEM = 4;
const NTC_UNIT_TILE = 5;
const NTC_UNIT_STASH = 267;
const NTC_UNIT_CUBE = 549;
const NTC_AREA_ID_ACT_1 = 1;
const NTC_AREA_ID_ACT_2 = 40;
const NTC_AREA_ID_ACT_3 = 75;
const NTC_AREA_ID_ACT_4 = 103;
const NTC_AREA_ID_ACT_5 = 109;
// COLOR types
const NTC_COLOR_BASE_WHITE = 0;
const NTC_COLOR_BASE_RED = 1;
const NTC_COLOR_BASE_GREEN = 2;
const NTC_COLOR_BASE_BLUE = 3;
const NTC_COLOR_BASE_GOLD = 4;
const NTC_COLOR_BASE_GRAY = 5;
const NTC_COLOR_BASE_BLACK = 6;
const NTC_COLOR_BASE_GOLD2 = 7;
const NTC_COLOR_BASE_ORANGE = 8;
const NTC_COLOR_BASE_YELLOW = 9;
const NTC_HAND_RIGHT = 0;
const NTC_HAND_LEFT = 1;
const NTC_CLICK_LDOWN = 0;
const NTC_CLICK_LHOLD = 1;
const NTC_CLICK_LUP = 2;
const NTC_CLICK_RDOWN = 3;
const NTC_CLICK_RHOLD = 4;
const NTC_CLICK_RUP = 5;
const NTC_SHIFT_NONE = 0;
const NTC_SHIFT_HOLD = 1;
const NTC_LOG_COMMON = 0;
const NTC_LOG_ITEM = 1;
const NTC_DELAY_FRAME = 40;
const MWC_PARTY_ID_NONE = 65535;
// The party flags represent the status of the button in party screen
const MWC_PARTY_FLAG_INVITE = 0;
const MWC_PARTY_FLAG_NONE = 1;
const MWC_PARTY_FLAG_ACCEPT = 2;
const MWC_PARTY_FLAG_CANCEL = 4;
const MWC_LOC_INVENTORY = 0;
const MWC_LOC_TRADE_WINDOW = 2;
const MWC_LOC_CUBE = 3;
const MWC_LOC_STASH = 4;
const MWC_LOC_BELT = 5;
// Item locations (item.mode == 1)
const MWC_ITEMLOC_HELM = 1;
const MWC_ITEMLOC_AMULET = 2;
const MWC_ITEMLOC_BODY_ARMOR = 3;
const MWC_ITEMLOC_RIGHT_WEAPON_I = 4;
const MWC_ITEMLOC_LEFT_WEAPON_I = 5;
const MWC_ITEMLOC_RIGHT_RING = 6;
const MWC_ITEMLOC_LEFT_RING = 7;
const MWC_ITEMLOC_BELT = 8;
const MWC_ITEMLOC_BOOTS = 9;
const MWC_ITEMLOC_GLOVES = 10;
const MWC_ITEMLOC_RIGHT_WEAPON_II = 11;
const MWC_ITEMLOC_LEFT_WEAPON_II = 12;
var NTC_ItemQualityToName = new Array(9);
NTC_ItemQualityToName[0] = "None";
NTC_ItemQualityToName[1] = "Low Quality";
NTC_ItemQualityToName[2] = "Normal";
NTC_ItemQualityToName[3] = "Superior";
NTC_ItemQualityToName[4] = "Magic";
NTC_ItemQualityToName[5] = "Set";
NTC_ItemQualityToName[6] = "Rare";
NTC_ItemQualityToName[7] = "Unique";
NTC_ItemQualityToName[8] = "Crafted";
var NTC_ItemQualityToD2Color = new Array(10);
NTC_ItemQualityToD2Color[0] = "ÿc0";
NTC_ItemQualityToD2Color[1] = "ÿc0";
NTC_ItemQualityToD2Color[2] = "ÿc0";
NTC_ItemQualityToD2Color[3] = "ÿc0";
NTC_ItemQualityToD2Color[4] = "ÿc3";
NTC_ItemQualityToD2Color[5] = "ÿc2";
NTC_ItemQualityToD2Color[6] = "ÿc9";
NTC_ItemQualityToD2Color[7] = "ÿc4";
NTC_ItemQualityToD2Color[8] = "ÿc8";
NTC_ItemQualityToD2Color[9] = "ÿc5";
var NTC_ItemQualityToMGRColor = new Array(10);
NTC_ItemQualityToMGRColor[0] = "ÿc6";
NTC_ItemQualityToMGRColor[1] = "ÿc6";
NTC_ItemQualityToMGRColor[2] = "ÿc6";
NTC_ItemQualityToMGRColor[3] = "ÿc6";
NTC_ItemQualityToMGRColor[4] = "ÿc3";
NTC_ItemQualityToMGRColor[5] = "ÿc2";
NTC_ItemQualityToMGRColor[6] = "ÿc9";
NTC_ItemQualityToMGRColor[7] = "ÿc4";
NTC_ItemQualityToMGRColor[8] = "ÿc8";
NTC_ItemQualityToMGRColor[9] = "ÿc5";
// Minion classids
const MWC_MINION_SKELETON = 363;
const MWC_MINION_SKELETAL_MAGE = 364;
const MWC_MINION_CLAY_GOLEM = 289;
const MWC_MINION_BLOOD_GOLEM = 290;
const MWC_MINION_IRON_GOLEM = 291;
const MWC_MINION_FIRE_GOLEM = 292;
const MWC_MINION_WAKE_OF_FIRE = 410;
const MWC_MINION_CHARGED_BOLT_SENTRY = 411;
const MWC_MINION_LIGHTNING_SENTRY = 412;
const MWC_MINION_WAKE_OF_INFERNO = 415;
const MWC_MINION_DEATH_SENTRY = 416;
const MWC_MINION_SHADOW_WARRIOR = 417;
const MWC_MINION_SHADOW_MASTER = 418;
const MWC_MINION_RAVEN = 419;
const MWC_MINION_SPIRIT_WOLF = 420;
const MWC_MINION_DIRE_WOLF = 421;
const MWC_MINION_SPIRIT_OF_BARBS = 422;
const MWC_MINION_HEART_OF_THE_WOLVERINE = 423;
const MWC_MINION_OAK_SAGE = 424;
const MWC_MINION_POISON_CREEPER = 425;
const MWC_MINION_CARRION_VINE = 426;
const MWC_MINION_SOLAR_CREEPER = 427;
const MWC_MINION_GRIZZLY = 428;
const MWC_MINION_ROGUE_SCOUT = 271;
const MWC_MINION_DESERT_MERCENARY = 338;
const MWC_MINION_IRON_WOLF = 359;
const MWC_MINION_BARBARIAN = 561;
function NTC_IncludeConfig(filepath, loadDefault)
{
var _configname, _configfile, _retVal;
if(arguments.length < 2)
loadDefault = true;
_retVal = false;
switch(me.classid)
{
case NTC_CHAR_CLASS_AMAZON:
_configname = "NTConfig_Amazon_" + me.charname + ".ntl";
break;
case NTC_CHAR_CLASS_SORCERESS:
_configname = "NTConfig_Sorceress_" + me.charname + ".ntl";
break;
case NTC_CHAR_CLASS_NECROMANCER:
_configname = "NTConfig_Necromancer_" + me.charname + ".ntl";
break;
case NTC_CHAR_CLASS_PALADIN:
_configname = "NTConfig_Paladin_" + me.charname + ".ntl";
break;
case NTC_CHAR_CLASS_BARBARIAN:
_configname = "NTConfig_Barbarian_" + me.charname + ".ntl";
break;
case NTC_CHAR_CLASS_DRUID:
_configname = "NTConfig_Druid_" + me.charname + ".ntl";
break;
case NTC_CHAR_CLASS_ASSASSIN:
_configname = "NTConfig_Assassin_" + me.charname + ".ntl";
break;
}
_configfile = FileOpen(filepath + "/" + _configname, 0);
if(_configfile)
{
_configfile.Close();
_retVal = true;
}
else if(loadDefault)
{
Print("ÿc3Loaded default config!");
switch(me.classid)
{
case NTC_CHAR_CLASS_AMAZON:
_configname = "NTConfig_Amazon.ntl";
break;
case NTC_CHAR_CLASS_SORCERESS:
_configname = "NTConfig_Sorceress.ntl";
break;
case NTC_CHAR_CLASS_NECROMANCER:
_configname = "NTConfig_Necromancer.ntl";
break;
case NTC_CHAR_CLASS_PALADIN:
_configname = "NTConfig_Paladin.ntl";
break;
case NTC_CHAR_CLASS_BARBARIAN:
_configname = "NTConfig_Barbarian.ntl";
break;
case NTC_CHAR_CLASS_DRUID:
_configname = "NTConfig_Druid.ntl";
break;
case NTC_CHAR_CLASS_ASSASSIN:
_configname = "NTConfig_Assassin.ntl";
break;
}
}
else
return false;
Include(filepath + "/NTConfig.ntl");
Include(filepath + "/" + _configname);
return true;
}
function NTC_IncludeLibs()
{
// Class libraries
Include("libs/Classes/Vector.ntl");
Include("libs/Classes/Point.ntl");
Include("libs/Classes/Belt.ntl");
Include("libs/Classes/Storage.ntl");
// Common libraries
Include("libs/Common/NTAttack.ntl");
Include("libs/Common/NTCubing.ntl");
Include("libs/Common/NTItemParser.ntl");
Include("libs/Common/NTMove.ntl");
Include("libs/Common/NTPrecast.ntl");
Include("libs/Common/NTSnagIt.ntl");
Include("libs/Common/NTTown.ntl");
Include("libs/Common/NTTownManager.ntl");
Include("libs/Common/NTTownMove.ntl");
Include("libs/Common/MWItemlogger.ntl");
Include("libs/Common/MWLoot.ntl");
Include("libs/Common/MWUserCommands.ntl");
}
function NTC_CastSkill(skillid, usehand, x, y)
{
var _hand;
var _shift;
if(arguments.length < 1)
return false;
if(arguments.length == 1)
{
_hand = NTC_CLICK_RDOWN;
_shift = NTC_SHIFT_NONE;
usehand = NTC_HAND_RIGHT;
}
else
{
if(usehand == NTC_HAND_RIGHT)
{
_hand = NTC_CLICK_RDOWN;
_shift = NTC_SHIFT_NONE;
}
else if(usehand == NTC_HAND_LEFT)
{
_hand = NTC_CLICK_LDOWN;
_shift = NTC_SHIFT_NONE;
}
else
{
_hand = NTC_CLICK_LDOWN;
_shift = NTC_SHIFT_HOLD;
usehand = NTC_HAND_LEFT;
}
}
if(NTC_PutSkill(skillid, usehand))
{
var i, n;
var _mode;
if(!NTC_ClearCursor())
return false;
for(i = 0; i < 5; i++)
{
switch(arguments.length)
{
case 1:
case 2:
ClickMap(_hand, _shift, me.x, me.y);
break;
case 3:
if(!ClickMap(_hand, _shift, x))
{
NTC_Delay(NTC_DELAY_FRAME);
return false;
}
break;
default:
ClickMap(_hand, _shift, x, y);
break;
}
for(n = 0; n < 4; n++)
{
NTC_Delay(NTC_DELAY_FRAME);
_mode = me.mode;
if(_mode == 7 || _mode == 8 || (_mode >= 10 && _mode <= 16) || _mode == 18)
{
NTC_Delay(NTC_DELAY_FRAME);
break;
}
}
ClickMap(_hand + 2, NTC_SHIFT_NONE, null);
if(n < 4)
{
for(i = 0; i < 100; i++)
{
NTC_Delay(20);
if(me.mode != _mode)
break;
}
return true;
}
NTC_Delay(NTC_DELAY_FRAME);
}
}
return false;
}
function NTC_PutSkill(skillid, hand)
{
if(me.GetSkill(hand) == skillid)
return true;
if(GetBaseStat("skills.txt", skillid, 182))
return false;
if(NTC_GetSkillLevel(skillid) < 1)
return false;
return me.SetSkill(skillid, hand);
}
function NTC_GetSkillLevel(skillid)
{
var _level = me.GetSkill(skillid, true);
if(_level != null)
return _level;
return 0;
}
function NTC_GetCastDelay(skillid)
{
var _delay = GetBaseStat("skills.txt", skillid, 165);
if(_delay)
return (_delay * NTC_DELAY_FRAME);
return 0;
}
function NTC_SwapWeapons(switchto)
{
if(arguments.length > 0 && me.weaponstab == switchto || me.gametype == 0)
return true;
NTC_Delay(200);
if(!NTC_WaitIdleMode())
return false;
return me.SwapWeapons();
}
function NTC_DoClick(button, shift, x, y)
{
if(arguments.length < 2)
return false;
if(button != NTC_CLICK_LDOWN)
button = NTC_CLICK_RDOWN;
switch(arguments.length)
{
case 2:
ClickMap(button, shift, me.x, me.y);
break;
case 3:
if(!ClickMap(button, shift, x))
return false;
break;
default:
ClickMap(button, shift, x, y);
break;
}
NTC_Delay(200);
ClickMap(button+2, NTC_SHIFT_NONE, null);
return true;
}
function NTC_MyGold()
{
return me.GetStat(14) + me.GetStat(15);
}
function NTC_MyGoldCarry()
{
return me.GetStat(14);
}
function NTC_StashGoldFull()
{
return 2500000 <= me.GetStat(15);
}
function NTC_CharGoldFull()
{
return (me.GetStat(14) >= (me.GetStat(12)*10000));
}
function NTC_CheckOwner(object, ownername)
{
var _owner;
if(!object)
return false;
_owner = object.GetParent();
if(!_owner)
return false;
if(arguments.length < 2)
{
if(_owner == me.name || _owner.name == me.name)
return true;
}
else
{
if(typeof _owner == "string" && _owner.toLowerCase() == ownername.toLowerCase() || typeof _owner.name == "string" && _owner.name.toLowerCase() == ownername.toLowerCase())
return true;
}
return false;
}
function NTC_ItemToCursor(item, isMercItem)
{
if(me.itemoncursor)
return true;
if(arguments.length < 2)
isMercItem = false;
for(var i = 0; i <= 80; i++)
{
NTC_Delay(100);
if((i % 40) == 0)
{
if(!isMercItem)
{
if(typeof item == "number")
me.ClickItem(item);
else
me.ClickItem(0, item);
}
else if(typeof item == "number")
me.ClickMercItem(item);
}
if(me.itemoncursor)
{
NTC_PingDelay(200);
return true;
}
}
return false;
}
function NTC_ClearCursor()
{
if(!me.itemoncursor)
return true;
for(var i = 0; i < 40; i++)
{
if(i % 20 == 0)
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE);
NTC_Delay(100);
if(!me.itemoncursor)
{
if(MWConfig_ResetArmorMode)
MWSI_PickupItem(0x503B);
return true;
}
}
return false;
}
function NTC_GetMerc()
{
var _merc;
_merc = me.GetMerc();
if(_merc)
{
if(_merc.hp > 0 && _merc.mode != 0 && _merc.mode != 12)
return _merc;
}
return null;
}
function NTC_GetSpecialChest()
{
var _chest;
_chest = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3260));
if(_chest)
{
do
{
switch(_chest.classid)
{
case 354:
case 355:
case 356:
case 397:
case 405:
case 406:
case 407:
return _chest;
}
} while(_chest.GetNext());
}
return null;
}
function NTC_OpenChest(chest)
{
if(!chest)
return false;
if(chest.mode > 0)
return false;
for(var i = 1; i <= 10; i++)
{
if(chest.mode > 0)
{
NTC_SendMsgToScript("MWBotGame.ntj", "SET_CHESTOPENEND_1");
return true;
}
if(NTC_WaitIdleMode())
{
if(MWConfig_UseTelekinesisMode >= 2 && i < 5 && NTC_GetSkillLevel(43) > 0)
MWC_CastTelekinesis(chest);
else
{
if(GetDistance(me, chest) >= 2 || i % 5 == 0)
{
if(NTM_MoveTo(chest.areaid, chest.x + Random(-1, 1), chest.y + Random(-1, 1), 2))
NTC_WaitIdleMode();
else
return false;
}
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, chest);
}
}
}
return false;
}
function NTC_Delay(amount, random)
{
if(arguments.length < 2)
Delay(amount);
else
Delay(amount + Random(0, random));
}
function NTC_PingDelay(amount)
{
var _currentping = me.ping;
if(_currentping > 100)
_currentping -= 100;
else
_currentping = 0;
NTC_Delay(amount+_currentping);
}
function NTC_InTown(who)
{
var _areaid;
if(arguments.length < 1)
who = me;
while(who.areaid == 0)
NTC_Delay(NTC_DELAY_FRAME);
_areaid = who.areaid;
return (_areaid == NTC_AREA_ID_ACT_1 || _areaid == NTC_AREA_ID_ACT_2 || _areaid == NTC_AREA_ID_ACT_3 || _areaid == NTC_AREA_ID_ACT_4 || _areaid == NTC_AREA_ID_ACT_5);
}
function NTC_InMyParty(playerName)
{
var _player, _myPartyId;
_player = GetPlayerUnit();
if(arguments.length < 1 || !playerName)
return false;
if(_player)
{
_myPartyId = _player.partyid;
if(_myPartyId != 65535)
{
do
{
if(_myPartyId == _player.partyid && _player.name.toLowerCase() == playerName.toLowerCase())
return true;
} while(_player.GetNext());
}
}
return false;
}
function NTC_FindUnit(unittype, search, retry)
{
var _unit;
switch(arguments.length)
{
case 0:
return null;
case 1:
search = null;
case 2:
retry = 0;
break;
}
for(var i = 0 ; i <= retry ; i++)
{
_unit = GetUnit(unittype, search);
if(_unit)
return _unit;
if(i < retry)
NTC_Delay(200);
}
return null;
}
function NTC_GetBeltSize()
{
var _items = me.GetItems();
if(!_items)
return 1;
for(var i = 0 ; i < _items.length ; i++)
{
if(_items[i].mode == 1 && _items[i].itemloc == 8)
{
if(_items[i].classid == 344 || _items[i].classid == 345)
return 2;
else if(_items[i].classid == 346 || _items[i].classid == 347)
return 3;
return 4;
}
}
return 1;
}
function NTC_FindScript(scriptname)
{
var _script, _scriptpath;
_script = GetScript();
if(_script && scriptname)
{
do
{
_scriptpath = _script.name.toLowerCase();
if(_scriptpath.indexOf(scriptname.toLowerCase()) != -1)
return _script;
} while(_script.GetNext());
}
return null;
}
function MWC_FindCurrentBotScript()
{
var _script;
_script = GetScript();
if(_script)
{
do
{
if(_script.running && _script.name.indexOf("Tools") == -1 && _script.name.indexOf("Bot") == -1)
return _script;
} while(_script.GetNext());
}
return null;
}
function NTC_SendMsgToScript(scriptname, msg)
{
var _script, _errorArgStartIndex, _msg;
// Determine which is the first argument that belongs to the error description
if(typeof msg == "string")
{
_errorArgStartIndex = 2;
_msg = msg;
}
else // If msg is a pointer to a function object
{
_errorArgStartIndex = 1;
_msg = msg.name + "()";
}
MWC_WriteErrorDescription(_errorArgStartIndex, arguments);
_script = NTC_FindScript(scriptname);
if(_script)
return _script.Send(_msg);
return false;
}
function NTC_StopScript(scriptname)
{
var _script = NTC_FindScript(scriptname);
if(_script)
{
if(_script.running)
return _script.Stop();
else
return true;
}
return false;
}
function NTC_WaitIdleMode()
{
var _mode;
for(var i = 0; i < 25; i++)
{
_mode = me.mode;
if((_mode >= 1 && _mode <= 3) || _mode == 5 || _mode == 6)
return true;
NTC_Delay(NTC_DELAY_FRAME);
}
return false;
}
function NTC_SendLogToOOG(type, logString)
{
return SendCopyData("D2NT Manager", null, 9<<16|type, logString);
}
function MWC_GetItemColorInt(itemunit)
{
if(!itemunit)
return 0;
if(NTC_UNIT_CUBE == itemunit.classid || (itemunit.itemflag&0x4000000) || 544 <= itemunit.classid && 555 >= itemunit.classid || 524 == itemunit.classid || 525 == itemunit.classid)
return 7;
else if(itemunit.itemtype == 74 || (itemunit.classid >= 644 && itemunit.classid <= 657))
return 8;
else if(itemunit.quality <= 3 && ((itemunit.itemflag & 0x400000) || itemunit.GetStat(194)))
return 9;
else
return itemunit.quality;
}
function MWC_GetGameNumber(gamename)
{
var myCount, countString;
if(gamename)
return -1;
else
{
countString = lastGameString.slice(lastGameString.lastIndexOf('-')+1);
switch(countString)
{
case "08":
myCount = 9;
break;
case "09":
myCount = 10;
break;
default:
myCount = parseInt(countString) + 1;
break;
}
return myCount;
}
}
function MWC_GetPotionCountInt(type)
{
var _items, _count;
_items = me.GetItems();
if(_items)
{
_count = 0;
for(i = 0 ; i < _items.length ; i++)
{
if(_items[i].mode == 2 && _items[i].code.indexOf(type) != -1)
_count++;
}
return _count;
}
}
function MWC_GetRandomColor()
{
var _colors = ['0', '1', '2', '3', '4', '5', '7', '8', '9', '<', ';', ':'];
var _rndIndex = Random(0, _colors.length - 1);
NTC_Delay(1);
return "ÿc" + _colors[_rndIndex];
}
function MWC_WriteToTextfile(text, filepath, mode, timestamp)
{
var _fhandle, _lines, _time;
if(arguments.length < 4)
timestamp = false;
_fhandle = FileOpen(filepath, mode);
if(_fhandle)
{
if(timestamp)
{
_time = new Date().toLocaleFormat("%H:%M:%S");
_lines = text.split("\n");
for(var i = 0; i < _lines.length; i++)
_fhandle.WriteLine("["+ _time + "] " + text);
}
else
_fhandle.WriteLine(text);
_fhandle.Close();
return true;
}
return false;
}
function MWC_CharClassIdToString(id)
{
switch(id)
{
case NTC_CHAR_CLASS_AMAZON:
return GetLocaleString(4011);
case NTC_CHAR_CLASS_SORCERESS:
return GetLocaleString(4010);
case NTC_CHAR_CLASS_NECROMANCER:
return GetLocaleString(4009);
case NTC_CHAR_CLASS_PALADIN:
return GetLocaleString(4008);
case NTC_CHAR_CLASS_BARBARIAN:
return GetLocaleString(4007);
case NTC_CHAR_CLASS_DRUID:
return GetLocaleString(4012);
case NTC_CHAR_CLASS_ASSASSIN:
return GetLocaleString(4013);
default:
return "Unknown";
}
}
function MWC_PrintDesc(string, color)
{
var _lines, _color;
if(arguments.length > 1)
_color = "ÿc" + color;
else
_color = MWC_GetRandomColor();
_lines = string.split("\n");
for(var i = 0; i < _lines.length; i++)
Print(_color + _lines[i]);
return true;
}
function MWC_CheckForExpShrineUsers()
{
var _player;
_player = NTC_FindUnit(NTC_UNIT_PLAYER);
if(_player)
{
do
{
if(_player.GetState(137) && NTC_InMyParty(_player.name) && _player.areaid == me.areaid)
return true;
} while(_player.GetNext());
}
return false;
}
function MWC_GetMinionName(type)
{
switch(type)
{
case 70:
return "Skeleton";
case 80:
return "Skeletal Mage";
case 95:
return "Revive";
}
return "Minion";
}
function MWC_GetMinionCount(type)
{
var _monsters, _count, _classIds, _quickReturn;
var i;
_quickReturn = false;
_classIds = new Array();
_count = 0;
switch(type)
{
case MWS_RAISE_SKELETON:
_classIds.push(MWC_MINION_SKELETON);
break;
case MWS_RAISE_SKELETAL_MAGE:
_classIds.push(MWC_MINION_SKELETAL_MAGE);
break;
case MWS_SUMMON_GRIZZLY:
_classIds.push(MWC_MINION_GRIZZLY);
_quickReturn = true;
break;
case MWS_VALKYRIE:
return false; // TODO: Check classid
case MWS_RAVEN:
_classIds.push(MWC_MINION_RAVEN);
break;
case MWS_CLAY_GOLEM:
_classIds.push(MWC_MINION_CLAY_GOLEM);
_classIds.push(MWC_MINION_IRON_GOLEM);
_quickReturn = true;
break;
case MWS_BLOOD_GOLEM:
_classIds.push(MWC_MINION_BLOOD_GOLEM);
_classIds.push(MWC_MINION_IRON_GOLEM);
_quickReturn = true;
break;
case MWS_FIRE_GOLEM:
_classIds.push(MWC_MINION_FIRE_GOLEM);
_classIds.push(MWC_MINION_IRON_GOLEM);
_quickReturn = true;
break;
case MWS_SHADOW_WARRIOR:
_classIds.push(MWC_MINION_SHADOW_WARRIOR);
_quickReturn = true;
break;
case MWS_SHADOW_MASTER:
_classIds.push(MWC_MINION_SHADOW_MASTER);
_quickReturn = true;
break;
case MWS_SUMMON_SPIRIT_WOLF:
_classIds.push(MWC_MINION_SPIRIT_WOLF);
break;
case MWS_SUMMON_DIRE_WOLF:
_classIds.push(MWC_MINION_DIRE_WOLF);
break;
case MWS_POISON_CREEPER:
_classIds.push(MWC_MINION_POISON_CREEPER);
_quickReturn = true;
break;
case MWS_CARRION_VINE:
_classIds.push(MWC_MINION_CARRION_VINE);
_quickReturn = true;
break;
case MWS_SOLAR_CREEPER:
_classIds.push(MWC_MINION_SOLAR_CREEPER);
_quickReturn = true;
break;
}
if(_classIds.length == 0 && type != MWS_REVIVE)
return _count;
_monsters = NTC_FindUnit(NTC_UNIT_MONSTER);
if(_monsters)
{
do
{
if(_monsters.hp > 0 && _monsters.mode != 12)
{
if(_classIds.indexOf(_monsters.classid) == -1 && !(type == MWS_REVIVE && _monsters.GetState(96)))
continue;
if(NTC_CheckOwner(_monsters))
{
if(_quickReturn)
return 1;
else
_count++;
}
}
} while(_monsters.GetNext());
}
return _count;
}
function MWC_GetMaxMinionCount(skillId)
{
var _skillLevel;
_skillLevel = NTC_GetSkillLevel(skillId);
switch(skillId)
{
case MWS_REVIVE:
return _skillLevel;
case MWS_RAISE_SKELETON:
case MWS_RAISE_SKELETAL_MAGE:
if(_skillLevel <= 3)
return _skillLevel;
else
return 2 + parseInt(_skillLevel / 3.0);
case MWS_RAVEN:
case MWS_SUMMON_SPIRIT_WOLF:
if(_skillLevel <= 5)
return _skillLevel;
else
return 5;
case MWS_SUMMON_DIRE_WOLF:
if(_skillLevel <= 3)
return _skillLevel;
else
return 3;
}
return 1;
}
function MWC_GetSlotID(type)
{
var _items, _slotVal, _slotIndex;
if(arguments.length < 1 || me.gametype == 0)
return me.weaponstab;
// Array format: index 0: Value; index 1: Non-Class BO; index 2: CTA Slot
//_slotVal = new Array([0, 0, false], [0, 0, false]); // auskommentiert
_slotVal = new Array(); // ab hier neu eingefügt
_slotVal[0] = new Array();
_slotVal[0].IsCTASlot = false;
_slotVal[0].BoLevel = 0;
_slotVal[0].Primary = 0;
_slotVal[1] = new Array();
_slotVal[1].IsCTASlot = false;
_slotVal[1].BoLevel = 0;
_slotVal[1].Primary = 0; // bis hier neu eingefügt
_items = me.GetItems();
if(_items)
{
for(var i = 0; i < _items.length; i++)
{
if(_items[i].mode == 1)
{
if(_items[i].itemloc == 4 || _items[i].itemloc == 5)
_slotIndex = 0;
else if(_items[i].itemloc == 11 || _items[i].itemloc == 12)
_slotIndex = 1;
else
continue;
switch(type)
{
case "precast":
if((_items[i].itemflag & 0x4000000) && _items[i].itemprefix == 0x5027) // Check if the item is a CTA
_slotVal[_slotIndex][2] = true;
_slotVal[_slotIndex][1] += _items[i].GetStat(97,149); // Non Class Battle Orders
_slotVal[_slotIndex][0] += _items[i].GetStat(127); // All Skills
if(me.classid == NTC_CHAR_CLASS_BARBARIAN)
{
_slotVal[_slotIndex][0] += _items[i].GetStat(107,149); // Class Specific Battle Order
_slotVal[_slotIndex][0] += _items[i].GetStat(83,4); // Barbarian Skills
_slotVal[_slotIndex][0] += _items[i].GetStat(188,34); // Warcries Skilltab
}
break;
case "teleport":
_slotVal[_slotIndex][0] += _items[i].GetStat(105); // Faster Cast Rate
_slotVal[_slotIndex][0] += _items[i].GetStat(127) * 5; // All Skills
break;
case "finditem":
_slotVal[_slotIndex][0] += _items[i].GetStat(79) * 0.75; // Extra Gold
_slotVal[_slotIndex][0] += _items[i].GetStat(80); // Magic Find
_slotVal[_slotIndex][0] += _items[i].GetStat(240); // Magic Find per Level
_slotVal[_slotIndex][0] += _items[i].GetStat(105); // Faster Cast Rate
_slotVal[_slotIndex][0] += _items[i].GetStat(127) * 10; // All Skills
_slotVal[_slotIndex][0] += _items[i].GetStat(83,4) * 10; // Barbarian Skills
_slotVal[_slotIndex][0] += _items[i].GetStat(188,34) * 10; // Warcries Skills
break;
case "attack":
_slotVal[_slotIndex][0] += _items[i].GetStat(21) + (_items[i].GetStat(22) - _items[i].GetStat(21)) / 2; // Base Damage 1H
if(_items[i].GetStat(21) <= 0)
_slotVal[_slotIndex][0] += _items[i].GetStat(23) + (_items[i].GetStat(24) - _items[i].GetStat(23)) / 2; // Base Damage 2H
_slotVal[_slotIndex][0] += (_items[i].GetStat(48) + (_items[i].GetStat(49) - _items[i].GetStat(48)) / 2) / 2; // Fire Damage
_slotVal[_slotIndex][0] += (_items[i].GetStat(50) + (_items[i].GetStat(51) - _items[i].GetStat(50)) / 2) / 2; // Light Damage
_slotVal[_slotIndex][0] += (_items[i].GetStat(52) + (_items[i].GetStat(53) - _items[i].GetStat(52)) / 2) / 2; // Magic Damage
_slotVal[_slotIndex][0] += (_items[i].GetStat(54) + (_items[i].GetStat(55) - _items[i].GetStat(54)) / 2) / 5; // Cold Damage
_slotVal[_slotIndex][0] += _items[i].GetStat(58) * _items[i].GetStat(59) / 256; // Poison Damage
_slotVal[_slotIndex][0] += _items[i].GetStat(111); // + Damage
break;
}
}
}
}
for(var i = 0; i < _slotVal.length; i++)
{
if(me.classid == NTC_CHAR_CLASS_BARBARIAN && _slotVal[i][1] > 3)
_slotVal[i][0] += 3;
else
_slotVal[i][0] += _slotVal[i][1];
}
if(_slotVal[0][0] > _slotVal[1][0] && me.classid == NTC_CHAR_CLASS_BARBARIAN || _slotVal[0][2] && !_slotVal[1][2])
return 0;
else if(_slotVal[0][0] < _slotVal[1][0] && me.classid == NTC_CHAR_CLASS_BARBARIAN || !_slotVal[0][2] && _slotVal[1][2])
return 1;
return -1;
}
function MWC_WriteErrorDescription(startIndex, args)
{
var _output, _fhandle, _formalArguments, _arguments, _function, _errorLineIndex;
_function = args[startIndex];
_errorLineIndex = args[startIndex + 1];
if(!_function || !_errorLineIndex)
return false;
// Extract the formal argument list
_formalArguments = _function.toString().split(")")[0];
_formalArguments = _formalArguments.split("(")[1];
_formalArguments = _formalArguments.split(", ");
_arguments = "";
for(var i = 0; i < _formalArguments.length; i++)
{
if(i < args.length - 2 - startIndex)
_arguments += "ÿc0" + _formalArguments[i];
else
_arguments += "ÿ615C5C" + _formalArguments[i];
if(i + 1 < _formalArguments.length)
_arguments += "ÿc0, ";
}
_output = "ÿBE0000An Error occured executing ÿc8" + _function.name + "()ÿBE0000 in ÿc8%script ÿBE0000[ÿ329B52" + _errorLineIndex + "ÿBE0000]";
_output += "\nÿBE0000Function Prototype: ÿc8" + _function.name + "(" + _arguments + "ÿc8)";
_output += "\nÿBE0000Function Call: ÿc8" + _function.name + "(";
_arguments = "";
for(var i = startIndex + 2; i < args.length; i++)
{
if(typeof args[i] == "string")
_arguments += "ÿ767676\"" + args[i] + "\"";
else
{
switch(typeof args[i])
{
case "boolean":
_arguments += "ÿ294AF0" + args[i];
break;
case "number":
_arguments += "ÿBE0000" + args[i];
break;
case "object":
_arguments += "ÿc8[";
switch(args[i].type)
{
case NTC_UNIT_PLAYER:
_arguments += "Player";
break;
case NTC_UNIT_NPC:
_arguments += "NPC";
break;
case NTC_UNIT_OBJECT:
_arguments += "Object";
break;
case NTC_UNIT_MISSILE:
_arguments += "Missile";
break;
case NTC_UNIT_ITEM:
_arguments += "Item";
break;
case NTC_UNIT_TILE:
_arguments += "Tile";
break;
default:
if(args[i].id)
_arguments += "Area";
else
_arguments += "undefined";
break;
}
if(!isNaN(args[i].classid))
_arguments += " Unit " + args[i].classid + "]";
else if(arguments[i].id)
_arguments += " Unit " + args[i].id + "]";
else
_arguments += " Unit]";
break;
}
}
if(i + 1 < args.length)
_arguments += "ÿc0, ";
else
_arguments += "ÿc8)";
}
if(_arguments[_arguments.length -1] != ")")
_arguments += ")";
_output += _arguments;
_fhandle = FileOpen("Data/"+ me.charname + ".errdata", 1);
if(_fhandle)
{
_output = _output.split("\n");
for(var i = 0; i < _output.length; i++)
_fhandle.WriteLine(_output[i]);
_fhandle.Close();
return true;
}
return false;
}
function MWC_InsertDigitSeperator(number, delimeter, blocksize)
{
var _tempString, _outputString, _decFrac, _isNegative;
if(arguments.length < 1)
return "NaN";
if(arguments.length < 2)
delimeter = ",";
if(arguments.length < 3)
blocksize = 3;
// Check the input argument
if(typeof number == "string")
{
if(isNaN(number))
return "NaN";
_tempString = number;
}
else if(typeof number == "number")
_tempString = number.toString();
else
return number;
_decFrac = "";
// If the number is float, seperate the decimal fraction which must not be altered
if(_tempString.indexOf(".") > -1)
{
_decFrac = _tempString.split(".")[1];
_tempString = _tempString.split(".")[0];
}
if(_tempString.indexOf("-") > -1)
{
_isNegative = true;
_tempString = _tempString.replace("-", "");
}
else
_isNegative = false;
_outputString = "";
// Loop while there are blocks left to seperate
// The input string is processed from its end to its beginning
while(_tempString.length > blocksize)
{
_outputString = delimeter + _tempString.substr(_tempString.length - blocksize) + _outputString;
_tempString = _tempString.substring(0, _tempString.length - blocksize);
}
if(_isNegative)
_tempString = "-" + _tempString;
if(_decFrac != "")
_outputString += "." + _decFrac;
return _tempString + _outputString;
}
// This is just a workaround because GetArea() raises an exception when called with invalid arguments
function MWC_FindArea(areaid)
{
if(arguments.length < 1)
areaid = me.areaid;
if(areaid < 1 || areaid > 136)
return null;
return GetArea(areaid);
}
function MWC_SetStatusText(start, end)
{
var _output;
if(arguments.length < 2 || typeof end != "string")
end = "";
if(arguments.length < 1 && typeof start != "string")
start = "ÿc1INVALID STATUSTEXT!";
_output = start + end;
if(_output.length > 39) // Trim the script name in case the output text exceeds the maximum length of 39 characters
_output = _output.replace(start, start.substring(0, start.length - _output.length + 36) + "...");
SetStatusText(_output);
}
// Format: %h, %m, %s will be replaced by the number of hours, minutes and seconds
// If an asterisk is added, the time will not be included in the output string, if its value is 00
// Example: if ticks was 65000 and formatString "%h*:%m:%s" the function would return "01:05"
function MWC_ConvertTicksToTimeString(ticks, formatString)
{
var _timeString, _time, _hours, _minutes, _seconds;
_hours = "";
_minutes = "";
_seconds = "";
if(arguments.length < 2)
formatString = "%h*:%m:%s";
_timeString = formatString;
// Handle hours
_time = parseInt(ticks / 36E5);
if(_time < 10)
_hours += "0";
_hours += _time;
// Handle minutes
_time = parseInt(ticks / 6E4) % 60;
if(_time < 10)
_minutes += "0";
_minutes += _time;
// Handle seconds
_time = parseInt(ticks / 1E3) % 60;
if(_time < 10)
_seconds += "0";
_seconds += _time;
if(_timeString.indexOf("%h") > -1)
{
if(_timeString.indexOf("%h*") == -1 || _hours != "00")
_timeString = _timeString.replace(/%h\*?/gi, _hours);
else
_timeString = _timeString.replace(/%h\*[^%]/gi, "");
}
if(_timeString.indexOf("%m") > -1)
{
if(_timeString.indexOf("%m*") == -1 || _minutes != "00")
_timeString = _timeString.replace(/%m\*?/gi, _minutes);
else
_timeString = _timeString.replace(/%m\*[^%]/gi, "");
}
if(_timeString.indexOf("%s") > -1)
{
if(_timeString.indexOf("%s*") == -1 || _seconds != "00")
_timeString = _timeString.replace(/%s\*?/gi, _seconds);
else
_timeString = _timeString.replace(/%s\*[^%]/gi, "");
}
return _timeString;
}
function MWC_GetItems(location, mode, search)
{
var _locItems, _items;
if(arguments.length < 2)
mode = 0;
_locItems = new Array();
_items = me.GetItems();
if(_items)
{
for(var i = 0; i < _items.length; i++)
{
if(arguments.length < 3 || _items[i].gid == search || _items[i].classid == search || _items[i].code == search)
{
if((location == -1 || _items[i].itemloc == location) && _items[i].mode == mode)
{
if(mode == 1 && location > -1)
return _items[i];
else
_locItems.push(_items[i]);
}
}
}
}
return _locItems;
}
function MWC_CastTelekinesis(target)
{
if(NTC_GetSkillLevel(MWS_TELEKINESIS) < 1)
return false;
if(GetDistance(me, target) > 20 || !CheckCollision(me, target, 4) || !CheckCollision(me, target, 2))
{
if(NTC_InTown())
NTTM_TownMoveXY(target.x, target.y + 2);
else
NTM_MoveTo(target.areaid, target.x + Random(-1, 1), target.y + Random(-1, 1));
}
if(GetDistance(me, target) < 2.5)
return NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, target);
return NTC_CastSkill(MWS_TELEKINESIS, NTC_HAND_RIGHT, target);
}
function MWC_Initialize()
{
NTCU_InitCubing();
NTA_Initialize();
}
function MWC_PrintOverheadStatus(text)
{
if(GetUIState(0x05) || GetUIState(0x09) || GetUIState(0x0C) || GetUIState(0x18) || GetUIState(0x19))
return false;
return Say("! " + text);
}
function MWC_SortArrayDescending(a, b)
{
if(a < b)
return 1;
if(a > b)
return -1;
if(a == b)
return 0;
}
function MWC_ManageParty()
{
var _player, _myPartyId, _existingPartyId;
_player = GetPlayerUnit();
if(_player)
{
_myPartyId = _player.partyid;
while(_player.GetNext())
{
_existingPartyId = MWC_GetExistingParty();
if(_player.partyflag == MWC_PARTY_FLAG_ACCEPT && (_existingPartyId == _player.partyid || _existingPartyId == MWC_PARTY_ID_NONE) || _player.partyflag == MWC_PARTY_FLAG_INVITE && (_existingPartyId == MWC_PARTY_ID_NONE || _existingPartyId == _myPartyId))
{
me.ClickParty(_player, 2);
NTC_Delay(NTC_DELAY_FRAME);
}
}
return true;
}
return false;
}
function MWC_GetExistingParty()
{
var _player;
_player = GetPlayerUnit();
if(_player)
{
while(_player.GetNext())
{
if(_player.partyid != MWC_PARTY_ID_NONE)
return _player.partyid;
}
}
return MWC_PARTY_ID_NONE;
}
function MWC_Debug(string, mode)
{
var _date;
if(arguments.length == 1)
mode = 0x03;
if((mode&0x01) && (MWC_DEBUG_MODE&0x01))
{
_date = new Date();
if(!_date)
return;
MWC_WriteToTextfile("[" + (_date.toLocaleFormat("%a %m/%d/%y %H:%M:%S")) + " - " + me.charname + "]: " + string , me.charname + "_DEBUG.txt", 2)
}
if((mode&0x02) && (MWC_DEBUG_MODE&0x02))
Print("ÿc8[DEBUG]: ÿc0" + string);
}
function MWC_GetColorGemName(name)
{
var _retString;
_retString = name.replace(/Ruby/gi, "ÿc1Ruby");
_retString = _retString.replace(/Emerald/gi, "ÿc2Emerald");
_retString = _retString.replace(/Sapphire/gi, "ÿc3Sapphire");
_retString = _retString.replace(/Amethyst/gi, "ÿc;Amethyst");
_retString = _retString.replace(/Skull/gi, "ÿc5Skull");
_retString = _retString.replace(/Topaz/gi, "ÿc9Topaz");
return _retString;
}
Du hast kürzlich an den Pickits rumgebastelt? Da hat sich nen Schreibfehler eingeschlichen. Vermutlich hast du dort irgendwas mit einer maxquantity-Einstellung vergeigt. Bin mir jetzt nicht ganz sicher ob das -1 zur Fehlermeldung gehört oder ne Angabe des Fehlers ist. Solltest du tatsächtlich in einer maxquantity- Zeile -1 als Anzahl stehen haben: mach das Minus weg. :)
glaube nichts, bei Fehlern die so grob sind daß es den Itemparser aus dem Tritt bringt kommt der glaub nicht zum Zuge. Ich fürchte hier ist manuelles Suchen angesagt.
EDIT: Mist geschrieben. Nip-Checker sollte doch was bringen, siehe hier: