je me suis mis a AD2BS car c'est le seul qui me permettais de faire tout les boss que je voulais avec ma soso light sauf que j'ai de gros problemes avec
j'ai pourtant suivi les instructions et j'en suis pas a ma premiere configuration de bot
alors voila le soucis:
tout d'abord il n'arrive pas à selectionner ma soso (prob au niveau de slot je pense
ab
cd
ef
gh
ma soso est en G (donc slot 7 normalement) mais quand je met 7 il prend le perso en h et quand je met 8 il prend personne ^^
deuxieme soucis:
il ne fini pas shenk (il bute tout ce qui est autours mais pas shenk
il n'attaque pas comptess (il bloque devant le mur devant comme un con et ne tele pas deriere pour aller pourire la comptess)
donc voila mes plus gros soucis
je vous met les script en esperant que vous pourrez m'aider:
starter.dbj:
/* Modified NTBOT starter.dbj for AD2BS. All credits belongs to kimsout and former developers *///Account settingsvar account = "XXXXXXXXXXXX";var _password = "XXXXXXXXXXXX";var gamename = "xvbxbvxcvb";var gamepassword = "xvbcvb";var character_slot = 8;var difficulty = 2; // 2=hell, 1=nightmare//Random Gamename/Password settingsvar randomgamename = true;var randompassword = true;var gameMinLength = 125000; // time in milliseconds, minimum game length, 185 seconds default (1 game/3 minutes)var gameMaxLength = 600000; // time in milliseconds, maximum game length, 600 seconds defaultvar unableToConnectRetry = 5; // time in minutes to retry connecting on connection fail (real value is +/- 1 min)var realmDownRetry = 120; // time in minutes to retry connecting on a realm down (default is 120 minutes)var disconnectedRetry = 5; // time in minutes to retry on a disconnection (usually ip ban related)var cdkeyInUseRetry = 5; // time in minutes to retry on a cdkey in use error message (set to 0 to stop)var connectingToBnetTimeout = 20000; // time in milliseconds to wait for a login to time out and click cancel and retryvar characterScreenTimeout = 20000; // time in milliseconds to wait for character screen to appearvar pleaseWaitTimeout = 10000; // time in milliseconds to wait for a please wait popupvar createGameThreshold = 5000; // time in milliseconds to wait between making gamesvar createGameThresholdRandom = 1000; // time in milliseconds to randomly add +/- to the game create timevar createGameTimeout = 5000; // time in milliseconds to register a failed to create gamevar waitInLineTimeout = 60000; // time in milliseconds to wait in lines for a create game (60 second default)var characterSelectDelay = 2000; // time in milliseconds to wait before selecting a character on the char screenvar loginDelay = 1000; // time in milliseconds to wait before submitting login informationvar clickDelay = 500; // wait X milliseconds before next action after a click eventvar textDelay = 500; // wait X milliseconds before next action after inserting text into a textboxvar clickDelayRandom = 500; // random amount of time to add to a clickvar textDelayRandom = 500; // random amount of time to add to a text setvar gameDoesNotExistDelayMin = 600000; // how long to wait when a Game Does Not Exist occurs - minimum - default 10 minutesvar gameDoesNotExistDelayMax = 900000; // how long to wait when a Game Does Not Exist occurs - maximum - default 15 minutesvar gameDoesNotExistTimeout = 30000; // how long to wait for the dialog to disappear (default 30 seconds, don't change this)var joinChatAfterGame = false; // join chat after leaving a gamevar joinRandomChannel = false; // if this is true, will join a random channel, otherwise it will use the channel below..var joinChannelInChat = ""; // leave blank to not join a private channelvar waitBeforeEnterChatMin = 1000; // min how long to wait before entering chatvar waitBeforeEnterChatMax = 2000; // max how long to wait before entering chatvar waitInChatBeforeActionsMin = 2000; // min how long to wait before joining channelvar waitInChatBeforeActionsMax = 3000; // max how long to wait before joining channel// DONT EDIT ANYTHING BELOW THISvar minimumGameNameChars = 6; // minimum number of characters in a random game namevar maximumGameNameChars = 10; // maximum number of characters in a random game namevar minimumGamePassChars = 4; // minimum number of characters in a random game password *var maximumGamePassChars = 10; // maximum number of characters in a random game password *var GameNumber = 0;var lastGameMade = getTickCount();var lastGameStatus = 0;var nextGameMake = 0;var inGameAt = 0;var chatActionsDone = false;var lastGameFailed = false;include("controlInfo.dbl");var controlData = new controlInfo();function main(){ delay(1000); var _ingame = false; controlData.clickDelay = clickDelay; controlData.textDelay = textDelay; controlData.clickDelayRandom = clickDelayRandom; controlData.textDelayRandom = textDelayRandom; while(1) { if(me.ingame) { if(!inGameAt) inGameAt = getTickCount(); if(getTickCount()-lastGameMade < gameMaxLength) { if(!_ingame) { _ingame = true; lastGameStatus = 2; // in game successful } delay(1000); } else { sendEventToOOG("MAXGAME;0"); quit(); while(me.ingame) delay(500); } } else { if(_ingame) _ingame = false; locationAction(controlData.getLocation()); delay(500); } }}function locationAction(location){ switch(location.id) { case 3: // Lobby Chat if(!chatActionsDone) { chatActionsDone = true; delay(rnd(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax)); if(joinRandomChannel || joinChannelInChat != "") { say("/join " + (joinRandomChannel ? getRandomString(rnd(3,10)) : joinChannelInChat)); delay(1000); } } case 1: // Lobby if(location.id == 1 && joinChatAfterGame) { delay(rnd(waitBeforeEnterChatMin, waitBeforeEnterChatMax)); controlData.click(controlData.controls.lobby.button.enterChat); break; } if(getTickCount() > nextGameMake) { lastGameFailed = false; switch(lastGameStatus) { case 0: controlData.click(controlData.controls.lobby.button.create); nextGameMake = getTickCount() + createGameTimeout; // set our timeout sendEventToOOG("LOBBY;0"); break; case 1: // game failed, rollover to reset timer inGameAt = getTickCount(); // reset inGameAt, to wait how long we should have waited.. lastGameFailed = true; case 2: outputGameLength(); lastGameStatus = 0; setNextGameMake(); break; } } else locationTimeout(nextGameMake-getTickCount(), location); break; case 2: // Waiting In Line if(getTickCount()-lastGameMade > waitInLineTimeout) controlData.click(controlData.controls.lobby.inLine.button.cancel); break; case 4: // Create Game delay(1000); controlData.setText( controlData.controls.lobby.create.editBox.gameName, getName()); controlData.setText( controlData.controls.lobby.create.editBox.password, getPassword()); controlData.click(controlData.gameDifficulties[ difficulty ]); GameNumber ++; lastGameMade = getTickCount(); lastGameStatus = 1; // pending creation delay(500); runGC(); // run garbage collector between each game controlData.click( controlData.controls.lobby.create.button.createGame ); sendEventToOOG("GAMENUMBER;"+GameNumber); break; case 5: // Join Game break; case 6: // Ladder break; case 7: // Channel List break; case 8: // Main Menu outputGameLength(); controlData.click( controlData.gameTypes[ 1 ] ); break; case 9: // Login controlData.setText( controlData.controls.login.editBox.accountName, account ); controlData.setText( controlData.controls.login.editBox.password, _password ); sendEventToOOG("Login;0"); delay(loginDelay); controlData.click( controlData.controls.login.button.logIn ); while(controlData.getLocation().id == 9) delay(500); break; case 10: // Login Error (this is a fatal error, so stop) delay(3500); break; case 11: // Unable To Connect sendEventToOOG("UNABLETOCONNECT;"+ unableToConnectRetry*60 ); delay(3500); break; case 12: // Character Select var i; delay(characterSelectDelay); controlData.click( controlData.controls.characterSelect.textBox.characters[ character_slot ], 0,0,1 ); controlData.click( controlData.controls.characterSelect.textBox.characterInfo[ character_slot ], 0,0,1 ); if(controlData.getLocation().id != 12) break; for(i = 0 ; i < 10 ; i++) { delay(500); if(controlData.getLocation().id != 12) break; } if(i >= 10) { //realm down sendEventToOOG("REALMDOWN;" + realmDownRetry*60); delay(3500); break; } // reset last game made, so it doesnt make a game immediately inGameAt = 0; setNextGameMake(); break; case 13: // Realm Down - Character Select screen //realm down sendEventToOOG("REALMDOWN;" + realmDownRetry*60); delay(3500); break; case 14: // Character Select - Disconnected //mostly ip ban sendEventToOOG("IPBAN;" + disconnectedRetry*60); controlData.click( controlData.controls.characterSelect.disconnected.button.ok ); delay(3500); break; case 15: // New Character break; case 16: // Character Select - Please Wait popup if(!locationTimeout(pleaseWaitTimeout, location)) { controlData.click( controlData.controls.characterSelect.pleaseWait.button.cancel ); delay(3500); } break; case 17: // Lobby - Lost Connection - just click okay, since we're toast anyway controlData.click( controlData.controls.lobby.lostConnection.button.ok ); delay(3500); break; case 18: // D2 Splash controlData.click( controlData.controls.d2Splash.textBox.copyright ); break; case 19: // Login - Cdkey In Use controlData.click( controlData.controls.login.cdkeyInUse.button.ok ); sendEventToOOG("CDKEYINUSE;" + cdkeyInUseRetry*60); delay(3500); break; case 20: // Single Player - Select Difficulty break; case 21: // Main Menu - Connecting if(!locationTimeout(connectingToBnetTimeout, location)) { controlData.click( controlData.controls.mainMenu.connecting.button.cancel ); delay(3500); } break; case 22: // Login - Invalid Cdkey (classic or xpac) delay(3500); stop(); break; case 23: // Character Select - Connecting if(!locationTimeout(characterScreenTimeout, location)) { controlData.click( controlData.controls.characterSelect.button.exit ); delay(3500); } break; case 24: // Server Down - not much to do but wait.. break; case 25: // Lobby - Please Wait if(!locationTimeout(pleaseWaitTimeout, location)) controlData.click(controlData.controls.lobby.pleaseWait.button.cancel); break; case 26: // Lobby - Game Name Exists inGameAt = 0; lastGameStatus = 0; setNextGameMake(); break; case 27: // Gateway Select break; case 28: // Lobby - Game Does Not Exist inGameAt = rnd(gameDoesNotExistDelayMin, gameDoesNotExistDelayMax); lastGameStatus = 0; setNextGameMake(); locationTimeout(gameDoesNotExistTimeout, location); break; }}function sendEventToOOG(statusString){ return sendCopyData(null, "AD2BS 0.9", "",statusString);}function setNextGameMake(){ lastGameMade = getTickCount(); nextGameMake = lastGameMade + createGameThreshold + rnd(0-createGameThresholdRandom, createGameThresholdRandom) + inGameAt; inGameAt = 0; chatActionsDone = false;}function outputGameLength(){ if(inGameAt) { duration = getTickCount() - inGameAt; inGameAt = (duration < gameMinLength ? gameMinLength - duration : 0); }}function locationTimeout(time, location){ endtime = getTickCount() + time; while(controlData.getLocation().id == location.id && endtime > getTickCount()) { delay(500); } return (controlData.getLocation().id != location.id);}function getRandomString(_length){ _retString = ""; _charSet = "0123456789abcdefghijklmnopqrstuvwxyz"; while(_length--) _retString += _charSet.charAt(rnd(0, _charSet.length-1)); return _retString;}function getName() { var _gameName = ""; if(randomgamename) { _gameName = getRandomString(rnd(minimumGameNameChars,maximumGameNameChars)); return _gameName; } _gameName = gamename + GameNumber; return _gameName;}function getPassword() { var Password = ""; if(randompassword) { Password = getRandomString(rnd(minimumGamePassChars,maximumGamePassChars)); return Password; } Password = gamepassword; return Password;}le NTconfig_soso
if(!isIncluded("config/NTConfig.dbl")) include("config/NTConfig.dbl");var NTConfig_CastStatic;function NT_LoadConfig(){ //------------------------------------------------------------------------------ // Boss configuration //------------------------------------------------------------------------------ NTConfig_PublicMode = false; NTConfig_Script.push("Pindleskin") NTConfig_Script.push("Eldritch"); NTConfig_ShenkExtension = true; NTConfig_Script.push("Countess"); NTConfig_StartDelay = 0; // Delay time in milliseconds to start; NTConfig_AreaDelay = 500; // Delay time in milliseconds to change area; NTConfig_SnagDelay = 500; // Delay time in milliseconds to wait before starting picking items NTConfig_SkipHealLife = 90; // If you have more than this percent of life, you won't go to a healer NTConfig_SkipHealMana = 70; // If you have more than this percent of mana, you won't go to a healer NTConfig_SkipHealCurses = false;// If you want to skip curses, set to true NTConfig_UseMerc = true; // Set to true if you use a mercenary, will revive merc at a reviver npc. NTConfig_ResetWeapon = true; // Set to true to reset weapon when reviving merc NTConfig_LifeThresh = 60; // Drink a normal potion if under this percent of life. NTConfig_LifeRejuvThresh = 40; // Drink a rejuvenation potion if under this percent of life. NTConfig_ManaThresh = 30; // Drink a normal potion if under this percent of mana. NTConfig_ManaRejuvThresh = 10; // Drink a rejuvenation potion if under this percent of mana. NTConfig_LifeChicken = 30; // This is your chicken life percent. If you go below this life total, exit game. NTConfig_ManaChicken = 0; // This is your chicken mana percent. If you go below this mana total, exit game. NTConfig_MercLifeThresh = 60; // This is the threshold to use a life potion on your merc in percent. NTConfig_MercRejuvThresh = 40; // This is the threshold to use a rejuv potion on your merc in percent. NTConfig_MercChicken = 20; // This is your mercs chicken life percent. If he goes below this, exit game. NTConfig_FreeSpace = 6; // Number of free columns. If less full columns are free stashing is set. // The numbers correspond to your inventory. Set 0 to keep whatever is there, 1 to stash it. NTConfig_Columns[0] = [1,1,1,1,1,1,0,0,0,0]; NTConfig_Columns[1] = [1,1,1,1,1,1,0,0,0,0]; NTConfig_Columns[2] = [1,1,1,1,1,1,0,0,0,0]; NTConfig_Columns[3] = [1,1,1,1,1,1,0,0,0,0]; NTConfig_MinGoldToStash = 100000; // Maximum gold amount carried before going to stash //---------------------------------------------------------------------------------------------- // 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] = "hp"; NTConfig_BeltColType[1] = "mp"; NTConfig_BeltColType[2] = "rv"; NTConfig_BeltColType[3] = "rv"; //---------------------------------------------------------------------------- // Minimum amount of potions in each column before needing refilling // If there's less potions then this number in the column we go and shop. // Set to 4 to go shopping as soon as there's a potion missing. // Recommend leaving columns set to "rv" at 0. Since shops won't carry rejuvs. //---------------------------------------------------------------------------- NTConfig_BeltColMin[0] = 3; NTConfig_BeltColMin[1] = 3; NTConfig_BeltColMin[2] = 0; NTConfig_BeltColMin[3] = 0; //----------------------------------------------------------------------------------- // SnagIt configuration // Here is a list of preset nip files assuming you use nip package. // If you want to add your own .nip files, just copy any line and enter the // To disable a .nip file, just add "//" at the start of the line or delete the line. //----------------------------------------------------------------------------------- NTConfig_NIPFilePath.push("uniques.nip"); NTConfig_NIPFilePath.push("sets.nip"); NTConfig_NIPFilePath.push("whites.nip"); NTConfig_NIPFilePath.push("runes.nip"); NTConfig_NIPFilePath.push("rares.nip"); NTConfig_NIPFilePath.push("magics.nip"); NTConfig_NIPFilePath.push("gems.nip"); NTConfig_NIPFilePath.push("charmsjewels.nip"); NTConfig_NIPFilePath.push("ringsamulets.nip"); NTConfig_NIPFilePath.push("potions.nip"); //NTConfig_NIPFilePath.push("moneymaker.nip"); NTConfig_NIPFilePath.push("keys.nip"); NTConfig_SnagRange = 40; // Radius to check for dropped items. 40 is a good number here //------------------------------------------------------------------------------ // GambleIt configuration // To specify what items to gamble, adjust the array with the desired item codes //------------------------------------------------------------------------------ NTConfig_GambleIt = false; // Enable gambling NTConfig_GambleStopGold = 300000; // Gold amount to stop the gambling NTConfig_GambleItem.push("rin"); // Rings NTConfig_GambleItem.push("amu"); // Amulets NTConfig_GambleItem.push("ci0"); // Circlets NTConfig_GambleItem.push("ci1"); // Coronets //NTConfig_GambleItem.push("lgl"); // Leather Gloves //NTConfig_GambleItem.push("vgl"); // Heavy Gloves //NTConfig_GambleItem.push("mgl"); // Chain Gloves //NTConfig_GambleItem.push("tgl"); // Light Gauntlets //NTConfig_GambleItem.push("hgl"); // Gauntlets NTConfig_OpenChest = true; // Set to true to open chest //------------------------------------------------------------------------------ // Attack configuration //------------------------------------------------------------------------------ NTConfig_AttackFirst = 53; // Cast your first spell once. Set to 0 if you won't NTConfig_AttackBoss = 53; // Cast your primary spell to boss. NTConfig_AttackOthers = 53; // Cast your primary spell to others. NTConfig_AttackSecondary = 0; // Cast your Secondary spell if monster is immune to your primary spell. Set to 0 if you won't NTConfig_ClearPosition = false; // Set to true if you want to clear area after killing boss. NTConfig_CheckSafe = true; // Set to true to check for curses, merc and potion (go to town if needed) NTConfig_CastStatic = 100; // Cast Static Field until monster's HP lower less than this percent. Set to 100 if you won't}le comptess NT (auquel je n'ai pas touché)
function NT_Countess(){ var _countess; var _tileid = [10,12,9,9,9,9]; print("ÿc3Start Countess script"); if(!NTTM_CheckAct()) return false; NTTMGR_TownManager(); if(!NTTM_TownMove("waypoint")) return false; if(!NTM_UsePortal("Waypoint", 6)) return false; NTP_DoPrecast(); for(var i = 0 ; i < _tileid.length ; i++) { if(!NTM_MoveToObject(NTC_UNIT_TILE, _tileid[i])) return false; if(!NTM_TakeStairs(_tileid[i], _tileid[i])) return false; } NTA_ClearPosition(10); if(NTConfig_CheckSafe) { if(!NTTMGR_CheckSafe(2)) return false; } if(me.y > 11060 && me.y <= 11078) { if(!NTM_MoveTo(12544, 11066)) return false; } else { if(!NTM_MoveTo(12570, 11057)) return false; } _countess = NTC_FindMonster("The Countess"); if(!_countess) return false; if(me.y > 11060 && me.y <= 11078) { if(_countess.y <= 11054) NTM_MoveTo(12537, 11042); if(_countess.y > 11056 && _countess.y <= 11070) { if(_countess.x < 12533) NTM_MoveTo(12518, 11057); else NTM_MoveTo(12548, 11057); } if(_countess.y > 11070 && _countess.y <= 11085) { if(_countess.x < 12533) NTM_MoveTo(12518, 11083); else NTM_MoveTo(12548, 11083); } if(_countess.y > 11086) NTM_MoveTo(12542, 11098); } else { if(_countess.x <= 12550) { NTM_MoveTo(12562, 11057); NTM_MoveTo(12548, 11043); } if(_countess.x > 12550 && _countess.x <= 12561) { if(_countess.y < 11027) NTM_MoveTo(12577, 11043); else { NTM_MoveTo(12565, 11043); NTM_MoveTo(12577, 11025); } } if(_countess.x > 12561 && _countess.x <= 12579) { if(_countess.y < 11027) NTM_MoveTo(12555, 11043); else { NTM_MoveTo(12565, 11043); NTM_MoveTo(12555, 11025); } } if(_countess.x > 12579) { NTM_MoveTo(12578, 11057); NTM_MoveTo(12582, 11043); } } if(!NTA_KillBoss("The Countess")) return false; if(NTConfig_ClearPosition) NTA_ClearPosition(); NTSI_PickItems(); return true;}et le shenk NT auquel je n'ai pas touché non plus:
function NT_Eldritch(){ print("ÿc3Start Eldritch script"); if(!NTTM_CheckAct()) return false; NTTMGR_TownManager(); if(!NTTM_TownMove("waypoint")) return false; if(!NTM_UsePortal("Waypoint", 111)) return false; NTP_DoPrecast(); if(!NTM_MoveTo(3750, 5090)) return false; if(NTA_KillBoss("Eldritch")) { if(NTConfig_ClearPosition) NTA_ClearPosition(); NTSI_PickItems(); } else if(!NTConfig_ShenkExtension) return false; if(NTConfig_ShenkExtension) { if(!NTM_MoveTo(3798, 5102)) return false; NTM_WalkTo(me.x+5, me.y); NTC_PingDelay(500); if(!NTM_MoveTo(3876, 5120)) return false; if(me.classid != NTC_CHAR_CLASS_PALADIN && me.classid != NTC_CHAR_CLASS_BARBARIAN) { if(NTA_ClearPosition()) NTSI_PickItems(); } if(NTConfig_CheckSafe) { if(!NTTMGR_CheckSafe(2)) return false; } if(!NTA_KillBoss("Shenk the Overseer")) return false; if(NTConfig_ClearPosition) NTA_ClearPosition(); NTSI_PickItems(); } return true;}en espérant que vous pourrez m'aider
merci d'avance