Advertisement
Guest User

Auto Muling System 1.2

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