Advertisement
dzik

Diablo 2 - ETAL - OrganFarmerPTandMule.ntj

May 23rd, 2014
355
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /////////////////////////////////////////////////////////////////
  2. // characters in your game setting: //     
  3. ////////////////////////////////////////////////////////////////
  4. var characterdiff        =  "99";   //use this to keep those pesky spam bots out of the f'ing game
  5. var maxNumberOfPlayersss = "8";     //use this to set the maximum number of players allowed in your game
  6.  
  7. ///////////////////////////////////////////////////
  8. //          Mule Notify
  9. ///////////////////////////////////////////////////
  10. var MuleNotification = true; // Set to true to send status to manager
  11.  
  12. ///////////////////////////////////////////////////
  13. //      Mule Specific vars
  14. ///////////////////////////////////////////////////
  15. var MuleGamePassword = ""; // Consistant through all games
  16. var muleAccountPassword = ""; // for all mule accounts
  17. var CharPrefix = "";
  18. var AccountPrefix = "";
  19. var CreateCharacterClass = 1;  // 0:Amazon, 1:Sorceress, 2:Necromancer, 3:Paladin, 4:Barbarian, 5:Druid, 6:Assassin
  20. var Hardcore = false;
  21. var Ladder = false;
  22. var Classic = false;
  23.  
  24. ///////////////////////////////////////
  25. //  Channel Settings //     / /These controll what if any channel you join
  26. ///////////////////////////////////////
  27. var joinChatAfterGame           = true;          // join chat after leaving a game
  28. var joinRandomChannel           = false;         // if this is true, will join a random channel, otherwise it will use the channel below..
  29. var joinChannelInChat           = "";        // Channel you want your bot to join, leave blank to not join a private channel
  30.  
  31. ///////////////////////////////////////
  32. //        Message Settings:          //     // These controll what your bot sais to the leechers will also send a log incommand to a channel bot
  33. ///////////////////////////////////////
  34. var chatMessageOnJoin           = "";   // Chat Message to say Login command for channel bot will only be sent once
  35. var chatMessageAfterGame1       = "";   // Optional chat message Line #1 to say after each game on Channel
  36. var chatMessageAfterGame2       = "";       // Optional chat message Line #2 to say after each game on Channel
  37. var chatMessageAfterGame3       = "";       // Optional chat message Line #3 to say after each game on Channel
  38. var chatMessageAfterGame4       = "";       // Optional chat message Line #4 to say after each game on Channel
  39. var chatMessageAfterGame5       = "";   // Optional chat message Line #5 to say after each game on Channel
  40.  
  41. ///////////////////////////////////////     // These will let you send a message with a game name password and time to your leechers
  42. //      Game Message Settings:       //     // var saygamename must be true for any of these to work
  43. ///////////////////////////////////////     // You cant NOT have a - in you game name it will bug it out
  44. var saygamename             = false;                        // Must be true for any of the game message settings to work
  45. var nextgamemessage         = "next game should be";    // This will come befor your next game name eg "New game is"
  46. var saypassword             = true;                     // This will togle if the bot says your game pw
  47. var saytime                 = true;                     // This will togle if the bot says how much time till creation
  48. var timemessage             = "in about";               // This will come after your pw and befor the time eg. "in about" xx seconds say time MUST be true for this to be used
  49.  
  50. //////////////////////////////////////
  51. //       Minimum Game Length:       //
  52. //////////////////////////////////////
  53.  
  54. var gameMinLength       = 180000;   // time in milliseconds, minimum game length, 180 seconds default (1 game/3 minutes)
  55. ///////////////////////////////////////
  56. //           OFPT ADDS               //
  57. ///////////////////////////////////////
  58. var ShowDetailsInManager = true; // use this in conjunction with NTConfig_ShowDetailsInManager. Prints error on game return fails to manager.
  59. ////////////////////////////////////////
  60. //        Connection Settings:        //
  61. ////////////////////////////////////////
  62.  
  63. var unableToConnectRetry    = 15;       // time in minutes to retry connecting on connection fail (real value is +/- 1 min)
  64. var realmDownRetry      = 900;      // time in minutes to retry connecting on a realm down (default is 300 minutes)
  65. var disconnectedRetry       = 5;        // time in minutes to retry on a disconnection (usually ip ban related)
  66. var cdkeyInUseRetry     = 5;        // time in minutes to retry on a cdkey in use error message (set to 0 to stop)
  67. var connectingToBnetTimeout = 20000;    // time in milliseconds to wait for a login to time out and click cancel and retry
  68. var characterScreenTimeout  = 10000;    // time in milliseconds to wait for character screen to appear
  69. var pleaseWaitTimeout       = 10000;    // time in milliseconds to wait for a please wait popup
  70. var createGameThreshold     = 10000;        // time in milliseconds to wait between making games
  71. var createGameThresholdRandom   = 1000;     // time in milliseconds to randomly add +/- to the game create time
  72. var createGameTimeout       = 44000;    // time in milliseconds to register a failed to create game
  73. var waitInLineTimeout       = 60000;    // time in milliseconds to wait in lines for a create game (60 second default)
  74. var characterSelectDelay    = 1000;     // time in milliseconds to wait before selecting a character on the char screen
  75. var loginDelay          = 1000;     // time in milliseconds to wait before submitting login information
  76. var clickDelay          = 500;      // wait X milliseconds before next action after a click event
  77. var textDelay           = 500;      // wait X milliseconds before next action after inserting text into a textbox
  78. var clickDelayRandom        = 500;      // random amount of time to add to a click
  79. var textDelayRandom     = 500;      // random amount of time to add to a text set
  80. var gameDoesNotExistDelayMin    = 600000;   // how long to wait when a Game Does Not Exist occurs - minimum - default 10 minutes
  81. var gameDoesNotExistDelayMax    = 900000;   // how long to wait when a Game Does Not Exist occurs - maximum - default 15 minutes
  82. var gameDoesNotExistTimeout = 30000;    // how long to wait for the dialog to disappear (default 30 seconds, don't change this)
  83. var waitBeforeEnterChatMin  = 1000;     // min how long to wait before entering chat
  84. var waitBeforeEnterChatMax  = 2000;     // max how long to wait before entering chat
  85. var waitInChatBeforeActionsMin  = 2000;     // min how long to wait before joining channel
  86. var waitInChatBeforeActionsMax  = 3000;     // max how long to wait before joining channel
  87. var waitBeforeNextLineChatMin   = 500;      // Minimum ammount of time to add after each text line 
  88. var waitBeforeNextLineChatMax   = 1500;     // Maximum ammount of time to add after each text line
  89. var ftjDelay                    = 180;      // time to idle before trying if leecher failed to join.  In seconds.
  90.  
  91. // DONT EDIT ANYTHING BELOW THIS
  92.  
  93. // D2NT Manager Command
  94. const D2NT_MGR_LOADING = 1;
  95. const D2NT_MGR_READY = 2;
  96. const D2NT_MGR_LOGIN = 3;
  97. const D2NT_MGR_CREATE_GAME = 4;
  98. const D2NT_MGR_INGAME = 5;
  99. const D2NT_MGR_RESTART = 6;
  100. const D2NT_MGR_CHICKEN = 7;
  101. const D2NT_MGR_PRINT_STATUS = 8;
  102. const D2NT_MGR_PRINT_LOG = 9;
  103. var alreadyLoggedIn = false; // will only send the login command once leave as unless you want to login everytime you join a channel
  104. var lastGameMade = GetTickCount();
  105. var lastGameStatus = 0;
  106. var nextGameMake = 0;
  107. var inGameAt = 0;
  108. var chatActionsDone = false;
  109. var lastGameFailed = false;
  110. var tempDelay = Random(waitBeforeNextLineChatMin, waitBeforeNextLineChatMax);
  111. var gameInfo = "";
  112. var bugignor = true;
  113. var muleGame = "";
  114. var Muling;
  115. var ingameScript;
  116. var MuleAccount;
  117. var onMule = false;
  118. var GrabMule;
  119. var mulepos;
  120. var myGame = getRandomString(12);
  121. var gameReturn, passWordOFPT, gameNameOFPT;
  122. var  OFPT_PreMessage = "";
  123. var ftjcount = 0;
  124.  
  125. Include("libs/controlInfo.ntl");
  126. Include("libs/common/NTColorConverter.ntl");
  127. Include("libs/mulingInfo.ntl");
  128.  
  129. var controlData = new controlInfo();
  130.  
  131. function NTMain()
  132. {
  133.     Delay(1000);
  134.  
  135.     writeInitialSettings();
  136.    
  137.     var _ingame = false;
  138.  
  139.     controlData.clickDelay = clickDelay;
  140.     controlData.textDelay = textDelay;
  141.     controlData.clickDelayRandom = clickDelayRandom;
  142.     controlData.textDelayRandom = textDelayRandom;
  143.     while(1)
  144.     {
  145.         if(me.ingame)
  146.         {
  147.             if(!inGameAt)
  148.                 inGameAt = GetTickCount();
  149.  
  150.             if(!_ingame)
  151.             {
  152.                 RunGC(); // run garbage collector between each game
  153.  
  154.                 if(Load(ingameScript))
  155.                 {
  156.                     _ingame = true;
  157.                     if(ingameScript == "NTBot/NTBotGame.ntj") {
  158.                         NT_File("logs/messagecomands/"+me.charname+"-nextgame.txt", 1, me.gamename + "/" + me.gamepassword); // for leader to print game/pw to txt     
  159.                     }
  160.                        
  161.                     if(me.playtype > 0)
  162.                         sendEventToOOG(D2NT_MGR_INGAME, "In Game[IP:" + me.gameserverip.split(".")[3] + "]", 0);
  163.                        
  164.                     else
  165.                         sendEventToOOG(D2NT_MGR_INGAME, "In Game", 0);
  166.                         if(ingameScript == "NTBot/NTBotGame.ntj") {
  167.                             Say("/f m in_new_game " + me.gamename);  // this is for leechers to join only after leader is in game
  168.                         }
  169.                     lastGameStatus = 2; // in game successful
  170.                 }
  171.             }
  172.  
  173.             Delay(1000);
  174.         }
  175.         else
  176.         {
  177.            
  178.             if(_ingame)
  179.             {
  180.                 My_ExitGame_Check(); // out of korean modded d2nt fixes white screen of death
  181.  
  182.                 _ingame = false;
  183.  
  184.                 sendEventToOOG(D2NT_MGR_READY, "", 0);
  185.             }
  186.            
  187.             muleGame = NT_File("AMS/MuleStatus/" + me.account + "_mulegame.txt", 0);
  188.             GrabMule = NT_File("AMS/MuleStatus/" + me.account + "_charstatus.txt", 0);
  189.             Muling = NT_File("AMS/MuleStatus/" + me.account + "_mulingstatus.txt", 0);
  190.            
  191.             switch(Muling)
  192.                 {
  193.                 case "true":
  194.                     {
  195.                     locationActionMule(controlData.getLocation());
  196.                     break;
  197.                     }
  198.                 case "false":
  199.                     {
  200.                     locationAction(controlData.getLocation());
  201.                     break;
  202.                     }
  203.                 }
  204.             Delay(500);
  205.         }
  206.     }
  207. }
  208.  
  209. function locationAction(location)
  210. {
  211.     switch(location.id)
  212.     {
  213.     case 3: // Lobby Chat
  214.         //ftjcheck
  215.         if (ftjcount >= 10 && lastGameStatus == 1) {
  216.             sendEventToOOG(D2NT_MGR_PRINT_LOG, COLOR_1 + "FTJ detected...........Idling", 0);
  217.             ftjcount = 0;
  218.             inGameAt = 0;
  219.             lastGameStatus = 0;
  220.             setNextGameMake();
  221.             locationTimeout(ftjDelay*1000, location);
  222.         }
  223.         if(onMule) {
  224.             if(MuleNotification) {
  225.                 SendCopyData("D2NT Manager", null, 9<<16, "Swapping to Main character!");
  226.             }
  227.             controlData.click(controlData.controls.lobby.button.quit);
  228.             break;
  229.         }
  230.        
  231.         if(!chatActionsDone)
  232.         {
  233.             chatActionsDone = true;
  234.             Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax));
  235.  
  236.             if(joinRandomChannel || joinChannelInChat != "")
  237.             {
  238.                 Say("/join " + (joinRandomChannel ? getRandomString(Random(3,10)) : joinChannelInChat));
  239.                 Delay(1000);
  240.                     if(!alreadyLoggedIn){
  241.                     alreadyLoggedIn = true;
  242.                     if (chatMessageOnJoin.length > 0){
  243.                         Say(chatMessageOnJoin);
  244.                     }
  245.                 }
  246.                 Delay(500);
  247.                 chatActionsDone = true;
  248.             }
  249.         }
  250.     case 1: // Lobby
  251.         //ftjcheck
  252.         if (ftjcount >= 10 && lastGameStatus == 1) {
  253.             sendEventToOOG(D2NT_MGR_PRINT_LOG, COLOR_1 + "FTJ detected...........Idling", 0);
  254.             ftjcount = 0;
  255.             inGameAt = 0;
  256.             lastGameStatus = 0;
  257.             setNextGameMake();
  258.             locationTimeout(ftjDelay*1000, location);
  259.         }
  260.         sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
  261.        
  262.         if(location.id == 1 && joinChatAfterGame)
  263.         {
  264.             Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
  265.             controlData.click(controlData.controls.lobby.button.enterChat);
  266.             break;
  267.         }
  268.  
  269.         if(GetTickCount() > nextGameMake)
  270.         {
  271.             lastGameFailed = false;
  272.  
  273.             switch(lastGameStatus)
  274.             {
  275.             case 0:
  276.                 NT_OFPTMessages();
  277.                 if(gameReturn){
  278.                     _control = controlData.get(controlData.controls.lobby.button.join); // fixes creation stuck button bug out of unmodded d2nt
  279.                     if(_control && _control.pressed)
  280.                     {
  281.                         controlData.click(controlData.controls.lobby.button.create);
  282.                         Delay(500);
  283.                     }
  284.                     controlData.click(controlData.controls.lobby.button.join);
  285.                     break;
  286.                 }
  287.                 password = (me.gamepassword);
  288.                 game = (getGameName(me.gamename));
  289.                 counter = (getGameCounter(me.gamename, false));
  290.                 time = (parseInt((nextGameMake - GetTickCount() - tempDelay)/1000+3.0));
  291.                 if (saygamename){{
  292.                         gameInfo += nextgamemessage + " " + game + counter;
  293.                     }
  294.                     if (saypassword){
  295.                         gameInfo += "//" + password
  296.                     }
  297.                     if (saytime){
  298.                     gameInfo += " " + timemessage + " " + time + " seconds"
  299.                     }
  300.                 }
  301.                 if(joinChatAfterGame){
  302.                     if(chatMessageAfterGame1.length > 0){
  303.                         Say(chatMessageAfterGame1);
  304.                         if(chatMessageAfterGame1.length > 0){
  305.                             Delay(tempDelay);
  306.                         }
  307.                     }
  308.                     if(chatMessageAfterGame2.length > 0){
  309.                         Say(chatMessageAfterGame2);
  310.                         if(chatMessageAfterGame2.length > 0){
  311.                             Delay(tempDelay);
  312.                         }
  313.                     }
  314.                     if(chatMessageAfterGame3.length > 0){
  315.                         Say(chatMessageAfterGame3);
  316.                         if(chatMessageAfterGame3.length > 0){
  317.                             Delay(tempDelay);
  318.                         }
  319.                     }
  320.                     if(chatMessageAfterGame4.length > 0){
  321.                         Say(chatMessageAfterGame4);
  322.                         if(chatMessageAfterGame4.length > 0){
  323.                             Delay(tempDelay);
  324.                         }
  325.                     }
  326.                     if(chatMessageAfterGame5.length > 0){
  327.                         Say(chatMessageAfterGame5);
  328.                         if(chatMessageAfterGame5.length > 0){
  329.                             Delay(tempDelay);
  330.                         }
  331.                     }
  332.                     if(saygamename) {
  333.                         if(bugignor){
  334.                             bugignor = false;
  335.                             gameInfo = "";
  336.                         } else{
  337.                         Say(gameInfo)
  338.                         Delay(tempDelay)
  339.                         gameInfo = "";
  340.                         }
  341.                     }
  342.                 }
  343.                 _control = controlData.get(controlData.controls.lobby.button.create); // fixes creation stuck button bug out of unmodded d2nt
  344.                 if(_control && _control.pressed)
  345.                 {
  346.                     controlData.click(controlData.controls.lobby.button.join);
  347.                     Delay(500);
  348.                 }
  349.  
  350.                 controlData.click(controlData.controls.lobby.button.create);
  351.                 _control = controlData.get(controlData.controls.lobby.create.button.useCharacterDifference);
  352.                 if(_control && !_control.pressed)
  353.                 {
  354.                     controlData.click(controlData.controls.lobby.create.button.useCharacterDifference);//checks the use character diff box...does this every time so no go
  355.                 }
  356.                 controlData.setText(controlData.controls.lobby.create.editBox.characterDifference,(characterdiff)); //level restriction
  357.                 controlData.setText(controlData.controls.lobby.create.editBox.maxNumberOfPlayers, (maxNumberOfPlayersss)); //max players
  358.                 nextGameMake = GetTickCount() + createGameTimeout; // set our timeout
  359.                 sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
  360.                 break;
  361.             case 1: // game failed, rollover to reset timer
  362.                 inGameAt = GetTickCount(); // reset inGameAt, to wait how long we should have waited..
  363.                 lastGameFailed = true;
  364.             case 2:
  365.                 outputGameLength();
  366.                 lastGameStatus = 0;
  367.                 setNextGameMake();
  368.                 sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
  369.                 break;
  370.             }
  371.         } else
  372.                 timeoutDelay(nextGameMake-GetTickCount(), location, true);
  373.         break;
  374.  
  375.     case 2: // Waiting In Line
  376.         if(GetTickCount()-lastGameMade > waitInLineTimeout)
  377.             controlData.click(controlData.controls.lobby.inLine.button.cancel);
  378.         break;
  379.  
  380.     case 4: // Create Game
  381.         ingameScript = "NTBot/NTBotGame.ntj";
  382.         controlData.setText(controlData.controls.lobby.create.editBox.characterDifference,(characterdiff));
  383.         controlData.setText(controlData.controls.lobby.create.editBox.maxNumberOfPlayers, (maxNumberOfPlayersss));
  384.        
  385.         sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
  386.  
  387.         locationTimeout(15000, location);
  388.  
  389.         lastGameMade = GetTickCount();
  390.         lastGameStatus = 1;
  391.         Delay(500);
  392.         break;
  393.  
  394.     case 5: // Join Game
  395.         if(gameReturn){
  396.             gameReturn = false;
  397.             NT_RetrieveReturnGame();
  398.             controlData.setText( controlData.controls.lobby.join.editBox.gameName, gameNameOFPT);
  399.             controlData.setText( controlData.controls.lobby.join.editBox.password, passWordOFPT);
  400.             controlData.click(controlData.controls.lobby.join.button.joinGame);
  401.            
  402.             locationTimeout(5000, location);
  403.  
  404.             lastGameMade = GetTickCount();
  405.             lastGameStatus = 1; // pending creation
  406.         }
  407.         break;
  408.  
  409.     case 6: // Ladder
  410.         break;
  411.  
  412.     case 7: // Channel List
  413.         break;
  414.  
  415.     case 8: // Main Menu
  416.         if(controlData.getCurrentRealmIndex() == me.gatewayid)
  417.         {
  418.             outputGameLength();
  419.             controlData.click(controlData.gameTypes[me.playtype]);
  420.         }
  421.         else
  422.             controlData.click(controlData.controls.mainMenu.button.gateway);
  423.         break;
  424.  
  425.     case 9: // Login
  426.         sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
  427.         Delay(loginDelay);
  428.  
  429.         controlData.setText(controlData.controls.login.editBox.accountName, me.account);
  430.  
  431.         sendEventToOOG(D2NT_MGR_LOGIN, location.name, 0);
  432.  
  433.         locationTimeout(5000, location);
  434.         onMule = false;
  435.         break;
  436.  
  437.     case 10: // Login Error (this is a fatal error, so stop)
  438.         sendEventToOOG(D2NT_MGR_PRINT_LOG, COLOR_1 + "Bad Account or PW Entered.......Idling", 0);
  439.         while(1) { Delay(500); }               
  440.         sendEventToOOG(D2NT_MGR_RESTART, location.name, 10);
  441.         Delay(3500);
  442.         break;
  443.  
  444.     case 11: // Unable To Connect
  445.         timeoutDelay(unableToConnectRetry*60*1000, location)
  446.         controlData.click(controlData.controls.login.unableToConnect.button.ok);
  447.         break;
  448.  
  449.     case 12: // Character Select
  450.         var _time, _control;
  451.         if(onMule) {
  452.             Delay(1000);
  453.             controlData.click(controlData.controls.characterSelect.button.exit);
  454.             break;
  455.         }
  456.        
  457.         sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
  458.        
  459.         for(_time = 0 ; _time < characterScreenTimeout ; _time += 500)
  460.         {
  461.             _control = controlData.get(controlData.controls.characterSelect.textBox.characterInfo[me.charloc]);
  462.             if(_control && _control.GetText() != undefined)
  463.             break;
  464.            
  465.             Delay(500);
  466.         }
  467.  
  468.         if(_time < characterScreenTimeout)
  469.         {
  470.             Delay(characterSelectDelay);
  471.  
  472.             controlData.click(controlData.controls.characterSelect.textBox.characters[me.charloc], 0, 0, 1);
  473.             controlData.click(controlData.controls.characterSelect.textBox.characterInfo[me.charloc], 0, 0, 1);
  474.  
  475.             inGameAt = 0;
  476.             setNextGameMake();
  477.         } else {
  478.             controlData.click(controlData.controls.characterSelect.button.exit);
  479.             timeoutDelay(realmDownRetry*60*1000, location);
  480.         }
  481.         break;
  482.  
  483.     case 13: // Realm Down - Character Select screen
  484.         controlData.click(controlData.controls.characterSelect.button.exit);
  485.         timeoutDelay(realmDownRetry*60*1000, location);
  486.         break;
  487.  
  488.     case 14: // Character Select - Disconnected
  489.         timeoutDelay(disconnectedRetry*60*1000, location);
  490.         controlData.click(controlData.controls.characterSelect.disconnected.button.ok);
  491.         break;
  492.  
  493.     case 15: // New Character
  494.         break; 
  495.  
  496.     case 16: // Character Select - Please Wait popup
  497.         if(!locationTimeout(pleaseWaitTimeout, location))
  498.             controlData.click(controlData.controls.characterSelect.pleaseWait.button.cancel);
  499.         break;
  500.  
  501.     case 17: // Lobby - Lost Connection - just click okay, since we're toast anyway
  502.         controlData.click(controlData.controls.lobby.lostConnection.button.ok);
  503.         break;
  504.  
  505.     case 18: // D2 Splash
  506.         controlData.click(controlData.controls.d2Splash.textBox.copyright);
  507.         break;
  508.  
  509.     case 19: // Login - Cdkey In Use
  510.         timeoutDelay(cdkeyInUseRetry*60*1000, location);
  511.         controlData.click(controlData.controls.login.cdkeyInUse.button.ok);
  512.         break;
  513.  
  514.     case 20: // Single Player - Select Difficulty
  515.         controlData.click(controlData.singlePlayerDifficulties[me.diff]);
  516.         break;
  517.  
  518.     case 21: // Main Menu - Connecting
  519.         if(!locationTimeout(connectingToBnetTimeout, location))
  520.             controlData.click(controlData.controls.mainMenu.connecting.button.cancel);
  521.         break;
  522.  
  523.     case 22: // Login - Invalid Cdkey (classic or xpac)
  524.         sendEventToOOG(D2NT_MGR_PRINT_LOG, COLOR_1 + "Bad CD Key...........Idling", 0);
  525.         while(1) { Delay(500); }       
  526.         sendEventToOOG(D2NT_MGR_RESTART, location.name, 3600);
  527.         Delay(3500);
  528.         break; 
  529.  
  530.     case 23: // Character Select - Connecting
  531.         if(!locationTimeout(characterScreenTimeout, location))
  532.             controlData.click(controlData.controls.characterSelect.button.exit);
  533.         break;
  534.  
  535.     case 24: // Server Down - not much to do but wait..
  536.         break;
  537.  
  538.     case 25: // Lobby - Please Wait
  539.         if(!locationTimeout(pleaseWaitTimeout, location))
  540.             controlData.click(controlData.controls.lobby.pleaseWait.button.cancel);
  541.         break;
  542.  
  543.     case 26: // Lobby - Game Name Exists
  544.         sendEventToOOG(D2NT_MGR_PRINT_LOG, COLOR_1 + "Game already exists", 0);
  545.  
  546.         inGameAt = 0;
  547.         lastGameStatus = 0;
  548.         setNextGameMake();
  549.  
  550.         locationTimeout(15000, location);
  551.         break;
  552.  
  553.     case 27: // Gateway Select
  554.         controlData.clickRealmEntry(me.gatewayid);
  555.         controlData.click(controlData.controls.gateway.button.ok);
  556.         break;
  557.  
  558.     case 28: // Lobby - Game Does Not Exist
  559.         if(gameReturn){
  560.             gameReturn = false;
  561.             NT_File("logs/OFPTLog/OFPTcomands/"+me.account+"-OFPT2.ntj", 1, "var gameReturn = false;  ");
  562.             NT_File("logs/OFPTLog/OFPTcomands/"+me.account+"-OFPT2.txt", 1, "false");  
  563.             Delay(500);
  564.             DebugInOOG(COLOR_1 + "failed to re enter game because game did not exist");
  565.         }
  566.         inGameAt = Random(gameDoesNotExistDelayMin, gameDoesNotExistDelayMax);
  567.         lastGameStatus = 0;
  568.         setNextGameMake();
  569.  
  570.         locationTimeout(gameDoesNotExistTimeout, location);
  571.         break;
  572.     default:
  573.         if (lastGameStatus == 1) {
  574.             sendEventToOOG(D2NT_MGR_PRINT_STATUS, "Please Wait...", 0);
  575.             for (ftjcount=0; ftjcount<=10 && !me.ingame; ftjcount++) {
  576.                 Delay(1000)
  577.             }
  578.         }
  579.         break;
  580.     }
  581. }
  582.  
  583. function sendEventToOOG(locationId, statusString, pendingTime)
  584. {
  585.     return SendCopyData("D2NT Manager", null, (locationId<<16)|pendingTime, statusString);
  586. }
  587.  
  588. function setNextGameMake()
  589. {
  590.     lastGameMade = GetTickCount();
  591.     nextGameMake = lastGameMade + createGameThreshold + Random(0-createGameThresholdRandom, createGameThresholdRandom) + inGameAt;
  592.     inGameAt = 0;
  593.     chatActionsDone = false;
  594. }
  595.  
  596. function outputGameLength()
  597. {
  598.     if(inGameAt)
  599.     {
  600.         duration = GetTickCount() - inGameAt;
  601.  
  602.         inGameAt = (duration < gameMinLength ? gameMinLength - duration : 0);
  603.     }
  604. }
  605.  
  606. function locationTimeout(time, location)
  607. {
  608.     endtime = GetTickCount() + time;
  609.  
  610.     while(controlData.getLocation().id == location.id && endtime > GetTickCount())
  611.     {
  612.         sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
  613.         Delay(500);
  614.     }
  615.  
  616.     return (controlData.getLocation().id != location.id);
  617. }
  618.  
  619. function timeoutDelay(time, location)
  620. {
  621.     endtime = GetTickCount() + time;
  622.  
  623.     while(endtime > GetTickCount())
  624.     {
  625.         sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
  626.         Delay(1000);
  627.     }
  628. }
  629.  
  630. function getRandomString(_length)
  631. {
  632.     _retString = "";
  633.     _charSet = "0123456789abcdefghijklmnopqrstuvwxyz";
  634.     _cRo = -1;
  635.     _cR = -1;
  636.     while(_length--)
  637.     {
  638.         while(_cRo == _cR)
  639.             _cR = Random(0, _charSet.length-1)
  640.         _retString += _charSet.charAt(_cR);
  641.         Delay(1);
  642.         _cRo = _cR
  643.     }
  644.  
  645.     return _retString;
  646. }
  647.  
  648. function getGameName(lastGameString)
  649. {
  650.    if(!lastGameString)
  651.       return "";
  652.    else
  653.       return (lastGameString.split("-")[0] + "-");
  654. }
  655.  
  656. function getGameCounter(lastGameString, simple)
  657. {
  658.    var myCount;
  659.    if(!lastGameString)
  660.       return "-1";
  661.    else
  662.    {
  663.       switch(lastGameString.split("-")[1])
  664.       {
  665.          case "08":
  666.             myCount = 9;
  667.             break;
  668.          case "09":
  669.             myCount = 10;
  670.             break;
  671.         case "99":
  672.             myCount = 00;
  673.             break;
  674.          default:
  675.             myCount = parseInt(lastGameString.split("-")[1]) + 1;
  676.             break;
  677.       }
  678.       if(!simple)
  679.       {
  680.          if(myCount <= 9)
  681.             return ('0' + myCount);
  682.       }
  683.       return myCount;
  684.    }
  685. }
  686.  
  687. function My_ExitGame_Check()
  688. {
  689.     for (var i = 0; i < 40; i++)
  690.     {
  691.         if (controlData.getLocation().id != undefined)
  692.             break;
  693.  
  694.         if (i > 38)
  695.         {
  696.             LogPrintSimple(me.account + " StarterTest.txt", "White Screen of Death: Restarting")
  697.             sendEventToOOG(D2NT_MGR_PRINT_LOG, COLOR_1 + "White Screen of Death: Restarting", 0);
  698.             sendEventToOOG(D2NT_MGR_RESTART, "", 5);
  699.             My_Delay(); // make sure and add this also
  700.         }
  701.  
  702.         Delay(500);
  703.     }
  704. }
  705.  
  706. function My_Delay(retry)
  707. {
  708.     if (arguments.length < 1)
  709.         retry = 20;
  710.  
  711.     while (retry-- > 0)
  712.         Delay(1000);
  713. }
  714.  
  715. function LogPrintSimple(filepath, mesg){
  716.  
  717.     var _filepath = filepath;
  718.     var _mesg = mesg;
  719.    
  720.     var date = new Date().toLocaleFormat("<%a, %b %d, %H:%M>");
  721.     var logfile = FileOpen(_filepath, 2); // opens file
  722.     if(!logfile)
  723.         var logfile = FileOpen(_filepath, 1); // if file not there then creates it
  724.  
  725.     logfile.WriteLine(date + " " + _mesg );
  726.     logfile.Close();
  727. }
  728.  
  729. function writeInitialSettings()
  730. {
  731.     _char = FileOpen("AMS/MuleStatus/" + me.account + "_charstatus.txt", 0);
  732.  
  733.     if(!_char)
  734.         NT_File("AMS/MuleStatus/" + me.account + "_charstatus.txt", 1, "Main");
  735.     else
  736.         _char.Close();
  737.     Delay(500);
  738.  
  739.     _stat = FileOpen("AMS/MuleStatus/" + me.account + "_mulingstatus.txt", 0);
  740.  
  741.     if(!_stat)
  742.         NT_File("AMS/MuleStatus/" + me.account + "_mulingstatus.txt", 1, "false");
  743.     else
  744.         _stat.Close();
  745.     Delay(500);
  746.  
  747.     _pos = FileOpen("AMS/MuleStatus/" + me.account + "_locstatus.txt", 0);
  748.  
  749.     if(!_pos)
  750.         NT_File("AMS/MuleStatus/" + me.account + "_locstatus.txt", 1, "0");
  751.     else
  752.         _pos.Close();
  753. }
  754.  
  755. function NT_File(path, mode, msg, delay) {
  756.     var _msg  = "";
  757.     var _line = "";
  758.     var _fileHandle;
  759.     var _isFileCheck = false;
  760.  
  761.     if (arguments.length < 3) { msg   = ""; }
  762.     if (arguments.length < 4) { delay = (mode > 0) ? 5 : 2; }
  763.  
  764.     while (delay--) {
  765.         if (mode == 2 && !_isFileCheck) {
  766.             _fileHandle = FileOpen(path, 0);
  767.             if (!_fileHandle)
  768.                 _fileHandle = FileOpen(path, 1);
  769.  
  770.             if (_fileHandle)
  771.                 _fileHandle.Close();
  772.  
  773.             _isFileCheck = true;
  774.         }
  775.  
  776.         _fileHandle = FileOpen(path, mode);
  777.         if (_fileHandle)
  778.             break;
  779.  
  780.         if (delay)
  781.             Delay(200);
  782.     }
  783.  
  784.     if (_fileHandle) {
  785.         if (mode == 0) {
  786.             while (!_fileHandle.eof) {
  787.                 _line = _fileHandle.ReadLine();
  788.                 if (_line || !_fileHandle.eof)
  789.                     _msg += _line + msg;
  790.             }
  791.         }
  792.         else if (msg)
  793.             _fileHandle.WriteLine(msg);
  794.  
  795.         _fileHandle.Close();
  796.     }
  797.  
  798.     return _msg;
  799. }
  800.        
  801. function SetForNextGame()
  802. {
  803.     var gametime = GetTickCount() + 1000 * 60 * 3 + 1000 * 15;
  804.     var timeTilStart = gametime - GetTickCount();
  805.     locationTimeout(timeTilStart, location);
  806.     chatActionsDone = false;
  807.     inGameAt = 0;
  808. }
  809.  
  810. function NT_CheckNameLength(prefix, totallength)
  811. {
  812.     var _howManyChars = totallength - prefix.length
  813.     return _howManyChars;
  814. }
  815.  
  816. function NT_LogMuleAccount(newaccount)
  817. {
  818.     var _newAccount = newaccount;
  819.     var muleaccountlist = FileOpen("AMS/MuleLogs/" + me.account + "_muleaccount.txt", 2);
  820.     if(!muleaccountlist)
  821.         var muleaccountlist = FileOpen("AMS/MuleLogs/" + me.account + "_muleaccount.txt", 1);  
  822.  
  823.     muleaccountlist.WriteLine(_newAccount + "/" + muleAccountPassword);
  824.     muleaccountlist.Close();
  825.     return;
  826. }
  827.  
  828. function LogMuleAccountStatus(newaccount)
  829. {
  830.     var _newAccount = newaccount;
  831.     var muleaccountlist = FileOpen("AMS/MuleStatus/" + me.account + "_muleaccount.txt", 2);
  832.     if(!muleaccountlist)
  833.         var muleaccountlist = FileOpen("AMS/MuleStatus/" + me.account + "_muleaccount.txt", 1);  
  834.  
  835.     muleaccountlist.WriteLine(_newAccount);
  836.     muleaccountlist.Close();
  837.     return;
  838. }
  839.  
  840. function getRandomStringNames(_length)
  841. {
  842.     _retString = "";
  843.     _charSet = "abcdefghijklmnopqrstuvwxyz";
  844.        
  845.     while(_length--)
  846.     {
  847.         _retString += _charSet.charAt(Random(0, _charSet.length-1));
  848.         Delay(50);
  849.     }
  850.     return _retString;
  851. }
  852. function NT_OFPTMessages(){ // credit for the basics of this function goes to kolton
  853.     var _msg = NT_File("logs/OFPTLog/OFPTcomands/"+me.account+"-OFPT2.txt", 0);
  854.     if (_msg && _msg != OFPT_PreMessage){
  855.         OFPT_PreMessage = _msg;            
  856.         switch (_msg.substring(_msg.indexOf("/") + 1)){
  857.             case "return":
  858.                 gameReturn =true
  859.                 break;
  860.             case "false":
  861.                 gameReturn = false;
  862.                 break;
  863.         }
  864.     }
  865.     return;
  866. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement