Aller au contenu


Photo

D2Bs Cube Gems


  • Veuillez vous connecter pour répondre
22 réponses à ce sujet

#1 MichmaO

MichmaO

    :D

  • Membres GMS
  • 614 messages
  • Location :France
  • Hobbies :Art, Graphisme 2d / 3d, ciné, réa de cour métrages, capoeira...
  • Trade : Mediator

Posté 01 June 2010 - 02:56

Voilà un petit script a ajouter pour pouvoir cuber les gems

Avant tout merci à "tipu" pour le script.


Ils vous suffit de remplacer les fichier NTTown.dbl & NTTownManager.dbl

les 2 fichiers se trouvent ici ==> OOG with 1.3.2\scripts-ntbot\libs\common

Dans le fichier NTTown.dbl true ou false pour activer ou pas le cubbage de gems

Image IPB


PS : Ne pas oublier de config votre PickIt pour les Flawless :D

Fichier(s) joint(s)


  • Euclide_, MMi et faramir aiment ceci
Image IPB

#2 MMi

MMi

    Hard Gamer

  • Membres
  • 254 messages
  • Location :IDF

Posté 01 June 2010 - 22:45

Tout d'abord, merci pour le partage !

Par contre j'ai qq questions :

Est il possible de faire de crafting avec ? Genre utiliser les gc drop sur baal avec 3 random pgem
ou ring jewl pgem rune ?

et faut il que le cube soit vide ? à un emplacement speciale ?

#3 alucardnos

alucardnos

    Débutant lvl 1

  • Membres
  • 42 messages

Posté 03 June 2010 - 23:57

bonjour

jaimerais savoir si ses possibles de juste cuber les gems juska un tel niveau merci:D

#4 MichmaO

MichmaO

    :D

  • Membres GMS
  • 614 messages
  • Location :France
  • Hobbies :Art, Graphisme 2d / 3d, ciné, réa de cour métrages, capoeira...
  • Trade : Mediator

Posté 04 June 2010 - 01:27

Tout d'abord, merci pour le partage !

Par contre j'ai qq questions :

Est il possible de faire de crafting avec ? Genre utiliser les gc drop sur baal avec 3 random pgem
ou ring jewl pgem rune ?

et faut il que le cube soit vide ? à un emplacement speciale ?


pour le moment c'est gem seulement, si l'envie te prends de plonger dans le code pour craft :wub:

j'ai pas tester avec le cube plein, il est toujours vide avant que je bot.


bonjour

jaimerais savoir si ses possibles de juste cuber les gems juska un tel niveau merci:D


surement mais faut le codé :blush:
Image IPB

#5 Keraunos

Keraunos

    Newbie lvl 3

  • Membres
  • 23 messages

Posté 04 June 2010 - 23:35

Bonjour,



EDIT : Le script fait planter mon bot dès l'entrée dans la partie, le bot jette les items qui sont en trop dans l'inventaire (normal) puis il plante et la mini fenêtre "access violation" apparait pdt 1/2 sec et le bot se relance et ainsi de suite... Une solution ?






Bravo pour ce partage j'attendais ce script !!

Je vois que le script rajoute ceci :

var NTPossibleCubingGems = [
//skull, amethyst, sapphire, emerald, ruby, diamond, topaz
597, 557, 567, 572, 577, 582, 562, //chippped
598, 558, 568, 573, 578, 583, 563, //flawed
599, 559, 569, 574, 579, 584, 564, //regular
600, 560, 570, 575, 580, 585, 565, //flawless
];


Peut-on rajouter les runes en dessous (610 et +) ou y'a t il du codage à rajouter ??

Merci !

#6 Euclide_

Euclide_

    YOOOOOOOOOOO

  • Admin Gms
  • 8923 messages
  • Location :France
  • Trade : Mediator

Posté 05 June 2010 - 01:29

Peut-on rajouter les runes en dessous (610 et +) ou y'a t il du codage à rajouter ??


Ceci est en rapport avec ton édit ?

#7 Keraunos

Keraunos

    Newbie lvl 3

  • Membres
  • 23 messages

Posté 05 June 2010 - 09:35

Peut-on rajouter les runes en dessous (610 et +) ou y'a t il du codage à rajouter ??


Ceci est en rapport avec ton édit ?


Salut,

Non en fait j'ai poser ma question avant de tester le script.
Il se trouve que le bot plante au début de la partie de toute façon, vous avez une idée du pourquoi?

Ensuite, au cas où le bot fonctionnerai avec le script, pourrait-on éventuellement ajouter le cubage des runes ? Je vois aussi qu'il y a un début de script pour craft :(

Merci !

#8 Euclide_

Euclide_

    YOOOOOOOOOOO

  • Admin Gms
  • 8923 messages
  • Location :France
  • Trade : Mediator

Posté 05 June 2010 - 13:11

tu utilise bien d2bs ? Assure toi de ne pas avoir fait une erreure.
  • faramir aime ceci

#9 Keraunos

Keraunos

    Newbie lvl 3

  • Membres
  • 23 messages

Posté 05 June 2010 - 14:58

tu utilise bien d2bs ? Assure toi de ne pas avoir fait une erreure.


Et bien oui, j'utilise OOG et tout ce qui va avec, j'ai fais moi m^me tous mes pick it etc. Alors je remplace les deux fichiers indiqués par ceux ci dessus qui sont donc modifiés mais ça plante mon bot... c'est vraiment étrange !

#10 Keraunos

Keraunos

    Newbie lvl 3

  • Membres
  • 23 messages

Posté 05 June 2010 - 16:06

...

Bon ben ça marche, je sais pas ce que j'ai fait mais le bot roule, je verrai s'il cube bien les gemmes mais à priori ça fonctionne...

Merci^^

J'ai toujours mon souci de double diablo 2 à régler maintenant, si vous avez des pistes pour moi :unsure:

#11 Keraunos

Keraunos

    Newbie lvl 3

  • Membres
  • 23 messages

Posté 05 June 2010 - 23:14

Sinon donc y'aurait un solution pour qu'il cube les runes avec ls gemmes approprié ?? :unsure:

#12 alucardnos

alucardnos

    Débutant lvl 1

  • Membres
  • 42 messages

Posté 06 June 2010 - 15:11

Moi qui pensait sa se fesait facilement pour indiquer juska kel gems il peut cuber , je suis un nul XD dans la progrmation

#13 gothvell

gothvell

    Débutant lvl 2

  • Membres
  • 45 messages

Posté 07 June 2010 - 11:15

Je me propose pour essayer de coder un CubeRunes potable, je viens juste de le commencer avec les runes de El -> Ort!
  • faramir aime ceci

#14 gothvell

gothvell

    Débutant lvl 2

  • Membres
  • 45 messages

Posté 08 June 2010 - 13:25

Voici le tout debut avec la fonction de cubage des runes basses ( pompée directement de la fonction de cubage des gemmes ;) ). Je me suis pas encore attaqué au TownManager ( y as 2-3 lignes a rajouter) ni à la partie runes+gems! ( Je finis mes exams et je m'en occupe)!

if(!isIncluded("njip.dbl")) include("njip.dbl");
 
var _NTT_BeltColNeeded = new Array(4);
_NTT_BeltColNeeded[0] = 0;
_NTT_BeltColNeeded[1] = 0;
_NTT_BeltColNeeded[2] = 0;
_NTT_BeltColNeeded[3] = 0;
 
var _NTT_BeltSize = false;
 
var _NTT_OldItems;
 
var NTCubeGems = true;

var NTCubeRunes = true;

var NTPossibleCubingLowRunes = [
//el, eld, tir, nef, eth, ith, tal, ral, ort
610,	611,	612,	613,	614,	615,	616,	617,	618,
];

/*Mid Runes*/

 /*//thul, amn, sol, shael, dol, hel, io, lum, ko, fal, lem
  *619,	620,	621,	622,	623,	624,	625,	626,	627,	628,	629,
  */

/*High Runes*/

 *//pul, um, mal		// On vas pas s'amuser a cuber des Ists!
 *630,	631,	632,
 */

 
var NTPossibleCubingGems = [
//skull, amethyst, sapphire, emerald, ruby, diamond, topaz
597,     557,      567,          572,     577,  582,     562, //chippped
598,     558,      568,          573,     578,  583,     563, //flawed 
599,     559,      569,          574,     579,  584,     564, //regular
600,     560,      570,          575,     580,  585,     565, //flawless
];
 
var NTPossibleCraftingRecipes = [
 
];
 
var _NTT_IgnoredItems = new Array(
"aqv", // Arrows quiver
"cqv", // Bolts quiver
"key", // Keys
"tbk", // Tome of Town Portal
"ibk", // Tome of Identify
"tsc", // Scroll of Town Portal
"isc", // Scroll of Identify
"yps", // Antidote potion
"vps", // Stamina potion
"wms", // Thawing potion
"gps", // Rancid Gas Pot
"ops", // Oil Potion
"gpm", // Choking Gas Pot
"opm", // Exploding Pot
"gpl", // Strangling Gas
"opl", // Fulminating Pot
"hp1","hp2","hp3","hp4","hp5", // Healing potions
"mp1","mp2","mp3","mp4","mp5", // Mana potions
"rvs","rvl"); // Rejuvenation potions
 
// type : 1 = shop, 2 = ressurect, 3 = repair, 4 = potion, 5 = scrolls, 6 = gamble, 7 = ammo, 8 = healing
function NTT_CheckNPC(npc, type)
{
        var _npcclassid;
 
        if(typeof(npc) == "number")
                _npcclassid = npc;
        else
                _npcclassid = npc.classid;
 
        if(type == 1)
        {
                if(_npcclassid == 147 || _npcclassid == 148 || _npcclassid == 154 || _npcclassid == 177 ||
                        _npcclassid == 178 || _npcclassid == 199 || _npcclassid == 202 || _npcclassid == 252 ||
                        _npcclassid == 253 || _npcclassid == 254 || _npcclassid == 255 || _npcclassid == 257 ||
                        _npcclassid == 405 || _npcclassid == 511 || _npcclassid == 512 || _npcclassid == 513)
                        return true;
                else
                        return false;
        }
 
        if(type == 2)
        {
                if(_npcclassid == 150 || _npcclassid == 198 || _npcclassid == 252 || _npcclassid == 367 || _npcclassid == 515)
                        return true;
                else
                        return false;
        }
 
        if(type == 3)
        {
                if(_npcclassid == 154 || _npcclassid == 178 || _npcclassid == 253 || _npcclassid == 257 || _npcclassid == 511)
                        return true;
                else
                        return false;
        }
 
        if(type == 4)
        {
                if(_npcclassid == 148 || _npcclassid == 177 || _npcclassid == 198 || _npcclassid == 202 ||
                        _npcclassid == 255 || _npcclassid == 405 || _npcclassid == 513)
                        return true;
                else
                        return false;
        }
 
        if(type == 5)
        {
                if(_npcclassid == 148 || _npcclassid == 177 || _npcclassid == 255 || _npcclassid == 405 || _npcclassid == 513)
                        return true;
                else
                        return false;
        }
 
        if(type == 6)
        {
                if(_npcclassid == 147 || _npcclassid == 199 || _npcclassid == 254 ||
                        _npcclassid == 405 || _npcclassid == 512 || _npcclassid == 514)
                        return true;
                else
                        return false;
        }
 
        if(type == 7)
        {
                if(_npcclassid == 147 || _npcclassid == 154 || _npcclassid == 178 || _npcclassid == 199 || _npcclassid == 252 ||
                        _npcclassid == 253 || _npcclassid == 257 || _npcclassid == 511 || _npcclassid == 512)
                        return true;
                else
                        return false;
        }
 
        if(type == 8)
        {
                if(_npcclassid == 148 || _npcclassid == 178 || _npcclassid == 255 || _npcclassid == 513)
                        return true;
                else
                        return false;
        }
 
        return false;
}
 
// npc : NPC, stash or cube
function NTT_DoInteract(npc)
{
 debugPrint("ntt do Interact npc:"+npc.name);
        var _uiflag = 0x08;
 
        if(!npc)
                return false;
 
        if(npc.classid == 267)
                _uiflag = 0x19;
        else if(npc.classid == 549)
                _uiflag = 0x1A;
 
        if(getUIFlag(_uiflag))
                return true;
 
        for(var i = 0 ; i < 36 ; i++)
        {
                if((i % 2) == 0)
                {
                        if(getUIFlag(0x17))
                        { 
                                me.cancel(1);
                                NTC_Delay(250); 
                        }
 
                        if(npc.classid == 549)
                                clickItem(1, npc);
                        else
                                npc.interact();
                }
                if((i % 4) == 0){               
                                me.cancel(1);
                }
 
                NTC_Delay(250);
 
                if(getUIFlag(_uiflag))
                {
                        NTC_PingDelay(500);
                        return true;
                }
        }
 
        return false;
}
 
// type : 0 = shop, 1 = gamble
function NTT_DoTrade(npc, type)
{
 debugPrint("ntt_DoTrade npc:"+npc.name);
        if(!npc)
                return false;
 
        if(getUIFlag(0x0C))
                return true;
 
        if(arguments.length < 2)
                type = 0;
 
        for(var i = 0 ; i < 12 ; i++)
        {
                if((i % 4) == 0)
                {
                        if(NTT_CheckNPC(npc.classid, 3))
                                npc.useMenu(0x0D06);
                        else if(type == 1 && NTT_CheckNPC(npc.classid, 6))
                                npc.useMenu(0x0D46);
                        else
                                npc.useMenu(0x0D44);
                }
 
                NTC_Delay(1000);
 
                if(getUIFlag(0x0C))
                {
                        NTC_PingDelay(1000);
 
                        return true;
                }
        }
 
        return false;
}
 
function NTT_MenuCancel()
{
        var i;
        
        for(i = 0 ; i < 4 ; i++)
        {
                if(getUIFlag(0x0C) || getUIFlag(0x0D) || getUIFlag(0x14) || getUIFlag(0x19) || getUIFlag(0x1A))
                {
                        me.cancel(0);
                        NTC_Delay(500);
                }
                else
                        break;
        }
 
        for(i = 0 ; i < 4 ; i++)
        {
                if(getUIFlag(0x08) || getUIFlag(0x17))
                {
                        me.cancel(1);
                        NTC_Delay(250);
                        
                }
                else
                        break;
        }
        
}
 
function NTT_GetCorpses()
{
        var _corpse;
                
        for(var i = 0 ; i < 2 ; i++)
        {
                _corpse = NTC_GetUnit(NTC_UNIT_PLAYER);
 
                do
                {
                        if(_corpse.name == me.name && _corpse.hpmax == 0)
                        {
                                NTC_DoWeaponSwitch(0);
 
                                _corpse.interact();
 
                                NTC_PingDelay(1000);
 
                                break;
                        }
                } while(_corpse.getNext());
        }
        for(var i = 0 ; i < 2 ; i++)
        {
                _corpse = NTC_GetUnit(NTC_UNIT_PLAYER);
                do
                {
                        if(_corpse.name == me.name && _corpse.hpmax == 0)
                        {
                                // st buged corpse telling oog to stop
                                sendCopyData(null, "OOG", 0,"Stop Me");
                                ShowConsole = 0;
                                print("failed to pick corpse, stopping")
                        }
                } while(_corpse.getNext());
        }
        
        
}
 
 
function NTT_CheckMerc()
{
        if(NTConfig_UseMerc)
        {
                if(NTC_GetMerc())
                        return false;
                else
                {
                        if(NTC_MyGold() < me.mercrevivecost)
                                return false;
 
                        return true;
                }
        }
 
        return false;
} 
 
function NTT_ReviveMerc(npc)
{
        var _mygold;
 
        if(!NTT_CheckMerc())
                return true;
 
        if(!npc)
                return false;
 
        if(!getUIFlag(0x08))
                return false;
 
        _mygold = NTC_MyGold();
 
        if(_mygold < me.mercrevivecost)
                return false;
 
        for(var i = 0 ; i < 6 ; i++)
        {
                if((i % 2) == 0)
                        npc.useMenu(0x1507);
 
                NTC_Delay(500);
 
                if(_mygold > NTC_MyGold())
                        return true;
        }
 
        return false;
}
 
function NTT_ResetWeaponMerc()
{
        var i, n;
        var _merc, _items;
        var _result = 0;
 
        _merc = NTC_GetMerc();
 
        if(!_merc)
                return false;
 
        _items = NTC_GetItems(_merc);
 
        for(i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].bodylocation == 4)// && _items[i].getFlag(0x4000000))
                {
                        _result = _items[i].gid;
                        for(n = 0 ; n < 60 ; n++)
                        {
                                if((n % 20) == 0)
                        
                                        clickItem(4, 4);
 
                                NTC_Delay(100);
 
                                if(me.itemoncursor)
                                {
                                        NTC_PingDelay(1000);
                                        break;
                                }
                        }
 
                        if(n >= 60)
                                break;
 
                        for(n = 0 ; n < 100 ; n++)
                        {
                                if((n % 20) == 0)
                                        clickItem(4, 4);
 
                                NTC_Delay(100);
 
                                if(!me.itemoncursor)
                                {
                                        NTC_PingDelay(500);
 
                                        break;;
                                }
                        }
 
                        break;
                }
        }
        if (_result ==0)
                return true;
        
        delay(1500);
        _items = NTC_GetItems(_merc);
        for(i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].bodylocation == 1 )
                {
                        return true;
                }
        }
        if(me.itemoncursor){
                while(me.itemoncursor){
                                clickItem(4, 4);
                                NTC_Delay(1000);
                }
        }else {
        var droped = NTSI_findItemGID(_result);
        if (droped){
                NTSI_PickUpItemInt(droped);
                print("crap i droped merc's wepon pausing");
                NT_Pause=true;
                sendCopyData(null, "OOG", 0,"Stop Me");
                NTC_Delay(100);
        }
        }
        NTSI_PickItems();
        
        
        return false;
}
 
function NTT_CheckRepair(repairpercent)
{
        var _max_dur;
        var _percent;
        var _items = NTC_GetItems();
 
        if(!_items)
                return false;
 
        for(var i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 1 && !_items[i].getFlag(0x400000) && !_items[i].getStat(152) && !getBaseStat(0, _items[i].classid, 59))
                {
                        _max_dur = _items[i].getStat(73);
                        if(_max_dur == 0)
                                continue;
 
                        _percent = Math.floor((_items[i].getStat(72)*100) / (_max_dur*(_items[i].getStat(75)/100 + 1)));
 
                        if(_percent <= repairpercent)
                                return true;
                }
        }
 
        return false;
}
 
function NTT_RepairItems(npc)
{
        var _mygold;
 
        if(!npc)
                return false;
 
        if(!getUIFlag(0x08) || !getUIFlag(0x0C))
                return false;
 
        _mygold = NTC_MyGold();
 
        for(var i = 0 ; i < 6 ; i++)
        {
                if((i % 2) == 0)
                        me.repair();
 
                NTC_Delay(500);
 
                if(_mygold > NTC_MyGold())
                        return true;
        }
 
        return false;
}

/*
 * Verifie la présence de Low Runes par 3 au minimum
 * 
 * @return True if [El] ---> [Ort] >= 3
 */
function NTT_CheckLowRunes()
{
	if(NTCubeRunes)
	{
		var items = me.getItems();
		var existing_runes = [];

		for(var i = 0; i < items.length; i++)
		{
			var current_item = item[i];

                        //verifie l'ensemble des items afin de trouver des trio de runes similaires
			for(var j = 0; j < NTPossibleCubingLowRunes.length; j++)
			{
				if(NTPossibleCubingLowRunes[j] == current_item.classid)
				{
					if(!existing_runes[current_item.name])
						existing_gems[current_item.name] = [];

					existing_runes[current_item.name].push(current_item);
                                        if(existing_runes[current_item.name].length > 2)
                                                return true;
                                }
                        }
                }
        }
        return false;
}
					
 
/**
 * Checks whether any transmutable gems exist
 * 
 * @return True if 3 or more of one type of gem exists, false if otherwise
 */
function NTT_CheckGems()
{
        if(NTCubeGems)
        {
                var items = me.getItems();
                var existing_gems = [];
 
                for(var i = 0; i < items.length; i++)
                {
                        var current_item = items[i];
                        
                        //check all items to see if they're a transmutable gem, and track them if so
                        for(var j = 0; j < NTPossibleCubingGems.length; j++)
                        {
                                if(NTPossibleCubingGems[j] == current_item.classid) 
                                {       
                                        if(!existing_gems[current_item.name])
                                                existing_gems[current_item.name] = [];
 
                                        existing_gems[current_item.name].push(current_item);
                                        if(existing_gems[current_item.name].length > 2)
                                                return true;
                                }
                        }
                }
        }
        return false;
}
 
function NTT_CheckInventory()
{
        var x, y;
        var _items;
 
        var _itemlist = new Array();
        var _ignorestring = _NTT_IgnoredItems.join();
 
        if(!NTC_StashGoldFull() && NTC_MyGoldCarry() > NTConfig_MinGoldToStash )
                return true;
 
        var _invspace = new Array(4);
        _invspace[0] = new Array(10);
        _invspace[1] = new Array(10);
        _invspace[2] = new Array(10);
        _invspace[3] = new Array(10);
 
        for(y = 0 ; y < 4 ; y++)
        {
                for(x = 0 ; x < 10 ; x++)
                        _invspace[y][x] = 0;
        }
 
        _items = NTC_GetItems();
 
        if(!_items)
                return false;
 
        for(var i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 0 && _items[i].location == 0)
                {
                        if(NTConfig_Columns[_items[i].y][_items[i].x] > 0)
                                _itemlist.push(_items[i].code);
 
                        for(y = 0 ; y < _items[i].sizey ; y++)
                        {
                                for(x = 0 ; x < _items[i].sizex ; x++)
                                        _invspace[y+_items[i].y][x+_items[i].x] = 1;
                        }
                }
        }
 
        var _freecols = new Array(10);
 
        for(var x = 0 ; x < 10 ; x++)
                _freecols[x] = 0; 
 
        for(var x = 0 ; x < 10 ; x++)
        {
                for(var y = 0 ; y < 4 ; y++)
                {
                        if(_invspace[y][x] == 1)
                        {
                                _freecols[x] = 1;
                                break;
                        }
                }
        }
 
        var _numfreecols = 0;
 
        for(var x = 0 ; x < 10 ; x++)
        { 
                if(_freecols[x] == 0)
                        _numfreecols++;
        }
 
        if(NTConfig_FreeSpace > _numfreecols)
        {
                for(var x = 0 ; x < _itemlist.length ; x++)
                {
                        if(_ignorestring.indexOf(_itemlist[x]) != -1)
                                _itemlist.splice(x, 1);
                }
 
                if(_itemlist.length > 0)
                        return true;
        }
 
        return false;
}
 
function NTT_CheckStash()
{
        var x, y;
        var _items;
        var _StashHeight = (me.gametype == 0) ? 4 : 8;
        var _stashspace = new Array(_StashHeight);
 
        for(y = 0 ; y < _StashHeight ; y++)
                _stashspace[y] = new Array(6); 
 
        for(y = 0 ; y < _StashHeight ; y++)
        {
                for(x = 0 ; x < 6 ; x++)
                        _stashspace[y][x] = 0;
        }
 
        _items = NTC_GetItems();
 
        if(!_items)
                return false;
 
        for(var i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 0 && _items[i].location == 4)
                {
                        for(y = 0 ; y < _items[i].sizey ; y++)
                        {
                                for(x = 0 ; x < _items[i].sizex ; x++)
                                        _stashspace[y+_items[i].y][x+_items[i].x] = 1;
                        }
                }
        }
 
        for(y = 0 ; y < _StashHeight ; y++)
        {
                for(x = 0 ; x < 6 ; x++)
                {
                        if(_stashspace[y][x] != 1)
                                return true;
                }
        }
 
        return false;
}

/**
 * @desc Bon petit copier//coller de la fonction s'appliquant au gems!
 */
function NTT_CubeLowRunes()
{
        var items = me.getItems();
        var chest = getUnit(2, 267);
        var cube;
        var existing_runes = [];
        for(var i = 0; i < items.length; i++)
        {
                var current_item = items[i];
                //verifie la présence de cube
                if(current_item.code == "box")
                        cube = current_item;
                
                //parcours l'ensemble des objets afin de trouver les runes a cuber
                for(var j = 0; j < NTPossibleCubingLowRunes.length; j++)
                {
                        if(NTPossibleCubingLowRunes[j] == current_item.classid) 
                        {       
                                if(!existing_runes[current_item.name])
                                        existing_runes[current_item.name] = [];
 
                                existing_runes[current_item.name].push(current_item);    
                        }
                }
        }
 
        for(var rune in existing_runes)
        {
                rune_loop:
                while(existing_runes[rune].length >= 3) 
                {
                        var temp_tri_rune = [];
                        temp_tri_rune.push(existing_runes[rune].pop());
                        temp_tri_rune.push(existing_runes[rune].pop());
                        temp_tri_rune.push(existing_runes[rune].pop());
                        
                        //place 3 runes similaires dans le cube
                        for(var i = 0; i < temp_tri_rune.length; i++) 
                        {       
                                delay(400);
                                clickItem(0, temp_tri_rune[i]);
                                delay(400);
                                clickItem(0, cube);
                        }
                        
                        //realise le cubage
                        print(cube.name);
                        delay(400);
                        clickItem(1, cube);
                        var cubed_items = transmuteAndGetItems(cube);
                        
                        if(cubed_items.length > 1)
                                print("runes didn't transmute properly");
                        
                        //place la rune cubée dans l'inventaire
                        placeItemInLocation(cubed_items[0], 0);
                
                        me.cancel(0);
                        chest.interact(); 
                        
                        //place la rune cubée dans le coffre
                        placeItemInLocation(cubed_items[0], 4);
 
                }
        }
 
}
 
/**
 * @desc Checks existing items for any 3 gems that are transmutable
 */
function NTT_CubeGems()
{
        var items = me.getItems();
        var chest = getUnit(2, 267);
        var cube;
        var existing_gems = [];
        for(var i = 0; i < items.length; i++)
        {
                var current_item = items[i];
                //verify cube exists and keep a reference to it
                if(current_item.code == "box")
                        cube = current_item;
                
                //check all items to see if they're a transmutable gem, and track them if so
                for(var j = 0; j < NTPossibleCubingGems.length; j++)
                {
                        if(NTPossibleCubingGems[j] == current_item.classid) 
                        {       
                                if(!existing_gems[current_item.name])
                                        existing_gems[current_item.name] = [];
 
                                existing_gems[current_item.name].push(current_item);    
                        }
                }
        }
 
        for(var gem in existing_gems)
        {
                gem_loop:
                while(existing_gems[gem].length >= 3) 
                {
                        var temp_tri_gem = [];
                        temp_tri_gem.push(existing_gems[gem].pop());
                        temp_tri_gem.push(existing_gems[gem].pop());
                        temp_tri_gem.push(existing_gems[gem].pop());
                        
                        //put 3 gems in the cube
                        for(var i = 0; i < temp_tri_gem.length; i++) 
                        {       
                                delay(400);
                                clickItem(0, temp_tri_gem[i]);
                                delay(400);
                                clickItem(0, cube);
                        }
                        
                        //transmute them
                        print(cube.name);
                        delay(400);
                        clickItem(1, cube);
                        var cubed_items = transmuteAndGetItems(cube);
                        
                        if(cubed_items.length > 1)
                                print("gems didn't transmute properly");
                        
                        //temporarily place in inventory
                        placeItemInLocation(cubed_items[0], 0);
                
                        me.cancel(0);
                        chest.interact(); 
                        
                        //finally place in stash
                        placeItemInLocation(cubed_items[0], 4);
 
                }
        }
 
}
 
/**
 * Transmutes the cube's contents 
 * 
 * @param Cube Unit object of the cube
 * @return Array of items in the cube
 */
function transmuteAndGetItems(cube)
{
        delay(400);
        clickItem(1, cube);
        var items_in_cube = [];
        if(!cube)
                return false;
        
        delay(400);
        transmute();
        delay(400);
        var items = me.getItems();
        
        for(var i = 0; i < items.length; i++)
        {
                if(items[i].location == 3)
                        items_in_cube.push(items[i]);
        }
        return items_in_cube;
}
 
 
/**
 * Places an item in the desired location
 * 
 * @param item Unit object of the item
 * @param location_id Desired location, 0 being inventory, 4 being stash
 */
function placeItemInLocation(item, location_id)
{
        var current_space;
        var inventory_space = [];
        inventory_space.push([1, 1, 1, 1]);
        inventory_space.push([1, 1, 1, 1]);
        inventory_space.push([1, 1, 1, 1]);
        inventory_space.push([1, 1, 1, 1]);
        inventory_space.push([1, 1, 1, 1]);
        inventory_space.push([1, 1, 1, 1]);
        inventory_space.push([1, 1, 1, 1]);
        inventory_space.push([1, 1, 1, 1]);
        inventory_space.push([1, 1, 1, 1]);
        inventory_space.push([1, 1, 1, 1]);
 
        var stash_space =[];
        stash_space.push([1, 1, 1, 1, 1, 1, 1, 1]);
        stash_space.push([1, 1, 1, 1, 1, 1, 1, 1]);
        stash_space.push([1, 1, 1, 1, 1, 1, 1, 1]);
        stash_space.push([1, 1, 1, 1, 1, 1, 1, 1]);
        stash_space.push([1, 1, 1, 1, 1, 1, 1, 1]);
        stash_space.push([1, 1, 1, 1, 1, 1, 1, 1]);
 
        switch(location_id)
        {
                case 0:
                        current_space = inventory_space;
                break;
                case 4:
                        current_space = stash_space;
                break;
        }
        var items = me.getItems();
        
        //set all unavailable spots in current_space to 0
        for(var i = 0; i < items.length; i++)
        {
                if(items[i].location == location_id)
                {
                        var current_item = items[i];
                        for(var x = current_item.x; x < (current_item.sizex + current_item.x) ; x++) 
                        {
                                for(var y = current_item.y; y < (current_item.sizey + current_item.y); y++) 
                                {
                                        current_space[x][y] = 0;
                                }
                        }               
                }
        }
 
 
        delay(400);
        clickItem(0, item);
        delay(400);
        var end_loop = false;
        var safe_to_place = true;
        //search for a valid place to store the item
        for(var space_x = 0; space_x < current_space.length; space_x++)
        {
                var column = current_space[space_x];
                for(var space_y = 0; space_y < column.length; space_y++)
                {
                        //check whether the item will fit at location (space_x, space_y)
                        for(var item_x = space_x; item_x < (item.sizex + space_x); item_x++) 
                        {
                                for(var item_y = space_y; item_y < (item.sizey + space_y); item_y++) 
                                {
                                        if(current_space[item_x][item_y] == 0) 
                                        {
                                                safe_to_place = false;
                                        }
                                }
                        }       
 
                        if(safe_to_place) 
                        {
                                delay(400);
                                clickItem(0, space_x, space_y, location_id);
                                delay(400);
                                column[space_y] = 0;
                                end_loop = true;
                        }
                        safe_to_place = true;
                        if(end_loop)
                                break;
                }
                if(end_loop)
                        break;
        }
}
 
function NTT_ManageStash(invitem)
{
        var i, x, y;
        var _items;
        var _stashall;
        var StashHeight = (me.gametype == 0) ? 4 : 8;
        var _ignorestring = _NTT_IgnoredItems.join();
        var _ignoreitem;
 
        if(!getUIFlag(0x19))
                return false;
 
        if(arguments.length < 1)
                _stashall = true;
        else
                _stashall = false;
 
        if(!NTC_StashGoldFull() && NTC_MyGoldCarry() > NTConfig_MinGoldToStash)
        {
                var _mygold = NTC_MyGoldCarry();
 
                gold(_mygold, 3);
 
                for(i = 0 ; i < 2 ; i++)
                {
                        NTC_Delay(500);
 
                        if(_mygold > NTC_MyGoldCarry())
                                break;
                }
        }
 
        var _stashspace = new Array(StashHeight);
 
        for(y = 0 ; y < StashHeight ; y++)
                _stashspace[y] = new Array(6);
 
        for(y = 0 ; y < StashHeight ; y++)
        {
                for(x = 0 ; x < 6 ; x++)
                        _stashspace[y][x] = 0;
        }
 
        _items = NTC_GetItems();
 
        if(!_items)
                return false;
 
        for(i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 0 && _items[i].location == 4)
                {
                        for(y = 0 ; y < _items[i].sizey ; y++)
                        {
                                for(x = 0 ; x < _items[i].sizex ; x++)
                                        _stashspace[y+_items[i].y][x+_items[i].x] = 1;
                        }
                }
        }
 
        for(var i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 0 && _items[i].location == 0 && (_stashall || (_items[i].x == invitem.x && _items[i].y == invitem.y)))
                {
                        if(_stashall)
                        {
                                _ignoreitem = (NTConfig_Columns[_items[i].y][_items[i].x] == 0);
 
                                if(!_ignoreitem)
                                {
                                        if( _ignorestring.indexOf(_items[i].code) != -1 || (!_items[i].getFlag(0x10) && njipCheckGoodItem(_items[i], NJIP_CHECK_SIMPLE) < 0 ))
                                                _ignoreitem = true;
                                }
                        } 
                        else
                                _ignoreitem = false;
 
                        if(!_ignoreitem)
                        {
                                var _itemdone = false;
 
                                for(y = 0 ; y < StashHeight ; y++)
                                {
                                        if(_itemdone)
                                                break;
 
                                        for(x = 0 ; x < 6 ; x++)
                                        {
                                                if(_itemdone)
                                                        break;
 
                                                if(_stashspace[y][x] == 0)
                                                {
                                                        if((x+_items[i].sizex-1) < 6 && (y+_items[i].sizey-1) < StashHeight)
                                                        {
                                                                var _havespace = true;
 
                                                                for(var m = 0 ; m < _items[i].sizey ; m++)
                                                                {
                                                                        for(var n = 0 ; n < _items[i].sizex ; n++)
                                                                        {
                                                                                if(_stashspace[y+m][x+n] == 1)
                                                                                {
                                                                                        _havespace = false;
                                                                                        m = 4;
                                                                                        break;
                                                                                }
                                                                        }
                                                                }
 
                                                                if(_havespace)
                                                                {
                                                                        if(NTC_ItemToCursor(_items[i]))
                                                                        {
                                                                                NTC_PingDelay(500);
 
                                                                                for(n = 0 ; n < 50 ; n++)
                                                                                {
                                                                                        if((n % 10) == 0)
                                                                                                clickItem(0, x, y, 4);
 
                                                                                        NTC_Delay(100);
 
                                                                                        if(!me.itemoncursor)
                                                                                                break;
                                                                                }
 
                                                                                if(n < 50)
                                                                                {
                                                                                        for(m = 0 ; m < _items[i].sizey ; m++)
                                                                                        {
                                                                                                for(n = 0 ; n < _items[i].sizex ; n++)
                                                                                                        _stashspace[y+m][x+n] = 1;
                                                                                        }
                                                                                }
 
                                                                                NTC_PingDelay(500);
                                                                        }
 
                                                                        _itemdone = true;
                                                                }
                                                        }
                                                }
                                        }
                                }
                        }
 
                        if(!_stashall)
                                return true;
                }
        }
 
        return true;
}
 
// type : id = 0, tp = 1
function NTT_GetScroll(type)
{
        var _items;
        var _scrollcode;
 
        if(arguments.length < 1)
                type = 0;
 
        _items = NTC_GetItems();
 
        if(!_items)
                return false;
 
        if(type)
                _scrollcode = "tsc";
        else
                _scrollcode = "isc";
 
        for(var i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 0 && _items[i].location == 0 && _items[i].code == _scrollcode)
                        return _items[i];
        }
 
        return false;
}
 
// type : id = 0, tp = 1
function NTT_GetTome(type)
{
        var _items;
        var _tomecode;
 
        if(arguments.length < 1)
                type = 0;
 
        _items = NTC_GetItems();
 
        if(!_items)
                return false;
 
        if(type)
                _tomecode = "tbk";
        else
                _tomecode = "ibk";
 
        for(var i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 0 && _items[i].location == 0 && _items[i].code == _tomecode)
                        return _items[i];
        }
 
        return false;
}
 
// type : id = 0, tp = 1
function NTT_FillTome(npc, type)
{
        var _tome;
 
        if(arguments.length < 1)
                return false;
 
        if(arguments.length < 2)
                type = 0;
 
        _tome = NTT_GetTome(type);
 
        if(_tome)
        {
                var _items;
                var _scrollcode;
 
                if(_tome.getStat(70) >= 20)
                        return true;
//_items = who.getItems();
                _items = NTC_GetItems(npc);
 
                if(!_items)
                        return false;
 
                if(type)
                        _scrollcode = "tsc";
                else
                        _scrollcode = "isc";
 
                for(var i = 0 ; i < _items.length ; i++)
                {
                        if(_items[i].code == _scrollcode)
                                return NTT_ShopItem(_items[i], npc, 3);
                }
        }
 
        return false;
}
 
// type : id = 0, tp = 1
function NTT_BuyScrolls(npc, type, amount)
{
        var _items;
        var _scrollcode;
        var _counter = 0;
 
        if(arguments.length < 1)
                return false;
 
        if(arguments.length < 2)
                type = 0;
 
        if(arguments.length < 3)
                amount = 1;
 
        if(amount == 0)
                return false;
 
        _items = NTC_GetItems(npc);
 
        if(!_items)
                return false;
 
        if(type)
                _scrollcode = "tsc";
        else
                _scrollcode = "isc";
 
        for(var i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].code == _scrollcode)
                {
                        for(var n = 0 ; n < amount ; n++)
                        {
                                if(NTT_ShopItem(_items[i], npc, 2))
                                        _counter++;
                        }
 
                        break;
                }
        }
 
        return (_counter > 0);
}
 
function NTT_GetKey()
{
        var _items;
 
        _items = NTC_GetItems();
 
        if(!_items)
                return false;
 
        for(var i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 0 && _items[i].location == 0 && _items[i].code == "key")
                        return _items[i];
        }
 
        return false;
}
 
function NTT_FillKey(npc)
{
        var _key;
        var _items;
 
        if(arguments.length < 1)
                return false;
 
        _key = NTT_GetKey();
 
        if(_key)
        {
                if(_key.getStat(70) >= 12)
                        return true;
 
                _items = NTC_GetItems(npc);
 
                if(!_items)
                        return false;
 
                for(var i = 0 ; i < _items.length ; i++)
                {
                        if(_items[i].code == "key")
                                return NTT_ShopItem(_items[i], npc, 3);
                }
        }
        else
        {
                _items = NTC_GetItems(npc);
 
                if(!_items)
                        return false;
 
                for(var i = 0 ; i < _items.length ; i++)
                {
                        if(_items[i].code == "key")
                        {
                                NTT_ShopItem(_items[i], npc, 2);
                                return NTT_ShopItem(_items[i], npc, 3);
                        }
                }
        }
 
        return false;
}
 
function NTT_CheckBelt()
{
        var _needpotions = false;
 
        for(var i = 0 ; i < 4 ; i++)
        {
                _NTT_BeltColNeeded[i] = NTT_GetNeededPotionsColInt(NTConfig_BeltColType[i], i);
 
                if(4-_NTT_BeltColNeeded[i] < NTConfig_BeltColMin[i] && NTConfig_BeltColType[i] != "rv")
                        _needpotions = true;
        }
 
        return _needpotions;
}
 
function NTT_FillBelt(npc)
{
        if(!npc)
                return false;
 
        if(!getUIFlag(0x08) || !getUIFlag(0x0C))
                return false;
 
        if(!_NTT_BeltSize)
                _NTT_BeltSize = NTC_GetBeltSize();
 
        if(_NTT_BeltColNeeded[3] == _NTT_BeltSize || _NTT_BeltColNeeded[2] == _NTT_BeltSize || _NTT_BeltColNeeded[1] == _NTT_BeltSize || _NTT_BeltColNeeded[0] == _NTT_BeltSize)
                NTT_BuyPotionsSlowInt(npc);
        else
                NTT_BuyPotionsFastInt(npc);
 
        return true;
}
 
function NTT_CheckHeal()
{
        var _mercHP;
 
        if(me.hp < parseInt((me.hpmax*NTConfig_SkipHealLife)/100) || me.mp < parseInt((me.mpmax*NTConfig_SkipHealMana)/100))
                return true;
 
        _mercHP = getMercHP();
 
        if(_mercHP > 0 && _mercHP < NTConfig_SkipHealLife)
                return true;
 
        return false;
}
 
function NTT_CheckSpace(itemX, itemY)
{
        var i, j, x, y;
        var _items;
 
        var _invspace = new Array(4);
        _invspace[0] = new Array(10);
        _invspace[1] = new Array(10);
        _invspace[2] = new Array(10);
        _invspace[3] = new Array(10);
 
        for(y = 0 ; y < 4 ; y++)
        {
                for(x = 0 ; x < 10 ; x++)
                        _invspace[y][x] = 0;
        }
 
        _items = NTC_GetItems();
 
        if(!_items)
                return false;
 
        for(i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 0 && _items[i].location == 0)
                {
                        for(y = 0 ; y < _items[i].sizey ; y++)
                        {
                                for(x = 0 ; x < _items[i].sizex ; x++)
                                        _invspace[y+_items[i].y][x+_items[i].x] = 1;
                        }
                }
        }
 
        for(i = 0 ; i < 5-itemY ; i++)
        {
                invloop2:
 
                for(j = 0 ; j < 11-itemX ; j++)
                {
                        for(y = 0 ; y < itemY ; y++)
                        {
                                for(x = 0 ; x < itemX ; x++)
                                {
                                        if(_invspace[i+y][j+x])
                                                continue invloop2;
                                }
                        }
 
                        return true;
                }
        }
 
        return false;
}
 
function NTT_CleanPotions()
{
        var _items = NTC_GetItems();
 
        if(!_items)
                return false;
 
        for(var i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 0 && _items[i].location == 0 && (_items[i].itemType == 76 || _items[i].itemType == 77 || _items[i].itemType == 78))
                {
                        if(NTConfig_Columns[_items[i].y][_items[i].x] > 0)
                        {
                                _items[i].interact();
 
                                NTC_PingDelay(500);
                        }
                }
        }
return true;
}
 
function NTT_ClearInventory()
{
 debugPrint("ntt clear inventory");
        var _retval = true;
        var _ignorestring = _NTT_IgnoredItems.join();
        var _items;
 
        _items = NTC_GetItems();
 
        if(!_items)
                return false;
 
        for(var i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 0 && _items[i].location == 0)
                {
                        if(NTConfig_Columns[_items[i].y][_items[i].x] > 0)
                        {
                                if(_ignorestring.indexOf(_items[i].code) != -1 || !_items[i].getFlag(0x10))
                                        continue;
 
                                if(njipCheckGoodItem(_items[i], NJIP_CHECK_SIMPLE) == 0)
                                {
                                        if(NTT_DropItem(_items[i]))
                                                NTC_PingDelay(250);
                                        else
                                                _retval = false;
                                }
                        }
                }
        }
 
        return _retval;
}
 
function NTT_DropItem(item)
{
 debugPrint("ntt dropItem");
        if(!item)
                return false;
 
        if(NTC_ItemToCursor(item))
                return NTC_ClearCursor();
 
        return false;
}
 
function NTT_ClearBelt()
{
        var i;
        var _result, _needdrop;
        var _items;
 
        do
        {
                _items = NTC_GetItems();
 
                if(!_items)
                        return false;
 
                _result = true;
 
                for(i = 0 ; i < _items.length ; i++)
                {
                        if(_items[i].mode == 2 && _items[i].x < 4)
                        {
                                _needdrop = false;
 
                                switch(_items[i].itemType)
                                {
                                        case 76:
                                                if( NTConfig_BeltColType[_items[i].x] != "hp" && NTConfig_BeltColMin[_items[i].x] != 0 )
                                                        _needdrop = true;
                                                break;
                                                
                                        case 77:
                                                if( NTConfig_BeltColType[_items[i].x] != "mp" && NTConfig_BeltColMin[_items[i].x] != 0 )
                                                        _needdrop = true;
                                                break;
                                                
                                        case 78:
                                                if( NTConfig_BeltColType[_items[i].x] != "rv" && NTConfig_BeltColMin[_items[i].x] != 0 )
                                                        _needdrop = true;
                                                break;
                                                
                                        default:
                                                _needdrop = true;
                                                break;
                                }
 
                                if(_needdrop)
                                {
                                        if(NTT_DropItem(_items[i]))
                                        {
                                                NTC_Delay(200);
                                        }
 
                                        _result = false;
                                }
                        }
                }
        } while(!_result);
 
        return _result;
}
 
// mode : 1 = sell, 2 = buy, 3 = shift buy
function NTT_ShopItem(item, npc, mode)
{
 debugPrint("ntt ShopItem:"+item.name+" NPC:"+npc.name+" mode:"+mode);
        var _mygold = NTC_MyGold();
 
        if(mode > 1)
        {
                if(version() == "1.1.1"){
                        if(item.getPrice(npc, 0) > _mygold)
                                return false;
                }else{
                        if(item.getItemCost(0) > _mygold)
                                return false;
                }
        }
        if(mode > 1)
        {
                var _havespace = false;
 
                if(item.code == "isc" || item.code == "tsc")
                {
                        var _book = (item.code == "isc") ? NTT_GetTome(0) : NTT_GetTome(1);
 
                        if(_book && _book.getStat(70) < 20)
                                _havespace = true;
                }
 
                if(!_havespace)
                {       
                        if(NTT_CheckSpace(item.sizex, item.sizey))
                                _havespace = true;
                }
 
                if(_havespace)
                {
                        debugPrintBeltGID();
                        
                        for(var i = 0 ; i < 60 ; i++)
                        {
                                if(i == 0)
                                {
                                        //sendCopyData(null, "OOG", 0,"ntt ShopItem:"+item.name+" NPC:"+npc.name+" mode:"+mode+"i: "+i+"loc: "+item.location);
                                        debugPrint("ntt ShopItem:"+item.name+" NPC:"+npc.name+" mode:"+mode+"item toSource: "+item.toSource());
                                        NTC_Delay(600);
                                        item.shop(mode > 2 ? 6 : 2);
                                        debugPrint("ntt ShopItem:returned");
                                
                                }
                                
                                debugPrintBeltGID();
                                
                                NTC_Delay(100);
                                
                                if(_mygold > NTC_MyGold())
                                {
                                        debugPrint("ntt ShopItem:post Buying Delay");
                                        NTC_PingDelay(100);     
                                        
                                        return true;
                                }
                        }
                }
        }
        else
        {
                if(NTC_ItemToCursor(item))
                {
                        for(var i = 0 ; i < 50 ; i++)
                        {
                                if((i % 10) == 0)
                                        item.shop(1);
 
                                NTC_Delay(100);
 
                                if(!me.itemoncursor)
                                {
                                        NTC_PingDelay(750);
                                        return true;
                                }
                        }
                }
        }
 
        return false;
}
 
function NTT_IdItem(scroll, uniditem)
{
        var i, _timer;
 
        if(arguments.length < 1 || !scroll)
                return false;
 
        if(arguments.length < 2 || !uniditem)
                return false;
 
        if(uniditem.getFlag(0x10))
                return true;
 
        for(i = 0 ; i < 30 ; i++)
        {
                if((i % 10) == 0)
                        clickItem(1, scroll);
 
                NTC_Delay(100);
 
                if(getCursorType() == 6)
                        break;
        }
 
        if(getCursorType() != 6)
                return false;
 
        NTC_PingDelay(250);
 
        for(i = 0 ; i < 60 ; i++)
        {
                if((i % 20) == 0)
                        clickItem(0, uniditem);
 
                NTC_Delay(100);
 
                if(uniditem.getFlag(0x10))
                {
                        NTC_PingDelay(500);
                        return true;
                }
        }
 
        return false;
}
 
function NTT_CheckUnids()
{
        var _unidcount = 0;
        var _items = NTC_GetItems();
 
        if(!_items)
                return _unidcount;
 
        for(var i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 0 && _items[i].location == 0 && !_items[i].getFlag(0x10))
                        _unidcount++;
        }
 
        return _unidcount;
}
 
function NTT_GetUnidItems()
{
        var _uniditems = new Array();
        var _items = NTC_GetItems();
 
        if(!_items)
                return _uniditems;
 
        for(var i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 0 && _items[i].location == 0 && !_items[i].getFlag(0x10))
                        _uniditems.push(copyUnit(_items[i]));
        }
 
        return _uniditems;
}
 
function NTT_GambleIt(npc)
{
        var _gambleitem, _newitem;
 
        if(!npc)
                return false;
 
        if(!getUIFlag(0x08) || !getUIFlag(0x0C))
                return false;
 
        _gambleitem = NTC_GetItems(npc);
 
        if(!_gambleitem)
                return false;
 
        for(var i = 0 ; i < _gambleitem.length ; i++)
        {
                if(NTC_MyGold() < NTConfig_GambleStopGold)
                        return false;
 
                if(NTT_IsItemInGambleArrayInt(_gambleitem[i].code))
                {
                        if(NTT_CheckSpace(_gambleitem[i].sizex, _gambleitem[i].sizey))
                        {
                                NTT_GetOldItemsInt();
 
                                if(NTT_ShopItem(_gambleitem[i], npc, 2))
                                        _newitem = NTT_GetGambledItemInt();
                                else
                                        return false;
 
                                if(_newitem)
                                {
                                        while(!_newitem.getFlag(0x10))
                                                NTC_Delay(100);
 
                                        NTC_PingDelay(100);
                                        var _isEthereal = (_newitem.getFlag(0x400000)) ? "1" : "0";
                                        if(njipCheckGoodItem(_newitem, NJIP_CHECK_SIMPLE) > 0){
                                                writeLog(_newitem, me, _isEthereal, 0);
                                                NTC_SendLogToOOG("Kept [" + NTC_ItemQualityToNameList[_newitem.quality] + "] " + _newitem.name);
                                        }else{
                                                writeLog(_newitem, me, _isEthereal, 1);
                                                NTT_ShopItem(_newitem, npc, 1);
                                        }
                                }
                        } 
                }
        }
 
        return true;
}
 
// Internal function
function NTT_IsItemInGambleArrayInt(itemcode)
{
        for(var i = 0 ; i < NTConfig_GambleItem.length ; i++)
        {
                if(itemcode == NTConfig_GambleItem[i])
                        return true;
        }
 
        return false;
}
 
function NTT_GetPotionAtNPCInt(type, npc)
{
        var _items;
 
        if(!type)
                return false;
 
        if(type == "hp" || type == "mp")
        {
                _items = NTC_GetItems(npc);
 
                if(_items)
                {
                        var n;
 
                        for(var i = _items.length -1 ; i > 0   ; i--)
                        {
                                for(n = 5 ; n > 0 ; n--)
                                {
                                        if(_items[i].code == (type+n))
                                                return _items[i];
                                }
                        }
                }
        } 
        else
        {
                if(type == "rv")
                        return false;
 
                _items = NTC_GetItems(npc);
 
                if(_items)
                {
                        for(var i = 0 ; i < _items.length ; i++)
                        {
                                if(_items[i].code == type)
                                        return _items[i];
                        }
                }
        }
 
        return false;
}
 
function NTT_BuyPotionsFastInt(npc)
{
        var i, n;
        var _insert, _potion;
        var _typearray = new Array();
 
        for(i = 0 ; i < 4 ; i++)
        {
                if(_NTT_BeltColNeeded[i] > 0)
                {
                        if(_typearray.length == 0)
                                _typearray.push(NTConfig_BeltColType[i]);
                        else
                        {
                                _insert = true;
 
                                for(n = 0 ; n < _typearray.length ; n++)
                                {
                                        if(_typearray[n] == NTConfig_BeltColType[i])
                                                _insert = false;
                                }
 
                                if(_insert)
                                        _typearray.push(NTConfig_BeltColType[i]);
                        }
                }
        }
 
        for(i = 0 ; i < _typearray.length ; i++)
        {
                if(_typearray[i] == "rv")
                        continue;
 
                _potion = NTT_GetPotionAtNPCInt(_typearray[i], npc);
 
                if(_potion)
                { 
                        if(NTT_ShopItem(_potion, npc, 3))
                                continue;
                        else
                                return false;
                }
                else
                        return false;
        }
 
        return true;
}
 
function NTT_BuyPotionsColInt(npc, col)
{
        var _numpotions;
        var _potion;
 
        if(col < 0 || col > 3)
                return false;
 
        if(NTConfig_BeltColType[col] == "rv")
                return false;
 
        _numpotions = _NTT_BeltColNeeded[col];
 
        if(_numpotions == 0)
                return false;
 
        if(_numpotions > _NTT_BeltSize)
                _numpotions = _NTT_BeltSize;
 
        for(var _buyloop = 0 ; _buyloop < _numpotions ; _buyloop++)
        {
                _potion = NTT_GetPotionAtNPCInt(NTConfig_BeltColType[col], npc);
 
                if(_potion)
                        NTT_ShopItem(_potion, npc, 2);
                else
                        return false;
        }
        
        return true;
}
 
function NTT_BuyPotionsSlowInt(npc)
{
        var _currentcol;
 
        for(_currentcol = 0 ; _currentcol < 4 ; _currentcol++)
        {
                if(_NTT_BeltColNeeded[_currentcol] == _NTT_BeltSize)
                {
                        NTT_BuyPotionsColInt(npc, _currentcol);
                        _NTT_BeltColNeeded[_currentcol] = 0;
                }
        }
 
        for(_currentcol = 0 ; _currentcol < 4 ; _currentcol++)
                NTT_BuyPotionsColInt(npc, _currentcol);
 
        return true;
}
 
function NTT_GetNeededPotionsColInt(type, column)
{
        var _restartloop = true;
        var _amountneeded = 0;
        var _items;
 
        if(!type || column > 3)
                return false;
 
        if(!_NTT_BeltSize)
                _NTT_BeltSize = NTC_GetBeltSize();
 
        potionloop:
        do
        {
                _amountneeded = _NTT_BeltSize;
 
                _items = NTC_GetItems();
 
                if(!_items)
                        continue potionloop;
 
                for(var i = 0 ; i < _items.length ; i++)
                {
                        if(_items[i].mode == 2)
                        {
                                if(NTT_PotInRightColInt(_items[i].x, column, _NTT_BeltSize))
                                {
                                        var _potcode = _items[i].code;
 
                                        if(_potcode.indexOf(type) != -1)
                                                _amountneeded--;
                                        else
                                        {
                                                if(_potcode.indexOf("rv") != -1)
                                                {
                                                        if(_items[i].x < 4)
                                                                return 0;
                                                        else
                                                                _amountneeded--;
                                                }
                                                else
                                                {
                                                        clickItem(1, _items[i]);
 
                                                        NTC_PingDelay(500);
                                                        continue potionloop;
                                                }
                                        }
                                }
                        }
                }
 
                _restartloop = false;
        } while(_restartloop);
 
        return _amountneeded;
}
 
function NTT_PotInRightColInt(potx, column, beltsize)
{
        for(var i = 0 ; i < beltsize ; i++)
        {
                if(potx-i*4 == column)
                        return true;
        }
 
        return false;
}
 
function NTT_GetGambledItemInt()
{
        var n;
        var _items;
        var _founditem;
 
        _items = NTC_GetItems();
 
        if(!_items)
                return false;
 
        for(var i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 0 && _items[i].location == 0)
                {
                        _founditem = true;
 
                        for(n = 0 ; n < _NTT_OldItems.length ; n++)
                        {
                                if(_items[i].gid == _NTT_OldItems[n])
                                {
                                        _founditem = false;
                                        break;
                                }
                        }
 
                        if(_founditem)
                                return _items[i];
                }
        }
 
        return false;
}
 
function NTT_GetOldItemsInt()
{
        var _items;
 
        _NTT_OldItems = new Array();
 
        _items = NTC_GetItems();
 
        if(!_items)
                return false;
 
        for(var i = 0 ; i < _items.length ; i++)
        {
                if(_items[i].mode == 0 && _items[i].location == 0)
                        _NTT_OldItems.push(_items[i].gid);
        }
return true;
}

  • faramir aime ceci

#15 MMi

MMi

    Hard Gamer

  • Membres
  • 254 messages
  • Location :IDF

Posté 09 June 2010 - 17:00

Voilà que mon bot jette le cube ><

#16 Keraunos

Keraunos

    Newbie lvl 3

  • Membres
  • 23 messages

Posté 13 June 2010 - 15:49

Lol MMi moi mon bot jette soncube parfois rarement mais ça m'est arrivé)

Sinon Gothvell si tu y arrive c'est cool !^^


Sinon pour ceux qui n'aurait pas trouvé comment ne cuber que les gemmes sans defaut et pas les inférieurs par exemple, il suffit juste de rajouter // devant les lignes correspondantes!

voilou :D

#17 gothvell

gothvell

    Débutant lvl 2

  • Membres
  • 45 messages

Posté 18 June 2010 - 08:44

Lol MMi moi mon bot jette soncube parfois rarement mais ça m'est arrivé)

Sinon Gothvell si tu y arrive c'est cool !^^


Sinon pour ceux qui n'aurait pas trouvé comment ne cuber que les gemmes sans defaut et pas les inférieurs par exemple, il suffit juste de rajouter // devant les lignes correspondantes!

voilou :)


Encore des exams lundi, mardi et mercredi ... après je termine cette histoire, le code risque d'etre plutot moche pour les runes qui nécessitent des gemmes ^^ !

#18 masamune

masamune

    Newbie lvl 4

  • Membres
  • 27 messages

Posté 19 June 2010 - 18:57

Bonne chance. Moi aussi j'ai des sortes d'exam, je compatis. :)


Moi il me fait peur ce script. xD

#19 mitsu

mitsu

    Newbie lvl 1

  • Membres
  • 3 messages

Posté 14 March 2011 - 00:12

Bonsoir,

Je me permet de remonter ce topic vieux de quelques années.
Je voudrai savoir si ce script fonctionne avec la version 1.3.3 de d2bs, j'ai testé mais visiblement il ne fait rien mais je suis pas sûr de n'avoir rien oublié.
Dois-je notifier quelque part que je veux que mon personnage cube ou seul le remplacement des fichiers et l'activation du cube via ces fichiers suffit ?
Merci d'avance.

Edit : finalement j'ai trouvé et ça fonctionne ^^
merci pour ce petit script for intéressant.

#20 Mr_toc

Mr_toc

    Gamer lvl 2

  • Membres
  • 170 messages

Posté 02 April 2011 - 15:53

Bonsoir,

Je me permet de remonter ce topic vieux de quelques années.
Je voudrai savoir si ce script fonctionne avec la version 1.3.3 de d2bs, j'ai testé mais visiblement il ne fait rien mais je suis pas sûr de n'avoir rien oublié.
Dois-je notifier quelque part que je veux que mon personnage cube ou seul le remplacement des fichiers et l'activation du cube via ces fichiers suffit ?
Merci d'avance.

Edit : finalement j'ai trouvé et ça fonctionne ^^
merci pour ce petit script for intéressant.


Sa m'intéresserait de savoir comment tu as fait, sa ne marche pas pour moi