Register for your free account! | Forgot your password?

You last visited: Today at 16:36

  • 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 10/10/2010, 22:22   #301
 
elite*gold: 0
Join Date: Jul 2006
Posts: 469
Received Thanks: 235
Quote:
Originally Posted by JulesWinnfiled View Post
und dann noch ne eine: ist es möglich direkt in den bot scripten zu definieren mit welchem skill das angegebene target bearbeitet wird ohne die ntattack.ntl zu editieren?
Hab das erst grad jetzt gelesen...

Ich nehm an du meinst, dass beispielsweise Eldricht mit Nova gekillt wird, aber Mephi mit Blizzard?

Das könntest du per "Workaround" in die Scriptfiles kriegen, indem du da einfach die Attackconfig aus der Charconfig nochmal rein nimmst, also:

Code:
    //------------------------------------------------------------------------------
    // Attack Configuration
    //------------------------------------------------------------------------------
    NTConfig_AttackSkill[0] = 0;    // First skill. Set to 0 if you won't
    NTConfig_AttackSkill[1] = 59;    // Primary skill to boss.
    NTConfig_AttackSkill[2] = 55;    // Primary untimed skill to boss. Set to 0 if you won't
    NTConfig_AttackSkill[3] = 59;    // Primary skill to others.
    NTConfig_AttackSkill[4] = 55;    // Primary untimed skill to others. Set to 0 if you won't
    NTConfig_AttackSkill[5] = 48;    // Secondary skill in case monster is immune to primary skill. Set to 0 if you won't
    NTConfig_AttackSkill[6] = 48;    // Secondary untimed skill. Set to 0 if you won't
    NTConfig_AttackSkill[7] = 0;    // Alternative untimed skill which is used if the target is immune to your untimed skill - mostly useful for FB/FO/Meteor sorcs or other sorcs that are using the same untimed Skills
    NTConfig_ClearPosition = false;    // Set to true if you want to clear area after killing boss.
(Natürlich nach dem "NT_LoadConfig();")

Und dann kannst du da die Skills für jedes Script neu vertielen. Hoff das hat geholfen.


Btw an alle; Gibt ein XML Log Fix für Muddies. Hier die neue MWItemlogger.ntl

Code:
/**
*    This file was modified by 
*    Check the programming section for updates and further scripts
*    Original Author: agor
*    Last Update: 09/04/2010
*/

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

function MWI_CheckLog() 
{
    var _dateString, _fhandle;
    
    _dateString = new Date().toLocaleFormat("%m-%d-%y");
    _fhandle = FileOpen("logs/" + me.charname + "/" + _dateString + "_itemlog.xml", 2);

    if(_fhandle)
    {
        // Check if file already exists
        if(!_fhandle.ReadLine())
        {
            Print("ÿc<Creating New Log File for "+me.charname+": " +_dateString+"_itemlog.xml");
            // Creation of the new file
            _fhandle.WriteLine("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>"); 
            _fhandle.WriteLine("<?xml-stylesheet href=\"itemlog.xsl\" type=\"text/xsl\"?>");
            _fhandle.WriteLine("<itemlog>");
            _fhandle.WriteLine("</itemlog>");
        }
        _fhandle.Close();
        return true;
    }
    return false;
}

// Writes items to itemlog.xml via E4X
// http://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Processing_XML_with_E4X
// item            = Item Object
// isEthereal    = 1 if Item is Ethereal, 0 if not
// mode        = 0 -> Item Kept
// mode        = 1 -> Item Sold
function MWI_WriteLog(item, isEthereal, mode, logStashed, whereAbouts) 
{
    var _fhandle, _filepath, _date, _content, _loops, _itemlog, _itemdesc, _location;
    var _content2, _content3;
            
    if(arguments.length < 4)
    {
        logStashed = false;
        whereAbouts = "";
    }    
    
    if(!item)
    {
        MWI_ErrorLog(null, 3);
        return false;
    }

    if(!logStashed && !MWI_CheckLog())
        MWI_ErrorLog(item, 2);
    
    // Checks if there is already a (unid) item logged matching the current item object
    if(!logStashed && !(item.itemflag&0x10) && MWI_IsLogged(item))
    {
        MWI_ErrorLog(item, 0);
        return false;
    }
    
    _date = new Date();
    _content = "";
    _loops = 0;
        
    if(logStashed)
    {
        _filepath = "logs/stashlogs/" + me.charname + "_StashedItems.xml";
        
        _fhandle = FileOpen(_filepath, 2);
        
        if(_fhandle)
        {
            while(!_fhandle.eof)
            {
                if(++_loops > 2) // Skips XML header lines because they cause errors when creating the E4X object
                    _content += _fhandle.ReadLine();
                else
                    _fhandle.ReadLine();
            }
            _fhandle.Close();
            
        }
        else
        {
            MWI_ErrorLog(item, 1);
            return false;
        }
        // Creation of the E4X Object
        _itemlog = new XML(_content);
    }
    else
        _filepath = "logs/"+ me.charname + "/Temp_itemlog";

    if(item.itemdesc)
    {
        // Replaces all colors
        _itemdesc = item.itemdesc.replace(/ÿc(.)/g, "");
        // Replaces new lines with spaces
        _itemdesc = _itemdesc.replace(/\n/g, '|');
        // Skips the first part of the description
        _itemdesc = _itemdesc.replace((_itemdesc.split("|")[0] + "|"), "");
    }
    else
        _itemdesc = "undefined";
        
    //Add the last location that was saved
    if(logStashed)
        _location = whereAbouts;
    else
        _location = MWI_ReadLoc(item);    
    
    if(logStashed)
    {
        // Creation of the file output, headers first and then the itemlog content
        _itemlog.item += <item id={_date.getTime()} char={me.charname} time={_date.toLocaleFormat("%a %m/%d/%y %H:%M:%S")} quality={item.quality} ethereal={isEthereal} mode={mode} name={(item.name)?item.name.split("\n")[0]:"undefined"} ilvl={item.itemlevel} location={_location} type={item.classid} typedesc={MWI_NameItem(item.classid)}>{_itemdesc}</item>;
        _content = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
        _content += "<?xml-stylesheet href=\"stashlog.xsl\" type=\"text/xsl\"?>\n";
        _content += _itemlog.toXMLString();
    }
    else
    {
        _content = "<item id=\"" + _date.getTime() + "\" char=\"" + me.charname + "\" time=\"" + _date.toLocaleFormat("%a %m/%d/%y %H:%M:%S") + "\" quality=\"" +
                    item.quality + "\" ethereal=\"" + isEthereal + "\" mode=\"" + mode + "\" name=\"" + ((item.name) ? item.name.split("\n")[0] : "undefined") + "\" ilvl=\"" +
                    item.itemlevel + "\" location=\"" + _location + "\" type=\"" + item.classid + "\" typedesc=\"" + MWI_NameItem(item.classid) + "\">";
        _content2 = _itemdesc;
        _content3 = "</item>";
    }
    if(logStashed)
        _fhandle = FileOpen(_filepath, 1);
    else
        _fhandle = FileOpen(_filepath, 2);
    
    if(!_fhandle)
    {
        MWI_ErrorLog(item, 1);
        return false;
    }
    
    _fhandle.WriteLine(_content);
    if (!logStashed)
    {
        _fhandle.WriteLine(_content2);
        _fhandle.WriteLine(_content3);
    }
    _fhandle.Close();
    
    return true;
}    

function MWI_WriteTempLogToXML()
{
    var _buffer, _itemData, _XMLData, _tempDate, _timeStamp, _fhandle, _count, _countXML, _filecontent, _lines, _ticks;
    var _buffer2, _buffer3;
    var i, k;
    var lastIncomplete = false;
    
    _itemData = new Array();
    _count = 0;
    _countXML = 0;
    _buffer = "";
    _filecontent = "";
    
    NTC_SendMsgToScript("MWBotGame.ntj", "STOP_STATUS_TEXT_UPDATE");
    SetStatusText("ÿc8Updating Your XML Log...");
    _ticks = GetTickCount();
    
    _fhandle = FileOpen("logs/"+ me.charname + "/Temp_itemlog", 2);
        
    if(_fhandle)
    {
        //Print("Debug: Reading Temp File...")
        while(!_fhandle.eof)
        {
            if (!_fhandle.eof)
                _buffer = _fhandle.ReadLine();
            if (!_fhandle.eof)
                _buffer2 = _fhandle.ReadLine();
            if (!_fhandle.eof)
                _buffer3 = _fhandle.ReadLine();
            
            //Print("Debug: Skip to next Item")
            while(!(_buffer.indexOf("<item id=") > -1 && !isNaN(_timeStamp = parseInt(_buffer.split(/"/g)[1]))) && !_fhandle.eof)
            {
                // Get first opening Tag
                _buffer = _buffer2;
                _buffer2 = _buffer3;
                _buffer3 = _fhandle.ReadLine();
            }
            
            //Print("Debug: Check if all 3 lines are correct")
            // Check if other Tags match
            if (_buffer.indexOf("<item id=") > -1 && _buffer2.indexOf("<") == -1 && _buffer2.indexOf(">") == -1 && _buffer3.indexOf("</item>") >= -1)
            {
                //Print("Debug: They are!")
                // all is correct --> write lines
                _tempDate = new Date(_timeStamp);
                
                //Print("Debug: Put Item in Struct...")
                if(_tempDate)
                {
                    for(i = 0; i < _itemData.length; i++)
                    {
                        if(_itemData[i][0] == _tempDate.toLocaleFormat("%m-%d-%y"))
                        {
                            _itemData[i].push(_buffer);
                            _itemData[i].push(_buffer2);
                            _itemData[i].push(_buffer3);
                            break;
                        }
                    }
                    if(i >= _itemData.length)
                    {
                        _itemData.push([_tempDate.toLocaleFormat("%m-%d-%y"), _buffer, _buffer2, _buffer3]);
                    }
                }
            }else{
                //Print("Debug Line1: " + _buffer);
                //Print("Debug Line2: " + _buffer2);
                //Print("Debug Line3: " + _buffer3);
            }
        }    
        _fhandle.Close();
            
        if(_itemData.length < 1)
            return false;
        
        for(i = 0; i < _itemData.length; i++)
        {
            _fhandle = FileOpen("logs/" + me.charname + "/" + _itemData[i][0] + "_itemlog.xml", 2);
                        
            //Print("Debug: Reading Log File...")
            if(_fhandle)
            {
                _XMLData = new Array();
                
                while(!_fhandle.eof)
                {
                    if (!_fhandle.eof)
                        _buffer = _fhandle.ReadLine();
                    if (!_fhandle.eof)
                        _buffer2 = _fhandle.ReadLine();
                    if (!_fhandle.eof)
                        _buffer3 = _fhandle.ReadLine();
                        
                    //Print("Debug: Skipping to next Item in Log...")
                    while(!(_buffer.indexOf("<item id=") > -1) && !_fhandle.eof)
                    {
                        // Get first opening Tag
                        _buffer = _buffer2;
                        _buffer2 = _buffer3;
                        _buffer3 = _fhandle.ReadLine();
                    }
                    
                    //Print("Debug: If this is a correct Item put it into Struct...")
                    if (_buffer.indexOf("<item id=") > -1 && _buffer2.indexOf("<") == -1 && _buffer2.indexOf(">") == -1 && _buffer3.indexOf("</item>") >= -1)
                    {
                        //Print("Correct Item read from Log");
                        _XMLData.push(_buffer);
                        _XMLData.push(_buffer2);
                        _XMLData.push(_buffer3);
                    }
                    //Print("Debug Line1: " + _buffer);
                    //Print("Debug Line2: " + _buffer2);
                    //Print("Debug Line3: " + _buffer3);
                }
                _fhandle.Close();
            }
            
            _fhandle = FileOpen("logs/" + me.charname + "/" + _itemData[i][0] + "_itemlog.xml", 1);
            
            //Print("Debug: Writing Log File...")
            if(_fhandle)
            {
                _fhandle.WriteLine("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>"); 
                _fhandle.WriteLine("<?xml-stylesheet href=\"itemlog.xsl\" type=\"text/xsl\"?>");
                _fhandle.WriteLine("<itemlog>");
                for(k = 0; k < _XMLData.length; k++)
                {
                    if (k % 3 == 0)
                        _countXML++;
                    _fhandle.WriteLine(_XMLData[k]);
                }
                
                for(k = 1; k < _itemData[i].length; k++)
                {
                    if (k % 3 == 0)
                        _count++;
                    _fhandle.WriteLine("  " + _itemData[i][k]);
                }
            
                _fhandle.WriteLine("</itemlog>");
                _fhandle.Close();
            }
            
        }
        
        Print("ÿc<ÿc8" + _count + " ÿc<Item" + ((_count > 1) ? "s were" : " was") + " successfully added to your XML Logfile. (" + (GetTickCount() - _ticks) + "ms) [Total XML Items: " + (_count + _countXML) + "]" );
        NTC_SendMsgToScript("MWBotGame.ntj", "SET_DEFAULT_STATUS");
                
        return _count > 0;
    }
    
    return false;
}

function MWI_ClearTempLog()
{
    var _fhandle, _date;
    
    _fhandle = _fhandle = FileOpen("logs/" + me.charname + "/Temp_itemlog", 1);
    _date = new Date();
    
    if(_fhandle && _date)
    {
        _fhandle.WriteLine("//* The Item Data below will be added to the matching XML file at the beginning of every game - Temp Logfile Created: " + _date.toLocaleFormat("%a %m/%d/%y %H:%M:%S") + " */");
        _fhandle.Close();
        return true;
    }
    else if(_fhandle)
        _fhandle.Close();
        
    return false;
}

function MWI_WriteLoc(itemunit)
{
    var _fhandle, _area;
        
    if(arguments.length < 1 || !itemunit)
        return;
        
    _fhandle = FileOpen("logs/loc/" + me.charname + "_loc.txt", 2);
    
    _area = GetArea();
    
    if(_fhandle)
    {
        if(_area)
            _fhandle.WriteLine(itemunit.gid + "<>" + _area.name);
        else
            _fhandle.WriteLine(itemunit.gid + "<>" + "undefined");
        _fhandle.Close();
        
    }
    
    _fhandle = FileOpen("logs/loc/" + me.charname + "_simpleloc.txt", 1);
        
    if(_fhandle)
    {
        if(_area)
            _fhandle.WriteLine(_area.name);
        else
            _fhandle.WriteLine("undefined");
        _fhandle.Close();
    }
}

function MWI_ReadLoc(itemunit)
{
    var _fhandle, _line, _loc;
    
    if(arguments.length < 1 || !itemunit)
        return "undefined";
        
    _fhandle = FileOpen("logs/loc/" + me.charname + "_loc.txt", 2);
    
    if(_fhandle)
    {
        while(!_fhandle.eof)
        {
            _line = _fhandle.ReadLine();
            if(_line && parseInt(_line.split("<>")[0]) == itemunit.gid)
            {
                _fhandle.Close();
                _loc = _line.split("<>")[1];
                return _loc;
            }
        }
        _fhandle.Close();
        
        
        _fhandle = FileOpen("logs/loc/" + me.charname + "_simpleloc.txt", 2);
        
        if(_fhandle)
        {
            _loc = _fhandle.ReadLine();
            _fhandle.Close();
            if(_loc)
                return _loc;
            else
                return "undefined";    
        }
    }
    
    return "undefined";
}

function MWI_ClearLoc()
{
    var _fhandle;
    
    _fhandle = FileOpen("logs/loc/" + me.charname + "_loc.txt", 1);
    
    if(_fhandle)
    {
        _fhandle.WriteLine("gid<>location");
        _fhandle.Close();
    }

}

function MWI_NameItem(itemid)
{
    if(itemid >= 610 && itemid <= 642)
        return "Rune";
    if((itemid >= 509 && itemid <= 516) || (itemid >= 587 && itemid <= 596))
        return "Potion";
    if(itemid >= 518 && itemid <= 519)
        return "Tome";
    if(itemid >= 529 && itemid <= 530)
        return "Scroll";    
    if((itemid >= 557 && itemid <= 586) || (itemid >= 597 && itemid <= 601))
        return "Gem";
    if((itemid >= 644 && itemid <= 657) || (itemid >= 544 && itemid <= 555))
        return "Quest Item";
    if(itemid == 653)
        return "Token";
    if(itemid >= 654 && itemid <= 657)
        return "Essence";
    if(!_NTIPIDToName[itemid])
        return "Database Error";
    else
        return _NTIPIDToName[itemid];
}

function MWI_IsLogged(item)
{
    var _checkTime, _itemdesc, _date, _fhandle, _templine, _XMLData, _dataSet;
    
    _itemdesc = "";
    _date = new Date();
    _XMLData = new Array();
        
    switch(item.quality)
    {
        // _checkTime in minutes!
        case 1: // Low quality
                _checkTime = 15;
                break;                
        case 2: // Normal
                switch(MWI_NameItem(item.classid))
                {
                    case "Rune":
                        return false;
                        break;
                    case "Gem":
                        return false;
                        break;
                    case "Quest Item:":
                        return false;
                        break;
                    default:
                        _checkTime = 20;        
                }
                break;
        case 3: // Superior
                _checkTime = 30;
                break;
        case 4: // Magic
                _checkTime = 30;
                break;
        case 5: // Set
                _checkTime = 30;
                break;
        case 6: // Rare
                _checkTime = 60;
                break;
        case 7: // Unique
                _checkTime = 90;
                break;
        case 8: // Crafted
                _checkTime = 90;
                break;
        default:
                _checkTime = 20;
                break;
    }
        
    if(item.itemdesc)
    {
        _itemdesc = item.itemdesc.replace(/ÿc(.)/g, "");
        _itemdesc = _itemdesc.replace(/\n/g, '|');
        _itemdesc = _itemdesc.replace((_itemdesc.split("|")[0] + "|"), "");
    }
    else
        _itemdesc = "Itemdesc undefined|";
        
    _fhandle = FileOpen("logs/" + me.charname + "/" + _date.toLocaleFormat("%m-%d-%y") + "_itemlog.xml", 2);
    
    if(_fhandle)
    {
        while(!_fhandle.eof)
        {
            if(((_templine = _fhandle.ReadLine()) != "</itemlog>"))
                _XMLData.push(_templine);
        }
        _fhandle.Close();
        
        
        _XMLData.pop();
        
        _fhandle = FileOpen("logs/" + me.charname + "/Temp_itemlog", 2);
        
        if(_fhandle)
        {
            while(!_fhandle.eof)
            {
                _templine = _fhandle.ReadLine();
                if(_templine.indexOf("//*") == -1)
                {
                    if(!_templine)
                        break;
                    
                    _XMLData.push(_templine);
                }
            }
            _fhandle.Close();
        }
    }
    else
        return false;
        
    for(var i = _XMLData.length-1; i > 0; i--)
    {
        _dataSet = _XMLData[i].split(/"/g);
        
        if((_date.getTime() - parseInt(_dataSet[1])) < _checkTime*6E4)
        {
            if(parseInt(_dataSet[19]) == item.classid) // Check itemtype
            {
                if(parseInt(_dataSet[7]) == item.quality) // Check quality
                {
                    if(parseInt(_dataSet[15]) == item.itemlevel) // Check itemlevel
                    {
                        if(_dataSet[13] == item.name.split("\n")[0]) // Check itemname
                        {
                            if(_XMLData[i].split(/">/g)[1].replace("</item>", "") == _itemdesc) // Check itemdesc
                                return true;
                            else
                                continue;
                        }
                        else
                            continue;        
                    }
                    else
                        continue;
                }
                else
                    continue;
            }
            else
                continue;
        }
        else
            break;
    }
    
    return false;
}

// 0 = item already logged
// 1 = filhandle error
// 2 = error creating logfile
// 3 = itemunit undefined
function MWI_ErrorLog(item, errorcode)
{
    var _dateString, _errorOutput, _fhandle;
    
    _dateString = new Date().toLocaleFormat("%a %m/%d/%y %H:%M:%S");
    _errorOutput = "[" + _dateString + " <" + me.charname + "> ] ";
    
    switch(errorcode)
    {    
        case 0:
            Print("ÿc8Itemlog Info: Item is already in log!");
            _errorOutput += "Item Error: Item appears to be already logged (" + item.name.replace("\n", "") + ", " + MWI_NameItem(item.classid) + "[" + item.quality + "])";
            break;
        case 1:
            Print("ÿc1Itemlog Error: Filehandle is null!");
            _errorOutput += "File Error: Filehandle is null (Unable to log "+ item.name.replace("\n", "") + ", " + MWI_NameItem(item.classid) + "[" + item.quality + "])";
            break;
        case 2:
            Print("ÿc1Itemlog Error: Logfile could not be created!");
            _errorOutput += "File Error: Logfile could not be created (Unable to log "+ item.name.replace("\n", "") + ", " + MWI_NameItem(item.classid) + "[" + item.quality + "])";
            break;
        case 3:
            Print("ÿc1Itemlog Error: Itemunit is undefined!");
            _errorOutput += "File Error: Itemunit is undefined!";
            break;    
        default:
            _errorOutput += "Unknown Error";
            break;
    }
    
    _fhandle = FileOpen("logs/ErrorLog.txt", 2);
    
    if(_fhandle)
    {
        _fhandle.WriteLine(_errorOutput);
        _fhandle.Close();
    }
}

function MWI_GetGoldLogDate()
{
    var _fhandle, _date, _templine;
    _fhandle = FileOpen("gamble/" + me.charname + "_GambleInfo.txt", 2);
    if(_fhandle)
    {
        _templine = _fhandle.ReadLine();
        if(_templine)
        {
            for(var i = 0; i < 3; i++)
                _templine = _fhandle.ReadLine();
            if(_templine)
                _date = _templine.split(": ")[1];
            
        }
        _fhandle.Close();
        return _date;
    }
    else
        return "Unknown";
}

function MWI_GetGoldLogSessions()
{
    var _fhandle, _sessions, _templine;
    _fhandle = FileOpen("gamble/" + me.charname + "_GambleInfo.txt", 2);
    if(_fhandle)
    {
        _templine = _fhandle.ReadLine();
        if(_templine)
        {
            for(var i = 0; i < 2; i++)
                _templine = _fhandle.ReadLine();
            if(_templine)
                _sessions = parseInt(_templine.split(": ")[1]);
            
            _fhandle.Close();
            return _sessions;
        }
        
        _fhandle.Close();
        return -1;
    }
    else
        return -1;
}

function MWI_LogGold(spentGold, count)
{
    if(arguments.length < 2)
        count = false;
    
    var _fhandle, _fileTimeStamp, _currentTimeStamp, _total, _date, _gambleCount, _templine;
    
    _currentTimeStamp = new Date().getTime();
    _date = new Date().toLocaleFormat("%a %m/%d/%y %H:%M:%S");
    _total = 0;
    _gambleCount = 0;
    
    _fhandle = FileOpen("gamble/" + me.charname + "_GambleInfo.txt", 2);
    if(_fhandle)
    {
        _templine = _fhandle.ReadLine();
        if(_templine)
        {
            _fileTimeStamp = parseInt(_templine.split(": ")[1]);
            if(true || _currentTimeStamp - _fileTimeStamp <= 3*60*60*1E3)
            {
                _templine = _fhandle.ReadLine();
                if(_templine)
                    _total = parseInt(_templine.split(": ")[1]);
                _templine = _fhandle.ReadLine();
                if(_templine)
                    _gambleCount = parseInt(_templine.split(": ")[1]);
                _templine = _fhandle.ReadLine();
                if(_templine)
                    _date = _templine.split(": ")[1];
            }
        }
        _fhandle.Close();
        
        
        _total += spentGold;
        
        _fhandle = FileOpen("gamble/" + me.charname + "_GambleInfo.txt", 1);
        if(_fhandle)
        {
            _fhandle.WriteLine("Timestamp: " + _currentTimeStamp );
            _fhandle.WriteLine("Gold: " + _total);
            _fhandle.WriteLine("Gamble Counter: " + ((count) ? ++_gambleCount : _gambleCount));
            _fhandle.WriteLine("File created: " + _date);
            _fhandle.Close();
        }
    }
    else
        return -1;
    return _total;
}

function MWI_LogStashedItems(LogToTxt)
{
    var _isEthereal, _whereabouts, _content, _items, _fhandle, _date, _logToTxt, _dataSet, _fileContent, _hasCube, _room;
    var j;
    
    _items = me.GetItems();
    
    if(!_items)
        return false;
        
    if(arguments.length < 1)
        _logToTxt = MWConfig_LogStashToTxt;
    else
        _logToTxt = LogToTxt;
    
    if(!_logToTxt)
    {
        _fhandle = FileOpen("logs/stashlogs/" + me.charname + "_StashedItems.xml", 1);
        
        if(_fhandle)
        {
            _fhandle.WriteLine("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>"); 
            _fhandle.WriteLine("<?xml-stylesheet href=\"stashlog.xsl\" type=\"text/xsl\"?>");
            _fhandle.WriteLine("<itemlog>");
            _fhandle.WriteLine("</itemlog>");
            _fhandle.Close();
            
            for(var i = 0 ; i < _items.length; i++)
            {
                if(!_items[i].itemloc && _items[i].mode == 2)
                    continue;
                
                _isEthereal = (_items[i].itemflag & 0x400000) ? 1 : 0;
                _whereabouts = MWI_ItemLocationToName(_items[i]);
                
                if(!MWI_WriteLog(_items[i], _isEthereal, 0, true, _whereabouts))
                    return false;
            }
            return true;
        }
        return false;
    }
    else
    {
        _content = new Array();
        
        _hasCube = false;
        _room = 88;    // Inventory + Stash size without cube    
        
        for(var i = 0 ; i < _items.length ; i++)
        {
            _whereabouts = MWI_ItemLocationToName(_items[i]);
            
            if(!_items[i].itemloc && _items[i].mode == 2)
                continue;
                
            if(_items[i].itemdesc)
            {
                _dataSet = new ItemData(_whereabouts, MWI_NameItem(_items[i].classid), MWI_QualityToName(_items[i].quality), _items[i].itemlevel, _items[i].itemdesc.replace(/ÿc(.)/g, ""),_items[i].xsize*_items[i].ysize, _items[i].classid);
                // Ignoring the size of equipped items
                if(_dataSet.location == "Inventory" || _dataSet.location == "Stash" || _dataSet.location == "Cube") 
                    _room -= _dataSet.size;
                
                if(_dataSet.classid == 549)
                {
                    _hasCube = true;
                    _room += 12;
                }
                            
                for(j = 0; j < _content.length; j++)
                {
                    if(_content[j].typename == _dataSet.typename && 
                       _content[j].qualityname == _dataSet.qualityname &&
                       _content[j].getGeneralDesc() == _dataSet.getGeneralDesc() &&
                       _content[j].classid == _dataSet.classid &&
                       _content[j].size == _dataSet.size)
                      break;
                }
                if(j < _content.length)
                    _content[j].amount++;
                else
                    _content.push(_dataSet);
            }
        }
        
        _fileContent = "";
        for(var i = 0; i < _content.length; i++)
        {
            _fileContent += "Location: " + me.charname + ((_content[i].amount == 1)?" (" + _content[i].location + ")":"") + "\n";
            _fileContent += "Type: " + _content[i].typename + "\n";
            _fileContent += "Quality: " + _content[i].qualityname + "\n";
            if(_content[i].amount == 1)
                _fileContent += "Item Level: " + _content[i].level + "\n";
            _fileContent += "Amount carried: " + _content[i].amount + "\n\n";
            _fileContent += _content[i].desc;
            _fileContent += "\n----------------------------------------\n";
        }
        if(!_fileContent)
            _fileContent = "Empty! :(";
        
        _date = new Date().toLocaleFormat("%a %m/%d/%y %H:%M:%S");
        _fileContent = "----------------------------------------\n" + "----------------------------------------\n" + 
                        me.charname + "'s Stashlog (Level " + me.GetStat(12) + " " + MWC_CharClassIdToString(me.classid) + ")\nFile created: " + _date + "\nItems carried: " + _items.length + "\nGold carried: " + NTC_MyGold() + "\nFree room: " + _room +" of " +((_hasCube)?"96":"88")+ "\n" +
                       "----------------------------------------\n" + "----------------------------------------\n"
                       + _fileContent;
        _fhandle = FileOpen("logs/stashlogs/" + me.charname + "_StashedItems.txt", 1);
        if(_fhandle)
        {
            _fhandle.WriteLine(_fileContent);
            _fhandle.Close();
        }
        else
            return false;
    
        return true;
    }
}

function MWI_ShowItemInfo()
{
    var _items, _itemsInCube, _nipRes, _cubingRes;
    
    _itemsInCube = false;
    
    _items = me.GetItems();
    
    if(_items)
    {
        NTCU_InitCubing();
        
        for(var i = 0; i < _items.length; i++)
        {
            if(_items[i].itemloc == 3 && _items[i].mode == 0)
            {
                _nipRes = NTIPCheckItem(_items[i], 0, true);
                _cubingRes = NTCU_CheckItem(_items[i], _nipRes);
                
                Print("ÿc0Item Level of " + NTC_ItemQualityToD2Color[MWC_GetItemColorInt(_items[i])] + _items[i].name.split("\n")[0] + "ÿc0:ÿc8 " + _items[i].itemlevel + " ÿc0 <> NIPCheckID:ÿc8 " + _nipRes + " (" + _cubingRes + ")");
                _itemsInCube = true;
            }
        }
    }
    
    if(!_itemsInCube)
        Print("Make sure the item you want to gather information about is placed in your cube ;)");
}

function MWI_ItemLocationToName(itemunit)
{
    if(arguments.length < 1 || !itemunit)
        return "Unknown";
    
    if(!itemunit.itemloc && itemunit.mode == 2)
        return "Belt";

    switch(itemunit.itemloc)
    {
        case 0:
            return "Inventory";
            break;
        case 1:
            return "Head";
            break;
        case 2:
            return "Amulet";
            break;
        case 3:
            if(itemunit.mode == 1)
                return "Torso";
            else
                return "Cube";
            break;
        case 4:
            if(itemunit.mode == 1)
                return "Right Hand I";
            else
                return "Stash";
            break;
        case 5:
            return "Left hand I";
            break;
        case 6:
            return "Right Ring";
            break;
        case 7:
            return "Left Ring";
            break;
        case 8:
            return "Belt";
            break;
        case 9:
            return "Feet";
            break;
        case 10:
            return "Gloves";
            break;
        case 11:
            return "Right Hand II";
            break;
        case 12:
            return "Left hand II";
            break;
        default:
            return "Unknown";
            break;
    }

}

function MWI_QualityToName(quality)
{
    switch(quality)
    {
        case 1:
            return "Damaged";
            break;
        case 2:
            return "Normal";
            break;
        case 3:
            return "Superior";
            break;
        case 4:
            return "Magic";
            break;
        case 5:
            return "Set";
            break;    
        case 6:
            return "Rare";
            break;    
        case 7:
            return "Unique";
            break;
        case 8:
            return "Crafted";
            break;
        default:
            return "Unknown";
    }
}

// Itemdata Class
function ItemData(loc, typename, quality, ilvl, desc, size, classid)
{
    this.location = loc;
    this.typename = typename;
    this.qualityname = quality;
    this.level = ilvl;
    this.desc = desc;
    this.size = size;
    this.classid = classid;
    this.amount = 1;
        
    this.getGeneralDesc = function()
    {
        return this.desc.replace(/Durability:\s.+\sof\s.+\s/i, "");
    }
}
Ist nicht von Muddy approved, aber ausführlich getestet
ldevil is offline  
Thanks
1 User
Old 10/10/2010, 23:22   #302
 
elite*gold: 0
Join Date: Dec 2008
Posts: 304
Received Thanks: 1,128


Ich hab mir den Bot auch mal gezogen, denn ich war neugierig auf das Automuling.
Jetzt hab ich den Bot wie gewohnt eingestellt und eigentlich läuft der Bot...
Bis er nen Gegenstand findet und das Game crashd.
Dann wird das Spiel neu gestartet, der Bot joint das Game, es vergehen zwei Sekunden und die oben gezeigte Fehlermeldung ergibt sich.

Ich habe den Bot nach jeglichen Anleitungen eingestellt und auch schon ausprobiert, ob es an einem Pickit-Fehler liegt, jedoch bekomme ich den Fehler sebst dann, wenn ich keine Pickit eingestellt habe.

Mir ist dieser Fehler komplett unbekannt gewesen und ich kann ihn so nicht zuordnen.

Könnt ihr mir helfen? ^^

Gruß Blue


EDIT:

Okay, das Spiel auf Englisch zu starten, wäre echt nicht schlecht gewesen
Wieder was gelernt!
Danke AmonRa!
TheBluebird is offline  
Old 10/10/2010, 23:57   #303
 
elite*gold: 0
Join Date: Jun 2008
Posts: 209
Received Thanks: 30
Wie wäre es Dia auf Englisch zu Starten
AmonRa is offline  
Thanks
2 Users
Old 10/11/2010, 14:05   #304
 
elite*gold: 0
Join Date: Aug 2010
Posts: 91
Received Thanks: 4
falls das hier irgendwann weiter geht, was ich sehr hoffe (muddy, verlass uns nicht! ) dann hätte ich einen bug inkl. fix, ist eher ein kleiner tipp(denk)fehler.
Code:
_NTIPAliasClassID["ceh"]=655;  _NTIPAliasClassID["chargedessen[COLOR="Red"]s[/COLOR]eofhatred"]=655;
das ding heisst eigentlich
Code:
_NTIPAliasClassID["ceh"]=655;  _NTIPAliasClassID["chargedessen[COLOR="Lime"]c[/COLOR]eofhatred"]=655;
hatte mich gerade gewundert warum die essenzen bei mephi nicht aufgehoben werden nach dem ich sie aktiviert hab.

lg,
jules
JulesWinnfiled is offline  
Thanks
1 User
Old 10/11/2010, 14:35   #305
 
elite*gold: 0
Join Date: Jul 2006
Posts: 469
Received Thanks: 235
Danke, hatte den Fehler Mal selber schon fixed aber wieder vergessen woran's lag
ldevil is offline  
Old 10/12/2010, 19:32   #306
 
elite*gold: 0
Join Date: Aug 2010
Posts: 91
Received Thanks: 4
ich bin verzweifelt was das thema baal angeht...

es hat nicht zufällig jemand ein funktionierendes baal script für eine cold sorc oder?
ich hab jetzt ALLE eingebunden die da waren, das aus bluebird, sternenlooper, das beiliegende, das original und noch ein paar die ich so gefunden hab.
aber keins funktioniert richtig, bei den meisten schmiert das ganze game ab nach der 2. welle und zwar dann wenn nur noch die skelette da stehen. oder die skells werden ignoriert obwohl ich eine FO/FB sorc hab.
ausserdem werden nie alle monster im thorn gekillt am anfang, das muss immer der merc machen und es dauert dadurch teilweise sehr sehr lange weil die monster halt in irgendeiner ecke rumstehen. sie telt dann zwar nach einer weile durch den thorn, hält aber nicht an um gegner zu töten, sondern stellt sich wieder vor den thorn und wartet auf weihnachten.

bin verzweifelt was das thema baal angeht, es wäre eigentlich ein einfacher run, einfacher als diablo, und diablo funzt mit einer extrem geringen chicken rate mittlerweile.

ich hab mittlerweile evade auch komplett ausgeschaltet.


EDIT: ach ja, in der 3. art von baal script teleportiert sie in einer endlosschleife nach dem sie alles bis auf die skelette der 2. welle gekillt hat, immer so ein stück vor und zurück, endlos.

ich verstehs echt nicht, baalruns sind doch so common, da muss es doch anständige scripts geben?

total nervig ist auch das einfach nicht der thorn gecleart wird und beim nachträglichen porten werden die mobs auch ignoriert -.- aber das hatte ich ja beides schon zuvor erwähnt.


EDIT2:
wenn ich übrigens das baal script nehme das bei muddys bot dabei ist führt das IMMER zu einem restart nach der zweiten welle!

EDIT3:
HEUREKA!
ich hab jetzt NTConfig_AttackSkill[5] auf feuerball gesetzt und es funktioniert! kein D2 crash mehr, kein endlosteleport und der thorn wird glaube ich auch richtig gecleart!

einzige downside der geschichte ist das jetzt bei cold immunen nur noch feuerball gecastet wird, was sehr schlecht ist weil der AOE schaden von feuerball nicht wirklich toll ist was die reichweite angeht, war viel besser als sie FO/FB gespamt hat bei cold immunen, denn so sterben alle monster in der nähe sehr schnell und der merc kann sich um den rest kümmern, falls FB das nicht eh schon getan hat.

so ist es halt etwas doof, weil eine große masse an monstern übrig bleibt, weil kein FO gecastet wird bis der cold immune mob im fokus tot ist!
JulesWinnfiled is offline  
Old 10/27/2010, 17:44   #307
 
seifenoper's Avatar
 
elite*gold: 0
Join Date: Jun 2010
Posts: 81
Received Thanks: 8
Punkt1:
Bin grad am Muddy Bot testen. Soweit ganz gut aber bleibt hier hängen:



macht einfach nix mehr steht im cs rum. Hatte er auch schon in anderen Gebieten.

In der config ist: "MWConfig_ShowPotionPickups = false;" auf true, evtl hängts damit zusammen?


Punkt2:
KurastTravel Script zb vom Bluebird, funktioniert nicht im Muddy? Bleibt bei irgendeiner Truhe/Ständer stehen und macht nix mehr.

Funktionieren allgemein keine anderen Gebietsscripte mit Muddy?
seifenoper is offline  
Old 10/28/2010, 17:37   #308
 
elite*gold: 0
Join Date: Aug 2010
Posts: 91
Received Thanks: 4
mit der option hat das nichts zu tun, eher mit deinen nip files.

und kurasttravel hat muddy doch selbst eingebaut? warum nimmste nicht einfach das?

ansonsten wüsste ich kein script das, wenn es man entsprechend für muddys bot anpasst, nicht funktionieren würde. insofern es nur interene funktionen verwendet, also solche die im script selbst stehen, ist das einbauen auch kinderleicht.

EDIT: ach du meinst das superchests script, nicht das kurast travel script...
das funktioniert bei mir ohne probleme, habs aber nicht aus bluebird, sondern direkt vom ersteller und dann halt entsprechend angepasst, gab noch nie probleme damit.
JulesWinnfiled is offline  
Old 10/29/2010, 04:03   #309
 
elite*gold: 0
Join Date: Jul 2006
Posts: 469
Received Thanks: 235
Hab grad bei mir das Essenzen Cuben gefixt, nehm an den Fehler gibt's hier auch:

Code:
		if(NTConfig_CubingItem[i][0] < NTCU_MAGIC)
			_count = 5;
		else if(NTConfig_CubingItem[i][0] < NTCU_CRAFT_HITPOWER_HELM)
			_count = 15;
[COLOR="Red"]		else if (NTConfig_CubingItem[i][0] == NTCU_ESSENCE)
			_count = 6;[/COLOR]
		else if(NTConfig_CubingItem[i][0] < NTCU_RUNE_EL)
			_count = 9;
		else if(NTConfig_CubingItem[i][0] < NTCU_RUNE_THUL)
			_count = 5;
		else if(NTConfig_CubingItem[i][0] < NTCU_RUNE_PUL)
			_count = 6;
		else
			_count = 5;
So sollte das aussehen sonst versucht er nämlich auch zu cuben, wenn er die Baal Essenz gar noch nicht hat
ldevil is offline  
Thanks
2 Users
Old 10/29/2010, 10:06   #310
 
elite*gold: 0
Join Date: Aug 2010
Posts: 91
Received Thanks: 4
lol! genau das selbe ist mir auch gestern aufgefallen, allerdings funktioniert es trotzdem, es wird halt nur das log zugespamt bis eine baal essenz am start ist.

EDIT: ehm, steht count etwa für die menge die maximal gecubt wird? das wäre ja genial
sowas als erweiterung für die syntax von nip files wäre genial, dann könnte man hier und da mal einige sachen reinnehmen ohne gleich alles damit zugemüllt zu bekommen, nehmen wir an mal suche eine El für fortitude oder sowas.
JulesWinnfiled is offline  
Old 10/29/2010, 11:46   #311
 
elite*gold: 0
Join Date: Jul 2006
Posts: 469
Received Thanks: 235
Quote:
Originally Posted by JulesWinnfiled View Post
lol! genau das selbe ist mir auch gestern aufgefallen, allerdings funktioniert es trotzdem, es wird halt nur das log zugespamt bis eine baal essenz am start ist.

EDIT: ehm, steht count etwa für die menge die maximal gecubt wird? das wäre ja genial
sowas als erweiterung für die syntax von nip files wäre genial, dann könnte man hier und da mal einige sachen reinnehmen ohne gleich alles damit zugemüllt zu bekommen, nehmen wir an mal suche eine El für fortitude oder sowas.
Das "count" hat keine Bedeutung die man 1:1 für alle Rezepte angeben kann. Es ist einfach die Zahl wieviele Felder vom Array initialisiert werden. Bei Essenzen siehts dann etwa so aus:

[70,653,0,0,0,0]

und da wo die Nullen stehen trägt er dann jeweils die Essenzen ein, wenn er sie findet.
Ausserdem spammt er nicht nur das Log zu sondern versucht wirklich jedes Mal die zu cuben, wodurch natürlich extrem viel Zeit verloren geht!

Was du suchst heisst aber [MaxAmount] und ist schon lange implementiert

Code:
[MaxAmount] == 1 && [Name] == ElRune
Damit sucht er dann nur 1 El Rune. Beim Cuben macht er das ja eh automatisch, dass er nur genau das zusammen sucht, was er auch braucht. Man darf die Essenzen halt einfach nicht in den NiP Files haben, sonst nimmt er natürlich mehr auf

(Aber aufpassen, beim Cuben von Rüstungen oder so müssen die schon in den NiP Files stehen. Nur bei den "fixen" Sachen wie Gems, Token, Rune und Craften sucht sich der Bot alles selber zusammen.
ldevil is offline  
Thanks
1 User
Old 10/29/2010, 12:25   #312
 
elite*gold: 0
Join Date: Aug 2010
Posts: 91
Received Thanks: 4
w00t!
wow, wenn ich nicht schon verliebt in ldevil als titel hätte, würde ich es jetzt dazu schreiben!
maxamount kann ja überall stehen eigentlich, vor der raute zumindest, oder? ich hatte mal sone liste mit möglichen arten [Type] [Name] [Class] usw. aber [MaxAmount] war nicht dabei, funzt das mit jedem D2NT derivat?
JulesWinnfiled is offline  
Old 10/29/2010, 15:19   #313
 
elite*gold: 0
Join Date: Jul 2006
Posts: 469
Received Thanks: 235
Quote:
Originally Posted by JulesWinnfiled View Post
w00t!
wow, wenn ich nicht schon verliebt in ldevil als titel hätte, würde ich es jetzt dazu schreiben!
maxamount kann ja überall stehen eigentlich, vor der raute zumindest, oder? ich hatte mal sone liste mit möglichen arten [Type] [Name] [Class] usw. aber [MaxAmount] war nicht dabei, funzt das mit jedem D2NT derivat?
dafür kenn ich mich zu wenig aus aber ich kann dir sagen wie du es überprüfen kannst:

- scripts/libs/common/NTItemParser.ntl öffnen
- die Funktion NTIPCheckItem() suchen und schauen ob folgende Linie da ist
Code:
			if(_NTIP_CheckList[i][0].indexOf("maxamount") == -1)
Und wenn die da ist, dann klappt das auch.
ldevil is offline  
Thanks
1 User
Old 10/29/2010, 15:22   #314
 
elite*gold: 0
Join Date: Aug 2010
Posts: 91
Received Thanks: 4
wollte gerade nachschauen da ist mir das hier ganz oben in der itemparser ins auge gesprungen
Quote:
* New Keyword added: [Maxamount]
* This Keyword must not be placed anywhere except the very beginning of a line of a nip file
* Any operator except '==' is invalid for [MaxAmount]!
* Example: [MaxAmount] == 3 && [Name] = KeyOfDestruction
das klärt alle fragen, danke muddy!
JulesWinnfiled is offline  
Old 10/29/2010, 18:22   #315
 
elite*gold: 0
Join Date: Aug 2010
Posts: 43
Received Thanks: 1
Habe mir den Bot gerade für meinen Gold Barb geladen, musste leider feststellen, dass die Befehle in der Barb Config total verschoben sind,werden nicht richtig untereinander angezeigt, bei der Pala und Sorc Config ist alles Ok.
Kann mal bitte jemand die richtige Config hochladen, Danke.

Gruß
defender49 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 16:37.


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.