Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Diablo 2 > Diablo 2 Programming
You last visited: Today at 20:08

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

Advertisement



D2NT - Bot soll selbstständig Runenwörter bauen

Discussion on D2NT - Bot soll selbstständig Runenwörter bauen within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Nov 2009
Posts: 180
Received Thanks: 6
D2NT - Bot soll selbstständig Runenwörter bauen

moin. weiß nich obs des schon gibt, aber falls nicht hat wer bock n script zu entwerfen, dass runenwörter baut?

Ich stelle mir das ganze in etwa wie folgt vor:

in einer separaten config werden alle wichtigeren runenworte aufgelistet die dann jeder auskommentieren kann wie er grad braucht.
(also: charconfig\rw.xyz und in der rw.xyz dann halt cta, hoto, weiß der kuckuck )

das kistenmanagement bleibt dann natürlich am spieler hängen.

aber prinzipiell sollte es einem die möglichkeit geben entweder n ganzes RW botten zu lassen (rohling+runen) oder auch wenn man eben grad zb ohm,ist,mal in die kiste legt, dass er sich dann n rohling und ral und amn noch selber holt. schaut obs n 6er geworden ist und dann entsprechend wufft oder behält.

soweit zu dem erst mal. falls sich jemand noch nicht ausgelastet fühlt hab ich noch ne idee zum automatisierten sockeln im kopf ... das wird legendär
prost
senfbert is offline  
Old 09/09/2010, 02:16   #2
 
elite*gold: 0
Join Date: Jul 2008
Posts: 169
Received Thanks: 14
ja es geht. die koreanische version hatte es eingebaut soweit ich weiß- schau dort mal nach.
fuuch is offline  
Old 09/09/2010, 02:20   #3
 
elite*gold: 0
Join Date: Nov 2009
Posts: 180
Received Thanks: 6
Quote:
Originally Posted by fuuch View Post
ja es geht. die koreanische version hatte es eingebaut soweit ich weiß- schau dort mal nach.
wie wo wad koreanische version? und wo soll ich nachschauen? ich versteh nur bahnhof
ne erklärung und/oder link(s) würden mir helfen!
prost
senfbert is offline  
Old 09/09/2010, 17:19   #4
 
elite*gold: 0
Join Date: Jul 2008
Posts: 169
Received Thanks: 14
Link zur koreanischen version
fuuch is offline  
Old 09/10/2010, 12:50   #5
 
elite*gold: 0
Join Date: Nov 2009
Posts: 180
Received Thanks: 6
jo, danke schon mal für den hinweis. habs auch in der halbwegs übersetzen version gefunden, aber ich habe keine ahnung wie ich das (also nur den runenwortteil) in meine sternenlooper version einbauen soll
senfbert is offline  
Old 09/10/2010, 14:50   #6
 
elite*gold: 0
Join Date: Jul 2008
Posts: 169
Received Thanks: 14
kannst du die übersetzte version reuppen irgendwo, würde mich mal interessieren und der rapidsharelink funzt bei mir nicht.

EDIT: nach mehrmaligem klicken gings dann doch
fuuch is offline  
Old 09/10/2010, 15:04   #7
 
elite*gold: 0
Join Date: Jul 2008
Posts: 169
Received Thanks: 14
zieh dir notepad++ und suche in den ganzen dateien (strg+shift+f) nach
Quote:
function MyCu_MakeRuneword
fuuch is offline  
Old 09/10/2010, 15:09   #8
 
elite*gold: 0
Join Date: Jul 2008
Posts: 169
Received Thanks: 14
Code:
function MyCu_MakeRuneword(isCheck, classIdList)
{
    var i, j, k;
    var _items;
    var _isFind;
    var _result;
    var _areaName;
    var _nHelRunes;
    var _runeword = new Array();

    if (MyConfig_MakeRunewordNtip.length < 1)
        return false;

    if (!isCheck && !_MyCu_isClearCube)
    {
        if (!MyMI_ClearCube(false))
            return false;

        _MyCu_isClearCube = true;
    }

    _items = me.GetItems(624);
    if (!_items || _items.length < 1)
        return false;

    _nHelRunes = _items.length;

    for (i = 0; i < classIdList.length; i++)
    {
        _isFind = false;

        _items = me.GetItems(classIdList[i]);
        if (_items)
        {
            for (j = 0; j < _items.length; j++)
            {
                _result = false;

                if (_items[j].mode == _MyMI_MODE_ITEM_STORE)
                {
                    if (i > 0)
                        _result = _items[j].itemtype == 74;
                    else
                        _result = !(_items[j].itemflag & _NTIPAliasFlag["runeword"]) && _items[j].quality < _MyMI_QUALITY_MAGIC && _items[j].GetStat(194) == (classIdList.length - 1);
                }

                if (_result)
                {
                    _isFind = true;

                    for (k = 1; k < _runeword.length; k++)
                    {
                        if (_runeword[k].gid == _items[j].gid)
                        {
                            _isFind = false;
                            break;
                        }
                    }

                    if (_isFind)
                        break;
                }
            }
        }

        if (!_isFind)
            return false;

        _runeword.push(_items[j]);

        if (classIdList[i] == 624)
            _nHelRunes--;
    }

    if (_nHelRunes < 1)
        return false;

    if (isCheck)
        return true;

    if (_runeword[0].itemloc == _MyMI_LOCATION_ITEM_CUBE)
    {
        if (!MyMI_ClearCube(false))
            return false;
    }

    for (i = 1; i < _runeword.length; i++)
    {
        if (MyMI_MoveItemTo(_runeword[i], _runeword[0].itemloc, false, _runeword[0].x, _runeword[0].y) != 1)
        {
            if (me.itemoncursor)
            {
                _items = me.GetCursorItem();
                if (!_items)
                    return false;

                if (MyMI_MoveItemTo(_items, _MyMI_LOCATION_ITEM_CUBE) != 1)
                    return false;
            }
            else if (MyMI_MoveItemTo(_runeword[0], _MyMI_LOCATION_ITEM_CUBE) != 1)
                return false;

            _items = me.GetItems(624);
            if (!_items || _items.length < 1)
                return false;

            if (MyMI_MoveItemTo(_items[0], _MyMI_LOCATION_ITEM_CUBE) != 1)
                return false;

            MyCo_CancelMenu();

            for (j = 0; j < 3; j++)
            {
                if (!MyVi_BuyItem(529, 1, 3))
                    return false;

                _items = me.GetItems(529);
                if (_items)
                {
                    MyCo_CancelMenu();

                    for (k = 0; k < _items.length; k++)
                    {
                        if (_items[k].mode == _MyMI_MODE_ITEM_STORE && _items[k].itemloc == _MyMI_LOCATION_ITEM_INVENTORY)
                        {
                            if (MyMI_MoveItemTo(_items[k], _MyMI_LOCATION_ITEM_CUBE) != 1)
                                return false;

                            return (MyMI_Transmute() && MyMI_ClearCube(false));
                        }
                    }
                }
            }

            return false;
        }
    }

    if (MyConfig_MakeRunewordNtip.length == 1)
        _result = MySI_MiniNTIPCheckItem(_runeword[0], MyConfig_MakeRunewordNtip[0]) == 1;
    else
    {
        for (i = 0; i < MyConfig_MakeRunewordNtip.length; i++)
        {
            _result = _runeword[0].itemdesc.indexOf(MyConfig_MakeRunewordNtip[i]) != -1;
            if (_result)
                break;
        }
    }

    if (_result)
    {
        _areaName = MyCo_GetAreaName();

        NTC_SendLogToOOG(NTC_LOG_ITEM, "ÿD7AC87Making ÿ000000[" + _areaName + "] " +
                                       NTC_ItemQualityToMGRColor[_runeword[0].quality] +
                                       _runeword[0].name.split("\n")[0] + " (" +
                                       _runeword[0].itemlevel + ");" +
                                       MyIL_GetItemDesc(_runeword[0], 2));
        MyIL_WriteLog(_runeword[0], "Making(" + _areaName + ")");

        if (_runeword[0].itemloc == _MyMI_LOCATION_ITEM_INVENTORY)
            return (MyMI_MoveItemTo(_runeword[0], _MyMI_LOCATION_ITEM_STASH, true) != 0);
        else
            return true;
    }
    else
    {
        if (MyMI_MoveItemTo(_runeword[0], _MyMI_LOCATION_ITEM_CUBE) != 1)
            return false;

        _items = me.GetItems(624);
        if (!_items || _items.length < 1)
            return false;

        if (MyMI_MoveItemTo(_items[0], _MyMI_LOCATION_ITEM_CUBE) != 1)
            return false;

        MyCo_CancelMenu();

        for (i = 0; i < 3; i++)
        {
            if (!MyVi_BuyItem(529, 1, 3))
                return false;

            _items = me.GetItems(529);
            if (_items)
            {
                MyCo_CancelMenu();

                for (j = 0; j < _items.length; j++)
                {
                    if (_items[j].mode == _MyMI_MODE_ITEM_STORE && _items[j].itemloc == _MyMI_LOCATION_ITEM_INVENTORY)
                    {
                        if (MyMI_MoveItemTo(_items[j], _MyMI_LOCATION_ITEM_CUBE) != 1)
                            return false;

                        return (MyMI_Transmute() && MyMI_ClearCube(false));
                    }
                }
            }
        }

        return false;
    }
}
fuuch is offline  
Old 09/10/2010, 15:21   #9
 
elite*gold: 0
Join Date: Nov 2009
Posts: 180
Received Thanks: 6
also

ich schreib das hier alles in die charconfig:



und
Quote:
function MyCu_MakeRuneword
dann auch in charconfig rein?

und den code in ne extra datei oder wo einfügen??
senfbert is offline  
Old 09/10/2010, 16:06   #10
 
elite*gold: 0
Join Date: Jul 2008
Posts: 169
Received Thanks: 14
du musst schauen ob in der funktion irgendwelche abhängigkeiten existieren zu anderen funktionen und du musst schauen wo diese funktion eingesetzt wird, um runenwörter zu craften.
die koreanische version hat viele funktionen umbenannt, also ist das gar nicht so einfach, wie es auf den ersten blick scheint.
fuuch is offline  
Old 09/13/2010, 18:18   #11
 
elite*gold: 0
Join Date: Nov 2009
Posts: 180
Received Thanks: 6
puh, das üebersteigt natürlich meine fähigkeiten bei weitem
also ich hoffe, dass es vielleicht sterni oder so mit einbaut.
senfbert is offline  
Old 09/13/2010, 21:02   #12
 
elite*gold: 0
Join Date: Jul 2006
Posts: 469
Received Thanks: 235
Ich weiss nicht ob's so wirklich funktioniert, aber wenn's wer testen will

Das hier kommt in die NTCubing.ntl (am Anfang oder Ende)

Code:
const _MyMI_LOCATION_ITEM_INVENTORY = 0;
const _MyMI_LOCATION_ITEM_NPC       = 1;
const _MyMI_LOCATION_ITEM_TRADE     = 2;
const _MyMI_LOCATION_ITEM_CUBE      = 3;
const _MyMI_LOCATION_ITEM_STASH     = 4;
const _MyMI_LOCATION_ITEM_BELT      = 5;
const _MyMI_LOCATION_ITEM_GROUND    = 9;
const _MyMI_LOCATION_ITEM_ALL       = -1;
const _MyMI_LOCATION_ITEM_CURSOR    = -5;
const _MyMI_LOCATION_ITEM_NONE      = -9;

const _MyMI_LOCATION_BODY_NONE        = 0;
const _MyMI_LOCATION_BODY_HEAD        = 1;
const _MyMI_LOCATION_BODY_NECK        = 2;
const _MyMI_LOCATION_BODY_TORSO       = 3;
const _MyMI_LOCATION_BODY_RIGHT_ARM   = 4;
const _MyMI_LOCATION_BODY_LEFT_ARM    = 5;
const _MyMI_LOCATION_BODY_RIGHT_RING  = 6;
const _MyMI_LOCATION_BODY_LEFT_RING   = 7;
const _MyMI_LOCATION_BODY_BELT        = 8;
const _MyMI_LOCATION_BODY_FEET        = 9;
const _MyMI_LOCATION_BODY_GLOVES      = 10;
const _MyMI_LOCATION_BODY_RIGHT_ARM_2 = 11;
const _MyMI_LOCATION_BODY_LEFT_ARM_2  = 12;

const _MyMI_MODE_ITEM_STORE  = 0;
const _MyMI_MODE_ITEM_MERC   = 1;
const _MyMI_MODE_ITEM_BELT   = 2;
const _MyMI_MODE_ITEM_GROUND = 3;
const _MyMI_MODE_ITEM_CURSOR = 4;
const _MyMI_MODE_ITEM_DROP   = 5;
const _MyMI_MODE_ITEM_SOCKET = 6;

const _MyMI_UI_INVENTORY = 0x01;
const _MyMI_UI_NPC       = 0x08;
const _MyMI_UI_ESC       = 0x09;
const _MyMI_UI_AUTOMAP   = 0x0A;
const _MyMI_UI_SHOP      = 0x0C;
const _MyMI_UI_QUEST     = 0x0F;
const _MyMI_UI_WAYPOINT  = 0x14;
const _MyMI_UI_TRADE     = 0x17;
const _MyMI_UI_STASH     = 0x19;
const _MyMI_UI_CUBE      = 0x1A;
const _MyMI_UI_BELT      = 0x1F;
const _MyMI_UI_MERC      = 0x24;

const _MyMI_FLAG_NPC_EAST      = 0x0D36;
const _MyMI_FLAG_NPC_SAIL_EAST = 0x0D38;
const _MyMI_FLAG_NPC_IDENTIFY  = 0x0FB4;

const _MyMI_QUALITY_LOWQUALITY = 1;
const _MyMI_QUALITY_NORMAL     = 2;
const _MyMI_QUALITY_SUPERIOR   = 3;
const _MyMI_QUALITY_MAGIC      = 4;
const _MyMI_QUALITY_SET        = 5;
const _MyMI_QUALITY_RARE       = 6;
const _MyMI_QUALITY_UNIQUE     = 7;
const _MyMI_QUALITY_CRAFTED    = 8;
const _MyMI_QUALITY_TEMPERED   = 9;

var   _MyMI_isMoveItem         = false;
var   _MyMI_isItemLevel        = true;
var   _MyMI_isRun              = false;
var   _MyMI_MoveItemLocation   = [_MyMI_LOCATION_ITEM_NONE, _MyMI_LOCATION_ITEM_NONE];
var   _MyMI_CursorItemLocation = _MyMI_LOCATION_ITEM_NONE;

var _MyCu_Cube;
var _MyCu_isClearCube;

function MyCu_MakeRuneword(isCheck, classIdList)
{
    var i, j, k;
    var _items;
    var _isFind;
    var _result;
    var _areaName;
    var _nHelRunes;
    var _runeword = new Array();

    if (MyConfig_MakeRunewordNtip.length < 1)
        return false;

    if(!isCheck && NTCU_CheckCubeInventoryInt() > 0)
    {
        if(!NTCU_OpenCubeInt(_items[0]))
            return false;

        if(NTCU_ClearCubeInt() < 1)
            return false;

        NTCU_CloseCubeInt();
    }

    _items = me.GetItems(624);
    if (!_items || _items.length < 1)
        return false;

    _nHelRunes = _items.length;

    for (i = 0; i < classIdList.length; i++)
    {
        _isFind = false;

        _items = me.GetItems(classIdList[i]);
        if (_items)
        {
            for (j = 0; j < _items.length; j++)
            {
                _result = false;

                if (_items[j].mode == _MyMI_MODE_ITEM_STORE)
                {
                    if (i > 0)
                        _result = _items[j].itemtype == 74;
                    else
                        _result = !(_items[j].itemflag & _NTIPAliasFlag["runeword"]) && _items[j].quality < _MyMI_QUALITY_MAGIC && _items[j].GetStat(194) == (classIdList.length - 1);
                }

                if (_result)
                {
                    _isFind = true;

                    for (k = 1; k < _runeword.length; k++)
                    {
                        if (_runeword[k].gid == _items[j].gid)
                        {
                            _isFind = false;
                            break;
                        }
                    }

                    if (_isFind)
                        break;
                }
            }
        }

        if (!_isFind)
            return false;

        _runeword.push(_items[j]);

        if (classIdList[i] == 624)
            _nHelRunes--;
    }

    if (_nHelRunes < 1)
        return false;

    if (isCheck)
        return true;

    if (_runeword[0].itemloc == _MyMI_LOCATION_ITEM_CUBE)
    {
        if(!NTCU_OpenCubeInt(_items[0]))
            return false;

        if(NTCU_ClearCubeInt() < 1)
            return false;

        NTCU_CloseCubeInt();
    }

    for (i = 1; i < _runeword.length; i++)
    {
        if (MyMI_MoveItemTo(_runeword[i], _runeword[0].itemloc, false, _runeword[0].x, _runeword[0].y) != 1)
        {
            if (me.itemoncursor)
            {
                _items = me.GetCursorItem();
                if (!_items)
                    return false;

                if (MyMI_MoveItemTo(_items, _MyMI_LOCATION_ITEM_CUBE) != 1)
                    return false;
            }
            else if (MyMI_MoveItemTo(_runeword[0], _MyMI_LOCATION_ITEM_CUBE) != 1)
                return false;

            _items = me.GetItems(624);
            if (!_items || _items.length < 1)
                return false;

            if (MyMI_MoveItemTo(_items[0], _MyMI_LOCATION_ITEM_CUBE) != 1)
                return false;

            MyCo_CancelMenu();

            for (j = 0; j < 3; j++)
            {
                if (!MyVi_BuyItem(529, 1, 3))
                    return false;

                _items = me.GetItems(529);
                if (_items)
                {
                    MyCo_CancelMenu();

                    for (k = 0; k < _items.length; k++)
                    {
                        if (_items[k].mode == _MyMI_MODE_ITEM_STORE && _items[k].itemloc == _MyMI_LOCATION_ITEM_INVENTORY)
                        {
                            if (MyMI_MoveItemTo(_items[k], _MyMI_LOCATION_ITEM_CUBE) != 1)
                                return false;

                            return (Transmute() && NTCU_ClearCubeInt());
                        }
                    }
                }
            }

            return false;
        }
    }

    if (MyConfig_MakeRunewordNtip.length == 1)
        _result = MySI_MiniNTIPCheckItem(_runeword[0], MyConfig_MakeRunewordNtip[0]) == 1;
    else
    {
        for (i = 0; i < MyConfig_MakeRunewordNtip.length; i++)
        {
            _result = _runeword[0].itemdesc.indexOf(MyConfig_MakeRunewordNtip[i]) != -1;
            if (_result)
                break;
        }
    }

    if (_result)
    {
        _areaName = MyCo_GetAreaName();

        NTC_SendLogToOOG(NTC_LOG_ITEM, "ÿD7AC87Making ÿ000000[" + _areaName + "] " +
                                       NTC_ItemQualityToMGRColor[_runeword[0].quality] +
                                       _runeword[0].name.split("\n")[0] + " (" +
                                       _runeword[0].itemlevel + ");" +
                                       MyIL_GetItemDesc(_runeword[0], 2));
        MyIL_WriteLog(_runeword[0], "Making(" + _areaName + ")");

        if (_runeword[0].itemloc == _MyMI_LOCATION_ITEM_INVENTORY)
            return (MyMI_MoveItemTo(_runeword[0], _MyMI_LOCATION_ITEM_STASH, true) != 0);
        else
            return true;

    }
    else
    {
        if (MyMI_MoveItemTo(_runeword[0], _MyMI_LOCATION_ITEM_CUBE) != 1)
            return false;

        _items = me.GetItems(624);
        if (!_items || _items.length < 1)
            return false;

        if (MyMI_MoveItemTo(_items[0], _MyMI_LOCATION_ITEM_CUBE) != 1)
            return false;

        MyCo_CancelMenu();

        for (i = 0; i < 3; i++)
        {
            if (!MyVi_BuyItem(529, 1, 3))
                return false;

            _items = me.GetItems(529);
            if (_items)
            {
                MyCo_CancelMenu();

                for (j = 0; j < _items.length; j++)
                {
                    if (_items[j].mode == _MyMI_MODE_ITEM_STORE && _items[j].itemloc == _MyMI_LOCATION_ITEM_INVENTORY)
                    {
                        if (MyMI_MoveItemTo(_items[j], _MyMI_LOCATION_ITEM_CUBE) != 1)
                            return false;

                        return (Transmute() && NTCU_ClearCubeInt());
                    }
                }
            }
        }

        return false;
    }
}

function MyCo_CancelMenu()
{
    var i;

    while (GetUIState(_MyMI_UI_INVENTORY) ||
           GetUIState(_MyMI_UI_NPC) ||
           GetUIState(_MyMI_UI_SHOP) ||
           GetUIState(_MyMI_UI_QUEST) ||
           GetUIState(_MyMI_UI_WAYPOINT) ||
           GetUIState(_MyMI_UI_TRADE) ||
           GetUIState(_MyMI_UI_STASH) ||
           GetUIState(_MyMI_UI_CUBE) ||
           GetUIState(_MyMI_UI_MERC))
    {
        for (i = 0; i < 40; i++)
        {
            if ((i % 20) == 0)
                me.Cancel(1);

            Delay(100);

            if (!GetUIState(_MyMI_UI_INVENTORY) &&
                !GetUIState(_MyMI_UI_NPC) &&
                !GetUIState(_MyMI_UI_SHOP) &&
                !GetUIState(_MyMI_UI_QUEST) &&
                !GetUIState(_MyMI_UI_WAYPOINT) &&
                !GetUIState(_MyMI_UI_TRADE) &&
                !GetUIState(_MyMI_UI_STASH) &&
                !GetUIState(_MyMI_UI_CUBE) &&
                !GetUIState(_MyMI_UI_MERC))
            {
                NTC_PingDelay(300);
                break;
            }
        }
    }
}

function MyMI_MoveItemTo(item, location, isCheckPosition, itemX, itemY, isCheckSpace)
{
    var m, n, x, y;
    var _moveMode;
    var _isLocationHaveSpace;
    var _locationX, _locationY, _locationSpace;
    var _items, _cursorItem, _cube;
    var _itemGid;
    var _itemXSize = item.xsize;
    var _itemYSize = item.ysize;

    if (!item)
        return 0;

    if (location == _MyMI_LOCATION_ITEM_TRADE)
    {
        if (!GetUIState(_MyMI_UI_TRADE) || (!me.itemoncursor && item.itemloc != _MyMI_LOCATION_ITEM_INVENTORY))
            return 0;

        if (GetUIState(_MyMI_UI_BELT))
        {
            if (!SetUIState(_MyMI_UI_BELT, false))
                return 0;
        }
    }

    if (location == _MyMI_LOCATION_ITEM_CUBE && item.classid == NTC_UNIT_CUBE)
        return 1;

    if (location == _MyMI_LOCATION_ITEM_CUBE || item.itemloc == _MyMI_LOCATION_ITEM_CUBE)
    {
        _cube = MyMI_GetCube();
        if (!_cube)
            return 0;
    }

    if (location == _MyMI_LOCATION_ITEM_BELT && item.itemtype != 22 && (item.itemtype < 76 || item.itemtype > 81))
        return 0;

    if (me.itemoncursor)
    {
        switch (location)
        {
        case _MyMI_LOCATION_ITEM_INVENTORY:
            if (!GetUIState(_MyMI_UI_INVENTORY) && !GetUIState(_MyMI_UI_STASH) && !GetUIState(_MyMI_UI_CUBE))
                return 0;
            break;

        case _MyMI_LOCATION_ITEM_CUBE:
            if (!GetUIState(_MyMI_UI_CUBE))
            {
                if (_cube.itemloc == _MyMI_LOCATION_ITEM_INVENTORY)
                {
                    if (!GetUIState(_MyMI_UI_INVENTORY) && !GetUIState(_MyMI_UI_STASH))
                        return 0;
                }
                else if (!GetUIState(_MyMI_UI_STASH))
                    return 0;
            }
            break;

        case _MyMI_LOCATION_ITEM_STASH:
            if (!GetUIState(_MyMI_UI_STASH))
                return 0;
            break;

        case _MyMI_LOCATION_ITEM_GROUND:
            return NTC_ClearCursor();
        }
    }

    _items = me.GetItems();
    if (!_items)
        return 0;

    if (location == _MyMI_LOCATION_ITEM_GROUND)
        _isLocationHaveSpace = true;
    else if (location == _MyMI_LOCATION_ITEM_BELT)
    {
        _locationY     = NTC_GetBeltSize();
        _locationSpace = new Array(4);

        for (x = 0; x < 4; x++)
        {
            _locationSpace[x] = new Array(_locationY);

            for (y = 0; y < _locationY; y++)
                _locationSpace[x][y] = 0;
        }

        for (m = 0; m < _items.length; m++)
        {
            if (_items[m].mode == _MyMI_MODE_ITEM_BELT)
                _locationSpace[_items[m].x % 4][Math.floor(_items[m].x / 4)] = 1;
        }

        _isLocationHaveSpace = false;

        if (itemY != undefined)
        {
            if (itemX < 4 && itemY < _locationY)
            {
                if (isCheckSpace)
                {
                    if (_locationSpace[itemX][itemY] == 0)
                    {
                        _isLocationHaveSpace = true;
                        m = itemX;
                        n = itemY;
                    }
                }
                else
                {
                    _isLocationHaveSpace = true;
                    m = itemX;
                    n = itemY;
                }
            }
        }
        else
        {
            for (x = 0; x < 4; x++)
            {
                for (y = 0; y < _locationY; y++)
                {
                    if (_locationSpace[x][y] == 0)
                    {
                        _isLocationHaveSpace = true;
                        m = x;
                        n = y;
                        x = 9;
                        break;
                    }
                }
            }
        }
    }
    else
    {
        _locationX     = (location == _MyMI_LOCATION_ITEM_INVENTORY || location == _MyMI_LOCATION_ITEM_TRADE) ? 10 : (location == _MyMI_LOCATION_ITEM_CUBE) ? 3 : 6;
        _locationY     = (location != _MyMI_LOCATION_ITEM_STASH) ? 4 : me.gametype ? 8 : 4;
        _locationSpace = new Array(_locationX);

        for (x = 0; x < _locationX; x++)
        {
            _locationSpace[x] = new Array(_locationY);

            for (y = 0; y < _locationY; y++)
                _locationSpace[x][y] = 0;
        }

        for (m = 0; m < _items.length; m++)
        {
            if (_items[m].mode == _MyMI_MODE_ITEM_STORE && _items[m].itemloc == location)
            {
                for (x = 0; x < _items[m].xsize; x++)
                {
                    for (y = 0; y < _items[m].ysize; y++)
                        _locationSpace[x + _items[m].x][y + _items[m].y] = 1;
                }
            }
        }

        _isLocationHaveSpace = false;

        if (itemY != undefined)
        {
            if (isCheckSpace)
            {
                if (_locationSpace[itemX][itemY] == 0)
                {
                    _isLocationHaveSpace = true;

                    for (m = 0; m < _itemXSize; m++)
                    {
                        for (n = 0; n < _itemYSize; n++)
                        {
                            if (_locationSpace[itemX + m][itemY + n] == 1)
                            {
                                _isLocationHaveSpace = false;
                                m = 9;
                                break;
                            }
                        }
                    }

                    if (_isLocationHaveSpace)
                    {
                        m = itemX;
                        n = itemY;
                    }
                }
            }
            else
            {
                _isLocationHaveSpace = true;
                m = itemX;
                n = itemY;
            }
        }
        else
        {
            if (!isCheckPosition)
                _moveMode = 0;
            else if (MyConfig_StoreItem[0] == MyConfig_StoreItem[1] || MySI_NTIPCheckItem(item, 0) == 1)
                _moveMode = MyConfig_StoreItem[0];
            else
                _moveMode = MyConfig_StoreItem[1];

            switch (_moveMode)
            {
            case 0: // 좌상단부터 좌우
                for (y = 0; y < _locationY; y++)
                {
                    for (x = 0; x < _locationX; x++)
                    {
                        if (_locationSpace[x][y] == 0 && (x + _itemXSize - 1) < _locationX && (y + _itemYSize - 1) < _locationY)
                        {
                            _isLocationHaveSpace = true;

                            for (m = 0; m < _itemXSize; m++)
                            {
                                for (n = 0; n < _itemYSize; n++)
                                {
                                    if (_locationSpace[x + m][y + n] == 1)
                                    {
                                        _isLocationHaveSpace = false;
                                        m = 9;
                                        break;
                                    }
                                }
                            }

                            if (_isLocationHaveSpace)
                            {
                                m = x;
                                n = y;
                                y = 9;
                                break;
                            }
                        }
                    }
                }
                break;

            case 1: // 우하단부터 우좌
                for (y = _locationY - 1; y > -1; y--)
                {
                    for (x = _locationX - 1; x > -1; x--)
                    {
                        if (_locationSpace[x][y] == 0 && (x + _itemXSize - 1) < _locationX && (y + _itemYSize - 1) < _locationY)
                        {
                            _isLocationHaveSpace = true;

                            for (m = 0; m < _itemXSize; m++)
                            {
                                for (n = 0; n < _itemYSize; n++)
                                {
                                    if (_locationSpace[x + m][y + n] == 1)
                                    {
                                        _isLocationHaveSpace = false;
                                        m = 9;
                                        break;
                                    }
                                }
                            }

                            if (_isLocationHaveSpace)
                            {
                                m = x;
                                n = y;
                                y = 0;
                                break;
                            }
                        }
                    }
                }
                break;

            case 2: // 좌상단부터 상하
                for (x = 0; x < _locationX; x++)
                {
                    for (y = 0; y < _locationY; y++)
                    {
                        if (_locationSpace[x][y] == 0 && (x + _itemXSize - 1) < _locationX && (y + _itemYSize - 1) < _locationY)
                        {
                            _isLocationHaveSpace = true;

                            for (m = 0; m < _itemXSize; m++)
                            {
                                for (n = 0; n < _itemYSize; n++)
                                {
                                    if (_locationSpace[x + m][y + n] == 1)
                                    {
                                        _isLocationHaveSpace = false;
                                        m = 9;
                                        break;
                                    }
                                }
                            }

                            if (_isLocationHaveSpace)
                            {
                                m = x;
                                n = y;
                                x = 9;
                                break;
                            }
                        }
                    }
                }
                break;

            case 3: // 우하단부터 하상
                for (x = _locationX - 1; x > -1; x--)
                {
                    for (y = _locationY - 1; y > -1; y--)
                    {
                        if (_locationSpace[x][y] == 0 && (x + _itemXSize - 1) < _locationX && (y + _itemYSize - 1) < _locationY)
                        {
                            _isLocationHaveSpace = true;

                            for (m = 0; m < _itemXSize; m++)
                            {
                                for (n = 0; n < _itemYSize; n++)
                                {
                                    if (_locationSpace[x + m][y + n] == 1)
                                    {
                                        _isLocationHaveSpace = false;
                                        m = 9;
                                        break;
                                    }
                                }
                            }

                            if (_isLocationHaveSpace)
                            {
                                m = x;
                                n = y;
                                x = 0;
                                break;
                            }
                        }
                    }
                }
                break;
            }
        }

        if (!_isLocationHaveSpace)
            return -1;
    }

    if (_isLocationHaveSpace)
    {
        if (!me.itemoncursor && location != _MyMI_LOCATION_ITEM_TRADE)
        {
            if (item.itemloc == _MyMI_LOCATION_ITEM_INVENTORY || item.mode == _MyMI_MODE_ITEM_MERC)
            {
                if (me.screensize == 0 && NTC_GetBeltSize() > 3 && item.x < 5 && item.y > 2 && GetUIState(_MyMI_UI_BELT))
                {
                    if (!SetUIState(_MyMI_UI_BELT, false))
                        return 0;
                }

                if (location == _MyMI_LOCATION_ITEM_INVENTORY ||
                    (location == _MyMI_LOCATION_ITEM_CUBE && _cube.itemloc == _MyMI_LOCATION_ITEM_INVENTORY) ||
                    location == _MyMI_LOCATION_ITEM_BELT ||
                    location == _MyMI_LOCATION_ITEM_GROUND)
                {
                    if (!GetUIState(_MyMI_UI_STASH) && !GetUIState(_MyMI_UI_CUBE) && !GetUIState(_MyMI_UI_INVENTORY) && !GetUIState(_MyMI_UI_SHOP))
                    {
                        if (!SetUIState(_MyMI_UI_INVENTORY, true))
                            return 0;
                    }

                    if (location == _MyMI_LOCATION_ITEM_BELT && (me.screensize != 0 || NTC_GetBeltSize() < 4) && !GetUIState(_MyMI_UI_BELT))
                    {
                        if (!SetUIState(_MyMI_UI_BELT, true))
                            return 0;
                    }
                }
                else if (location == _MyMI_LOCATION_ITEM_CUBE)
                {
                    if (!GetUIState(_MyMI_UI_STASH) && !GetUIState(_MyMI_UI_CUBE))
                    {
                        if (!MyMI_OpenStash())
                            return 0;
                    }
                }
                else if (location == _MyMI_LOCATION_ITEM_STASH)
                {
                    if (!MyMI_OpenStash())
                        return 0;
                }
            }
            else if (item.itemloc == _MyMI_LOCATION_ITEM_CUBE)
            {
                if (location == _MyMI_LOCATION_ITEM_INVENTORY ||
                    location == _MyMI_LOCATION_ITEM_CUBE ||
                    location == _MyMI_LOCATION_ITEM_BELT ||
                    location == _MyMI_LOCATION_ITEM_GROUND)
                {
                    if (!GetUIState(_MyMI_UI_CUBE))
                    {
                        if (!MyMI_OpenCube(_cube))
                            return 0;
                    }

                    if (location == _MyMI_LOCATION_ITEM_BELT && !GetUIState(_MyMI_UI_BELT))
                    {
                        if (!SetUIState(_MyMI_UI_BELT, true))
                            return 0;
                    }
                }
                else if (location == _MyMI_LOCATION_ITEM_STASH)
                {
                    if (GetUIState(_MyMI_UI_CUBE) && _cube.itemloc == _MyMI_LOCATION_ITEM_INVENTORY)
                    {
                        if (!NTCU_CloseCubeInt())
                            return 0;
                    }

                    if (!GetUIState(_MyMI_UI_STASH) && !GetUIState(_MyMI_UI_CUBE))
                    {
                        if (!MyMI_OpenStash())
                            return 0;
                    }

                    if (!GetUIState(_MyMI_UI_CUBE))
                    {
                        if (!MyMI_OpenCube(_cube))
                            return 0;
                    }
                }
            }
            else if (item.itemloc == _MyMI_LOCATION_ITEM_STASH)
            {
                if (!MyMI_OpenStash())
                    return 0;

                if (location == _MyMI_LOCATION_ITEM_BELT && !GetUIState(_MyMI_UI_BELT))
                {
                    if (!SetUIState(_MyMI_UI_BELT, true))
                        return 0;
                }
            }
            else if (item.mode == _MyMI_MODE_ITEM_BELT)
            {
                if (location == _MyMI_LOCATION_ITEM_INVENTORY || (location == _MyMI_LOCATION_ITEM_CUBE && _cube.itemloc == _MyMI_LOCATION_ITEM_INVENTORY))
                {
                    if (!GetUIState(_MyMI_UI_STASH) && !GetUIState(_MyMI_UI_CUBE) && !GetUIState(_MyMI_UI_INVENTORY) && !GetUIState(_MyMI_UI_SHOP))
                    {
                        if (!SetUIState(_MyMI_UI_INVENTORY, true))
                            return 0;
                    }
                }
                else if (location == _MyMI_LOCATION_ITEM_CUBE)
                {
                    if (!GetUIState(_MyMI_UI_STASH) && !GetUIState(_MyMI_UI_CUBE))
                    {
                        if (!MyMI_OpenStash())
                            return 0;
                    }
                }
                else if (location == _MyMI_LOCATION_ITEM_STASH)
                {
                    if (!MyMI_OpenStash())
                        return 0;
                }

                if (!GetUIState(_MyMI_UI_BELT))
                {
                    if (!SetUIState(_MyMI_UI_BELT, true))
                        return 0;
                }
            }
        }

        if (NTC_ItemToCursor(item))
        {
            if (location == _MyMI_LOCATION_ITEM_INVENTORY)
            {
                if (me.screensize == 0 && NTC_GetBeltSize() > 3 && m < 5 && n > 2 && GetUIState(_MyMI_UI_BELT))
                {
                    if (!SetUIState(_MyMI_UI_BELT, false))
                        return 0;
                }
            }
            else if (location == _MyMI_LOCATION_ITEM_STASH && GetUIState(_MyMI_UI_CUBE))
            {
                if (!NTCU_CloseCubeInt())
                    return 0;

                NTC_PingDelay(200);

                if (!GetUIState(_MyMI_UI_STASH))
                {
                    if (!SetUIState(_MyMI_UI_INVENTORY, true))
                        return 0;

                    _cursorItem = me.GetCursorItem();
                    if (_cursorItem)
                    {
                        if (MyMI_MoveItemTo(_cursorItem, _MyMI_LOCATION_ITEM_INVENTORY) == 1)
                            return 1;
                        else if (!_cube || _cube.itemloc != _MyMI_LOCATION_ITEM_INVENTORY)
                            return 0;
                        else
                            return MyMI_MoveItemTo(_cursorItem, _MyMI_LOCATION_ITEM_CUBE);
                    }
                    else
                        return 0;
                }
            }
            else if (location == _MyMI_LOCATION_ITEM_BELT)
            {
                if (!GetUIState(_MyMI_UI_BELT))
                {
                    if (!SetUIState(_MyMI_UI_BELT, true))
                        return 0;
                }
            }
            else if (location == _MyMI_LOCATION_ITEM_GROUND)
                return NTC_ClearCursor();

            _itemGid = item.gid;

            for (x = 0; x < 80; x++)
            {
                if ((x % 40) == 0)
                {
                    if (location == _MyMI_LOCATION_ITEM_CUBE && !GetUIState(_MyMI_UI_CUBE))
                    {
                        if (_itemYSize < 3)
                            me.ClickItem(0, _cube.x, _cube.y, _cube.itemloc);
                        else if (_itemYSize == 3)
                            me.ClickItem(0, _cube.x, _cube.y - 1, _cube.itemloc);
                        else
                            me.ClickItem(0, _cube.x, (_cube.y == 0) ? -1 : (_cube.y - 2), _cube.itemloc);
                    }
                    else
                        me.ClickItem(0, m, n, location);
                }

                Delay(100);

                if (!me.itemoncursor)
                {
                    NTC_PingDelay(200);
                    return 1;
                }
                else
                {
                    _cursorItem = me.GetCursorItem();
                    if (_cursorItem && _cursorItem.gid != _itemGid)
                    {
                        NTC_PingDelay(200);
                        return 0;
                    }
                }
            }
        }
    }

    return 0;
}
Dann müsst ihr noch folgendes in die Funktion "NTCU_DoCubing" schreiben:

Code:
        if (MyConfig_isMakeRuneword)
        {
            for (i = 0; i < MyConfig_MakeRunewordList.length; i++)
                MyCu_MakeRuneword(false, MyConfig_MakeRunewordList[i]);
        }
Wo genau... hm ich habs vor das hier getan:

Code:
        if(i < NTConfig_CubingItem.length)
        {
            if(!NTCU_OpenCubeInt(_items[0]))
                return false;

            if(!Transmute())
                return false;
könnte aber falsch sein

Und zum Schluss müsst ihr noch die Variablen in der NTConfig.ntl einfügen:

Code:
var MyConfig_MakeRunewordList = new Array();
var MyConfig_MakeRunewordNtip;
var MyConfig_isMakeRuneword;
var MyConfig_ModeRuneword;
var MyConfig_MakeRuneword;
var MyConfig_NtipRuneword = new Array();
var MyConfig_DestroyRuneword;
var MyConfig_ScrollRuneword = new Array(2);
Bei all den Sachen oben hat's ziemlich sicher viel "Totes" dabei, aber denke für erste Tests sollte das reichen.

Achja, ihr müsst natürlich dann auch noch in eure CharConfig alles aktivieren

Code:
    MyConfig_isMakeRuneword      = false; // 룬워드 아이템을 만듭니다. 만들 룬워드 아이템 설정은 "만들 룬워드 아이템 설정하기"에서
    //##########################################################################
    // 만들 룬워드 아이템 설정하기
    //-----------------------------
    // MyConfig_MakeRunewordList.push([아이템 ClassID, 룬 ClassID . . .])
    // 주의: "MyConfig_MakeRunewordNtip"를 설정해야만 룬워드 아이템을 만듭니다.
    //       헬룬이 있어야만 룬워드 아이템을 만듭니다.(만들기에 실패하면 "아이템 ClassID"에 박은 룬을 파괴하기 위해 헬룬이 필요)
    //       "룬 ClassID"를 설정한 순서대로 "아이템 ClassID"에 박습니다.
    //       "아이템 ClassID + 룬 ClassID" 큐빙 후 "MyConfig_MakeRunewordNtip"에 설정된 아이템이 아니면 "아이템 ClassID + 헬룬 + 타운포탈 스크롤" 큐빙으로 박은 룬을 파괴합니다.
    //       "아이템 ClassID + 헬룬 + 타운포탈 스크롤" 큐빙 후 "아이템 이니(scripts/NTBot/item_configs/*.nip)" 또는 "주워 보관할 아이템 설정하기"에 설정된 아이템이 아니면 버립니다.
    //==========================================================================
    //MyConfig_MakeRunewordList.push([447, 616, 619, 618, 620]); // Spirit: Monarch + Tal Rune + Thul Rune + Ort Rune + Amn Rune
    //MyConfig_MakeRunewordList.push([258, 617, 612, 616, 621]); // Insight: Giant Thresher + Ral Rune + Tir Rune + Tal Rune + Sol Rune

    // 룬워드 아이템을 만든 후 비교할 아이템 이니/옵션 설정하기
    //----------------------------------------------------------
    // MyConfig_MakeRunewordNtip = ["아이템 이니/옵션" . . .]
    // 주의: "아이템 이니/옵션"을 1개만 설정하면 아이템 이니 방식으로 비교합니다.
    //       "아이템 이니/옵션"을 2개 이상 설정하면 아이템의 옵션 내용과 직접 비교합니다.
    // 참고: 아이템의 오라 옵션은 아이템의 옵션 내용과 직접 비교하는 방식만 가능합니다.
    //==========================================================================
    //MyConfig_MakeRunewordNtip = ["# [FCR] >= 35"]; // Spirit
    //MyConfig_MakeRunewordNtip = ["Level 17 Meditation Aura When Equipped", "장착시 17레벨의 메디테이션 오라의 효과 적용"]; // Insight]

Das ganze ist KOMPLETT UNGETESTET! Ich übernehm keine Verantwortung wenn der Bot danach nicht mehr läuft, das RW falsch baut oder eure Items verkauft oder was weiss ich.


edit: Ok, ich glaub ich hab noch was vergessen, der kann ja gar (noch) nicht wissen was er aufnehmen muss
ldevil is offline  
Reply


Similar Threads Similar Threads
D2NT Version?/Pickit? welche soll man nehmen?
09/01/2010 - Diablo 2 - 11 Replies
Moin Leute Mir is aufgefallen hier sind so viele D2NT versionen drinne Bluebird,Sternlooper usw. ebenso viele Pickits sind hier nun schon upped. jetz meine frage welchen Bot und welche Pickit nutzt ihr? welcher Modded Bot läuft am besten welche Pickit is am besten? Bitte nich mäkkern das es hier nich hergehört will eben ne Antwort haben ^^
Suche spezielle Pickit für D2NT O 30fg (bestimmte Runenwörter)
08/02/2010 - Diablo 2 Trading - 11 Replies
Und zwar verlieren meine Bots desöfteren die eigenen Items (sehe dann nachher immer den Eintrag, dass es verkauft wurde) Brauche deshalb von folgenden Items Pickit Einträge: * Enigma Mageplate (Stats egal) * Hoto (Stats egal, Grunditems: Flail, CS; eth und noneth) * Cta (Stats egal, Grunditems: Flail, Knout, Scourge, CS, ; eth und noneth) * Spirit (Alle Schilder, wenn möglich, ansonsten müsst ich da genau nachgucken, hab verschiedene zum BO) * Sanctuary im Trollnest (Stats egal) *...
Bot der selbstständig Erze abbaut?
07/18/2010 - Metin2 - 5 Replies
Ich weiß nicht ob das die richtige Sektion ist aber hier meine Frage: Gibt es einen Bot der selbstständig Erze abbaut? Freue mich auf eure Antworten ^,^ Lg:mofo:
D2NT soll Gegenstände nicht Identifizieren
05/08/2010 - Diablo 2 - 3 Replies
Ja wie oben steht soll zb. nur 1*1 Ringe Amus Rare unidentifiziert ins Lager legen finde SuFu nichts. Was ich hier suche ein Beispiel für Rare Gegenstände eines Typs oder so. Bedanke mich hier schon einmal....



All times are GMT +2. The time now is 20:08.


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