|
You last visited: Today at 02:44
Advertisement
[D2NT] Public Botten for Dummies
Discussion on [D2NT] Public Botten for Dummies within the Diablo 2 forum part of the Other Online Games category.
04/12/2011, 02:33
|
#1456
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11
Received Thanks: 0
|
Hmm, hab mal wieder charms dazugemacht. Hab im d2nt manager eingestellt das er nach 15 runs cd key wechseln soll. Als er den dann ändern wollte, kam folgendes:
Und meine Bot.ntj sieht so aus:
Code:
var channelUsers = new Array();
//###################################################################
//###########################Einstellungen###########################
//###################################################################
// Wenn ihr nur einen Key benutzt, dann diesen Wert mindestens auf 180000 setzen, damit ihr keine realmdowns bekommt
var gameMinLength = 10000;
var joinChatAfterLogin = true; // true = Bot geht in den Chat, um .login/Announces zu machen
var joinChannelInChat = "OP Pornobaal"; // Wenn der Bot in keinen bestimmten Channel soll, dann nichts eintragen
var channelLogin = true; // true = Bot schreibt .login nachdem er eingeloggt ist
channelUsers.push("Hacks"); // Hier deinen Account Name eintragen
channelUsers.push("Bundesliga"); // Hier deinen Char Name eintragen
%game --> "Schalkebaal-"
%counter --> number of the next game
%time --> time in seconds till game creation
// %password --> game password
var gameAnnouncement = "Next Game: %game%counter in %time seconds."; // Wenn keine NG message im Chat geposted werden soll, dann nichts eintragen
//----------------------------------------------------------------------------------------------------------------------------------------------------------
//###################################################################
//##############################Delays###############################
//###################################################################
// realm delays (minutes)
var unableToConnectRetry = 2;
var realmDownRetry = 60;
var disconnectedRetry = 2;
var cdkeyInUseRetry = 2;
// interface delays (milliseconds)
var connectingToBnetTimeout = 20000;
var characterScreenTimeout = 10000;
var pleaseWaitTimeout = 10000;
var createGameThreshold = 10000;
var createGameThresholdRandom = 2500;
var createGameTimeout = 15000;
var waitInLineTimeout = 60000;
var characterSelectDelay = 1000;
var loginDelay = 1000;
var clickDelay = 1000;
var textDelay = 1000;
var clickDelayRandom = 500;
var textDelayRandom = 500;
var gameDoesNotExistDelayMin = 600000;
var gameDoesNotExistDelayMax = 900000;
var gameDoesNotExistTimeout = 30000;
var gameAnnouncementDelay = 5000;
var gameAnnouncementDelayRandom = 500;
var waitBeforeEnterChatMin = 1000;
var waitBeforeEnterChatMax = 2000;
var waitInChatBeforeActionsMin = 2000;
var waitInChatBeforeActionsMax = 3000;
//###################################################################
//###################################################################
//###############DO NOT CHANGE 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;
var joinedChannel = false;
var justJoined = true;
var joinRandomChannel = false;
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);
}
locationAction(controlData.getLocation());
Delay(500);
}
}
}
function locationAction(location)
{
switch(location.id)
{
case 3: // Lobby Chat
if(justJoined)
{
justJoined = false;
if(isChannelUser(me.account, me.charname))
{
for(var i = 0; i < 3; i++)
{
SetStatusText("ÿc2Chat actions enabled!");
Delay(150);
SetStatusText("");
Delay(150);
}
}
else
{
for(var i = 0; i < 3; i++)
{
SetStatusText("ÿc1Chat actions disabled!");
Delay(150);
SetStatusText("");
Delay(150);
}
}
}
if(!chatActionsDone && isChannelUser(me.account, me.charname))
{
chatActionsDone = true;
Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax));
if(!joinedChannel && (joinRandomChannel || joinChannelInChat != ""))
{
var rndChannel = getRandomString(Random(3,10));
SetStatusText("ÿc8Joining Channel " + (joinRandomChannel ? rndChannel : joinChannelInChat) );
Delay(1000);
Say("/join " + (joinRandomChannel ? rndChannel : joinChannelInChat));
joinedChannel = true;
Delay(1000);
if(channelLogin)
{
SetStatusText("ÿc8Channel Login...");
Say(".login");
Delay(1000);
}
}
}
case 1: // Lobby
if(location.id == 1 && joinChatAfterLogin)
{
Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
controlData.click(controlData.controls.lobby.button.enterChat);
break;
}
if(GetTickCount() > nextGameMake)
{
var _control;
lastGameFailed = false;
switch(lastGameStatus)
{
case 0:
_control = controlData.get(controlData.controls.lobby.button.create);
if(_control && _control.pressed)
{
controlData.click(controlData.controls.lobby.button.join);
Delay(500);
}
controlData.click(controlData.controls.lobby.button.create);
nextGameMake = GetTickCount() + createGameTimeout; // set our timeout
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
break;
case 1: // game failed, rollover to reset timer
inGameAt = GetTickCount();
lastGameFailed = true;
Delay(5000);
case 2:
outputGameLength();
lastGameStatus = 0;
setNextGameMake();
if(lastGameFailed)
{
SetStatusText("ÿc1Failed to join!");
sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿE00000Game " + ((getGameCounter(me.gamename, true)) ? ("(" + getGameCounter(me.gamename, true) + ")") : "") + " creation failed!", 0)
Delay(2500);
}
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
break;
}
}
else
{
if(joinChannelInChat && gameAnnouncement && me.gamename && isChannelUser(me.account, me.charname))
{
var tempDelay = (gameAnnouncementDelay > 5000) ? gameAnnouncementDelay : 5000 +
(gameAnnouncementDelayRandom > 500) ? Random(0, gameAnnouncementDelayRandom) : 500;
var gameText = gameAnnouncement;
gameText = gameText.replace("%password", me.gamepassword);
gameText = gameText.replace("%game", getGameName(me.gamename));
gameText = gameText.replace("%counter", getGameCounter(me.gamename, false));
gameText = gameText.replace("%time", parseInt((nextGameMake - GetTickCount() - tempDelay)/1000+3.0));
if(parseInt((nextGameMake - GetTickCount() - tempDelay)/1000+3.0) > 5)
{
Delay(tempDelay);
Say(gameText);
}
}
timeoutDelay(nextGameMake-GetTickCount(), location, true);
}
break;
case 2: // Waiting In Line
if(GetTickCount()-lastGameMade > waitInLineTimeout)
controlData.click(controlData.controls.lobby.inLine.button.cancel);
break;
case 4: // Create Game
if(!controlData.get(controlData.controls.lobby.create.editBox.gameName))
{
controlData.click(controlData.controls.lobby.button.join);
Delay (500);
controlData.click(controlData.controls.lobby.button.create);
Delay (500);
}
sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
locationTimeout(5000, location);
lastGameMade = GetTickCount();
lastGameStatus = 1; // pending creation
break;
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);
SetStatusText("ÿc1Game akready exists!");
inGameAt = 0;
lastGameStatus = 0;
setNextGameMake();
locationTimeout(15000, location);
break;
case 27: // Gateway Select
controlData.clickRealmEntry(me.gatewayid);
controlData.click(controlData.controls.gateway.button.ok);
break;
case 28: // Lobby - Game Does Not Exist
inGameAt = Random(gameDoesNotExistDelayMin, gameDoesNotExistDelayMax);
lastGameStatus = 0;
setNextGameMake();
locationTimeout(gameDoesNotExistTimeout, location);
break;
}
}
function sendEventToOOG(locationId, statusString, pendingTime)
{
return SendCopyData("D2NT Manager", null, (locationId<<16)|pendingTime, statusString);
}
function setNextGameMake()
{
lastGameMade = GetTickCount();
nextGameMake = lastGameMade + createGameThreshold + Random(0-createGameThresholdRandom, createGameThresholdRandom) + inGameAt;
inGameAt = 0;
chatActionsDone = false;
}
function outputGameLength()
{
if(inGameAt)
{
duration = GetTickCount() - inGameAt;
inGameAt = (duration < gameMinLength ? gameMinLength - duration : 0);
}
}
function locationTimeout(time, location)
{
endtime = GetTickCount() + time;
while(controlData.getLocation().id == location.id && endtime > GetTickCount())
{
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
Delay(500);
}
return (controlData.getLocation().id != location.id);
}
function timeoutDelay(time, location, showNextGameStatus)
{
if(arguments.length < 3)
showNextGameStatus = false;
endtime = GetTickCount() + time;
while(endtime > GetTickCount())
{
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
if(showNextGameStatus)
{
if(lastGameFailed && parseInt((endtime-GetTickCount())/1000) > 30)
{
if(parseInt((endtime-GetTickCount())/1000) % 30 == 0)
{
SetStatusText("ÿc1Last game failed!");
Delay(5000);
}
if(me.gamename && getGameCounter(me.gamename, false))
SetStatusText("ÿc8Next game: " + getGameName(me.gamename) + getGameCounter(me.gamename, false) + " (" + parseInt((endtime-GetTickCount())/1000) + "s)");
else
SetStatusText("ÿc8Game creation pending... (" + parseInt((endtime-GetTickCount())/1000) + "s)");
}
else if(parseInt((endtime-GetTickCount())/1000) >= 0)
{
if(me.gamename && getGameCounter(me.gamename, false))
SetStatusText("ÿc8Next game: " + getGameName(me.gamename) + getGameCounter(me.gamename, false) + " (" + parseInt((endtime-GetTickCount())/1000) + "s)");
else
SetStatusText("ÿc8Game creation pending... (" + parseInt((endtime-GetTickCount())/1000) + "s)");
}
if(me.ingame)
endtime = GetTickCount();
}
Delay(1000);
}
if(showNextGameStatus)
SetStatusText("ÿc8Creating game...");
}
function getRandomString(_length)
{
_retString = "";
_charSet = "0123456789abcdefghijklmnopqrstuvwxyz";
while(_length--)
{
_retString += _charSet.charAt(Random(0, _charSet.length-1));
Delay(1);
}
return _retString;
}
function getGameName(lastGameString)
{
if(!lastGameString)
return "";
else
return (lastGameString.substr(0, lastGameString.lastIndexOf('-')+1));
}
function getGameCounter(lastGameString, simple)
{
var myCount, countString;
if(!lastGameString)
return "-1";
else
{
countString = lastGameString.slice(lastGameString.lastIndexOf('-')+1);
switch(countString)
{
case "08":
myCount = 9;
break;
case "09":
myCount = 10;
break;
default:
myCount = parseInt(countString) + 1;
break;
}
if(!simple)
{
if(myCount <= 9)
return ('0' + myCount);
}
return myCount;
}
}
function isChannelUser(accountname, charname)
{
for(var i = 0; i < channelUsers.length; i++)
{
if(accountname.toLowerCase() == channelUsers[i].toLowerCase() || charname.toLowerCase() == channelUsers[i].toLowerCase())
return true;
}
return false;
}
|
|
|
04/12/2011, 02:44
|
#1457
|
elite*gold: 0
Join Date: Sep 2009
Posts: 189
Received Thanks: 12
|
Also falsch ist das hier: %game --> "Schalkebaal-"
du darfst dort nicht dein game namen rein schreiben, den erstellst du über den Manager via "Profile Add"
also wieder ändern auf: %game --> "gamename-"
; )
Jaja heute krieg ich endlich mal Thanks ^^
|
|
|
04/12/2011, 02:49
|
#1458
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11
Received Thanks: 0
|
Es funktioniert jetzt wieder, allerdings sieht es jetzt so aus, sonst funktioniert es nicht:
Code:
//%game --> "gamename-"
//%counter --> number of the next game
//%time --> time in seconds till game creation
// %password --> game password
var gameAnnouncement = "Next Game: %game%counter in %time seconds."; // Wenn keine NG message im Chat geposted werden soll, dann nichts eintragen
|
|
|
04/12/2011, 02:52
|
#1459
|
elite*gold: 0
Join Date: Sep 2009
Posts: 189
Received Thanks: 12
|
Jep, so ist es wieder Standart mäßig : )
Wenn noch Fragen hast stell  aber evtl bin ich dann am pennen
|
|
|
04/12/2011, 02:54
|
#1460
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11
Received Thanks: 0
|
Ja aber jetzt schreibt er das nächste game nicht mehr im channel.
|
|
|
04/12/2011, 03:01
|
#1461
|
elite*gold: 0
Join Date: Sep 2009
Posts: 189
Received Thanks: 12
|
Das machste hier mit:
setz die beiden hier auf true:
var joinChatAfterLogin = true; //
var joinChannelInChat = "dein channel z.B. op schalkebaal"; // Wenn
var channelLogin = true; //
Zu mir:
Ich möchte das der Leader wenn er Channel joint erst game ansagt wenn bevor er es erstellt (so 5-10sek vorher) oder er soll es zweimal ansagen, das erste mal wenn er channel joint und das zweite mal wenn kurz bevor er das game erstellt. (da ich nur mit 1 key spiel, also etwas länger im channel warte, und wenn dann leute da warten und nix kommt gehen die..)
zum anderen, kann der leader nicht ab chaos sanktarium anfang zu killen + tp?
Ich muss leider sagen das, das leech script bei mir nicht richtig funktioniert, sie geht nicht oft ins tp runter..
und beim leechfight, da läuft sie zu allen siegeln wo er schon längst war...
|
|
|
04/12/2011, 03:03
|
#1462
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11
Received Thanks: 0
|
hab ich er announced die trotzdem nicht
edit: problem gelöst
edit: Hab pickit eingestellt und trotzdem sammelt der nix auf, keine ringe garnix. In 50 runs hat der nich eine einzige sachen aufgehoben. Help?
|
|
|
04/12/2011, 10:08
|
#1463
|
elite*gold: 0
Join Date: Sep 2009
Posts: 189
Received Thanks: 12
|
Joa zeig mal Pickit und die Char config
|
|
|
04/12/2011, 17:48
|
#1464
|
elite*gold: 0
Join Date: Feb 2011
Posts: 5
Received Thanks: 0
|
hi hab mal ne frage unzwar woo kann ich eintellen das der dem Leader schneller hinter ins game joint
|
|
|
04/12/2011, 17:59
|
#1465
|
elite*gold: 139
Join Date: Oct 2006
Posts: 12,058
Received Thanks: 24,258
|
Quote:
Originally Posted by pennywise-1
hi hab mal ne frage unzwar woo kann ich eintellen das der dem Leader schneller hinter ins game joint
|
Account+Charname so eintragen wie sie in der grünen Message stehen, dann joined er direkt.
|
|
|
04/12/2011, 18:16
|
#1466
|
elite*gold: 0
Join Date: Feb 2011
Posts: 5
Received Thanks: 0
|
hm das habe ich aber der macht erst mal paar mal /f und adn schreibt der ein scheiss in die lobby und dan joint er
|
|
|
04/12/2011, 19:31
|
#1467
|
elite*gold: 139
Join Date: Oct 2006
Posts: 12,058
Received Thanks: 24,258
|
Der "scheiss" ist dein GameName, den du im Profil eingetragen hast und den schreibt er um die Spiele zu zählen. Desweiteren solltest du darauf achten, dass die Groß-/Kleinschreibung im Entry Point die gleiche ist wie in der Message.
|
|
|
04/12/2011, 19:38
|
#1468
|
elite*gold: 0
Join Date: Oct 2010
Posts: 1,867
Received Thanks: 1,750
|
endlich mal ein guide für mich
|
|
|
04/12/2011, 20:03
|
#1469
|
elite*gold: 13
Join Date: Jul 2010
Posts: 308
Received Thanks: 25
|
mein neuster leechfighter sagt nur "initializin game" und dann "exiting game" oben in der zeile nachdem er gejoined ist und wartet dann aufs ng  gibts dafür bekannte auslöser/behebungen? handelt sich um den warcry/bo-barb
|
|
|
04/12/2011, 20:48
|
#1470
|
elite*gold: 0
Join Date: Feb 2011
Posts: 5
Received Thanks: 0
|
und ab und zu gibt der leader kein pp ?!
|
|
|
 |
|
Similar Threads
|
[D2NT] How to do Public
07/04/2011 - Diablo 2 - 51 Replies
Also da ich gefragt wurde ob ich das nicht machen könnte, habe ich mir gedacht da ich grade nichts zu tuen habe, wieso den eigentlich nicht.
Falls jemand Maphack im Fullwindow spielen will:
http://img824.imageshack.us/img824/1725/66387846. png
Hacken Raus nehmen.
CREADITS TO:
Sternlooper
TheBluebird
Muddy_Waters
|
D2Nt Public Pickit
10/18/2010 - Diablo 2 - 4 Replies
Der Bot ist super aber er pickt einfach sachen viel zu langsame zb small charms. Da sind normale Spieler schneller. Kann man das einstellen das er sachen sofort beim droppen pickt??
|
Classic botten mit D2nt
07/09/2010 - Diablo 2 Programming - 2 Replies
Huhu :) ich möchte classic anfangen und wollte mal fragen ob es tolle d2nt classic scripts gibt, bzw. was ich ändern muss oder ob es auch non enigma scripts gibt für paladin oder so^^
Gibt aufjeden ein THX :)
Und eine Pickit für Classic wäre auch nice^^
Oder gibs andere Classic bots ?
|
Public Baal mit D2NT
04/13/2009 - Diablo 2 - 3 Replies
könnt ihr mir vll sagen was ich machen muss um mit den bot public baals runs zu machen wäre echt cool in dern config auf true stellen ist mir klar aber wie stell ich game name und sowas alles ein und brauch ich dafür nicht wieder eine config datei wäre echt cool wenn ihr mir helfen könntet ;)
|
All times are GMT +1. The time now is 02:47.
|
|