XNTBot ist eine modifizierte, stark erweiterte Version des NTBot, welcher auf dem (closed source) D2NT 3.x Core läuft.
D2NT 3.1(3.3) Core für den aktuellen Diablo2 1.13d Patch ist enthalten.
Features:
Unterstützung aller Charakter-Klassen (siehe weiter unten)
Verbessertes Town-Handling
Benutzung von Telekinese, wo immer dies möglich ist
Automatisches Aufsammeln von Tränken/Schriftrollen/Schlüßeln
Identifizieren bei Cain
Wahlweises Verkaufen/Droppen von unerwünschten Items nach ID
Öffnen von Schatzkisten nach dem Säubern von Gebieten
Benutzung von Schreinen, wo dies sinnvoll ist
Fortgeschrittene Konfiguration und Auswahl von Angriffs-Skills
Status-Anzeige des aktuellen Scripts und der Game-Laufzeit
Master/Slave Betrieb (siehe weiter unten)
Optimierungen für Zauberinnen
Grundeinstellungen, welche für alle Charaktere gelten
Automatisches Munitions-Handling für Charaktere, die Bogen oder Armbrust benutzen (nicht nur Amazonen)
Vollständig überarbeitete Bot-Scripte, die fast jeden Bereich des Spiels abdecken
Unterstützte Charakter-Klassen:
Amazone:
Getestet mit Javazon und Bowazon, einschließlich Munitions-Management.
Andere Builds sollten erwartungsgemäß auch funktionieren, wurden aber bisher noch nicht getestet.
Assassine:
Unterstützt Martial-Arts-, WW- und Trap-Assassinen.
KickSins wurden noch nicht getestet.
Barbar:
Getestet mit WW- und Frenzy-Barb. Andere Builds sollten erwartungsgemäß ebenfalls funktionieren.
Druide:
Unterstützt Shape-Shifter und Wind-Druiden. Andere Builds wurden bisher nicht getestet.
Daß Shape-Shifter in Wolf- oder Bär-Form nicht teleportieren können, wodurch sich ihr Einsatz weitestgehend auf Fußläufigkeit beschränkt, muß ich wohl nicht anmerken?
Necromancer:
Unterstützt Summoner, Boner, Poisonmancer und Hybridformen davon.
Paladin:
Unterstützt Hammerdins, Smiter und FoH-dins. Andere Builds sollten ebenso funktionieren, wurden aber bisher nicht getestet.
Zauberin:
Unterstützt alle gängingen Zauberinnen-Builds (Blitz/Feuer/Kälte), als auch Hybridformen davon.
Exotische Builds wie Melee- oder Bär-Zauberinnen sind bisher ungetestet.
Master/Slave Betrieb:
Mittels der enthaltenen Start-Scripte ist es auch möglich an durch Andere erzeugten Spielen teilzunehmen. Dies geschieht entweder auf explizite Einladung durch einen XNTBot Master, oder über einen der gängigen Channel-Bots, welche die jeweils gestarteten Spiele auf dem Channel mitteilen. Die Freundes-Liste wird hierzu in beiden Fällen *nicht* benötigt.
Unterstützung für den Slave-Betrieb (in der Stadt auf TP vom Master warten) gibt es bisweilen bei den enthaltenen Diablo und Baal Scripten. Das Baal Script unterstützt auch bedingt Charaktere, die nicht in der Lage sind zu teleportieren.
ChangeLog:
Das vollständige englischsprachige ChangeLog gibt es hier:
XNTBot ChangeLog:
=================
1.5:
----
- Fixed barbarian attack skill auto-detection.
- Fixed red portal telekinesis bug.
- Fixes/Additions to support Wind Druid.
- NTConfig_StaticBoss for sorceress now only applies to act end bosses, not any other boss monsters.
- Monsters that are immune to the chars attacks and are also physical immune, are now skipped.
- Reduced the delay used when opening chests without telekinesis.
- Added NTTM_LeaveTown() function which leaves the town to the adjacent map without use of a waypoint.
- Implemented a separate configurable delay in NTBot.ntj to wait after a failed create game attempt.
- Renamed NTA_KillMonster() to NTA_KillTarget() and made it no longer return false, if the designated
target is found already dead.
- Added NTA_IsUseableCorpse() function to check if a corpse can be exploded or used to raise skelies.
- Added/Renamed target inquiry functions: NTA_IsUndead(), NTA_IsDemon(), NTA_IsRanged() and
NTA_IsActBoss().
- Fixed objId 455 not being recognized as special chest.
- Added a few missing targets to the list of non-cursable targets.
- Improved handling of 'decoy' monsters, cursed with attract.
- Revised necromancer summoning code.
- Added 'libs/common/NTData.ntl', which contains a binary representation of monster-flags,
collected from 'mpqdata/monstats.txt' and 'mpqdata/monstats2.txt' for efficient access.
- Area class specific changes:
- A generic Area class has been added which is the parent class of all specific area subclasses.
- The Rect class, which represents a rectangular map area, now inherits from the Area class.
- Rect may now also be constructed using a Room object.
- Fixed the Rect.inRange() function.
- Added a new Spot class, which represents a circular area of the map.
- Replaced the NTA_ClearPosition(), NTA_ClearRect() and NTA_ClearRoom() functions with
a unified NTA_ClearArea() function.
- Replaced the NTO_CheckObjectsInRange(), NTO_CheckObjectsInRect() and NTO_CheckObjectsInRoom()
functions with a unified NTO_CheckObjectsInArea() function.
- Added NTA_TargetsInArea() function, which returns the number of targets found within
a designated area of the map.
- Evasion specific changes:
- Evasion for all character classes is now handled centrally within NTAttack.ntl as part
of the target discrimination logic, thereby reducing the necessary overhead.
- A new NTCC_PreEvade() function has been added to the character class specific attack code.
NTCC_PreEvade() may perform actions prior to evasion, and has the ability to cancel an
evasion in progress.
- Evasion now only applies to melee-type monsters, not to ranged attackers.
- Changes to individual bot scripts:
- Added A1-BloodMoor script that supports Blood Moor and Den of Evil (Corpsefire).
- Revised A1-ColdPlains script, now supports Cold Plains (Bishibosh) / The Cave (Coldcrow).
- Replaced the A1-Mausoleum script with a new A1-BurialGrounds script that supports
Blood Raven, Mausoleum and The Crypt (Bonebreaker).
- Revised A1-StonyField script, now supports Stony Field (Rakanishu), Tristram (Griswold)
and the Underground Passage Levels 1 + 2.
- Removed A1-Tristram script, as this is now integrated in A1-StonyField script.
- Replaced A1-Treehead script with a new A1-DarkWood script that supports Dark Wood /
Treehead Woodfist.
- Replaced A1-Tower script with a new A1-BlackMarsh script that supports Black Marsh,
The Hole and The Forgotten Tower.
- Removed A1-Hole script, as this is now integrated in A1-BlackMarsh script.
- Replaced the A1-Pit script with a new A1-TamoeHighland script that supports
The Tamoe Highland and The Pit.
- Replaced A1-TheSmith script with a new A1-Barracks script.
- Replaced A1-BoneAsh script with a new A1-Cathedral script.
- Replaced the A1-Andariel and A1-AndarielDoor scripts with a new A1-Catacombs script
that supports Catacombs Level 1-4 and Andariel, optionally with door trick.
- Replaced A2-Radament with a new A2-Sewers script that supports Act2 Sewers Level 1,
Level 2 and Level 3 (Radament).
- Added A2-RockyWaste script that supports Rocky Waste and Stony Tomb (Creeping Feature).
- Added A2-DryHills script that supports Dry Hills, Halls of the Dead Level 1,
Level 2 and Level 3 (Blood Witch the Wild).
- Replaced A2-Coldworm script with a new A2-FarOasis script that supports
Far Oasis (Beetleburst), Maggot Lair Level 1, Level 2 and Level 3 (Coldworm).
- Replaced A2-AncientTunnels script with a new A2-LostCity script that supports
Lost City (Dark Elder) and Ancient Tunnels.
- Added A2-ViperTemple script.
- Added A2-PalaceCellar script.
- Renamed A2-Summoner script to A2-ArcaneSanctuary. Added support for clearing Arcane
Sanctuary (path/entire level). Fixed problem with unreachable flying monsters behind
pillars at Summoner.
- Replaced A2-Duriel and A2-TombRaider scripts with a new A2-CanyonOfMagi script
that supports Canyon of the Magi, Tomb Raider (clear all tombs) and Duriel.
- Added A3-SpiderForest script that supports Spider Forest, Arachnid Lair and
Spider Cavern (Sszark the Burning).
- Added A3-GreatMarsh script.
- Revised A3-FlayerJungle script, now supports Flayer Jungle, Swampy Pit
and Flayer Dungeon (Witch Doctor Endugu).
- Added A3-LowerKurast script that supports Lower Kurast, Lower Kurast Chests and Stormtree.
- Added A3-KurastBazaar script that supports Kurast Bazaar, Disused Fane and
Ruined Temple (Battlemaid Sarina).
- Added A3-UpperKurast script that supports Upper Kurast, Forgotten Reliquary,
Forgotten Temple, Ruined Fane and Disused Reliquary.
- Removed A3-Temples script, as this is now embedded in A3-KurastBazaar/A3-UpperKurast.
- Revised A3-Sewers script now supports Sewers Level 1 (Icehawk Riftwing) and Level 2.
- Revised A3-Travincal script now also supports clearing Travincal entirely.
- Replaced A3-Mephisto script with a new A3-DuranceOfHate script that supports Durance
of Hate Level 1, 2 and 3 (Mephisto).
- Added A4-OuterSteppes script.
- Replaced A4-Izual script with a new A4-PlainsOfDespair script, that supports
Plains of Despair / Izual.
- Renamed A4-DamnedCity script to A4-CityOfDamned.
- Replaced A4-Hephasto script with a new A4-RiverOfFlame script, that supports
River of Flame / Hephasto.
- Replaced the A4-Diablo script with a new A4-ChaosSanctuary script.
- Replaced the A5-Eldritch and A5-Abbadon scripts with a new A5-FrigidHighlands script that
supports Bloody Foothills (Dac Farren, Shenk the Overseer), Frigid Highlands
(Eldritch the Rectifier, Sharptooth Slayer, Eyeback the Unleashed) and Abbadon.
- Replaced the A5-Acheron and A5-ThreshSocket scripts with a new A5-ArreatPlateau script
that supports Arreat Plateau (Thresh Socket) and the Pit of Acheron.
- Replaced the A5-FrozenRiver script with a new A5-CrystalPassage script that supports
Crystalline Passage and Frozen River (Frozenstein).
- Revised A5-GlacialTrail script now supports Glacial Trail (Bonesaw Breaker)
and Drifter Cavern.
- Replaced the A5-InfernalPit script with a new A5-FrozenTundra script that supports
Frozen Tundra and the Infernal Pit.
- Replaced the A5-IcyCellar script with a new A5-AncientsWay script that supports
Ancients Way, Icy Cellar (Snapchip Shatter) and the Ancients.
- Replaced the A5-Nihlathak/A5-Pindleskin scripts with a new A5-NihlasTemple script
that supports Pindleskin, Halls of Anguish, Halls of Pain and Halls of Vaught (Nihlathak).
- Renamed A5-Baal script to A5-WorldstoneKeep and added support for Worldstone Keep Levels 1-3.
- Added CorpseGarden script for quick starting summon necro with free corpses
from Pindleskins garden.
Sonstiges:
Beim Betrieb von XNTBot bitte unbedingt Diablo auf englische Sprache umstellen, sonst gibt es Probleme sobald Items gefunden werden, deren Namen oder Beschreibungs-Texte Umlaute (äöüß) enthalten.
Dies ist kein spezielles Problem von XNTBot, sondern von D2NT allgemein.
Wie Ihr Diablo auf englische Sprache einstellen könnt, sagt euch die 'SUFU'
Finde es etwas komisch, dass du so gar keine Credits anführst - zumindest die Ausweichfunktion kommt mir irgendwie ziemlich bekannt vor...
Ansonsten sieht das rein vom Code her recht schick aus, man sieht durchaus, dass du weißt, was du tust; trotzdem solltest du deine Quellen klar kenntlich machen, selbst wenn der überwiegende Teil von dir ist.
Finde es etwas komisch, dass du so gar keine Credits anführst - zumindest die Ausweichfunktion kommt mir irgendwie ziemlich bekannt vor...
Man vergebe mir, daß ich an dieses Detail um 04:00 Uhr morgens nicht mehr gedacht habe, in dem Bestreben eine Release rauszudrücken
Der Ausweichcode stammt natürlich ursprünglich von Dir, da mir bisweilen auch kein besser funktionierender untergekommen ist, und ich auf tanzende Sosos auch nicht wirklich stand Die Credits dafür möchte ich mir auch gar nicht auf die Brust nageln, die gehören natürlich Dir.
Passt, sah eben nur etwas seltsam aus, weil es ansonsten eigentlich recht ordentlich dokumentiert ist.
Glaube sogar, ich habe in meiner angefangenen D2BS library noch eine optimalere Version drin, bin mir aber gerade unsicher. Vielleicht veröffentliche ich auch einfach mal meine angefangene und völlig unfertige D2BS library, denn einige interessante Sachen sind da durchaus schon drin, die man eventuell recyclen könnte.
nette arbeit , hab den bot mal ein bisschen laufen lassen und
was mir so aufgefallen ist, fehlt dem bot die fastpick option(ein paar milisekunden nachdem die items gedropped sind dass er diese gleich pickt)
oder ich habs nicht gefunden
genauso wie man immune gegner skippen kann.
oder sind die sachen noch irgendwo anders zu finden?
nette arbeit , hab den bot mal ein bisschen laufen lassen und
was mir so aufgefallen ist, fehlt dem bot die fastpick option(ein paar milisekunden nachdem die items gedropped sind dass er diese gleich pickt)
oder ich habs nicht gefunden
genauso wie man immune gegner skippen kann.
Ersteinmal danke für das Lob.
Eine FastPick Option in diesem Sinne gibt es nicht, allerdings nicht ohne Grund.
Es gibt keinerlei "Benachrichtung" darüber, wann Items droppen, oder wo neue Items gedropped sind. Die einzige Möglichkeit das Picken zu beschleunigen besteht also darin, die Pick Funktion häufiger aufzurufen. Diese sieht sich dann jedes Mal alle Items an, und vergleicht die Items, die innerhalb des gesetzten Pick-Radius liegen, gegen ein mehr oder minder großes Regelwerk. Daß ein häufigeres Aufrufen dieser Funktion einen erheblichen Impact auf die Gesamtperformance bedeuten würde, muß wohl nicht gesagt werden. Im Falle von Boss-Monstern machte es ohnehin keinen Unterschied, denn es wird gepicked, sobald der Boss das zeitliche gesegnet hat. In den meisten Fällen wird die Entfernung zum Fundort des Items darüber bestimmen, wer es letztlich bekommt. Deshalb dürften Zauberinnen und andere Fernkämpfer eher die schlechteren Karten haben. Hinzu kommt noch, daß das Picken von Items in einem noch nich gereinigten Gebiet unter Einsatz des eigenen Lebens geschieht, zumindest jedoch dem des Chars
Was die immunen Gegner angeht, so werden diese im ersten Durchlauf übergangen, um das Gebiet zunächst von nicht-immunen zu reinigen, und dann im zweiten Lauf dem Merc übergeholfen, soweit vorhanden. Inwieweit dieser damit fertig werden kann, steht sicherlich auf einem anderen Blatt. Gewisse Gegner lassen sich auch nicht einfach überspringen, falls diese immun sein sollten (z.b. Siegel-Bosse im CS, Baal Wave-Bosse).
Mit welchem Char läufst Du derzeit, und welche Immunen sind es, die Du überspringen würdest?
Der Char läuft zum roten Pindle TP, bleibt davor stehen castet FrozenShield und geht trotzdem nicht ins Pindle TP sondern macht den nächsten Boss bzw. beendet das Game ohne Pindle gemacht zu haben.
Der Char läuft zum roten Pindle TP, bleibt davor stehen castet FrozenShield und geht trotzdem nicht ins Pindle TP sondern macht den nächsten Boss bzw. beendet das Game ohne Pindle gemacht zu haben.
Die Zauberin versucht das rote Portal mittels Telekinese zu betreten, was bei diesem Portal nicht zu funktionieren scheint.
Wird in der kommenden 1.5 Version gefixed.
Falls Du nicht bis dahin warten möchtest, hier der Fix.
In der Datei scripts/libs/common/NTMove.ntl die Funktion NTM_ChangeAreaInt() lokalisieren, und dort diese Zeile:
jo wollte diesen bot mit meiner assa laufen lasssen
ich starte ein game und iwie wird die sofort kicked
das kommt kurz bevor sie raus geworfen wird
bei der config hab ich kein fire trauma angegeben deswegen check ich das iwie nich
Wie in Deinem Bild ganz gut zu sehen ist, ist das die Attack Skill Auto-Config.
Diese wird basierend auf den Skills mit den meisten Punkten ermittelt, was jedoch nicht immer zu einem guten Ergebnis führt.
Die Auto-Config wird nur verwendet, wenn in Deiner Char-Config nichts anderes angegeben ist.
Am besten konfigurierst Du die gewünschten Skills manuell. In den beiliegenden Char-Configs sind dazu ganz unten einige Beispiele, die jedoch auskommentiert sind.
Benötigt wird ein Block wie dieser hier:
Code:
NTConfig_AttackSkills =
[
new AttackSkill(NTS_DEATH_SENTRY),
new AttackSkill(NTS_LIGHTNING_SENTRY),
new AttackSkill(NTS_SHOCK_WEB)
];
Damit würden zum Angreifen Death Sentry, Lightning Sentry und Shock Web benutzt.
Death Sentry muß in jedem Fall zuerst kommen, da hierfür ein Kadaver in Nähe des aktuellen Ziels erforderlich ist. Ist keiner da, wird Death Sentry auch nicht benutzt, und stattdessen Lightning Sentry gewählt.
Wenn Du Shock Web nicht verwenden willst, läßt Du das aus der Liste einfach raus, dann jedoch drauf achten daß in der Zeile darüber das Komma am Ende der Zeile wegfällt.
Bin ziemlich neu im Bot-Geschehen und habe eig. schon jeden ausprobiert und keiner hat funktioniert. So bin ich dann bei deinem gelandet und habe nun ein oder zwei Fragen:
Wie erstelle ich mir diese Nip files zur Auswahl der Gegenstände die der Bot aufheben soll?
In meinem Fall währen das mittel gute bis perfekte.
Nun habe ich den Bot laufen lassen auch ohne Drop Einstellungen aber das dürfte an sich ja kein Problem sein. Nun kommt allerdings folgendes nachdem er sich in ein Spiel eingeloggt hat:
WARNING: cannot find charconfig 'NTConfig_Paladin_didaxo.ntl' - using default config
und
<D2NT Error> C:\..\...\XNTBot-1.4\D2NT\scripts\libs\common\NTCommon.ntl (150):
ReferenceError: NT_SetupConfig is not defined
Ich wäre sehr dankbar für die Hilfe und hoffe es gibt ne Lösung
Liebe Grüße Philipp
Anbei mein script:
Code:
//
// NTConfig_Paladin.ntl - Template character configuration file for Paladin.
//
// Copy this file as NTConfig_Paladin_<YOURCHARNAME>.ntl and edit as appropriate.
// Do *NOT* edit this template! Keep it for future reference.
//
// Please note that many of the settings in this file can also be set up as defaults
// for all your characters in the 'NTConfig_Defaults.ntl' file, which will lead to
// much smaller character configuration files, if your characters share most of the
// settings.
//
function NT_SetupConfig()
{
//----------------------------------------------------------------------------------------------
// Run Configuration
//----------------------------------------------------------------------------------------------
// --- Toothless NIP checker ---
NTConfig_Script.push("TLNipCheck.ntj");
// --- Act1 ---
//NTConfig_Script.push("A1-ColdPlains.ntj");
NTConfig_Script.push("A1-Mausoleum.ntj"); NTConfig_KillBloodRaven = true;
//NTConfig_Script.push("A1-StonyField.ntj");
NTConfig_Script.push("A1-Tristram.ntj"); NTConfig_KillRakanishu = true;
//NTConfig_Script.push("A1-Hole.ntj"); NTConfig_ClearHoleLevel1 = 2; // 0 : don't clear, 1 : clear path only, 2 : clear all
//NTConfig_Script.push("A1-Treehead.ntj");
NTConfig_Script.push("A1-Tower.ntj"); NTConfig_ClearBlackMarsh = false; NTConfig_ClearTower = false; NTConfig_ClearTowerLvl5 = true;
NTConfig_Script.push("A1-Pit.ntj"); NTConfig_ClearPathToPit = false; NTConfig_ClearPitLevel1 = 0; // 0 : don't clear, 1 : clear path only, 2 : clear all
//NTConfig_Script.push("A1-TheSmith.ntj");
//NTConfig_Script.push("A1-BoneAsh.ntj");
NTConfig_Script.push("A1-Andariel.ntj");
// --- Act 2 ---
//NTConfig_Script.push("A2-Radament.ntj");
//NTConfig_Script.push("A2-Coldworm.ntj");
//NTConfig_Script.push("A2-AncientTunnels.ntj");
NTConfig_Script.push("A2-Summoner.ntj"); NTConfig_KillFireEye = true;
NTConfig_Script.push("A2-Duriel.ntj"); NTConfig_ClearPathToDuriel = false;
//NTConfig_Script.push("A2-TombRaider.ntj"); NTConfig_ClearCanyon = false;
// --- Act 3 ---
//NTConfig_Script.push("A3-FlayerJungle.ntj");
//NTConfig_Script.push("A3-Sewers.ntj"); NTConfig_ClearA3SewersLevel1 = 1; // 0 : don't clear, 1 : clear path only, 2 : clear all
//NTConfig_Script.push("A3-Temples.ntj");
//NTConfig_Script.push("A3-Travincal.ntj");
NTConfig_Script.push("A3-Mephisto.ntj"); NTConfig_MephOpenChest = true; NTConfig_MephClearArea = false; NTConfig_MephUsePortal = true;
// --- Act 4 ---
//NTConfig_Script.push("A4-Izual.ntj");
//NTConfig_Script.push("A4-DamnedCity.ntj");
//NTConfig_Script.push("A4-Hephasto.ntj");
NTConfig_Script.push("A4-Diablo.ntj"); NTConfig_DiabloStartAtStar = true; NTConfig_DiabloDoneMsg = "Baal is next...";
// --- Act 5 ----
NTConfig_Script.push("A5-Eldritch.ntj"); NTConfig_ShenkExtension = true;
//NTConfig_Script.push("A5-Abbadon.ntj");
//NTConfig_Script.push("A5-Acheron.ntj");
//NTConfig_Script.push("A5-ThreshSocket.ntj");
//NTConfig_Script.push("A5-FrozenRiver.ntj"); NTConfig_ClearFrozenRiver = true;
//NTConfig_Script.push("A5-GlacialTrail.ntj"); NTConfig_ClearGlacialTrail = false;
//NTConfig_Script.push("A5-InfernalPit.ntj");
//NTConfig_Script.push("A5-IcyCellar.ntj"); NTConfig_ClearIcyCellar = false;
NTConfig_Script.push("A5-Nihlathak.ntj"); NTConfig_PindleskinExtension = true; NTConfig_SkipOnTombVipers = true;
//NTConfig_Script.push("A5-Pindleskin.ntj"); NTConfig_NihlathakExtension = true;
//NTConfig_Script.push("A5-WorldstoneKeep.ntj"); NTConfig_SkipWSKLevelOnSouls = false; NTConfig_SkipWSKLevelOnSuccubi = false; NTConfig_SkipWSKLevelOnDeathLords = false;
//NTConfig_Script.push("A5-Baal.ntj");
// Optional Baal script settings:
//NTConfig_BaalMaxMercDistance = 6; // Keep merc within this distance, while waiting for baal waves (0=disable).
//NTConfig_BaalWaveAttackPos = [15093, 5039]; // Attack Position for baal waves (x/y).
//NTConfig_BaalTerminate = true; // Terminate that laughing retard, or leave him be?
//NTConfig_BaalAttackPos = [15138, 5916]; // Attack Position for baal (x/y).
//NTConfig_BaalPickTreasure = true; // Pick up the three gold piles in worldstone chamber?
//NTConfig_BaalEnterMsg = "Let's kill Baal!"; // Message before entering worldstone chamber (public mode only).
//NTConfig_BaalDoneMsg = "Next game will be %ngn"; // Message after baal has been properly taken care of (public mode only).
// --- Miscellaneous ---
//NTConfig_Script.push("Delay.ntj"); NTConfig_DelaySeconds = 60;
//NTConfig_Script.push("GameOver.ntj"); NTConfig_GameOverMsg = "Next game will be %ngn";
//----------------------------------------------------------------------------------------------
// Master/Slave Settings
//----------------------------------------------------------------------------------------------
// If you want to notify slaves running NTBotSlave.ntj entry point script,
// put the list of *account* names here, to send invitations on game start.
//NTConfig_SlavesToNotify = ["slaveacc1", "slaveacc2"];
// If you want to join other runs as a slave, set these to the correct values.
// You may want to have several of these lines for different runs, so that you
// can activate/deactivate them simply by commenting/uncommenting.
//NTConfig_MasterName = "MyMaster"; NTConfig_BaalSafeMsg = "TP safe.";
//NTConfig_MasterName = "MyOtherMaster"; NTConfigBaalSafeMsg = "TP is now safe.";
// It may be desirable to automatically activate certain settings depending
// upon whether you're running as a master/single or as a slave.
if(NTConfig_MasterName)
{
// Settings only active in slave mode go here.
NTConfig_BaalSlave = true; // Run Baal script in slave mode.
NTConfig_BaalSlaveWaitSafe = false; // Wait for safe message before entering TP?
NTConfig_BaalSlaveBoWp = 111; // Use Frigid Highlands WP for pre BO.
}
else
{
// Settings only active when running as master/single go here.
NTConfig_BaalAbortOnDolls = 10; // Abort game if at least this many dolls in throne (0=disable).
NTConfig_BaalAbortOnSouls = 15; // Abort game if at least this many souls in throne (0=disable).
NTConfig_BaalSafeMsg = "TP safe."; // Message when throne has been cleared (public mode only).
}
//----------------------------------------------------------------------------------------------
// General Settings
//----------------------------------------------------------------------------------------------
NTConfig_AutoParty = true; // Invite other players, even if not in public mode
NTConfig_PublicMode = false; // Set 'true' for public CS/Baal runs
NTConfig_CheckGamePassword = false; // Check that the game was created with a password
NTConfig_ExitOnMissingTeleport = true; // Exit game if teleport skill is missing? (Enigma Bug)
NTConfig_RepairPercent = 85; // Repair items if under this percent durability/quantity.
me.quitonhostile = true; // Exit game if another player expresses hostility towards you?
//me.maxgametime = 1500; // Time in seconds, maximum game length (0 is infinite)
NTConfig_UseDeathTaunts = false; // Use taunts if another player bites the dust?
//NTConfig_DeathTaunts = []; // Put list of your personal favourite taunts here.
//----------------------------------------------------------------------------------------------
// Chest + Shrine Settings
//----------------------------------------------------------------------------------------------
NTConfig_OpenChests = true; // Open all chests in an area after clearing it?
NTConfig_OpenSpecialChestsOnly = false; // Open only special chests?
NTConfig_UseShrines = true; // Use Shrines?
//----------------------------------------------------------------------------------------------
// Identification Settings
//----------------------------------------------------------------------------------------------
NTConfig_UseCain = true; // Identify items using cain (will only use cain, if you don't carry any items that are supposed to be kept unid)
NTConfig_SkipCain = 0x00; // Skip cain if: 0x01 - Self poisoned, 0x02 - Merc poisoned, 0x03 - Self or merc poisoned
NTConfig_CainMsg = "!Stay a while and listen"; // Message to say after visiting cain or empty for none.
NTConfig_CainDropCrap = false; // Drop crap items after id at cain?
NTConfig_CainAnnounceCrap = false; // Announce dropped items in game?
//----------------------------------------------------------------------------------------------
// World Event Settings
//----------------------------------------------------------------------------------------------
// Stay in game for at least 5 minutes after receiving a 'XX stones of jordan sold' message.
NTConfig_CheckSoJSales = true;
// Stay in game indefinately when a 'Diablo walks the earth' message is received.
NTConfig_CheckCloneDiablo = true;
//----------------------------------------------------------------------------------------------
// Gambling Configuration
//----------------------------------------------------------------------------------------------
NTConfig_Gamble = true; // Enable gambling
NTConfig_GambleStartGold = 3000000; // Gold amount to start the gambling
NTConfig_GambleStopGold = 150000; // Gold amount to stop the gambling
// Gambling items specified this way, are added to the default list of gambling items.
NTConfig_GambleItem.push(520); // Amulets
NTConfig_GambleItem.push(522); // Rings
//NTConfig_GambleItem.push(334); // Leather Gloves
//NTConfig_GambleItem.push(335); // Heavy Gloves
//NTConfig_GambleItem.push(336); // Chain Gloves
//NTConfig_GambleItem.push(337); // Light Gauntlets
//NTConfig_GambleItem.push(338); // Gauntlets
// Or you may reset the default list of gambling items, and specify your own.
//NTConfig_GambleItem = [520, 522];
//----------------------------------------------------------------------------------------------
// Cubing Configuration
//----------------------------------------------------------------------------------------------
NTConfig_Cubing = false; // Enable cubing
//NTConfig_CubingItem.push([NTCU_ESSENCE, 653]); // Token of absolution
// *** Upgrade Gems using cube ***
//NTConfig_CubingItem.push([NTCU_GEM, 560]); // 3 x Flawless Amethyst -> Perfect Amethyst
//NTConfig_CubingItem.push([NTCU_GEM, 565]); // 3 x Flawless Topaz -> Perfect Topaz
//NTConfig_CubingItem.push([NTCU_GEM, 570]); // 3 x Flawless Saphire -> Perfect Saphire
//NTConfig_CubingItem.push([NTCU_GEM, 575]); // 3 x Flawless Emerald -> Perfect Emerald
//NTConfig_CubingItem.push([NTCU_GEM, 580]); // 3 x Flawless Ruby -> Perfect Ruby
//NTConfig_CubingItem.push([NTCU_GEM, 585]); // 3 x Flawless Diamond -> Perfect Diamond
//NTConfig_CubingItem.push([NTCU_GEM, 600]); // 3 x Flawless Skull -> Perfect Skull
// *** Upgrade Runes using cube ***
//NTConfig_CubingItem.push([NTCU_RUNE_EL]); // 3 x EL Rune -> ELD Rune
//NTConfig_CubingItem.push([NTCU_RUNE_ELD]); // 3 x ELD Rune -> TIR Rune
//NTConfig_CubingItem.push([NTCU_RUNE_TIR]); // 3 x TIR Rune -> NEF Rune
//NTConfig_CubingItem.push([NTCU_RUNE_NEF]); // 3 x NEF Rune -> ETH Rune
//NTConfig_CubingItem.push([NTCU_RUNE_ETH]); // 3 x ETH Rune -> ITH Rune
//NTConfig_CubingItem.push([NTCU_RUNE_ITH]); // 3 x ITH Rune -> TAL Rune
//NTConfig_CubingItem.push([NTCU_RUNE_TAL]); // 3 x TAL Rune -> RAL Rune
//NTConfig_CubingItem.push([NTCU_RUNE_RAL]); // 3 x RAL Rune -> ORT Rune
//NTConfig_CubingItem.push([NTCU_RUNE_ORT]); // 3 x ORT Rune -> THUL Rune
//NTConfig_CubingItem.push([NTCU_RUNE_THUL, 562]); // 3 x THUL Rune + Chipped Topaz -> AMN Rune
//NTConfig_CubingItem.push([NTCU_RUNE_AMN, 557]); // 3 x AMN Rune + Chipped Amethyst -> SOL Rune
//NTConfig_CubingItem.push([NTCU_RUNE_SOL, 567]); // 3 x SOL Rune + Chipped Saphire -> SHAEL Rune
//NTConfig_CubingItem.push([NTCU_RUNE_SHAEL, 577]); // 3 x SHAEL Rune + Chipped Ruby -> DOL Rune
//NTConfig_CubingItem.push([NTCU_RUNE_DOL, 572]); // 3 x DOL Rune + Chipped Emerald -> HEL Rune
//NTConfig_CubingItem.push([NTCU_RUNE_HEL, 582]); // 3 x HEL Rune + Chipped Diamond -> IO Rune
//NTConfig_CubingItem.push([NTCU_RUNE_IO, 563]); // 3 x IO Rune + Flawed Topaz -> LUM Rune
//NTConfig_CubingItem.push([NTCU_RUNE_LUM, 558]); // 3 x LUM Rune + Flawed Amethyst -> KO Rune
//NTConfig_CubingItem.push([NTCU_RUNE_KO, 568]); // 3 x KO Rune + Flawed Saphire -> FAL Rune
//NTConfig_CubingItem.push([NTCU_RUNE_FAL, 578]); // 3 x FAL Rune + Flawed Ruby -> LEM Rune
//NTConfig_CubingItem.push([NTCU_RUNE_LEM, 573]); // 3 x LEM Rune + Flawed Emerald -> PUL Rune
//NTConfig_CubingItem.push([NTCU_RUNE_PUL, 583]); // 2 x PUL Rune + Flawed Diamond -> UM Rune
//NTConfig_CubingItem.push([NTCU_RUNE_UM, 564]); // 2 x UM Rune + Topaz -> MAL Rune
//NTConfig_CubingItem.push([NTCU_RUNE_MAL, 559]); // 2 x MAL Rune + Amethyst -> IST Rune
//NTConfig_CubingItem.push([NTCU_RUNE_IST, 569]); // 2 x IST Rune + Saphire -> GUL Rune
//NTConfig_CubingItem.push([NTCU_RUNE_GUL, 579]); // 2 x GUL Rune + Ruby -> VEX Rune
//NTConfig_CubingItem.push([NTCU_RUNE_VEX, 574]); // 2 x VEX Rune + Emerald -> OHM Rune
//NTConfig_CubingItem.push([NTCU_RUNE_OHM, 584]); // 2 x OHM Rune + Diamond -> LO Rune
//NTConfig_CubingItem.push([NTCU_RUNE_LO, 565]); // 2 x LO Rune + Flawless Topaz -> SUR Rune
//NTConfig_CubingItem.push([NTCU_RUNE_SUR, 560]); // 2 x SUR Rune + Flawless Amethyst -> BER Rune
//NTConfig_CubingItem.push([NTCU_RUNE_BER, 570]); // 2 x BER Rune + Flawless Saphire -> JAH Rune
//NTConfig_CubingItem.push([NTCU_RUNE_JAH, 580]); // 2 x JAH Rune + Flawless Ruby -> CHAM Rune
//NTConfig_CubingItem.push([NTCU_RUNE_CHAM, 575]); // 2 x CHAM Rune + Flawless Emerald -> ZOD Rune
// *** Socket items using cube - Primary item must be in your pickit! ***
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 429]); // Socket Dusk Shroud
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 430]); // Socket Wyrmhide
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 431]); // Socket Scarab Husk
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 432]); // Socket Wire Fleece
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 433]); // Socket Diamond Mail
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 434]); // Socket Loricated Mail
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 435]); // Socket Bone Weave
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 436]); // Socket Great Hauberk
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 437]); // Socket Balrog Skin
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 438]); // Socket Hellforge Plate
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 439]); // Socket Kraken Shell
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 440]); // Socket Lacquered Plate
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 441]); // Socket Shadow Plate
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 442]); // Socket Sacred Armor
//NTConfig_CubingItem.push([NTCU_SOCKET_BODYARMOR, 443]); // Socket Archon Plate
//NTConfig_CubingItem.push([NTCU_SOCKET_WEAPON, 200]); // Socket Berserker Axe
//NTConfig_CubingItem.push([NTCU_SOCKET_WEAPON, 255]); // Socket Thresher
//NTConfig_CubingItem.push([NTCU_SOCKET_WEAPON, 256]); // Socket Cryptic Axe
//NTConfig_CubingItem.push([NTCU_SOCKET_WEAPON, 257]); // Socket Great Poleaxe
//NTConfig_CubingItem.push([NTCU_SOCKET_WEAPON, 258]); // Socket Giant Thresher
//NTConfig_CubingItem.push([NTCU_SOCKET_WEAPON, 302]); // Socket Grand Matron Bow
// *** Upgrade unique items using cube ***
//NTConfig_CubingItem.push([NTCU_UPGRADE_E_UNIQUE_WEAPON, 295]); // Titan's Revenge : Exceptional -> Elite
//NTConfig_CubingItem.push([NTCU_UPGRADE_N_UNIQUE_ARMOR, 337]); // Magefist : Normal -> Exceptional
//NTConfig_CubingItem.push([NTCU_UPGRADE_E_UNIQUE_ARMOR, 360]); // Skin of the Vipermagi : Exceptional -> Elite
//NTConfig_CubingItem.push([NTCU_UPGRADE_E_UNIQUE_ARMOR, 383]); // Magefist or Lava Gout : Exceptional -> Elite
//NTConfig_CubingItem.push([NTCU_UPGRADE_E_UNIQUE_ARMOR, 389]); // Gore Rider : Exceptional -> Elite
//NTConfig_CubingItem.push([NTCU_UPGRADE_E_UNIQUE_ARMOR, 477]); // Arreat's Face : Exceptional -> Elite
//NTConfig_CubingItem.push([NTCU_UPGRADE_E_UNIQUE_ARMOR, 481]); // Herald Of Zakarum : Exceptional -> Elite
// *** Craft items using cube ***
//NTConfig_CubingItem.push([NTCU_CRAFT_HITPOWER_GLOVES, 382]); // Craft Heavy Bracers
//NTConfig_CubingItem.push([NTCU_CRAFT_HITPOWER_GLOVES, 452]); // Craft Vambraces
//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_HELM, 354]); // Craft Casque
//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_HELM, 424]); // Craft Armet
//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_BOOTS, 388]); // Craft Battle Boots
//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_BOOTS, 458]); // Craft Mirrored Boots
//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_GLOVES, 381]); // Craft Sharkskin Gloves
//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_GLOVES, 451]); // Craft Vampirebone Gloves
//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_BELT, 392]); // Craft Mesh Belt
//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_BELT, 462]); // Craft Mithril Coil
//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_AMULET, 520]); // Craft Amulet
//NTConfig_CubingItem.push([NTCU_CRAFT_BLOOD_RING, 522]); // Craft Ring
//NTConfig_CubingItem.push([NTCU_CRAFT_CASTER_BOOTS, 455]); // Craft Wyrmhide Boots
//NTConfig_CubingItem.push([NTCU_CRAFT_CASTER_AMULET, 520]); // Craft Amulet
//NTConfig_CubingItem.push([NTCU_CRAFT_SAFETY_SHIELD, 447]); // Craft Monarch
//NTConfig_CubingItem.push([NTCU_CRAFT_SAFETY_AMULET, 520]); // Craft Amulet
//----------------------------------------------------------------------------------------------
// Inventory Configuration
//----------------------------------------------------------------------------------------------
// This matrix represents your character's inventory.
// Set a cell 0 to keep whatever is there, or 1 for free space managed by the bot.
NTConfig_Columns[0] = [1,1,1,1,1,1,1,0,0,0];
NTConfig_Columns[1] = [1,1,1,1,1,1,1,0,0,0];
NTConfig_Columns[2] = [1,1,1,1,1,1,1,0,0,0];
NTConfig_Columns[3] = [1,1,1,1,1,1,1,0,0,0];
// If less than this many full columns are free in your inventory,
// the bot will visit the stash in order to stash items.
NTConfig_FreeSpace = 4;
//----------------------------------------------------------------------------------------------
// Belt Configuration
//----------------------------------------------------------------------------------------------
// Type of potion used in each belt column
// Available types : "hp" = health | "mp" = mana | "rv" = rejuv. Can use other potion types too.
// Keep equal types at adjacent columns. First HP then MP and then HP again is a bad choice.
// Keep HP and MP at the beginning of the belt (in case you want to use rejuv and other types).
// Rejuvenations MUST, I REPEAT MUST be at the end of the belt (last x columns).
// To use rejuvenations only, put "rv" in all columns.
NTConfig_BeltColType[0] = "rv";
NTConfig_BeltColType[1] = "rv";
NTConfig_BeltColType[2] = "rv";
NTConfig_BeltColType[3] = "rv";
//----------------------------------------------------------------------------------------------
// NipFile Configuration
//----------------------------------------------------------------------------------------------
// IMPORTANT NOTE:
// ===============
// This set of files determines, which items your char will keep, and which it won't.
// Obviously, nobody but *YOU* can tell, which items you want to be picked up and which not.
// Therefore the NIP files provided, can only function as a rough template for defining your
// very own ruleset. So please make yourself familiar with the NIP file syntax, make a copy
// of the provided NIP files, and edit them as you see fit for your own needs.
NTConfig_NIPFilePath.push("default/normals.nip");
NTConfig_NIPFilePath.push("default/magics.nip");
NTConfig_NIPFilePath.push("default/rares.nip");
NTConfig_NIPFilePath.push("default/runes.nip");
NTConfig_NIPFilePath.push("default/sets.nip");
NTConfig_NIPFilePath.push("default/uniques.nip");
NTConfig_NIPFilePath.push("default/moneymaker.nip");
//----------------------------------------------------------------------------------------------
// Itemlog Configuration
//----------------------------------------------------------------------------------------------
NTConfig_UseXMLItemlog = true; // Log kept and sold items to an XML log file?
//NTConfig_SeparateLogs = true; // Create a separate log file for each character?
//NTConfig_LogSoldItems = false; // Log sold items too?
//----------------------------------------------------------------------------------------------
// Wellness Settings
//----------------------------------------------------------------------------------------------
// All values are in percent of total life/mana. If you want to
// disable a certain feature, set the corresponding value to 0.
NTConfig_SkipHealLife = 99; // When in town, don't visit healer if more than this percent life.
NTConfig_SkipHealMana = 70; // When in town, don't visit healer if more than this percent mana.
NTConfig_LifeThresh = 80; // Drink a healing potion if under this percent of life.
NTConfig_ManaThresh = 10; // Drink a mana potion if under this percent of mana.
NTConfig_LifeRejuvThresh = 60; // Drink a rejuvenation potion if under this percent of life.
NTConfig_ManaRejuvThresh = 0; // Drink a rejuvenation potion if under this percent of mana.
NTConfig_LifeChicken = 50; // Exit the game if under this percent of life.
NTConfig_ManaChicken = 0; // Exit the game if under this percent of mana.
//----------------------------------------------------------------------------------------------
// Merc Settings
//----------------------------------------------------------------------------------------------
NTConfig_UseMerc = true; // Set to true if you use a merc, will revive merc if necessary.
NTConfig_ResetWeapon = true; // Set to true to reset merc's weapon after reviving.
NTConfig_MercLifeThresh = 60; // If merc's life goes below this percent, feed him a healing potion.
NTConfig_MercRejuvThresh = 33; // If merc's life goes below this percent, feed him a rejuv potion.
NTConfig_MercChicken = 25; // If merc's life goes below this percent, exit the game.
//----------------------------------------------------------------------------------------------
// Safety Settings
//----------------------------------------------------------------------------------------------
// Some bot scripts will perform a safety check at predefined points within the script,
// to make sure the character and/or merc are 'safe', before proceeding further.
// This flags value determines which checks are to be performed in such cases.
// If the character and/or merc are not considered 'safe' according to this check,
// then the character will visit the town first to restock on pots, remove curses
// or to revive the merc should that be necessary.
//
// This value is the bitwise inclusive OR of none or more of the following:
//
// Self: Merc:
0x00000001 - Less than minimum amount of potions
0x00010000 - Merc deceased
// 0x00000002 0x00020000 - Poisoned
// 0x00000004 0x00040000 - Amplify Damage Curse
// 0x00000008 0x00080000 - Weaken Curse
0x00000010 0x00100000 - Iron Maiden Curse
// 0x00000020 0x00200000 - Decrepify Curse
// 0x00000040 0x00400000 - Lower Resist Curse
// 0x00000080 0x00800000 - Defense Curse
// 0x00000100 0x01000000 - Blood Mana Curse
NTConfig_CheckSafe = 0x00010001;
// The minimum number of health and mana potions that need to be present in
// the character's belt, when a safe check with flag 0x00000001 is performed.
// Otherwise the character will visit the town to restock on pots.
NTConfig_MinHPots = 3;
NTConfig_MinMPots = 2;
// Go evasive in case a monster gets too close?
// Most useful for sorcs, bowazons, trap assassins, FoH-dins and other ranged characters.
// For close combat fighters, like most barbarians and paladins this should be set to 'false'.
NTConfig_Evade = false;
//----------------------------------------------------------------------------------------------
// Paladin Specific Settings
//----------------------------------------------------------------------------------------------
NTConfig_UseRedemptionHP = 66; // Use Redemption Aura if below this percent life.
NTConfig_UseRedemptionMP = 66; // Use Redemption Aura if below this percent mana.
//----------------------------------------------------------------------------------------------
// Attack Configuration
//----------------------------------------------------------------------------------------------
// Attack skills are configured by means of AttackSkill objects, which define the attack skill
// itself, as well as conditions which must be met in order for it to be applicable to certain
// types of targets.
//
// The usage of the AttackSkill object is as follows:
//
// new AttackSkill(skillid[, auraid[, specmask[, flags]]])
//
// WHERE:
//
// skillid - The ID of the attack skill.
//
// auraid - The ID of the aura that shall be used with the attack, or NTS_NOSKILL when no aura
// is to be used with this attack. If omitted, a value of NTS_NOSKILL will be used.
//
// specmask - The specmask determines for which types of monsters this attack skill may be used.
// It is applied via logical AND to the current target's spectype. If the result is
// non-zero, this attack skill may be used for the current target. If omitted, a
// default specmask of 0xFF will be used, effectively selecting all monster types.
//
// Target spectype is defined as follows:
// 0x01 : All
// 0x02 : Super Unique
// 0x04 : Champion
// 0x08 : Boss
// 0x10 : Minion
//
// flags - Reserved for future use.
//
// See the file 'scripts/libs/common/NTSkills.ntl' for skill ID constants.
// Initial Attack Skill:
// This attack skill is roughly used once, when entering a new sector of the map, or on first
// attack of a group of targets. Best used for skills whose purpose is to prime a group of
// targets for the upcoming attacks.
// Not especially useful for paladins. If you can think of a paladin skill that could be used
// here, let me know ;)
//NTConfig_InitAttackSkill = new AttackSkill(NTS_FIST_OF_THE_HEAVENS, NTS_CONVICTION);
// List of attack skills:
// Attack skills are configured as a list of AttackSkill objects, which are evaluated by the
// attack code in the order they are configured, until a suitable attack skill is found for
// the current target.
//
// THE ORDERING OF ATTACK SKILLS IS IMPORTANT!
//
// Always put timed skills (i.e. skills that have a longer casting delay) before untimed skills,
// otherwise they will never be selected, as the untimed skills are always available. The same
// goes for charge-up skills and finishing moves. Put charge-ups first, then finishing moves.
// Similarly attack skills that are only to be selected when certain conditions are met, need
// to come before skills that are always applicable (i.e. a corpse explosion needs a corpse
// in order to be selected, whereas bonespear is always selectable, provided the target is
// not magic immune).
//
// Below are sample attack skill configurations for different types of paladins.
// If you want to try attack skill auto-configuration, leave these blocks commented out.
// Sample attack skill configuration for the usual hammerdin:
NTConfig_AttackSkills =
[
new AttackSkill(NTS_BLESSED_HAMMER, NTS_CONCENTRATION),
new AttackSkill(NTS_HOLY_BOLT, NTS_CONCENTRATION)
];
// Sample attack skill configuration for a FoH-din:
/*
NTConfig_AttackSkills =
[
new AttackSkill(NTS_FIST_OF_THE_HEAVENS, NTS_CONVICTION),
new AttackSkill(NTS_HOLY_BOLT, NTS_CONVICTION)
];
*/
// Sample attack skill configuration for a zealot using vengeance as backup for immunes:
/*
NTConfig_AttackSkills =
[
new AttackSkill(NTS_ZEAL, NTS_FANATICISM),
new AttackSkill(NTS_VENGEANCE, NTS_FANATICISM)
];
*/
}
Wie erstelle ich mir diese Nip files zur Auswahl der Gegenstände die der Bot aufheben soll?
In meinem Fall währen das mittel gute bis perfekte.
Dem XNTBot liegt bereits ein Satz Nip Files bei. Inwieweit diese jedoch Deinen persönlichen Bedürfnissen genügen, vermag ich nicht zu sagen.
Am sinnvollsten wäre es, Du machst Dich mit der Syntax der Nip Dateien vertraut, erstellst eine Kopie der beiliegenden Nip Dateien und gehst dann daran diese nach Deinen eigenen Wünschen anzupassen. Niemand außer Dir kann sagen, welche Items Du aufheben willst, und welche nicht.
Zum Bearbeiten der Nip Dateien empfehle ich Notepad++. Dazu gibt es hier in der Programming Sektion einen schönen Guide von Muddy.
Alternativ dazu gibt es sicher eine ganze Reihe fertiger Nip Dateien, die in Umlauf sind. XNTBot verwendet kein spezielles Nip Format, es sollten also alle Nip Dateien, die für D2NT 3.x erstellt wurden mit funktionieren.
Quote:
Originally Posted by wasserkrug
Nun habe ich den Bot laufen lassen auch ohne Drop Einstellungen aber das dürfte an sich ja kein Problem sein. Nun kommt allerdings folgendes nachdem er sich in ein Spiel eingeloggt hat:
WARNING: cannot find charconfig 'NTConfig_Paladin_didaxo.ntl' - using default config
Die Fehlermeldung sollte ansich selbsterklärend sein
Also um das mal zu zitieren:
Code:
// Copy this file as NTConfig_Paladin_<YOURCHARNAME>.ntl and edit as appropriate.
// Do *NOT* edit this template! Keep it for future reference.
Zu gut Deutsch: Erstelle eine Kopie von der Datei 'NTConfig_Paladin.ntl' und nenne diese dann 'NTConfig_Paladin_didaxo.ntl'.
Ich gehe mal davon aus, daß 'didaxo' der Name von Deinem Paladin ist. Die 'NTConfig_Paladin.ntl' selbst sollte nicht verändert werden.
Quote:
Originally Posted by wasserkrug
<D2NT Error> C:\..\...\XNTBot-1.4\D2NT\scripts\libs\common\NTCommon.ntl (150):
ReferenceError: NT_SetupConfig is not defined
Da hat sich ein Fehler in Deiner Config eingeschlichen.
Meine Vermutung zielt mal ganz stark auf den folgenden Absatz:
Quote:
Originally Posted by wasserkrug
Code:
//----------------------------------------------------------------------------------------------
// Safety Settings
//----------------------------------------------------------------------------------------------
// Some bot scripts will perform a safety check at predefined points within the script,
// to make sure the character and/or merc are 'safe', before proceeding further.
// This flags value determines which checks are to be performed in such cases.
// If the character and/or merc are not considered 'safe' according to this check,
// then the character will visit the town first to restock on pots, remove curses
// or to revive the merc should that be necessary.
//
// This value is the bitwise inclusive OR of none or more of the following:
//
// Self: Merc:
0x00000001 - Less than minimum amount of potions
0x00010000 - Merc deceased
// 0x00000002 0x00020000 - Poisoned
// 0x00000004 0x00040000 - Amplify Damage Curse
// 0x00000008 0x00080000 - Weaken Curse
0x00000010 0x00100000 - Iron Maiden Curse
// 0x00000020 0x00200000 - Decrepify Curse
// 0x00000040 0x00400000 - Lower Resist Curse
// 0x00000080 0x00800000 - Defense Curse
// 0x00000100 0x01000000 - Blood Mana Curse
NTConfig_CheckSafe = 0x00010001;
Hierbei ist der obere Teil nur zur Veranschaulichung gedacht. Geändert werden sollte nur die eine Zeile ganz am Ende.
Die Hexadezimalwerte der gewünschten Checks werden dabei ODIERT, und die Summe dann unten eingetragen.