Skip to content

팁 게시판

바다의 봇 복귀 일지 ^^*

분류 봇관련 조회 수 2,497 추천 수 1

일년 만에 디아가 생각이 나서 들어와 보니, 케릭은 올 만료에, 주 계정은 비번을 까먹어서 장난하다 계정 날려서 새로이 떡하나 만들더군요 ㅎㅎ...
각설하고, 확장은 아직 하지를 못하고 겨우 오리지널 하나 하고 있습니다..
우선 봇이 돌아간다는 말을 보고 다시 한번 해보자고 떡 하니 돌리니, 가장 이채로운 화면은 역시 트라이얼 ㅡㅡ;
자료실에 있는 d2kfixup.mpq 이파일과, 트리이얼 안나오게 하는 폰트를 심고나니, 트리이얼은 우선 안나오는 군요..

이제 본격적으로 돌릴려고 시도를 하니, 얌봇이 아이템을 사다가 아이템이 사라지는 황당한 일이...
우선 급하게 다음의 파일을 수정을 하고..
YAM-TownLib.d2l 안에
function DT_MenuCancel(npc,type) {
 // Check the arguments
 if (!npc) {
 DC_DPrint("DT_MenuCancel() : No NPC object is entered");
 return true;
 }
 else if (arguments.length<2) {
 DC_DPrint("DT_MenuCancel() : No enough arguments is entered");
 return true;
 }

 // loop up to 10 times till all is closed by using both methods
 for (tries = 0; tries < 10; tries+=1 ) {

 if (!_DT_CheckUI()) { break; }

 else {
 me.cancel(1);

 if (_DT_CheckUI()) { me.cancel(0); }
 else { break; }
 }
 }

 // Check if the cancel is correctly done
 if (!_DT_CheckUI()) {

 DC_DPrint("DT_MenuCancel() : Menus cancel done!");
 return false;
 }

 // Otherwise, return true to tell menus is still up
 else {

 DC_DPrint("DT_MenuCancel() : Unable to cancel the menus!");
 return true;
 }
}

이렇게 하고 이제 되었나 해서 지켜보니, 포탈을 사다가 서는 황당한 일이... 게다가 아이템을 팔거나 버리지를 못하여서 창고에 보관하는 비극적인 상황이 나오네요 ㅡㅡ;
우선 아이템 정리하는 메커니즘을 다음과 같이 수정...
YAM-TownLib.d2l 안에
function DT_ClearInv(npc) {
 var _retval = true;
 var _found = false;
 if (!YAM_ClearInv)
 return true;
 // Make a string with this array
 var _ignorestring = DT_IgnoredItems.join();
 // Get the first item in inventory
 var _invitem = DC_getItem(null,100); // 100 == inventory
 // If there is a item, loop until all is processed or ignored
 if (_invitem) {
 do {
 if (DC_CheckOwner(_invitem)) {
 // Check if the item is inside the stashing area
 var _ignoreitem = (DT_Columns[_invitem.y][_invitem.x]===0);
 // If the item is on the stashing area, check if it is not part of the ignored list
 if (!_ignoreitem) {
 // we also ignore un-identified items because they are actually wanted OR needs to be
 // validated first. In either cases we dont want to throw them out.
 // ASSUMPTION: We don't pick up unidentified items that are not declared in snagit ini!
 // We also ignore white items if cubing is enabled otherwise we can clash with tmitems needs
 // when the entry is removed after the last item is picked up
 if ((_ignorestring.indexOf(_invitem.code) != -1) || !_invitem.getFlag(0x10) || (YAM_EnableCubing && _invitem.quality < 4)) {
 _ignoreitem = true;
 }
 }
 // If the item is not a ignored item
 if (!_ignoreitem) {
 checkResults = false;
 checkResults = (njip_CheckGoodItem(_invitem) === 0) ? true : false;;

 if (!DT_NiceItem(_invitem,DT_ReportMode) && checkResults) {
 _found = true;
 if (arguments.length > 0 && npc && getUIFlag(0x0c)) {
 if (XP_SellBackItems && (!XP_DropItems || (DC_MyGold() < DC_MaxGold()))) {
 if(!DT_BuyItem(_invitem,npc,1)) {
 var i;
 do {
 if (!DT_BuyItem(_invitem,npc,1)) { // Sell the item
 print ("Failed to sell "+ _invitem.name +"!");
 _retval = false;
 DT_MenuCancel(npc,1);
 DC_DoDel(DT_NPCDelay);
 DT_DoInteract(npc);
 }
 i++;
 } while(!DT_BuyItem(_invitem,npc,1) && i < 5);
 }
 }
 else { // Toss it out
 // Cancel the menu
 DT_MenuCancel(npc,1);
 if (!DT_DropItem(_invitem)) {
 print ("Failed to drop an item!");
 _retval = false;
 }
 // Reinteract with the npc for doing other stuff
 DT_DoInteract(npc);
 }
 }
 else if (!DT_DropItem(_invitem)) { // Toss it out
 print ("Failed to drop "+ _invitem.name +"!");
 _retval = false;
 var i;
 do {
 if (!DT_DropItem(_invitem)) { // Sell the item
 print ("Failed to sell "+ _invitem.name +"!");
 _retval = false;
 DT_MenuCancel(npc,1);
 DC_DoDel(DT_NPCDelay);
 DT_DoInteract(npc);
 print ("Failed to drop "+ _invitem.name +"!");
 _retval = false;
 }
 i++;
 } while(!DT_DropItem(_invitem) && i < 5);
 }
 }
 }
 }
 } while (_invitem.getNext(null,100));
 }
 return _retval;
}

엥 그래도 역시 아이템을 창고에 보관하더군요 ㅡㅡ;

그래서 이번엔 포탈책의 포탈 수량과, 아이템식별책의 수량을 일정 수준 이하로 되면 사라는 변수를 수정..
YAM-Town.d2l 안에
function YAM_TownManager() {
 // Make sure I am in town!
 YAM_MakeTP();
 if (!DC_InTown(me)) {
 DC_ThrowException("YAM_TownManager()","Failed to reach Town!");
 quit();
 }
 _YAM_Town = false;
 // Turn on Vigor for paladins in town
 if (me.classid==3 && UseVigor === true) {
 DC_PutSkill(115,0);
 }
 // Clear the cursor and inventory
 DC_ClearCursor();
 for (i=516; i > 514; i-=1) {
 DT_PickPots(i);
 }
 DT_CleanPotions();
 DT_TossItem(100, "isc");
 DT_TossItem(100, "tsc");
 DT_TossItem(100, "aqv");
 DT_TossItem(100, "cqv");
 // If we switched weapons on kill, switch back to the attack tab
 if (XP_SwitchOnKill) {
 DC_SelectTab(1);
 }
 // If randomNPC is true, pick a npc number !!!!!
 // ToDo : This needs editing... pick a number and assign a fixed number or range to each npc so 'ALWAYS visit ONE npc' is true...
 NPCnum = (YAM_RandomNPC === true) ? parseInt(Math.random() * 11,10) : 0;
 // Check if we need to go to a Healer
 _XP_GetNumUnId = DT_CheckUnids();
 var _tptome = DT_GetTome(1);// 여기서 부터
 if (!_tptome) {// Display a warning
 DC_Print("WARNING : No TP book found... Please put one in inventory manually!");
 _YAM_NeedTP = true;
 }
 else if ( _tptome.getStat(70) < 16) {
 _YAM_NeedTP = true; // 포탈 스크롤이 16개 아래 즉, 15개이하이면 포탈스크롤을 보충..
 }
 var _idtome = DT_GetTome(0);
 if (!_idtome) {// Display a warning
 _YAM_NeedID = false;//아이템 북이 없을 시 걍, 스크롤 사서 쓰라고 false;로 유지...(이경우 에러)
 }
 else if ( _idtome.getStat(70) < 16) {
 _YAM_NeedID = true;//아이템 스크롤이 16개 아래 즉, 15개 이하면 아이템 스크롤을 보충..
 } //여기까지 
 if (MXP_OpenUberChest || (YAMXXP.join().indexOf("Pit") != -1)) {
 if (DC_BuyKeys) {
 _YAM_NeedKeys = (DC_CheckKeys() > 6) ? true : false;
 }
 }
 if (YAM_AlwaysGoToHealer || DT_CheckHeal() || YAM_CheckIfCursed()) {
 _YAM_GoToHealer = true;
 }
 if (YAM_AlwaysRepair || DT_CheckRepair(DT_RepairPercent) || DT_CheckAmmo()) {
 _YAM_GoToRepair = true;
 }

 // Then do town management based on where we are...
 YAM_InitCommTown();
 switch(me.act){
 case 1: YAM_Act1TownManager(); break;
 case 2: YAM_Act2TownManager(); break;
 case 3: YAM_Act3TownManager(); break;
 case 4: YAM_Act4TownManager(); break;
 case 5: YAM_Act5TownManager(); break;
 }
 // Reset the variables for the next town run
 _YAM_GoToHealer = false;
 _YAM_GoToRepair = false;
 _YAM_NeedTP = false;
 _YAM_NeedID = false;
 _YAM_NeedKeys = false;
 // At the end of town stuff, if the eth weapon refill is not finished, let it finish
 if (DT_CheckRecharge()) {
 DT_DoRecharge();
 }
 // If the inventory is full and we want to stop on full inv, check for auto mule or stop script
 if (YAM_StopFullInv && (DT_CountFreeSpaces() == 0 || (YAM_Automule && DT_CountFreeSpaces() < (DT_FreeSpace * 4)))) {
 DC_Print("Can't proceed now, my inventory is full :-/");
 if (YAM_Automule) {
 DC_Print("But Wait! I have Sicojola's Automule! Let's see if I have any free mules...");
 DC_LoadInclude("automule.d2l");
 }
 if (!YAM_Automule || !Automule()) {
 DC_SendMsgToScript( "scripts\\autostarter.d2j", "starter:pause" );
 DL_AddAbort();
 DC_Print("To avoid stopping, set YAM_StopFullInv to false");
 DC_StopMessage("Inventory is full and YAM_StopFullInv is set to true !");
 }
 }
 // If the merc is not found, YAM_AbortNoMerc is set to true and we use a merc, stop the script
 if (DT_UseMerc && !DC_GetMerc() && YAM_AbortNoMerc) {
 // Wait a bit and try again because it sometimes fail to detect merc...
 DC_DoDel(2000);
 if (!DC_GetMerc()) {
 DL_AddAbort();
 DC_StopMessage("Mercenary not found and YAM_AbortNoMerc is set to true !");
 }
 }
 // If some items is below the critical level and it is not repaired, stop if the user set it
 if (YAM_StopNoRepair && DT_CheckRepair(DT_RepairPercent)) {
 DL_AddAbort();
 DC_Print("To avoid stopping, set YAM_StopNoRepair to false");
 DC_StopMessage("Unable to repair items and some are in critical condition !");
 }
 DC_ClearCursor();
}

그리고 각 액트 마을에서 포탈과 아이템 스크롤 사는 걸 수정..
YAM-TMove1.d2l 안에서
 if (_YAM_GoToHealer || YAM_AlwaysAkara || _YAM_NeedKeys || _YAM_NeedTP || _YAM_NeedID || _XP_GetNumUnId > 0 || (YAM_UseBeltManager && DT_CheckBelt()) || NPCnum>=rnd(2,9)) {
 commTown.GotoAkara();
 YAM_NPCinteract(DC_getNPC(148));
 DSN_SnagIt(); // Check the ground to see if any nice item is dropped by accident
 }
이부분과 아래부분 // Akara Case 부분에서
 // BUGBUG: Should check for return code of buying attempt
 // and handle it!
 if (_YAM_NeedTP) {
 var _tptome = DT_GetTome(1);

 if (_tptome) {
 DT_FillTome(npc,1);

 if (!DT_FillTome(npc,1) && _tptome.getStat(70) < 10) {
 var i;
 do {
 print("Try Again! Buy TP Scroll!");
 if (DT_GetTome(1).getStat(70) < 10) {
 DT_MenuCancel(npc,1);
 delay(2000);
 DT_DoInteract(npc);
 DT_DoTrade(npc,1);
 DT_FillTome(npc,1);
 DC_DoDel(DC_LagDelay);
 }
 i++;
 }while(DT_GetTome(1).getStat(70) < 20 && i < 5);
 }
 if (DT_GetTome(1).getStat(70) < 1) {
 delay(1000);
 DC_ThrowException("Failed to fill TP Tome and you are out of scrolls!");
 }
 }
 else {
 if (!DT_BuyScrolls(npc,1,1)) {
 delay(1000);
 DC_ThrowException("Failed to buy TP Scroll!");
 }
 }
 }
 if (_YAM_NeedID) {
 var _idtome = DT_GetTome(0);

 if (_idtome) {
 DT_FillTome(npc,0);
 if (!DT_FillTome(npc,0) && _idtome.getStat(70) < 5) {
 var i;
 do {
 print("Try Again! Buy ID Scroll!");
 if (DT_GetTome(1).getStat(70) < 10) {
 DT_MenuCancel(npc,1);
 delay(2000);
 DT_DoInteract(npc);
 DT_DoTrade(npc,1);
 DT_FillTome(npc,0);
 DC_DoDel(DC_LagDelay);
 }
 i++;
 }while(DT_GetTome(0).getStat(70) < 20 && i < 5);
 }
 if (DT_GetTome(0).getStat(70) < 1) {
 delay(1000);
 DC_ThrowException("Failed to fill ID Tome and you are out of scrolls!");
 }
 }
 else {
 if (!DT_BuyScrolls(npc,0,1)) {
 delay(1000);
 DC_ThrowException("Failed to buy ID Scroll!");
 }
 }
 }
그리고 변수 _YAM_NeedID가 추가된 관계로 YAMB.d2j안에 변수 항목에 var _YAM_NeedTP = false; 다음에 var _YAM_NeedID = false; 이것을 추가해주시면 되겠죠..
댓글12
  • 황비홍 2006.05.30 09:08
    아,,바다님 오랬만에 보시네요^^ 좋은자료 많이 올려 주셔서 감사합니다^^ 방가워요^^
  • 젤라띤 2006.05.30 10:02
    바다님도 다시 복귀하셨네요... 수고하세요~~~
  • 공중부양 2006.05.30 10:27
    일년동안 디아생각이 안나시다니 ㅎㅎ. 복귀 환영합니다.
  • 펌프킨 2006.05.30 13:24
    오래만이네요~ 방가워요~
  • 바다 2006.05.30 14:58
    윽, 지면이 조금 모자르다.. 수정을 조금할려니 ㅎㅎ.. 최대한 압축...
  • 영찬아빠~[A1L] 2006.05.30 15:02
    환영합니다.
  • ciel 2006.05.30 17:47
    반갑습니다. 전 오리유저입니다. 전 왜 자꾸 "바다"보다 "바다얌봇"이 생각나는건지.. ^^; xp봇 얌봇 둘다 쓰다가 xp봇은 자꾸 버전업이 되서 얌봇만 쓰고 있습니다. 귀차니즘으로 인하여 ㅎㅎ 바다님 안계신 동안 "봉구입니다"님께 도움 많이 받았는데, 한동안 안보이셔서 잠적하신건 아닌지 싶네요. 바다님은 이제 복귀하셨는데 말이죠. 잘 돌아오셨습니다.
  • 신이버린면상 2006.05.30 20:05
    헛, 반갑습니다. 아마 2차때 많은 질문을 날리던 저를 기억 못 하실테지만요..;;;ㅁㅁ
  • NeverDie2 2006.05.30 20:11
    얌봇에 무슨 문제 있나요? 나만 없는건가?
  • 콩이다 2006.06.01 18:59
    봇좋나요?
  • 『Be-LA』 2006.06.06 15:01
    헉 저건 머지.
  • 지우개 2006.06.09 15:12
    수고하십니다 ㅎㅎ

팁 게시판

번호 분류 제목 글쓴이 날짜 조회
공지   게시판 푸시 알림 / 통합 앱 서비스 31 file 트디개발자 2023.09.20 833.8k
공지 디아관련 에테리얼 벅큐빙 표 219 eunnanoDiablo™ 2008.03.05 140.4k
공지 디아관련 케릭별 갑옷 착용 모습 325 수린[아빠] 2009.06.09 111.5k
공지 디아관련 디아블로 각종 팁과 정보 간추림 입니다 (_ _) 1547 조은아저씨 2010.05.24 211.7k
공지 봇관련 유니크 업글 표 366 file 카인 2013.11.02 413.0k
821 디아관련 디아블로 백과사전.(아이템 용도 변화 등등) 23 몽키:D루피 2006.06.08 5.8k
820 디아관련 오늘처음알았네요 -.-;; 19 [량][A2L.A2S] 2006.06.05 3.6k
819 캐릭 육성 사냥 캐릭 2탄 5프레임 17k 불곰드루.... 19 Jum[A1L] 2006.06.04 4.3k
818 일반 대인앵벌/맨땅에 지치신분들 놀러오세요..아이디서버입니다..^^ Britz 2006.06.04 1.8k
817 디아관련 인첸소서와 난이도렙제버그를 이용, 멀티로더로 3캐릭 동시에 헬보내기 14 윤지니[A1L] 2006.06.03 4.9k
816 디아관련 새로 키운 케릭의 활용법... 23 goodgame 2006.06.02 2.8k
815 디아관련 휠어썌의 속업치는 정작 어디까지가 정확한것인가. 10 [량][A2L.A2S] 2006.06.01 1.4k
814 봇관련 봇돌릴시 '죽지않는케릭' 에 대한 정보입니다..(붓초보분보세요) 21 월하령 2006.06.01 4.6k
813 디아관련 아래 트리런 실험중 샷..... 33 Jum[A1L] 2006.06.01 5.0k
812 봇관련 봇 설치시 간단한 TIP 몇가지 4 디아블러네[A1L] 2006.05.31 3.8k
811 디아관련 2년동안 어썌해온유저로써 무기에대한 견해 13 [량][A2L.A2S] 2006.05.31 2.1k
810 디아관련 알고계십니까? 충격적인 트리런 69 제로닉스 2006.05.31 7.9k
> 봇관련 바다의 봇 복귀 일지 ^^* 12 바다 2006.05.30 2.5k
808 봇관련 몇일전에 올라온 아1래더 시세표 기준 스몰참 이니 16 사령관정복자 2006.05.30 2.9k
807 봇관련 XP 어벤저 4.0 '텔포없는 캐릭봇 조금이라도 앵벌 해보자' 팁입니다. 11 슬픈사슴 2006.05.27 2.3k
806 봇관련 초보자를 위한 쉽게 이니파일 이해하는법... 16 goodgame 2006.05.27 5.4k
805 디아관련 가상스킬 찍어보기 18 창고케릭 2006.05.26 4.3k
804 봇관련 봇 초보를 위한 정보 10 디아블러네[A1L] 2006.05.24 6.3k
803 디아관련 정보가 될련지 모르겠습니다. 디아 계정관련 12 주벵이 2006.05.24 2.2k
802 디아관련 XP.bot_Avenger.Ver.Final에서 오크쉐이지 소환 22 디아블러네[A1L] 2006.05.23 1.4k