Skip to content

방만들기 대기열땜에 질문이요

분류 질문 조회 수 1,428 추천 수 0

윈라 자체가 구동되지 않는 컴퓨터라서

4차 수정본을 쓰질 못합니다

그래서 2차 수정본 쓰는데요

4차는 계속 오류 발생

2차 수정본에서 대기열로 인해서

방만들때 계속

방만들다가 대기열이 길어지면 취소해버리고 또 다시 방만들고를 반복 합니다

대기열이 있으면 그냥 기다렸다가 방 조인할방법은 없나요?
  • [無情]작은소망 2010.05.22 11:35
    음 디아 정보강좌에 검색하면 나오는 내용이군요 ^^ http://tradia.me/diablo2/diablo2_tips/243976
  • [주]코리아도 2010.05.22 11:41
    이방법 소용 없어요 제가 짐 이거 적용한 상태인데 방 만들고 대기열이 길어지면 자동으로 취소를 하고 또 만들고 이렇게 반복 하더라고요 꺼지진 않구요
  • [無情]작은소망 2010.05.22 11:49
    제가 테스트해봤는데 잘됩니다.!! 안될리가 없을탠데요..
  • [無情]작은소망 2010.05.22 11:50
    수정하신뒤에 아예 봇을 다시 시작해보세요..!! 그래야 적용됩니다.
  • 인트로플 2010.05.22 12:31
    D2NT3.1_NTBot4.2_4\scripts\NTbot.NTJ 파일여서서 밑에내용하고 다른부분 보시면 답이 나오실듯 /* * 서버 아이피 찾기 * 멀티로더 * 쫄봇 * 퀘드랍용 쫄봇 * 창고지기 * 렐름변경 * 오류 검사하기 * 멍 때림 검사하기 * 기타 옵션 설정하기 */ var findServerIpList = new Array(); var findServerIpAccountIndex = 0; var findServerIpGameName = ""; var findServerIpPassword = ""; var multiLoaderList = new Array(); var multiLoaderAccountIndex = 0; var multiLoaderGameName = ""; var multiLoaderPassword = ""; var leechBotAccountIndex = 0; var leechBotMasterIsAuto; var leechBotMasterAccount; var leechBotMasterGameName; var leechBotMasterPassword; var leechBotMasterIsChat = new Array(2); var leechBotLeechAccountList = new Array(); var leechBotLeechJoinDelay; var leechBotQueDropAccountIndex = 0; var leechBotQueDropLeechIndex = -1; var leechBotQueDropMasterAccount; var leechBotQueDropMasterGameName; var leechBotQueDropMasterPassword; var leechBotQueDropLeechAccountList = new Array(); var warehouseKeeperMaster; var warehouseKeeperIsLogin; var warehouseKeeperIsHunter; var warehouseKeeperIsKeeper = true; var warehouseKeeperIsCheck = false; var warehouseKeeperTickCount = 0; var warehouseKeeperAccount = ""; var warehouseKeeperGameName = ""; var warehouseKeeperPassword = ""; var warehouseKeeperLocation = 0; var locationIdCheck = -1; var locationIdCount = 0; var changeRealmList = new Array(); var managerLogs = new Array(2); var lobbyStop; var runGcCheck; var runGcCount = 0; var inGameErrorList = new Array(); var inGameErrorCheck; var ntBotGameCheck; var ntBotGameCount = 0; var createGameCheck = new Array(4); var createGameError = false; var createGameCount = 0; var battleNetCheck; var characterSelectCheck = new Array(2); var characterSelectCount = 0; var maxNumberOfPlayers; //############################################################################## // 서버 아이피 찾기 //------------------ // findServerIpList.push(["계정이름", 대기 시간(1/1000초), 서버 아이피 . . .]) // 대기 시간: 0 = 찾는 서버 아이피가 아니면 사냥을 합니다. // 1 이상 = 찾는 서버 아이피가 아니면 로비에서 설정한 시간만큼 대기합니다. // 서버 아이피: "XXX.XXX.XXX.OOO"에서 "OOO"을 입력합니다. // 서버 아이피는 개수 제한 없이 무제한으로 설정할 수 있습니다. // 예) findServerIpList.push(["abc", 0, 158, 159]) = "계정이름"이 "abc"이고 서버 아이피가 158, 159가 아니면 사냥을 한 후 방을 나갑니다. // "계정이름"이 "abc"이고 서버 아이피가 158, 159면 방에서 무한 대기합니다. // 주의: 서버 아이피 찾기를 시작하기 전 "scripts/NTBot/MyData/FindServerIp" 폴더에 있는 파일들을 삭제합니다. // 참고: 찾은 서버 아이피 방에서 튕기면 튕긴 방으로 다시 들어갑니다. //============================================================================== //findServerIpList.push(["계정이름", 180000, 서버 아이피]); //findServerIpList.push(["계정이름", 180000, 서버 아이피]); //findServerIpList.push(["계정이름", 180000, 서버 아이피]); //findServerIpList.push(["계정이름", 180000, 서버 아이피]); //############################################################################## // 멀티로더 //---------- // multiLoaderList.push("멀티로더 이름") // 멀티로더 이름: "D2NT Manager"에 설정한 "계정이름"입니다. 캐릭터의 실제 계정이름과는 무관하므로 아무 이름이나 설정합니다. // 주의: "멀티로더 이름"과 "D2NT Manager"에 설정한 "계정이름"은 반드시 같아야 합니다. // "멀티로더 이름"을 "1"로 설정했으면 "D2NT Manager"에 설정한 "계정이름"도 "1"이어야 합니다. // 참고: "D2NT Manager"에서 "Play Type"을 "Single Player"로 하면 처음에 비번 입력 과정이 없습니다. //============================================================================== //multiLoaderList.push("1"); //multiLoaderList.push("2"); //multiLoaderList.push("3"); //multiLoaderList.push("4"); //############################################################################## // 쫄봇 //------ // 주의: 시작하기 전 "scripts/NTBot/MyData/LeechBot" 폴더에 있는 파일들을 삭제합니다. //============================================================================== leechBotMasterAccount = ""; // 기사 계정이름 leechBotMasterIsAuto = true; // 기사가 자동으로 방 만들기(true: 자동으로 방 만들기, false: 수동으로 방 만들거나 들어가기) leechBotMasterIsChat = [false, false]; // 기사가 채팅창에 있을 경우 방제와 비번 메시지 보내기 = [방제, 비번] * 주의: 방제는 "XXX-번호" 형식이어야 합니다. // 쫄 계정이름 설정하기 //---------------------- //leechBotLeechAccountList.push("쫄 계정이름"); //leechBotLeechAccountList.push("쫄 계정이름"); //leechBotLeechAccountList.push("쫄 계정이름"); leechBotLeechJoinDelay = 0; // 쫄이 방에 들어가는 시간차(1/1000초) * 참고: 시간차를 5000으로 설정했다면 첫 번째로 설정한 쫄은 0, 두 번째는 5000, 세 번째는 10000입니다. //############################################################################## // 퀘드랍용 쫄봇 //--------------- // 주의: 시작하기 전 "scripts/NTBot/MyData/LeechBotQueDrop" 폴더에 있는 파일들을 삭제합니다. // 참고: leechBotQueDropList에 설정한 순서대로 leechBotQueDropMaster가 방을 만들어 줍니다. //============================================================================== leechBotQueDropMasterAccount = ""; // 기사 계정이름 // 쫄 계정이름 설정하기 //---------------------- //leechBotQueDropLeechAccountList.push("쫄 계정이름"); //leechBotQueDropLeechAccountList.push("쫄 계정이름"); //leechBotQueDropLeechAccountList.push("쫄 계정이름"); //############################################################################## // 창고지기 //============================================================================== warehouseKeeperMaster = ""; // 창고지기 대표 계정이름 * 참고: D2NT Manager가 맨 처음 접속하게 될 대표 계정이름입니다. 창고지기의 계정이름 또는 대기하는 동안 사냥할 캐릭터의 계정이름을 설정합니다. warehouseKeeperIsHunter = false; // 사냥하기(true: 사냥, false: 사냥 안함) * 주의: 창고지기의 계정이름과 사냥할 캐릭터의 계정이름은 달라야 합니다. * 참고: warehouseKeeperMaster에 설정한 계정에 있는 캐릭터가 사냥합니다. warehouseKeeperIsLogin = true; // 로그인 창에서 대기하기(true: 대기, false: 대기 안함) //############################################################################## // 렐름변경 //---------- // changeRealmList.push(["계정이름", 렐름 번호]); // 렐름 번호: 0 = Asia, 1 = Asia2, 2 = Asia3 //============================================================================== //changeRealmList.push(["계정이름", 렐름 번호]); //changeRealmList.push(["계정이름", 렐름 번호]); //changeRealmList.push(["계정이름", 렐름 번호]); //changeRealmList.push(["계정이름", 렐름 번호]); //############################################################################## // 오류 검사하기 //============================================================================== characterSelectCheck = [1, 0]; // 캐릭터 선택 실패 시 = [재시도 횟수, 0: 재시도 후 대기(realmDownRetry 시간 만큼)/ 1 이상: 재시도 후 로더 재실행(초, 설정 시간 만큼 지연 후 로더 실행)] createGameCheck = [true, 10, 180, 1800]; // 방 만들기 실패 시 대기하기(방따) = [사용 여부, 1번 실패: 채팅(횟수), 2번 실패: 대기(초), 3번 실패: 재시작(초)] battleNetCheck = 1800; // 배틀넷 접속 실패(배넷따) 시 재실행하기 = 재실행 시간(초, 0: 사용 안함) ntBotGameCheck = 0; // 인게임 상태에서 "NTBotGame.ntj"의 실행여부 검사하기 = 확인 시간 간격(초, 0: 사용 안함) //############################################################################## // 멍 때림 검사하기 //============================================================================== inGameErrorCheck = 60; // 마을 밖에서 설정한 시간(초, 0: 사용 안함) 동안 움직이지 않으면 방 나가기 // 검사하지 않을 계정이름 설정하기 //--------------------------------- //inGameErrorList.push("계정이름"); //inGameErrorList.push("계정이름"); //inGameErrorList.push("계정이름"); //inGameErrorList.push("계정이름"); //############################################################################## // 기타 옵션 설정하기 //============================================================================== lobbyStop = 20; // 로비에서 일시정지 시 멈출 시간(초, 0: 사용 안함) * 참고: 봇이 방 만들기 전 참가(join) 버튼을 누르면 작동합니다. 서버 아이피 찾기(방에서 튕겨 재입장할 경우), 멀티로더, 쫄봇의 쫄, 쫄봇의 기사(수동으로 방 만들기를 사용할 경우), 창고지기 등을 사용 시에는 작동 안합니다. maxNumberOfPlayers = 8; // 게임에 참가할 수 있는 플레이어 최대 숫자(0: 사용 안함) managerLogs = [true, true]; // "D2NT Manager -> Logs"에 메시지 출력하기 = [사냥시간, 경험치] * 참고: 레벨 99의 경험치는 표시되지 않습니다. runGcCheck = 60; // 메모리 청소할 시간 간격(초, 0: 방 입장 후 1번만 실행) * 참고: 랙과 메모리 사용량을 줄입니다. 방에서 튕김 현상이 잦으면 메모리 청소할 시간 간격을 0으로 하거나 늘립니다. //############################################################################## //############################################################################## //############################################################################## var gameMinLength = 180000; // 게임 최소 시간(1/1000초) // time in milliseconds, minimum game length, 180 seconds default (1 game/3 minutes) var unableToConnectRetry = 5; // 베틀넷 접속 실패 시 재시도 시간(분) // time in minutes to retry connecting on connection fail (real value is +/- 1 min) var realmDownRetry = 300; // 렐름다운 시 재시도 시간(분) // 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; // "배틀넷 접속중 입니다." 창에서의 대기 시간(1/1000초) // time in milliseconds to wait for a login to time out and click cancel and retry var characterScreenTimeout = 15000; // 캐릭터 선택 창에서의 대기 시간(1/1000초) // time in milliseconds to wait for character screen to appear var pleaseWaitTimeout = 10000; // "잠시 기다려 주십시오." 창에서의 대기 시간(1/1000초) // time in milliseconds to wait for a please wait popup var createGameThreshold = 5000; // 게임 만드는 과정마다 추가 시간(1/1000초) // time in milliseconds to wait between making games var createGameThresholdRandom = 1000; // createGameThreshold에 무작위로 시간 더하거나 빼기(1/1000초) // time in milliseconds to randomly add +/- to the game create time var createGameTimeout = 15000; // 게임 만들기 실패 시 대기 시간(1/1000초) // time in milliseconds to register a failed to create game var waitInLineTimeout = 60000; // 게임 만들기 창에서의 대기 시간(1/1000초) // in milliseconds to wait in lines for a create game (60 second default) var characterSelectDelay = 1000; // 캐릭터 선택 전 지연 시간(1/1000초) // time in milliseconds to wait before selecting a character on the char screen var loginDelay = 1000; // 로그인 전 지연 시간(1/1000초) // time in milliseconds to wait before submitting login information var clickDelay = 500; // 클릭 후 지연 시간(1/1000초) // wait X milliseconds before next action after a click event var textDelay = 500; // 문자 입력 후 지연 시간(1/1000초) // wait X milliseconds before next action after inserting text into a textbox var clickDelayRandom = 500; // clickDelay에 무작위로 시간 더하기(1/1000초) // random amount of time to add to a click var textDelayRandom = 500; // textDelay에 무작위로 시간 더하기(1/1000초) // random amount of time to add to a text set var gameDoesNotExistDelayMin = 600000; // "게임이 존재하지 않습니다." 시 최소 지연 시간(1/1000초) // how long to wait when a Game Does Not Exist occurs - minimum - default 10 minutes var gameDoesNotExistDelayMax = 900000; // "게임이 존재하지 않습니다." 시 최대 지연 시간(1/1000초) // how long to wait when a Game Does Not Exist occurs - maximum - default 15 minutes var gameDoesNotExistTimeout = 30000; // "게임이 존재하지 않습니다." 시 대기 시간(1/1000초) // how long to wait for the dialog to disappear (default 30 seconds, don't change this) var joinChatAfterGame = false; // 로비에서 대화 참여하기 // join chat after leaving a game var joinRandomChannel = true; // 채널명 무작위로 만들기 // 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 channel var waitBeforeEnterChatMin = 1000; // 대화 참여하기 전 최소 지연 시간(1/1000초) // min how long to wait before entering chat var waitBeforeEnterChatMax = 2000; // 대화 참여하기 전 최대 지연 시간(1/1000초) // max how long to wait before entering chat var waitInChatBeforeActionsMin = 2000; // 채널 참여하기 전 최소 지연 시간(1/1000초) // min how long to wait before joining channel var waitInChatBeforeActionsMax = 3000; // 채널 참여하기 전 최대 지연 시간(1/1000초) // max how long to wait before joining channel // DONT EDIT ANYTHING BELOW THIS // D2NT Manager Command const D2NT_MGR_LOADING = 1; const D2NT_MGR_READY = 2; const D2NT_MGR_LOGIN = 3; const D2NT_MGR_CREATE_GAME = 4; const D2NT_MGR_INGAME = 5; const D2NT_MGR_RESTART = 6; const D2NT_MGR_CHICKEN = 7; const D2NT_MGR_PRINT_STATUS = 8; const D2NT_MGR_PRINT_LOG = 9; var lastGameMade = GetTickCount(); var lastGameStatus = 0; var nextGameMake = 0; var inGameAt = 0; var chatActionsDone = false; Include("libs/controlInfo.ntl"); var controlData = new controlInfo(); function NTMain() { Delay(1000); var _script; var _managerLogs; var _checkServerIp; var _inGame = false; var _isGameName = false; controlData.clickDelay = clickDelay; controlData.textDelay = textDelay; controlData.clickDelayRandom = clickDelayRandom; controlData.textDelayRandom = textDelayRandom; My_Initialize(); while (true) { if (me.ingame) { if (!inGameAt) inGameAt = GetTickCount(); if (!_inGame) { if (!_isGameName) { sendEventToOOG(D2NT_MGR_INGAME, "[" + me.gameserverip.split(".")[3] + "] " + me.gamename + (me.gamepassword ? ("/" + me.gamepassword) : ""), 0); _checkServerIp = My_FindServerIp_CheckServerIp(); if (_checkServerIp == 0) { if (me.account != warehouseKeeperMaster) { if (multiLoaderAccountIndex || (leechBotAccountIndex == 1 && (!leechBotMasterIsAuto || leechBotMasterIsChat[0]))) My_File("NTBot/MyData/MultiLoader/MultiLoader[" + me.account + "].txt", 1, me.gamename + "/" + me.gamepassword); if (leechBotAccountIndex == 1) { My_File("NTBot/MyData/LeechBot/LeechBotMasterName.txt", 1, me.charname); My_File("NTBot/MyData/LeechBot/LeechBotMasterGameName.txt", 1, me.gamename + "/" + me.gamepassword); } else if (leechBotAccountIndex == 2) My_File("NTBot/MyData/LeechBot/LeechBotLeechGameName[" + me.account + "].txt", 1, me.gamename + "/" + me.gamepassword); else if (leechBotQueDropAccountIndex == 1) { My_File("NTBot/MyData/LeechBotQueDrop/LeechBotQueDropLeechGameName[" + leechBotQueDropLeechAccountList[leechBotQueDropLeechIndex++] + "].txt", 1, me.gamename + "/" + me.gamepassword); leechBotQueDropLeechIndex = (leechBotQueDropLeechAccountList.length > leechBotQueDropLeechIndex) ? leechBotQueDropLeechIndex : 0; My_File("NTBot/MyData/LeechBotQueDrop/LeechBotQueDropLeechIndex.txt", 1, String(leechBotQueDropLeechIndex)); } else if (leechBotQueDropAccountIndex == 2) My_File("NTBot/MyData/LeechBotQueDrop/LeechBotQueDropLeechGameName[" + me.account + "].txt", 1); } else My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperHunter.txt", 1, warehouseKeeperIsKeeper ? "false" : "true"); } createGameError = false; createGameCount = 0; characterSelectCount = 0; locationIdCount = 0; _isGameName = true; } if (_checkServerIp == -1 || Load("NTBot/NTBotGame.ntj")) { _inGame = true; lastGameStatus = 2; _managerLogs = GetTickCount(); if (me.account == warehouseKeeperMaster) { warehouseKeeperIsCheck = false; warehouseKeeperTickCount = My_GetTickCount(); } if (_checkServerIp == -1) { ExitGame(); while (me.ingame) Delay(1000); } if (managerLogs[1]) My_File("NTBot/MyData/ManagerLogs/ManagerLogsExperience[" + me.account + "].txt", 1); } } else { My_WarehouseKeeper_CountInGame(); My_NTBotGame_Check(); } My_RunGc_Check(); Delay(1000); } else { if (_inGame) { My_ExitGame_Check(); _inGame = false; _isGameName = false; sendEventToOOG(D2NT_MGR_READY, "", 0); My_StopBot(); if (managerLogs[0] || managerLogs[1]) sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc3" + (managerLogs[0] ? (My_GetTime(_managerLogs) + " ") : "") + (managerLogs[1] ? My_File("NTBot/MyData/ManagerLogs/ManagerLogsExperience[" + me.account + "].txt", 0) : ""), 0); if (me.account == warehouseKeeperMaster) warehouseKeeperTickCount = My_GetTickCount(); else if (leechBotAccountIndex == 1) { My_File("NTBot/MyData/LeechBot/LeechBotMasterGameName.txt", 1); My_File("NTBot/MyData/LeechBot/LeechBotMasterName.txt", 1); My_File("NTBot/MyData/LeechBot/LeechBotMasterMessage.txt", 1); My_File("NTBot/MyData/BaalRun/BaalRunPortal.txt", 1); } else if (leechBotQueDropAccountIndex == 2) My_File("NTBot/MyData/LeechBotQueDrop/LeechBotQueDropLeechGameName[" + me.account + "].txt", 1, "/"); } if (me.account == warehouseKeeperMaster) My_WarehouseKeeper_Check(); else if (multiLoaderAccountIndex || (leechBotAccountIndex == 1 && !leechBotMasterIsAuto)) My_GameName_SendStatus(); else My_LobbyStop_Check(); My_LocationId_Check(); locationAction(controlData.getLocation(), me.account == warehouseKeeperMaster && warehouseKeeperIsKeeper); Delay(500); } } } function locationAction(location, isWarehouseKeeper) { if (isWarehouseKeeper) My_WarehouseKeeper_SetStatusText("방 들어가는 중 (%T/60초)"); switch (location.id) { case 3: // Lobby Chat if (!chatActionsDone) { chatActionsDone = true; Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax)); if (joinChatAfterGame ? (joinRandomChannel || joinChannelInChat != "") : (createGameCount == 1)) { Say("/join " + (joinRandomChannel ? getRandomString(Random(3,10)) : joinChannelInChat)); Delay(1000); if (createGameCount == 1) { createGameCount++; for (var i = 1; i <= createGameCheck[1]; i++) { Say(String(i)); Delay(1000); } } } if (leechBotMasterIsChat[0] && leechBotAccountIndex == 1 && leechBotMasterIsAuto) { var _number; var _msg = My_File("NTBot/MyData/MultiLoader/MultiLoader[" + me.account + "].txt", 0); if (_msg) { _msg = _msg.split("/"); _number = Number(_msg[0].substring(_msg[0].lastIndexOf("-") + 1)) + 1; if (_number < 10) _number = "0" + _number; else if (_number > 99) _number = "00"; _msg[0] = _msg[0].substring(0, _msg[0].lastIndexOf("-") + 1) + _number; _msg[1] = leechBotMasterIsChat[1] ? ("/" + _msg[1]) : ""; Say(_msg[0] + _msg[1]); Delay(1000); } } } // continue case 1: // Lobby if (location.id == 1 && (joinChatAfterGame || (createGameCount == 1))) { Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax)); controlData.click(controlData.controls.lobby.button.enterChat); break; } if (GetTickCount() > nextGameMake) { var _control; switch (lastGameStatus) { case 0: _control = controlData.get(controlData.controls.lobby.button.create); if (_control && _control.pressed) { controlData.click(controlData.controls.lobby.button.join); Delay(500); } if ((me.account == warehouseKeeperMaster && warehouseKeeperIsKeeper) || My_FindServerIp_GetGameName()) controlData.click(controlData.controls.lobby.button.join); else if (leechBotAccountIndex == 2) { My_LeechBot_CheckGame(); My_LeechBot_LeechJoinDelay(); controlData.click(controlData.controls.lobby.button.join); } else if (leechBotQueDropAccountIndex == 1) { My_LeechBotQueDrop_CheckLeechIndex(); controlData.click(controlData.controls.lobby.button.create); } else if (leechBotQueDropAccountIndex == 2) { My_LeechBotQueDrop_CheckGame(); controlData.click(controlData.controls.lobby.button.join); } else { if (me.account == warehouseKeeperMaster) My_WarehouseKeeper_SetStatusText("사냥 중 (ÿc0...ÿc4)"); controlData.click(controlData.controls.lobby.button.create); } nextGameMake = GetTickCount() + createGameTimeout; // set our timeout sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0); break; case 1: // game failed, rollover to reset timer inGameAt = GetTickCount(); // reset inGameAt, to wait how long we should have waited.. // continue case 2: outputGameLength(); lastGameStatus = 0; setNextGameMake(); sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0); break; } } else timeoutDelay(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 if (multiLoaderAccountIndex || (leechBotAccountIndex == 1 && !leechBotMasterIsAuto)) { My_MultiLoader_CheckId(); sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0); } else { if (maxNumberOfPlayers > 0) controlData.setText(controlData.controls.lobby.create.editBox.maxNumberOfPlayers, String(maxNumberOfPlayers)); sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0); locationTimeout(5000, location); } lastGameMade = GetTickCount(); lastGameStatus = 1; // pending creation break; case 5: // Join Game if (multiLoaderAccountIndex || (leechBotAccountIndex == 1 && !leechBotMasterIsAuto)) { My_MultiLoader_CheckId(); sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0); } else { sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0); locationTimeout(5000, location); controlData.click(controlData.controls.lobby.button.join); if (findServerIpGameName) { controlData.setText(controlData.controls.lobby.join.editBox.gameName, findServerIpGameName); controlData.setText(controlData.controls.lobby.join.editBox.password, findServerIpPassword); controlData.click(controlData.controls.lobby.join.button.joinGame); } else if (me.account == warehouseKeeperMaster) { controlData.setText(controlData.controls.lobby.join.editBox.gameName, warehouseKeeperGameName); controlData.setText(controlData.controls.lobby.join.editBox.password, warehouseKeeperPassword); controlData.click(controlData.controls.lobby.join.button.joinGame); } else if (leechBotAccountIndex == 2) { controlData.setText(controlData.controls.lobby.join.editBox.gameName, leechBotMasterGameName); controlData.setText(controlData.controls.lobby.join.editBox.password, leechBotMasterPassword); controlData.click(controlData.controls.lobby.join.button.joinGame); } else if (leechBotQueDropAccountIndex == 2) { controlData.setText(controlData.controls.lobby.join.editBox.gameName, leechBotQueDropMasterGameName); controlData.setText(controlData.controls.lobby.join.editBox.password, leechBotQueDropMasterPassword); controlData.click(controlData.controls.lobby.join.button.joinGame); } locationTimeout(5000, location); } lastGameMade = GetTickCount(); lastGameStatus = 1; // pending creation break; case 6: // Ladder break; case 7: // Channel List break; case 8: // Main Menu if (controlData.getCurrentRealmIndex() == me.gatewayid) { outputGameLength(); controlData.click(controlData.gameTypes[me.playtype]); } else controlData.click(controlData.controls.mainMenu.button.gateway); break; case 9: // Login sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0); Delay(loginDelay); if (me.account != warehouseKeeperMaster || !warehouseKeeperIsKeeper) controlData.setText(controlData.controls.login.editBox.accountName, me.account); else if (warehouseKeeperAccount && (!warehouseKeeperIsHunter || me.account != warehouseKeeperAccount)) { Delay(loginDelay); controlData.setText(controlData.controls.login.editBox.accountName, warehouseKeeperAccount); } else { sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1창고지기 : 계정이름 읽기 오류", 0); SetStatusText("ÿc1계정이름 읽기 오류 ÿc4(ÿc0...ÿc4)"); My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperJoin.txt", 1, "/////"); warehouseKeeperIsCheck = false; } sendEventToOOG(D2NT_MGR_LOGIN, location.name, 0); locationTimeout(5000, location); break; case 10: // Login Error (this is a fatal error, so stop) sendEventToOOG(D2NT_MGR_RESTART, location.name, 10); My_Delay(); break; case 11: // Unable To Connect timeoutDelay(unableToConnectRetry * 60 * 1000, location) controlData.click(controlData.controls.login.unableToConnect.button.ok); break; case 12: // Character Select var _time, _control; sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0); My_ChangeRealm(); for (_time = 0; _time < characterScreenTimeout; _time += 500) { if (me.account != warehouseKeeperMaster || !warehouseKeeperIsKeeper) _control = controlData.get(controlData.controls.characterSelect.textBox.characterInfo[me.charloc]); else _control = controlData.get(controlData.controls.characterSelect.textBox.characterInfo[warehouseKeeperLocation]); if (_control && _control.GetText() != undefined) break; Delay(500); } if (_time < characterScreenTimeout) { Delay(characterSelectDelay); if (me.account != warehouseKeeperMaster || !warehouseKeeperIsKeeper) { controlData.click(controlData.controls.characterSelect.textBox.characters[me.charloc], 0, 0, 1); controlData.click(controlData.controls.characterSelect.textBox.characterInfo[me.charloc], 0, 0, 1); } else { controlData.click(controlData.controls.characterSelect.textBox.characters[warehouseKeeperLocation], 0, 0, 1); controlData.click(controlData.controls.characterSelect.textBox.characterInfo[warehouseKeeperLocation], 0, 0, 1); } // reset last game made, so it doesnt make a game immediately inGameAt = 0; setNextGameMake(); } else { controlData.click(controlData.controls.characterSelect.button.exit); if (characterSelectCount++ < characterSelectCheck[0]) timeoutDelay(5000, location); else { if (characterSelectCheck[1] > 0) { sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1재실행 (캐릭터 선택 오류)", 0); sendEventToOOG(D2NT_MGR_RESTART, "", characterSelectCheck[1]); } else timeoutDelay(realmDownRetry * 60 * 1000, location); } } break; case 13: // Realm Down - Character Select screen controlData.click(controlData.controls.characterSelect.button.exit); timeoutDelay(realmDownRetry * 60 * 1000, location); break; case 14: // Character Select - Disconnected timeoutDelay(disconnectedRetry * 60 * 1000, location); controlData.click(controlData.controls.characterSelect.disconnected.button.ok); 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); break; case 17: // Lobby - Lost Connection - just click okay, since we're toast anyway controlData.click(controlData.controls.lobby.lostConnection.button.ok); break; case 18: // D2 Splash controlData.click(controlData.controls.d2Splash.textBox.copyright); break; case 19: // Login - Cdkey In Use timeoutDelay(cdkeyInUseRetry * 60 * 1000, location); controlData.click(controlData.controls.login.cdkeyInUse.button.ok); break; case 20: // Single Player - Select Difficulty controlData.click(controlData.singlePlayerDifficulties[me.diff]); break; case 21: // Main Menu - Connecting if (!locationTimeout(connectingToBnetTimeout, location)) controlData.click(controlData.controls.mainMenu.connecting.button.cancel); break; case 22: // Login - Invalid Cdkey (classic or xpac) sendEventToOOG(D2NT_MGR_RESTART, location.name, 3600); My_Delay(); break; case 23: // Character Select - Connecting if (!locationTimeout(characterScreenTimeout, location)) controlData.click(controlData.controls.characterSelect.button.exit); 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 sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1Game already exists", 0); inGameAt = 0; lastGameStatus = 0; setNextGameMake(); locationTimeout(15000, location); break; case 27: // Gateway Select controlData.clickRealmEntry(me.gatewayid); controlData.click(controlData.controls.gateway.button.ok); break; case 28: // Lobby - Game Does Not Exist inGameAt = Random(gameDoesNotExistDelayMin, gameDoesNotExistDelayMax); lastGameStatus = 0; setNextGameMake(); locationTimeout(gameDoesNotExistTimeout, location); break; } } function sendEventToOOG(locationId, statusString, pendingTime) { return SendCopyData("D2NT Manager", null, (locationId<<16)|pendingTime, statusString); } function setNextGameMake() { lastGameMade = GetTickCount(); nextGameMake = lastGameMade + createGameThreshold + Random(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()) { sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0); Delay(500); } return (controlData.getLocation().id != location.id); } function timeoutDelay(time, location) { endtime = GetTickCount() + time; while (endtime > GetTickCount()) { sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0); Delay(1000); } } function getRandomString(_length) { _retString = ""; _charSet = "0123456789abcdefghijklmnopqrstuvwxyz"; while (_length--) { _retString += _charSet.charAt(Random(0, _charSet.length - 1)); Delay(10); } return _retString; } function My_Initialize() { My_FindServerIp_CheckAccount(); My_MultiLoader_CheckAccount(); My_LeechBot_CheckAccount(); My_LeechBotQueDrop_CheckAccount(); if (!warehouseKeeperMaster) My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperAccount.txt", 1); else { My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperAccount.txt", 1, warehouseKeeperMaster); My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperHunter.txt", 1, warehouseKeeperIsHunter ? "true" : "false"); if (me.account == warehouseKeeperMaster) { gameMinLength = 0; createGameThreshold = 0; gameDoesNotExistDelayMin = 5000; gameDoesNotExistDelayMax = 5000; warehouseKeeperIsKeeper = !warehouseKeeperIsHunter; warehouseKeeperTickCount = My_GetTickCount(); } } if (leechBotAccountIndex == 1) { My_File("NTBot/MyData/LeechBot/LeechBotMasterGameName.txt", 1); My_File("NTBot/MyData/LeechBot/LeechBotMasterName.txt", 1); My_File("NTBot/MyData/LeechBot/LeechBotMasterMessage.txt", 1); My_File("NTBot/MyData/BaalRun/BaalRunPortal.txt", 1); } if (leechBotQueDropAccountIndex == 2) My_File("NTBot/MyData/LeechBotQueDrop/LeechBotQueDropLeechGameName[" + me.account + "].txt", 1, "/"); if (inGameErrorCheck > 0 && leechBotAccountIndex != 2 && inGameErrorList.indexOf(me.account) != -1) My_File("NTBot/MyData/InGameError/InGameError[" + me.account + "].txt", 1, String(inGameErrorCheck)); else My_File("NTBot/MyData/InGameError/InGameError[" + me.account + "].txt", 1); if (leechBotAccountIndex != 2 && leechBotQueDropAccountIndex != 2) { if (createGameCheck[0] && !joinRandomChannel && !joinChannelInChat) joinChannelInChat = "D2NT 3.1" } else createGameCheck[0] = false; } function My_FindServerIp_CheckAccount() { for (var i = 0; i < findServerIpList.length; i++) { if (findServerIpList[i][0] == me.account) { gameDoesNotExistDelayMin = 5000; gameDoesNotExistDelayMax = 5000; if (findServerIpList[i][1] > 0) { managerLogs = [false, false]; gameMinLength = findServerIpList[i][1]; } findServerIpAccountIndex = i + 1; break; } } } function My_FindServerIp_GetGameName() { if (findServerIpAccountIndex) { var _msg = My_File("NTBot/MyData/FindServerIp/FindServerIp[" + me.account + "].txt", 0); if (!_msg) { findServerIpGameName = ""; findServerIpPassword = ""; } else { _msg = _msg.split("/"); findServerIpGameName = _msg[0]; findServerIpPassword = _msg[1]; lobbyStop = 0; My_File("NTBot/MyData/FindServerIp/FindServerIp[" + me.account + "].txt", 1); return true; } } return false; } function My_FindServerIp_CheckServerIp() { if (!findServerIpAccountIndex) return 0; var i; var _serverIp = Number(me.gameserverip.split(".")[3]); for (i = 2; i < findServerIpList[findServerIpAccountIndex - 1].length; i++) { if (findServerIpList[findServerIpAccountIndex - 1][i] == _serverIp) { var _orgX = me.x; var _orgY = me.y; me.maxgametime = 0; My_File("NTBot/MyData/FindServerIp/FindServerIp[" + me.account + "].txt", 1, me.gamename + "/" + me.gamepassword); sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc4서버 아이피를 찾았습니다 (" + me.gameserverip + " / " + me.gamename + " / " + me.gamepassword + ")", 0); SetStatusText("서버 아이피 \"ÿc2" + me.gameserverip + "ÿc4\"를 찾았습니다."); for (i = 0; me.ingame; i++) { Delay(1000); if (i > 1500) { ClickMap(0, 0, _orgX + 5, _orgY); Delay(200); ClickMap(2, 0, null); Delay(2000); ClickMap(0, 0, _orgX, _orgY); Delay(200); ClickMap(2, 0, null); i = 0; RunGC(); } } return -1; } } My_File("NTBot/MyData/FindServerIp/FindServerIp[" + me.account + "].txt", 1); return ((findServerIpList[findServerIpAccountIndex - 1][1] > 0) ? -1 : 1); } function My_MultiLoader_CheckAccount() { for (var i = 0; i < multiLoaderList.length; i++) { if (multiLoaderList[i] == me.account) { multiLoaderAccountIndex = i + 1; break; } } } function My_MultiLoader_GetGameName() { var _msg = My_File("NTBot/MyData/MultiLoader/MultiLoader[" + me.account + "].txt", 0); if (_msg) { _msg = _msg.split("/"); multiLoaderGameName = _msg[0]; multiLoaderPassword = _msg[1]; } } function My_MultiLoader_CheckId() { var _id; var _preId = -1; My_MultiLoader_GetGameName(); while (true) { _id = controlData.getLocation().id; if (_id >= 1 && _id <= 5) { if (_id != _preId) { if (_id == 4) { controlData.setText(controlData.controls.lobby.create.editBox.gameName, multiLoaderGameName); controlData.setText(controlData.controls.lobby.create.editBox.password, multiLoaderPassword); } else if (_id == 5) { controlData.setText(controlData.controls.lobby.join.editBox.gameName, multiLoaderGameName); controlData.setText(controlData.controls.lobby.join.editBox.password, multiLoaderPassword); } _preId = _id; } Delay(250); } else break; } } function My_LeechBot_CheckAccount() { if (me.account == leechBotMasterAccount) leechBotAccountIndex = 1; else if (leechBotLeechAccountList.indexOf(me.account) != -1) leechBotAccountIndex = 2; } function My_LeechBot_CheckGame() { var _msg; var _leechGameName = ""; var _leechPassword = ""; _msg = My_File("NTBot/MyData/LeechBot/LeechBotLeechGameName[" + me.account + "].txt", 0); if (_msg) { _msg = _msg.split("/"); _leechGameName = _msg[0]; _leechPassword = _msg[1]; } while (true) { _msg = My_File("NTBot/MyData/LeechBot/LeechBotMasterGameName.txt", 0); if (_msg) { _msg = _msg.split("/"); if (_msg[0] && (_msg[0] != _leechGameName || _msg[1] != _leechPassword)) { leechBotMasterGameName = _msg[0]; leechBotMasterPassword = _msg[1]; break; } } Delay(500); } } function My_LeechBot_LeechJoinDelay() { if (leechBotLeechJoinDelay > 0) { for (var i = 0; i < leechBotLeechAccountList.length; i++) { if (leechBotLeechAccountList[i] == me.account) { Delay(leechBotLeechJoinDelay * i); break; } } } } function My_LeechBotQueDrop_CheckAccount() { if (me.account == leechBotQueDropMasterAccount) leechBotQueDropAccountIndex = 1; else if (leechBotQueDropLeechAccountList.indexOf(me.account) != -1) leechBotQueDropAccountIndex = 2; } function My_LeechBotQueDrop_CheckLeechIndex() { var _msg; if (leechBotQueDropLeechIndex == -1) { _msg = My_File("NTBot/MyData/LeechBotQueDrop/LeechBotQueDropLeechIndex.txt", 0); if (_msg) leechBotQueDropLeechIndex = Number(_msg); else leechBotQueDropLeechIndex = 0; } sendEventToOOG(D2NT_MGR_PRINT_STATUS, leechBotQueDropLeechAccountList[leechBotQueDropLeechIndex] + " 확인 중 (...)", 0); SetStatusText(leechBotQueDropLeechAccountList[leechBotQueDropLeechIndex] + " 확인 중 (ÿc0...ÿc4)"); while (true) { _msg = My_File("NTBot/MyData/LeechBotQueDrop/LeechBotQueDropLeechGameName[" + leechBotQueDropLeechAccountList[leechBotQueDropLeechIndex] + "].txt", 0); if (_msg == "/") break; Delay(500); } SetStatusText(""); } function My_LeechBotQueDrop_CheckGame() { var _msg; sendEventToOOG(D2NT_MGR_PRINT_STATUS, "퀘드랍 방 확인 중 (...)", 0); SetStatusText("퀘드랍 방 확인 중 (ÿc0...ÿc4)"); while (true) { _msg = My_File("NTBot/MyData/LeechBotQueDrop/LeechBotQueDropLeechGameName[" + me.account + "].txt", 0); if (_msg && _msg != "/") { _msg = _msg.split("/"); leechBotQueDropMasterGameName = _msg[0]; leechBotQueDropMasterPassword = _msg[1]; break; } Delay(500); } SetStatusText(""); } function My_WarehouseKeeper_Check() { while (!warehouseKeeperIsCheck) { switch (My_WarehouseKeeper_CheckMessage()) { case -1: SetStatusText("ÿc1계정이름 읽기 오류 ÿc4(ÿc0...ÿc4)"); Delay(1000); break; case 0: if (warehouseKeeperIsHunter) { if (warehouseKeeperIsKeeper) { warehouseKeeperIsKeeper = false; My_WarehouseKeeper_CheckLogin("사냥 중 (ÿc0...ÿc4)"); } warehouseKeeperIsCheck = true; warehouseKeeperTickCount = My_GetTickCount(); My_WarehouseKeeper_SetStatusText("사냥 중 (ÿc0...ÿc4)"); } else { if (warehouseKeeperIsLogin) { if (controlData.getLocation().id == 8) controlData.click(controlData.gameTypes[me.playtype]); } else if (controlData.getLocation().id == 9) controlData.click(controlData.controls.login.button.exit); My_WarehouseKeeper_CheckLogin("대기 중 (%T)", true); My_Delay(5); } break; case 1: if (My_GetTickCount() < (warehouseKeeperTickCount + 100)) { My_WarehouseKeeper_CheckLogin("메시지 검사 중 (%T/1분 40초)", true); Delay(1000); } else { My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperJoin.txt", 1); warehouseKeeperTickCount = My_GetTickCount(); } break; case 2: warehouseKeeperIsCheck = true; warehouseKeeperIsKeeper = true; warehouseKeeperTickCount = My_GetTickCount(); My_WarehouseKeeper_CheckLogin("방 들어가는 중 (%T/60초)"); break; } } if (warehouseKeeperIsKeeper && My_GetTickCount() > (warehouseKeeperTickCount + 60)) { sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1창고지기 : 방 들어가기 오류", 0); My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperJoin.txt", 1); warehouseKeeperIsCheck = false; warehouseKeeperTickCount = My_GetTickCount(); } } function My_WarehouseKeeper_CountInGame() { if (me.account == warehouseKeeperMaster && warehouseKeeperIsKeeper) { My_WarehouseKeeper_SetStatusText("아이템 받는 중 (%T/1분 40초)"); if (My_GetTickCount() > (warehouseKeeperTickCount + 100)) { My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperJoin.txt", 1); ExitGame(); while (me.ingame) Delay(1000); } } } function My_WarehouseKeeper_CheckLogin(text, isWait) { var _msg; var _isCheck = false; while (true) { sendEventToOOG(D2NT_MGR_PRINT_STATUS, "창고지기", 0); My_WarehouseKeeper_SetStatusText(text); _msg = My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperServer.txt", 0); switch (controlData.getLocation().id) { case 1: case 4: case 5: controlData.click(controlData.controls.lobby.button.quit); break; case 18: controlData.click(controlData.controls.d2Splash.textBox.copyright); // continue case 8: if (!isWait) { if (!warehouseKeeperIsKeeper || !_msg || _isCheck) controlData.click(controlData.gameTypes[me.playtype]); else { _isCheck = true; controlData.click(controlData.controls.mainMenu.button.gateway); break; } } // continue case 9: if (isWait || !warehouseKeeperIsKeeper || !_msg || _isCheck) return; else controlData.click(controlData.controls.login.button.exit); break; case 12: controlData.click(controlData.controls.characterSelect.button.exit); break; case 21: if (!locationTimeout(connectingToBnetTimeout, controlData.getLocation())) controlData.click(controlData.controls.mainMenu.connecting.button.cancel); break; case 27: if (!warehouseKeeperIsKeeper || !_msg) controlData.clickRealmEntry(me.gatewayid); else controlData.clickRealmEntry(Number(_msg.charAt(0))); controlData.click(controlData.controls.gateway.button.ok); break; } if (warehouseKeeperIsKeeper && My_GetTickCount() > (warehouseKeeperTickCount + 60)) { sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1창고지기 : 로그인 오류", 0); My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperJoin.txt", 1); warehouseKeeperIsCheck = false; warehouseKeeperTickCount = My_GetTickCount(); return; } Delay(1000); } } function My_WarehouseKeeper_CheckMessage() { var _msg = My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperJoin.txt", 0); if (_msg) { switch (_msg) { case "/": return 1; case "//": case "///": case "////": My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperJoin.txt", 1); return 0; case "/////": return -1; default: _msg = _msg.split("/"); warehouseKeeperAccount = _msg[0]; warehouseKeeperLocation = Number(_msg[1]); warehouseKeeperGameName = _msg[3]; warehouseKeeperPassword = _msg[4]; return 2; } } return 0; } function My_WarehouseKeeper_SetStatusText(text) { var _time = My_GetTickCount() - warehouseKeeperTickCount; var _hour = Math.floor(_time / 3600); var _minute = Math.floor(_time / 60) % 60; var _second = _time % 60; SetStatusText(text.replace(/%T/, (_hour ? ("ÿc0" + _hour + "ÿc4시 ") : "") + ((_hour || _minute) ? ("ÿc0" + _minute + "ÿc4분 ") : "") + "ÿc0" + _second + "ÿc4초")); } function My_ChangeRealm() { var _msg; var _result; if (me.account != warehouseKeeperMaster || !warehouseKeeperIsKeeper) _result = true; else { _msg = My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperServer.txt", 0); _result = !_msg || _msg.charAt(0) != '2'; } if (_result) { if (changeRealmList.length > 0) { for (var i = 0; i < changeRealmList.length; i++) { if (changeRealmList[i][0] == me.account) { controlData.click(controlData.controls.characterSelect.button.changeRealm); controlData.click([4, 471, 400, 292, 160], 0, changeRealmList[i][1] * 24 + 12); controlData.click([6, 495, 438, 96, 32]); break; } } } } else { controlData.click(controlData.controls.characterSelect.button.changeRealm); controlData.click([4, 471, 400, 292, 160], 0, _msg.charAt(1) * 24 + 12); controlData.click([6, 495, 438, 96, 32]); } } function My_RunGc_Check() { if (runGcCheck > 0) { if (runGcCount++ > runGcCheck) { RunGC(); runGcCount = 0; } } else RunGC(); } function My_LobbyStop_Check() { if (lobbyStop > 0 && controlData.getLocation().id == 5 && leechBotAccountIndex != 2 && leechBotQueDropAccountIndex != 2) { var _count; do { _count = 1; do { SendText(_count++); Delay(1000); } while (controlData.getLocation().id == 5); for (_count = 1; _count <= lobbyStop; _count++) { sendEventToOOG(D2NT_MGR_PRINT_STATUS, "일시정지 (" + _count + "/" + lobbyStop + "초)", 0); SetStatusText("ÿc1일시정지 ÿc4(ÿc0" + _count + "ÿc4/" + lobbyStop + "초)"); Delay(1000); if (me.ingame || controlData.getLocation().id == 5) break; } } while (controlData.getLocation().id == 5); SetStatusText(""); } function SendText(time) { var _hour = Math.floor(time / 3600); var _minute = Math.floor(time / 60) % 60; var _second = time % 60; sendEventToOOG(D2NT_MGR_PRINT_STATUS, "일시정지 (" + (_hour ? (_hour + "시 ") : "") + ((_hour || _minute) ? (_minute + "분 ") : "") + _second + "초" + ")", 0); SetStatusText("ÿc1일시정지 ÿc4(" + (_hour ? ("ÿc0" + _hour + "ÿc4시 ") : "") + ((_hour || _minute) ? ("ÿc0" + _minute + "ÿc4분 ") : "") + "ÿc0" + _second + "ÿc4초" + ")"); } } function My_ExitGame_Check() { for (var i = 0; i < 40; i++) { if (controlData.getLocation().id != undefined) break; if (i > 38) { sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1재실행 (방 나가기 오류)", 0); sendEventToOOG(D2NT_MGR_RESTART, "", 5); My_Delay(); } Delay(500); } } function My_GameName_SendStatus() { for (var i = 0; !me.ingame && controlData.getLocation().id != 4 && controlData.getLocation().id != 5; i++) { if ((i % 5) == 0) { sendEventToOOG(D2NT_MGR_PRINT_STATUS, multiLoaderAccountIndex ? ("멀티로더 [" + me.account + "]") : "쫄봇 [기사]", 0); i = 0; } Delay(500); } } function My_LocationId_Check() { var _locationId = controlData.getLocation().id; if (_locationId != locationIdCheck) { locationIdCheck = _locationId; locationIdCount = 0; if (createGameError) { createGameError = false; switch (createGameCount) { case 3: createGameCount++; sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1대기 중 (방 만들기 오류)", 0); for (var i = 1; i <= createGameCheck[2]; i++) { sendEventToOOG(D2NT_MGR_PRINT_STATUS, "대기 중 (" + i + "/" + createGameCheck[2] + "초)", 0); Delay(1000); } break; case 5: sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1재실행 (방 만들기 오류)", 0); sendEventToOOG(D2NT_MGR_RESTART, "", createGameCheck[3]); My_Delay(); break; } } } else { locationIdCount++; switch (_locationId) { case 2: break; case 8: if (battleNetCheck > 0 && locationIdCount > 4) { sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1재실행 (배틀넷 접속 오류)", 0); sendEventToOOG(D2NT_MGR_RESTART, "", battleNetCheck); My_Delay(); } break; case 25: if (locationIdCount > 3) { sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1재실행 (대기 메시지 창 오류)", 0); sendEventToOOG(D2NT_MGR_RESTART, "", 5); My_Delay(); } break; case undefined: if (createGameCheck[0] && locationIdCount > 40) { if (!createGameError) { createGameCount++; createGameError = true; } } break; default: if (locationIdCount > 15) { sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1재실행 (" + _locationId + "번 오류)", 0); sendEventToOOG(D2NT_MGR_RESTART, "", 60); My_Delay(); } } } } function My_NTBotGame_Check() { if (ntBotGameCheck > 0 && ntBotGameCount++ > ntBotGameCheck) { var _script = GetScript(); if (_script) { do { if (_script.name == "NTBotGame.ntj") { if (!_script.running) { for (var i = 0; i < 10; i++) { if (!me.ingame) return; Delay(1000); } if (me.ingame) { sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1재실행 (NTBotGame.ntj 오류)", 0); sendEventToOOG(D2NT_MGR_RESTART, "", 5); My_Delay(); } } break; } } while (_script.GetNext()); } ntBotGameCount = 0; } } function My_StopBot() { var _msg = My_File("NTBot/MyData/StopBot/StopBot[" + me.account + "].txt", 0); if (_msg) { if (Math.abs(new Date().getTime() - Number(_msg)) < 10000) { Delay(1000); sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1중지 (스태쉬 공간 부족)", 0); sendEventToOOG(D2NT_MGR_RESTART, "", 28800); My_Delay(); } else My_File("NTBot/MyData/StopBot/StopBot[" + me.account + "].txt", 1); } } function My_GetTickCount() { return Math.round(GetTickCount() / 1000); } function My_GetTime(huntingTime) { var _time = GetTickCount() - huntingTime; var _hour = Math.floor(_time / 3600000); var _minute = Math.floor(_time / 60000) % 60; var _second = Math.floor(_time / 1000) % 60; if (_hour < 10) _hour = "0" + _hour; if (_minute < 10) _minute = "0" + _minute; if (_second < 10) _second = "0" + _second; return ("사냥시간 (" + _hour + ":" + _minute + ":" + _second + ")"); } function My_Delay(delay) { if (arguments.length < 1) delay = 20; while (delay--) Delay(1000); } function My_File(path, mode, msg, delay) { var _msg = ""; var _line = ""; var _fileHandle; var _isFileCheck = false; if (arguments.length < 3) msg = ""; if (arguments.length < 4) delay = (mode != 0) ? 25 : 5; while (delay--) { if (mode == 2 && !_isFileCheck) { _fileHandle = FileOpen(path, 0); if (!_fileHandle) _fileHandle = FileOpen(path, 1); if (_fileHandle) _fileHandle.Close(); _isFileCheck = true; } _fileHandle = FileOpen(path, mode); if (_fileHandle) break; if (delay) Delay(200); } if (_fileHandle) { if (mode == 0) { while (!_fileHandle.eof) { _line = _fileHandle.ReadLine(); if (_line || !_fileHandle.eof) _msg += _line + msg; } } else if (msg) _fileHandle.WriteLine(msg); _fileHandle.Close(); } return _msg; }
  • [주]코리아도 2010.05.22 18:49
    이제야 두분의 리플을 봤네요 조금뒤에 적용 해보겠습니다 두분 감사합니다

번호 분류 제목 글쓴이 날짜 조회
공지   게시판 푸시 알림 / 통합 앱 서비스 36 file 트디개발자 2023.09.20 965.5k
공지 안내 D2NT 처음 이용하는 분은 튜토리얼을 참고바랍니다. 135 우녕자 2014.12.21 51.0k
공지   맨땅 초보자 가이드 621 file 뮤리아 2020.10.16 1018.8k
공지   카카오톡 1:1 채팅방 만드는 법 108 트디개발자 2018.05.20 431.4k
3091 질문 매직칼좀 돌려보게 하고 싶은데.. 2 자그네 2010.05.22 418
3090 질문 thething님에 디아개조붓 2 마각 2010.05.22 325
3089 질문 아이템이니좀 봐주세요(에테리얼집기) 4 홍홍아 2010.05.22 391
3088 질문 /MySnaglt.ntl/(291) : SyntaxError 질문드림니다. 4 hoonileo 2010.05.22 1.6k
3087 질문 쫄이 한번 죽고나면 기사를 졸졸따라다녀요 3 2010.05.22 270
3086 질문 아이템 세타 모넉 이니 설정좀 봐주세요. 1 A K I R A 2010.05.22 1.2k
3085 질문 써클릿류 주워오게 하고 싶은데 이니좀 확인해주세요 2 슈렌(shuren) 2010.05.22 334
3084 질문 랄룬이 너무 많이 모이네요. 1 바지위에빤쑤 2010.05.22 331
3083 질문 키 설정은 여기 말구 또 잇나요 2 빈이가 2010.05.22 199
3082 질문 메니져를 실행했는데 common Log에... 2 아카미렌 2010.05.22 226
3081 질문 자꾸 쫄봇이 실행이 되네요... 2 안마사수 2010.05.22 329
3080 질문 날아다녀님 봇으로 처음 돌리고자 설정질문입니다. 6 날건달 2010.05.22 598
3079 질문 봇이니설정 질문드립니다 2 Butterfly 2010.05.22 101
3078 질문 두개의 봇이 한방에서 같이 사냥하게 할수 있나요? 4 용구이 2010.05.22 1.8k
> 질문 방만들기 대기열땜에 질문이요 6 [주]코리아도 2010.05.22 1.4k
3076 질문 함성바바관련 질문 1 바알 형님 2010.05.22 372
3075 질문 저사양 컴퓨터 사용중인데 8봇이 가능할까요? 7 쌈바르 2010.05.22 723
3074 질문 날아다녀님쫄봇질문있습니다 4 깜숑 2010.05.22 215
3073 기타 이거 인터넷회선문제일까요 4 홍홍아 2010.05.22 162
3072 질문 같은 계정으로 동시에 배틀넷 로비에 갈경우 3 깡으로간다 2010.05.22 1.2k