战网中国

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3474|回复: 3
打印 上一主题 下一主题

d2nt3.1随机游戏名太长了/怎么随机设置成3-6位字母或数之间

[复制链接]

5

主题

8

帖子

116

积分

侠客

Rank: 3Rank: 3

积分
116
跳转到指定楼层
楼主
发表于 2013-12-9 10:50:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
d2nt3.1随机游戏名太长了,经常是etv0gxvb08s这么长,一看就知道是bot呀,我挂私服的。
怎么随机设置成3-6位字母或数字之间随机,有个设置前缀和加数字,但多个帐一都用这个也不太好,我把代码传上来,请高手看看是哪个地方设置随机游戏名的。
var gameMinLength  = 0; // 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 300 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 = 10000; // time in milliseconds to wait for a login to time out and click cancel and retry
var characterScreenTimeout = 10000; // time in milliseconds to wait for character screen to appear
var pleaseWaitTimeout  = 10000; // time in milliseconds to wait for a please wait popup
var createGameThreshold  = 1000;  // time in milliseconds to wait between making games
var createGameThresholdRandom = 1000;  // time in milliseconds to randomly add +/- to the game create time
var createGameTimeout  = 5000; // time in milliseconds to register a failed to create game
var waitInLineTimeout  = 60000; // time in milliseconds to wait in lines for a create game (60 second default)
var characterSelectDelay = 1000;  // time in milliseconds to wait before selecting a character on the char screen
var loginDelay   = 1000;  // time in milliseconds to wait before submitting login information
var clickDelay   = 500;  // wait X milliseconds before next action after a click event
var textDelay   = 500;  // wait X milliseconds before next action after inserting text into a textbox
var clickDelayRandom  = 500;  // random amount of time to add to a click
var textDelayRandom  = 500;  // random amount of time to add to a text set
var gameDoesNotExistDelayMin = 600000; // how long to wait when a Game Does Not Exist occurs - minimum - default 10 minutes
var gameDoesNotExistDelayMax = 900000; // how long to wait when a Game Does Not Exist occurs - maximum - default 15 minutes
var gameDoesNotExistTimeout = 30000; // how long to wait for the dialog to disappear (default 30 seconds, don't change this)
var joinChatAfterGame  = false; // join chat after leaving a 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;  // min how long to wait before entering chat
var waitBeforeEnterChatMax = 2000;  // max how long to wait before entering chat
var waitInChatBeforeActionsMin = 2000;  // min how long to wait before joining channel
var waitInChatBeforeActionsMax = 3000;  // max how long to wait before joining channel

// LinNan's NTBot Config
var LNNTConfig_OverrideGameName = true;  // 是否替换NTBot的游戏名字配置
var LNNTConfig_OverrideGameNamePrefix = "sds";  // 游戏名字前缀
var LNNTConfig_OverrideGameNameSep = "";  // 游戏名字和序号的分隔符
var LNNTConfig_OverrideGamePassword = "";  // 游戏的密码
var LNNTConfig_OverrideGameSeqMinLen = 2;  // 需要的最小长度(如果设置为2,将会是用01, 02等序号)
var LNNTConfig_OverrideGameDifficulty = 3;  // 游戏难度:1 普通,2 噩梦,3 地狱
var LNNTConfig_StopBotAfterSeq = 0;  // 当游戏序号增加到该值时,就停止bot(如果设置为0则不停止)
// 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;
var lastGameFailed = false;
// LinNan's variables
var LNNextGameSeq = 1;
Include("libs/controlInfo.ntl");
var controlData = new controlInfo();
function NTMain()
{
Delay(1000);
var _ingame = false;
controlData.clickDelay = clickDelay;
controlData.textDelay = textDelay;
controlData.clickDelayRandom = clickDelayRandom;
controlData.textDelayRandom = textDelayRandom;
while(1)
{
  if(me.ingame)
  {
   if(!inGameAt)
    inGameAt = GetTickCount();
   if(!_ingame)
   {
    RunGC(); // run garbage collector between each game
    if(Load("NTBot/NTBotGame.ntj"))
    {
     _ingame = true;
     if(me.playtype > 0)
      sendEventToOOG(D2NT_MGR_INGAME, "In Game[IP:" + me.gameserverip.split(".")[3] + "]", 0);
     else
      sendEventToOOG(D2NT_MGR_INGAME, "In Game", 0);
     lastGameStatus = 2; // in game successful
    }
   }
   Delay(1000);
  }
  else
  {
   if(_ingame)
   {
    _ingame = false;
    sendEventToOOG(D2NT_MGR_READY, "", 0);
   }
            if(!locationAction(controlData.getLocation()))
            {
                _controlL = controlData.get(controlData.controls.login.editBox.password);
                if(_controlL)
                {
                    sendEventToOOG(D2NT_MGR_PRINT_STATUS, "登入中", 0);
                    Delay(loginDelay);
                    controlData.setText(controlData.controls.login.editBox.accountName, me.account);
                    sendEventToOOG(D2NT_MGR_LOGIN, "登入中", 0);
                    Delay(5000);
                    _controlL = false;
                }
            }
   Delay(500);
  }
}
}
function locationAction(location)
{
switch(location.id)
{
case 3: // Lobby Chat
  if(!chatActionsDone)
  {
   chatActionsDone = true;
   Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax));
   if(joinRandomChannel || joinChannelInChat != "")
   {
    Say("/join " + (joinRandomChannel ? getRandomString(Random(3,10)) : joinChannelInChat));
    Delay(1000);
   }
  }
case 1: // Lobby
  if(location.id == 1 && joinChatAfterGame)
  {
   Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
   controlData.click(controlData.controls.lobby.button.enterChat);
   break;
  }
  if(GetTickCount() > nextGameMake)
  {
   var _control;
   lastGameFailed = false;
   switch(lastGameStatus)
   {
   case 0:
    // 当游戏序号大于设定的值时,就停止bot
    if (LNNTConfig_StopBotAfterSeq > 0 && LNNextGameSeq > LNNTConfig_StopBotAfterSeq) {
     // Stop the bot now
     Delay(24*60*60*1000);
    }
   
    _control = controlData.get(controlData.controls.lobby.button.create);
    if(_control && _control.pressed)
    {
     controlData.click(controlData.controls.lobby.button.join);
     Delay(500);
    }
    controlData.click(controlData.controls.lobby.button.create);
    nextGameMake = GetTickCount() + createGameTimeout; // set our timeout
    sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
    if (LNNTConfig_OverrideGameName) {
     // 是用自定义的游戏名字替换NTbot的默认方式
     Delay(200);
     var seqstr;
     seqstr = "" + LNNextGameSeq;
     while (seqstr.length < LNNTConfig_OverrideGameSeqMinLen) seqstr = "0" + seqstr;
     var gamename = LNNTConfig_OverrideGameNamePrefix + LNNTConfig_OverrideGameNameSep + seqstr;
     controlData.setText(controlData.controls.lobby.create.editBox.gameName, gamename);
     controlData.setText(controlData.controls.lobby.create.editBox.password, LNNTConfig_OverrideGamePassword);
     if (LNNTConfig_OverrideGameDifficulty == 1)
      controlData.click(controlData.controls.lobby.create.button.normal);
     else if (LNNTConfig_OverrideGameDifficulty == 2)
      controlData.click(controlData.controls.lobby.create.button.nightmare);
     else if (LNNTConfig_OverrideGameDifficulty == 3)
      controlData.click(controlData.controls.lobby.create.button.hell);
     controlData.click(controlData.controls.lobby.create.button.createGame);
     LNNextGameSeq++;
     
     lastGameMade = GetTickCount();
     lastGameStatus = 1; // pending creation
    }
   
    break;
   case 1: // game failed, rollover to reset timer
    inGameAt = GetTickCount(); // reset inGameAt, to wait how long we should have waited..
    lastGameFailed = true;
   case 2:
    outputGameLength();
    lastGameStatus = 0;
    setNextGameMake();
    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);
   if (LNNTConfig_OverrideGameName) LNNextGameSeq--;
  }
  break;
case 4: // Create Game
  sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
  locationTimeout(5000, location);
  lastGameMade = GetTickCount();
  lastGameStatus = 1; // pending creation
  
  break;
回复

使用道具 举报

5

主题

8

帖子

116

积分

侠客

Rank: 3Rank: 3

积分
116
沙发
 楼主| 发表于 2013-12-9 10:50:31 | 只看该作者
case 5: // Join Game
  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);

  controlData.setText(controlData.controls.login.editBox.accountName, me.account);

  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);
  Delay(3500);
  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);

  for(_time = 0 ; _time < characterScreenTimeout ; _time += 500)
  {
   _control = controlData.get(controlData.controls.characterSelect.textBox.characterInfo[me.charloc]);
   if(_control && _control.GetText() != undefined)
    break;

   Delay(500);
  }

  if(_time < characterScreenTimeout)
  {
   Delay(characterSelectDelay);

   controlData.click(controlData.controls.characterSelect.textBox.characters[me.charloc], 0, 0, 1);
   controlData.click(controlData.controls.characterSelect.textBox.characterInfo[me.charloc], 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);
   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);
  Delay(3500);
  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, \"?E00000Game already exists\", 0);

  inGameAt = 0;
  lastGameStatus = 0;
  setNextGameMake();

  locationTimeout(1000, location); // ln: from 15000 to 1000
  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(1);
}

return _retString;
}
回复 支持 反对

使用道具 举报

5

主题

8

帖子

116

积分

侠客

Rank: 3Rank: 3

积分
116
板凳
 楼主| 发表于 2013-12-9 10:50:42 | 只看该作者
有点长!
回复 支持 反对

使用道具 举报

9

主题

27

帖子

175

积分

侠客

Rank: 3Rank: 3

积分
175
地板
发表于 2015-6-11 09:58:00 | 只看该作者
我也想知道
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|BattleCN ( 陕ICP备05006600号 )

GMT+8, 2025-2-10 22:40 , Processed in 0.050036 second(s), 19 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表