Préambule, un shop bot c'est quoi ?
C'est un bot dont le but et de visiter les npc en boucle (Anya, Larzuk, etc) afin d'y recherche certain item de valeur, griffe d’assassins, armures 4 trous plus vie, armes +3 bo avec str...
Installation du script
Après avoir téléchargé ShoppingScript pour d2nt, copier le fichier "NTShopbot.ntj" vers votre répertoire d'installation de d2nt dans le dossier bot à l'emplacement où se situent les autres scripts de bot (D2NT\scripts\NTBot\bots).
Ensuite, nous allons créer un nouveau fichier ".nip" (pick list) qui accueillera la liste d'objet que nous chercherons chez les marchands (npc).
Dans (D2NT\scripts\NTBot\item_configs) créer un dossier shoping, puis dans (D2NT\scripts\NTBot\item_configs\shoping) créer un fichier "shoping.nip". C'est dans se fichier que nous allons indiquer la liste des items à rechercher, si vous ne savez pas exactement ce que vous recherchez, utilisez l'exemple ci dessous pour votre liste.
[Type] == Gloves && [Quality] == magic # [IAS] == 20 && [JavelinandSpearSkillTab] == 3 [Name] == RunicTalons && [Quality] == Magic # [AssassinSkills] == 2 && [SkillLightningSentry] == 3 [Name] == RunicTalons && [Quality] == Magic # [TrapsSkillTab] == 3 && [SkillLightningSentry] >= 2 [Name] == RunicTalons && [Quality] == Magic # [TrapsSkillTab] >= 2 && [SkillLightningSentry] == 3 [Name] == RunicTalons && [Quality] == Magic # [IAS] >= 20 && [SkillLightningSentry] >= 2 [Name] == RunicTalons && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [SkillLightningSentry] >= 2 [Name] == RunicTalons && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [SkillMindblast] >= 2 [Name] == RunicTalons && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [TrapsSkillTab] >= 2 [Name] == RunicTalons && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [AssassinSkills] == 2 [Name] == RunicTalons && [Quality] == Magic # [IAS] >= 30 && [Sockets] == 3 [Name] == RunicTalons && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [IAS] >= 20 [Name] == GreaterTalons && [Quality] == Magic # [AssassinSkills] == 2 && [SkillLightningSentry] == 3 [Name] == GreaterTalons && [Quality] == Magic # [TrapsSkillTab] == 3 && [SkillLightningSentry] >= 2 [Name] == GreaterTalons && [Quality] == Magic # [TrapsSkillTab] >= 2 && [SkillLightningSentry] == 3 [Name] == GreaterTalons && [Quality] == Magic # [IAS] >= 20 && [SkillLightningSentry] >= 2 [Name] == GreaterTalons && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [SkillLightningSentry] >= 2 [Name] == GreaterTalons && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [SkillMindblast] >= 2 [Name] == GreaterTalons && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [TrapsSkillTab] >= 2 [Name] == GreaterTalons && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [AssassinSkills] == 2 [Name] == GreaterTalons && [Quality] == Magic # [IAS] >= 30 && [Sockets] == 3 [Name] == GreaterTalons && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [IAS] >= 20 [Name] == FeralClaws && [Quality] == Magic # [AssassinSkills] == 2 && [SkillLightningSentry] == 3 [Name] == WristSword && [Quality] == Magic # [AssassinSkills] == 2 && [SkillLightningSentry] == 3 [Name] == BattleCestus && [Quality] == Magic # [AssassinSkills] == 2 && [SkillLightningSentry] == 3 [Name] == FeralClaws && [Quality] == Magic # [TrapsSkillTab] == 3 && [SkillLightningSentry] >= 2 [Name] == WristSword && [Quality] == Magic # [TrapsSkillTab] == 3 && [SkillLightningSentry] >= 2 [Name] == BattleCestus && [Quality] == Magic # [TrapsSkillTab] == 3 && [SkillLightningSentry] >= 2 [Name] == FeralClaws && [Quality] == Magic # [TrapsSkillTab] >= 2 && [SkillLightningSentry] == 3 [Name] == WristSword && [Quality] == Magic # [TrapsSkillTab] >= 2 && [SkillLightningSentry] == 3 [Name] == BattleCestus && [Quality] == Magic # [TrapsSkillTab] >= 2 && [SkillLightningSentry] == 3 [Name] == FeralClaws && [Quality] == Magic # [IAS] >= 20 && [SkillLightningSentry] >= 2 [Name] == WristSword && [Quality] == Magic # [IAS] >= 20 && [SkillLightningSentry] >= 2 [Name] == BattleCestus && [Quality] == Magic # [IAS] >= 20 && [SkillLightningSentry] >= 2 [Name] == FeralClaws && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [SkillLightningSentry] >= 2 [Name] == WristSword && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [SkillLightningSentry] >= 2 [Name] == BattleCestus && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [SkillLightningSentry] >= 2 [Name] == FeralClaws && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [SkillMindblast] >= 2 [Name] == WristSword && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [SkillMindblast] >= 2 [Name] == BattleCestus && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [SkillMindblast] >= 2 [Name] == FeralClaws && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [TrapsSkillTab] >= 2 [Name] == WristSword && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [TrapsSkillTab] >= 2 [Name] == BattleCestus && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [TrapsSkillTab] >= 2 [Name] == FeralClaws && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [AssassinSkills] == 2 [Name] == WristSword && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [AssassinSkills] == 2 [Name] == BattleCestus && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [AssassinSkills] == 2 [Name] == FeralClaws && [Quality] == Magic # [IAS] >= 30 && [Sockets] == 3 [Name] == WristSword && [Quality] == Magic # [IAS] >= 30 && [Sockets] == 3 [Name] == BattleCestus && [Quality] == Magic # [IAS] >= 30 && [Sockets] == 3 [Name] == FeralClaws && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [IAS] >= 20 [Name] == WristSword && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [IAS] >= 20 [Name] == BattleCestus && [Quality] == Magic # [ItemToHitPerLevel] >= 1 && [IAS] >= 20 [Name] == Glaive && [Quality] == magic # [warcriesskilltab] == 3 && [Strength] >= 10 [Name] == Throwingspear && [Quality] == magic # [warcriesskilltab] == 3 && [Strength] >= 10 [Name] == Balancedknife && [Quality] == magic # [warcriesskilltab] == 3 && [Strength] >= 10 [Name] == Glaive && [Quality] == magic # [warcriesskilltab] == 3 && [Dexterity] >= 10 [Name] == Throwingspear && [Quality] == magic # [warcriesskilltab] == 3 && [Dexterity] >= 10 [Name] == Balancedknife && [Quality] == magic # [warcriesskilltab] == 3 && [Dexterity] >= 10 [Name] == ArchonPlate && [Quality] == magic # [MaxHp] >= 60 && [Sockets] == 4 [Name] == ArchonPlate && [Quality] == magic # [Strength] >= 20 && [Sockets] == 4 [Name] == ArchonPlate && [Quality] == magic # [Dexterity] >= 15 && [Sockets] == 4 [Name] == ArchonPlate && [Quality] == magic # [FHR] >= 24 && [Sockets] == 4 [Name] == ArchonPlate && [Quality] == magic # [ItemPoisonLengthResist] >= 75 && [Sockets] == 4 [Name] == ArchonPlate && [Quality] == magic && [Flag] == ethereal # [Sockets] == 4 && [ItemReplenishDurability] >= 1 [Name] == ArchonPlate && [Quality] == magic && [Flag] == ethereal # [Sockets] == 4 && [Durability] == 0 [Name] == SacredArmor && [Quality] == magic # [MaxHp] >= 99 && [Sockets] == 4 [Name] == SacredArmor && [Quality] == magic && [Flag] == ethereal # [Sockets] == 4 && [ItemReplenishDurability] >= 1 [Name] == SacredArmor && [Quality] == magic && [Flag] == ethereal # [Sockets] == 4 && [Durability] == 0 [Name] == WireFleece && [Quality] == magic # [Strength] >= 20 && [Sockets] == 4 [Name] == WireFleece && [Quality] == magic # [Dexterity] >= 15 && [Sockets] == 4 [Name] == WireFleece && [Quality] == magic # [FHR] >= 24 && [Sockets] == 4 [Name] == WireFleece && [Quality] == magic # [MaxHp]>=60 && [Sockets] == 4 [Name] == DuskShroud && [Quality] == magic # [Strength] >= 20 && [Sockets] == 4 [Name] == DuskShroud && [Quality] == magic # [Dexterity] >= 15 && [Sockets] == 4 [Name] == DuskShroud && [Quality] == magic # [FHR] >= 24 && [Sockets] == 4 [Name] == DuskShroud && [Quality] == magic # [MaxHp] >= 60 && [Sockets] == 4 [Name] == BalrogSkin && [Quality] == magic # [MaxHp] >= 60 && [Sockets] == 4 [Name] == Wyrmhide && [Quality] == magic # [Strength] >= 20 && [Sockets] == 4 [Name] == Wyrmhide && [Quality] == magic # [Dexterity] >= 15 && [Sockets] == 4 [Name] == Wyrmhide && [Quality] == magic # [FHR] >= 24 && [Sockets] == 4 [Name] == Wyrmhide && [Quality] == magic # [MaxHp] >= 60 && [Sockets] == 4 [Name] == ScarabHusk && [Quality] == magic # [Strength] >= 20 && [Sockets] == 4 [Name] == ScarabHusk && [Quality] == magic # [Dexterity] >= 15 && [Sockets] == 4 [Name] == ScarabHusk && [Quality] == magic # [FHR] >= 24 && [Sockets] == 4 [Name] == ScarabHusk && [Quality] == magic # [MaxHp] >= 60 && [Sockets] == 4 [Name] == Boneweave && [Quality] == magic # [MaxHp] >= 60 && [Sockets] == 4 [Name] == GreatHauberk && [Quality] == magic # [MaxHp] >= 60 && [Sockets] == 4 [Name] == GothicPlate && [Quality] == magic # [MaxHp] >= 60 && [Sockets] == 4 [Name] == FullPlateMail && [Quality] == magic # [MaxHp] >= 60 && [Sockets] == 4 [Name] == AncientArmor && [Quality] == magic # [MaxHp] >= 60 && [Sockets] == 4 [Name] == ChaosArmor && [Quality] == magic # [MaxHp] >= 60 && [Sockets] == 4 [Name] == OrnatePlate && [Quality] == magic # [MaxHp] >= 60 && [Sockets] == 4 [Name] == Mageplate && [Quality] == magic # [MaxHp] == 80 && [Sockets] == 3 [Name] == Lightplate && [Quality] == magic # [MaxHp] == 80 && [Sockets] == 3 [Type] == shield && [class] == elite && [Quality] == magic && [Flag] != ethereal # [Sockets] == 3 && ([FBR] == 30 || [MaxHp] >= 50 || [FHR] == 17) [Type] == Helm && [Quality] == Magic # [MaxHp] >= 20 && [Sockets] == 3 [Name] == Gothicshield && [Quality] == Magic # [FBR] == 30 && [Sockets] >= 3 [Name] == Gothicshield && [Quality] == Magic # [maxhp] >= 30 && [Sockets] >= 3 [Name] == Gothicshield && [Quality] == Magic # [FHR] >= 20 && [Sockets] >= 3 [Type] == Shield && [Quality] == Magic # [FBR] == 30 && [Sockets] >= 3 [Type] == Shield && [Quality] == Magic # [maxhp] >= 30 && [Sockets] >= 3 [Type] == Shield && [Quality] == Magic # [FHR] >= 20 && [Sockets] >= 3
Pour terminer, il vous faut ajouter 3 nouveaux éléments au fichier de configuration habituel de votre personnage. Ouvrez donc votre fichier de configuration D2NT\scripts\NTBot\char_configs\NTConfig_Class_NomDuPerso.ntl habituel et ajoutez les éléments suivants :
Dans la partie où l'on choisit quel boss faire ou ne pas faire (boss configuration), ajoutez la ligne
NTConfig_Script.push("NTShopbot.ntj");Dans la partie où l'on choisit les fichier nip à utiliser pour les pick listes (SnagIt configuration), ajoutez la ligne
NTConfig_NIPFilePath.push("shoping/shoping.nip");Au tout début du fichier, juste avant la ligne "function NT_LoadConfig()" ajoutez le bloc suivant
//========================================================================================================= // Si vous jouez en D2 Classic, changez false en true var is_D2C = false; // Indiquez les NPC à visiter, vous pouvez en indiquer plusieurs en enlevant // sur le lignes ci dessous, actuellement le NPC anya (12) est activé var shop_npcNumber = new Array(); //shop_npcNumber.push( 1 ); //shop_npcNumber.push( 4 ); //shop_npcNumber.push( 5 ); //shop_npcNumber.push( 13 ); shop_npcNumber.push( 12 ); // Pense bête pour la liste des NPC // Act 1: Akara(1), Charsi(2), Gheed(3) // Act 2: Drognan(4), Fara(5), Elzix(6) // Act 3: Ormus(7), Hratli(8), Asheara(9) // Act 4: Jamella(10), Halbu(11) // Act 5: Anya(12), Larzuk(13), Malah(14) // Tuer les morts vivants au TP d'anya si ils se réveillent var autoClear = true; // Anya par le wp : true = on passe par le wp pour rafraichir, false = on passe par le tp rouge (plus rapide) var anyaGoWp = false; // si erreur on quitte la partie ou alors on continu var errorGoQuitGame = false;
Voila, c'est tout. Par défaut le bot shoppera chez Anya, vous pouvez modifier les options du bloc ci-dessus pour ajouter les NPC de vos rêves par exemple.
Le ShopBot est maintenant prêt à être utilisé. Vous pouvez l'utiliser comme un shopbot pure et dur, dans ce cas, désactivez les autres boss et changez votre "me.maxgametime" à 0 (infini). Vous pouvez sinon utiliser le shopbot pour allonger la durée de vos runs, dans ce cas la ligne "NTConfig_Script.push("NTShopbot.ntj");" doit être ajouté en bas de la liste de vos boss habituels et le "me.maxgametime" doit correspondre au nombre de minutes désiré de la durée de vos parties.










