I would like a D2Nt Script Converted to work with NTBot on D2bs.
This script will print out your inventory for use in either posting on D2JSP trades, or just to have a list of your mules.
It will list as so:
Annihilus Small Charm - +1 to All Skills/+17 to all Attributes/All Resistances +19/+9% to Experience Gained
The script is below:
//NTConfig_Script.push("TLInventory.ntj"); //Add this line to your NT Config to run it
NTConfig_TLInventory_Unattended = true;
NTConfig_TLInventory_SkipEquipped = false; // true = just log stash and inventory
NTConfig_TLInventory_Delimeter = "-"; // output file delimiter - see function TTL_WriteIt()
NTConfig_TLInventory_SortOrder = "QUALITY|TYPE|CLASS|NAME";
function NTMain()
{
Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
RegisterEvent(EVENT_KEYDOWN, TLI_KeyEvents);
Print("?c3[Toothless Inventory] - Load");
if(!NTTM_CheckAct()) { NTC_SendMsgToScript("TLInventory.ntj", "NTTM_CheckAct()"); return; }
if (!NTConfig_TLInventory_Unattended)
{
Print ("Press - HOME - to log inventory");
Print ("Press - END - to consolidate into master file");
while (1)
NTC_Delay(200);
}
else
TLI_DoIt();
}
function TLI_DoIt()
{
Print ("Attempting to log inventory ...");
var items = me.GetItems();
items.sort(function(a, b){
var nameA=a.name.toLowerCase(), nameB=b.name.toLowerCase()
if (nameA < nameB) //sort string ascending
return -1
if (nameA > nameB)
return 1
return 0 //default return value (no sorting)
});
var logged = new Array();
if (items)
{
for(var i = 0 ; i < items.length ; i++)
{
item = items[i];
ignore = _NTT_IgnoredItems.join("-");
ignore += "-box";
if(ignore.indexOf(item.code) == -1)
{
if(!NTConfig_TLInventory_SkipEquipped)
logged.push(item);
else if (item.mode == 0)
logged.push(item);
}
}
if (logged.length)
{
var fileName = "logs/" + me.account + "." + me.name + ".txt";
_file = FileOpen(fileName, 1);
if (_file)
{
for (var i = 0; i < logged.length; i++)
TLI_WriteIt(_file, logged[i]);
_file.Close();
Print ("?c2" + logged.length + " items written to - " + fileName + " -");
}
else
Print("?c1Unable to write file to - " + fileName);
}
else
Print("?c1No items on this character to log");
}
else
Print("?c1No items on this character to log");
}
function TLI_WriteIt(pFile, pItem)
{
var delim = " " + NTConfig_TLInventory_Delimeter + " ";
if (pItem.name.substring(pItem.name.length-4,pItem.name.length) == "Rune"){
var s = pItem.name.replace("\n", " ");
}
else {
var s = pItem.name.replace("\n", " ") + delim + TLI_ItemDesc(pItem)
s = s.replace(" /", " ");
s = s.replace(" ", " ");
}
pFile.WriteLine(
s
);
}
function TLI_ItemMode(item)
{
switch (item.mode)
{
case 0: return "Storage";
case 1: return "Equipped";
case 2: return "Belt";
default: return "Other";
}
}
function TLI_ItemDesc(item)
{
var re;
var s = item.itemdesc;
s = s.replace(/?c[0-9]/gi, "");
re = new RegExp(item.name, "gi");
s = s.replace(re, "");
s = s.replace(/(\d% Bonus to Attack Rating)/, "Visionary");
s = s.replace("Visionary (Based on Character Level)", "Visionary");
s = s.replace("Keep in Inventory to Gain Bonus", "");
s = s.replace("Better Chance of Getting Magic Items", "MF");
s = s.replace("Extra Gold from Monsters", "GF");
s = s.replace("Faster Run/Walk", "FRW");
s = s.replace("Enhanced Defense", "ED");
s = s.replace("Reduces all Vendor Prices", "VP");
s = s.replace("Mana stolen her hit", "ML");
s = s.replace("Life stolen per hit", "LL");
s = s.replace(/('\w+')/, "");
s = s.replace(/(Durability:\s+\d+\s+\w{2}\s+\d+)/, "")
s = s.replace(/(Durability:\s+\d{2}\s+\w{2}\s+\d{2})/, "");
s = s.replace(/(Durability:\s+\d\s+\w{2}\s+\d{2})/, "");
s = s.replace("to Mana", "Mana");
s = s.replace("to Strength", "STR");
s = s.replace("to Dexterity", "DEX");
s = s.replace("to Life", "Life");
s = s.replace("to Vitality", "Vita");
s = s.replace("to Energy", "Energy");
s = s.replace("Faster Hit Recovery", "FHR");
s = s.replace("Damage Reduced by", "DR");
s = s.replace("Faster Cast Rate", "FCR");
s = s.replace(/(poison damage over \d seconds)/, "psn sc");
s = s.replace(/(poison damage over \d+ seconds)/, "psn sc");
s = s.replace(/Required Level: \d+/, "");
s = s.replace(/Required Strength: \d+/, "");
s = s.replace(/Required Dexterity: \d+/, "");
s = s.replace("to Enemy Fire Resistance", "Enemy FRes");
s = s.replace("to Enemy Lightning Resistance", "Enemy LRes");
s = s.replace("to Enemy Cold Resistance", "Enemy CRes");
s = s.replace("to Enemy Poison Resistance", "Enemy PRes");
s = s.replace("Fire Resist", "FRes");
s = s.replace("Lightning Resist", "LRes");
s = s.replace("Cold Resist", "CRes");
s = s.replace("Poison Resist", "PRes");
s = s.replace("to Attack Rating", "AR");
s = s.replace(/(\w+\s+\d\s+\w+\s+\w{2}\s+\d{2}\s+\w+\s+)/, "Self-Repair");
s = s.replace(/(\w+\s+\d\s+\w+\s+\w{2}\s+\d+\s+\w+\s+)/, "Self-Repair");
s = s.replace(/(\w+\s+\d\s+\w+\s+\w{2}\s+\d\s+\w+\s+)/, "Self-Repair");
s = s.replace("Ethereal (Cannot be Repaired)", " Eth");
s = s.replace("Can be Inserted into Socketed Items/Weapons:", "");
s = s.replace("", "");
s = s.replace("", "");
re = new RegExp(item.name, "gi");
re = new RegExp("\\n", "gi");
s = s.replace(re, "/");
s = s.replace("////", "/");
s = s.replace("///", "/");
s = s.replace("//", "/");
return s;
}
function TLI_ItemQuality(item)
{
var s = "";
switch (item.quality)
{
case 0:
case 1:
case 2:
case 3: s = "Normal"; break;
case 4: s = "Magic"; break;
case 5: s = "Set"; break;
case 6: s = "Rare"; break;
case 7: s = "Unique"; break;
default:
s = item.quality; break;
}
return s;
//return RE_PadCentre(s, "*", 20, 1);
}
// function TLI_ItemType(item)
// {
// for (key in _NTIPAliasType)
// if (_NTIPAliasType[key] == item.itemtype)
// return key;
// }
function TLI_KeyEvents(keycode)
{
switch(keycode)
{
case 36: // HOME
TLI_DoIt();
break;
case 35: // END
Print("Consolidating and formatting to master file.");
NTC_Delay(2000);
Print("?c1Consolidation failed - cos code ain't here.");
break;
}
}
function RE_2Title(str) {
var re = new RegExp(/^(a|about|after|an|and|at|by|for|from|in|into|nor|of|on|onto|over|the|to|up|with|within)$/);
return str.toLowerCase().replace(/\b([a-z])(\w*)\b/g, cnvrt);
function cnvrt() {
if (re.test(arguments[0]) && arguments[arguments.length-2])
return arguments[0];
else
return arguments[1].toUpperCase() + arguments[2];
}
}