Leechbot auf NT basis

02/28/2010 12:58 MrTorture#1
hi!

also ich habe euch ja die tage ganz schön durchlöchert mit fragen um den nt bot *g*

möchte euch natürlich nicht vorenthalten was dabei raus gekommen ist.

aber zu aller erst möchte ich euch vorwarnen: es ist nicht so schön wie bei so manch anderen hier ^^ ich habe mir teilweise sehr praktisch geholfen :rolleyes: und naja, .... ich hoffe es ist trotzdem für euch nachvollziehbar und ich stoße auf euer interesse :)


nun gut hier erstmal der DL link:

[Only registered and activated users can see links. Click Here To Register...]

(vll kann den jemand hier hoch laden, weil der dl ist auf 10 limitiert :/)


jetzt zur erklärung:

im großen und ganzen müsst ihr bloß die dateien mit denen aus eurem NT moddet ordner ersetzten! (version 1.5!!!)

zur starter:

also ich habe dank nojmnojmnojm :handsdown: die 1.5er starter mit der 1.8er joinbot starter verbinden können. (zur zeit noch keinen bann, trotz intensiver testes!) ich denke das sollte sich auch so halten, da nur die starter umgeschrieben wurde, keine dll oder ähnlich!

Pub.Diablo:

die gehört hier hin: NT modded - Kopie\scripts\bots (ersetzten!) dadurch wird euer diablo run zu einem Leech-baal-run

nat. müsst ihr diese auch in der char config aktivieren ( die // vor dem pub. diablo weg machen)


JoinBot und control. ntl:

die hier einfach ersetzten / hinzufügen:

NT modded - Kopie\scripts\libs


NTBotGame:

hinzufügen / ersetzten: NT modded - Kopie\scripts


Was das eigtl ist:


also, da die leechbots der reihe nach nicht bei mir klappen musste abhilfe geschafft werden *g*

ich habe nojmnojmnojm angeschrieben und gefragt ob er/sie (was bist du eigtl^^?) nicht eine idee hat. kurz darauf erhielt ich antwort und so hat er/sie mir den link von einem älteren thread geschrieben, wo der joinbot vorgestellt wird.

was ich davon wollte war hauptsächlich die starter und was ich mit der starter gemacht habe, steht ja oben ^^.
als nächstes musste ich dem bot i-wie klar machen, das er nicht selber monster killen geht, sondern meinem pala folgt.

ich stieß auf das bodygurad topic :)


das script von kalel entwas verändert (zb das der leecher nach der heilung zu der tp stelle geht und sich nicht im aus von malah verirrt, oder das der leecher nicht direkt in die waves rein rennt sonder auf möglichst großem abstand bleibt wenn er durch das portal geht.

klingt jetzt alles nicht so arbeitsaufwendig, aber ich hab mich damit noch nie zuvor befasst^^ und wärend ich getestet habe sind auch viele dinge aufgetaucht die eigtl niemand braucht.


was mir grade einfällt:

damit die leecher nicht von monstern gekillt werden die der pala beim tp erstellen übersieht solltet ihr in der publicbaal.ntj volgendes ändern:

zeile 86/87:

NT_ClearThroneInt(); // einfach hinzufügen
NTA_ClearPosition(20, 0x04)


---> der thorne wird erst gesäubert, dann wird tp erstellt




was wichtig ist:

wie ihr sehen könnt habe ich einfach eine kopei von meinem moddet nt ordner gemacht und dort dann alles geändert. würde dies euch auch empfehlen, da ihr einen eigenen baalbot braucht, der einen normalen public baal run macht, also selber das spiel erstellt. bei mir hat sich kuk und nt gleichzeitig auf einem system nicht so gut vertragen :/ deswegen lasse ich aufm lappi den baalbot laufen und aufm desktop die leecher.

den nt manager zwei mal starten (einmal mit normaler starter aus dem origianlordner und einmal aus dem neuen mit joinfuktion starter) auf einem system ist problematisch, da die sich i-wie verkaspern :/


edit:

durch die ganzen teste habe ich es einfach vergessen LOL
die leech chars müssen auf einem egnlischen diablo laufen!!! sonst kann der bot die f-liste nicht korrekt auslesen und den leader erkennen!

thx an Mart1x welcher danach gefragt hat und mich auf die idee gebracht hat :D nice1 :)


wie ihr den einstellt:



geht hier hin: NT modded - Kopie\scripts\libs

öffnet die joinbot.ntl:

// Leader Account settings
var JoinFromChat = true;
var leaderAccountName = "ACCOUNT";
var leaderName = "CHARNAME";
var gamepassword = "EurerPasswort" // euch überlassen, wenn ihr kein pw haben wollt einfach leer lassen ( so wie es da steht ist euer passwort im moment EUERPASSWORT :D

einstellen, speichern, fertig



der bot wird natürlich normal über den manager gestartet.

die zeile wo ihr den game namen eingebt (im manager) könnt ihr ignorieren


Zur zeit schreiben die leecher in den chat wie das nächste game und passwort heißt! In einem der deutschen chats!

wie ihr das umstellt :


in der starter: zeile 25: einfach dne chät in irgendwas uninteressantes ändern(zb: op eliteboobs) . so bekommen niemand mit wie die games heißen.


das wars soweit!


habt spaß und so ;) :mofo:



danke an nojmnojmnojm und kalel für ihren input
:) :handsdown: :) :handsdown: :) :handsdown: :) :handsdown: :) :handsdown:



ps: atm läufen die bots wie ein schweizer uhrwerk :pimp: richtig gut und flüssig :)
02/28/2010 18:26 kal_el#2
kannst ihn hier auch selber hochladen... geh auf erweitert und dann auf anhänge.. 10 mb passen da rein.

rapidshare geht noch?

thx and good luck
02/28/2010 19:01 MrTorture#3
hier dann der epvp dl link :)


danke:)


edit: noch was, bitte schickt mir nicht alle ne PM ^^ lasst uns die fragen hier klären, so bleibt das für die nachwelt auch erhalten ^^ und ich muss nicht alles 10 mal erkären ;) :P


an die, die shcon testen:

ich wäre sehr dankbar wenn ihr mir sagen könnt, ob jeder char bei euch den leader aus der f-liste erkennt :/

ich finde einfach kein schema raus warum zb. mein baba jetzt garnicht mehr die f-liste richtig auslesen kann -.-

edit: hat sich geklärt, diablo lief nicht auf englisch -.-
02/28/2010 22:02 matr1x#4
Also das habe ich dir schon als PN geschrieben :D aber kanns auch gerne hier noch porsten.

Geht alles er joint etc :D doch er telt in den rechten gang vom Thron :D also total weg vom rest ????
03/01/2010 14:27 MrTorture#5
ja das liegt daran, das ich in dem bodyguard script die entfernung zum leader auf möglichst groß gestellt habe und nun der leecher versucht vom leader weg zu kommen.

nehm einfach enigma raus dann sollte der leecher einfach in die nächste ecke gehn (so läufts von mir)
03/01/2010 19:50 kal_el#6
ja wenn der leecher ein reiner leecher sein soll, und kein mitkämpfer, dann musst doch einfach nur die attacke rausnehmen..so das er nimmer angreift.
ok ok.. aber hinterhertelen würde er dann immer noch..
na ok...dann musst eben das hinterhertelen rausnehmen..dann steht er doch nur rum nachdem er durchs tp is oder?
03/01/2010 20:16 MrTorture#7
kann sein, aber ich wollte mir das möglichst einfach offen halten, den als co baal um zu funktionieren ^^

und eni an/ausziehn und eben die range zum leader ändern, ist mit abstand das einfachste ^^

ist halt alles was einfach gemacht, aber es funktioniert trozdem ^^

was deluxe wäre, wenn der leecher dem leader ausm game folgen würde, aber da bin ich einfach überfragt
03/05/2010 17:50 Snow_Junky#8
mein leechbot zeigt immer error an wenn ich starte i-was mit starter imo aber ka was hab deine datei einfach rein kopiert wäre sehr dankbar für hilfe ;)
03/05/2010 20:02 MrTorture#9
hast du den moddet d2nt bot version 1.5?
hast du einfach nur rein kopiert, oder auch in die einzelnen verzeichnisse im ordner selber?
hast du kopiert und ersetzt oder kopiert und die alte datei behalten?
03/05/2010 20:26 Snow_Junky#10
y hab ich
03/05/2010 20:27 Snow_Junky#11
wäre nice wenn du d2nt leechbot ordner eingestellt
hochladen würdest ;)

hab d2ntbot 1.5 kopiert und neuen ordner erstellt alles rein
und dann die dateien gelöscht und ersetzt

hier mein starter :
Code:
var gameMinLength      = 180000;   // 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      = 120;      // time in minutes to retry connecting on a realm down (default is 120 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   = 20000;   // 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      = 5000;      // time in milliseconds to wait between making games
var createGameThresholdRandom   = 1000;      // time in milliseconds to randomly add +/- to the game create time
var createGameTimeout      = 15000;   // 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   = 700;      // time in milliseconds to wait before selecting a character on the char screen
var loginDelay         = 600;      // 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      = true;   // join chat after leaving a game
var joinRandomChannel      = false;      // if this is true, will join a random channel, otherwise it will use the channel below..
var joinChannelInChat      = "op elitebaal";      // leave blank to not join a private channel
var waitBeforeEnterChatMin   = 3000;      // min how long to wait before entering chat
var waitBeforeEnterChatMax   = 9500;      // max how long to wait before entering chat
var waitInChatBeforeActionsMin   = 2500;      // min how long to wait before joining channel
var waitInChatBeforeActionsMax   = 7500;      // max how long to wait before joining channel

// 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;

Include("controlInfo.ntl");
Include("joinBotSettings.ntl");

var controlData = new controlInfo();

var game = '';

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)
         {
            if(Load("NTBotGame.ntj"))
            {
               _ingame = true;

               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(!chatActionsDone) 
      { 
         chatActionsDone = true; 
         Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax)); 
 
         if(joinRandomChannel || joinChannelInChat != "") 
         { 
            Say("/join " + (joinRandomChannel ? getRandomString(Random(3,10)) : joinChannelInChat)); 
            Delay(1000); 
         } 
      } 
 
      if(JoinFromChat){ 
         game = ''; 
         if (joinChannelInChat) 
            Say('join Evilbaal); 
         Delay (10000); 
         Say('/f l'); 
         Delay(500); 
         if(chat = controlData.get(controlData.controls.lobby.chat.textBox.channelText)) 
         { 
            var errors = ''; 
            var found_leader = false; 
            lines = chat.GetText(); 
            for (var friend = 0; friend < lines.length; friend++) 
            { 
               if (lines[friend].lastIndexOf(': '+leaderAccountName+',') > -1) 
               { 
                  game = ''; 
                  found_leader = true; 
                  var regOfflineEnglish=/^\d\s?:\s?(\w*)\s?,\s?offline\s*$/gi; 
                  var regGameNameEnglish=/^\s*(the\s)?(game\s)?([\w\s-]*\w)\s\(private\)\.\s*$/gi; 
                  var regGameNameFrench=/^\s*(la\s)?(partie\s)?([\w\s-]*\w)\s\(priv[^\)]*\)\.\s*$/gi; 
                  if (lines[friend].match(regOfflineEnglish)) 
                  { 
                     errors += (errors == '' ? '' : ' ') + 'leader is offline'; 
                     if (joinChannelInChat) 
                        Say('is offline, ich warte mal was'); 
                     Delay(18000); 
                  } 
                  if (lines[friend + 1].match(regGameNameEnglish) && lines[friend+1].substr(1, 1) != ':') 
                  { 
                     game = lines[friend + 1].replace(regGameNameEnglish, "$3"); 
                  } 
                  if (!game && lines[friend + 1].match(regGameNameFrench) && lines[friend+1].substr(1, 1) != ':') 
                  { 
                     game = lines[friend + 1].replace(regGameNameFrench, "$3"); 
                  } 
                  if (game != '') 
                  { 
                     if (joinChannelInChat) 
                        Say('SCHNELLE BaalRuns in game ' + game + 'Passwort = 1'); 
                     Delay(1000); 
                     controlData.click(controlData.controls.lobby.button.join); 
                     Delay (1000); 
                  } 
                  else 
                  { 
                     if(!errors) 
                     { 
                        errors = 'leader is not in game.'; 
                     } 
                  } 
               } 
            } 
            if (!found_leader && joinChannelInChat) 
            { 
               if (errors) 
                  Say('Errors : ' + errors); 
               else 
                  Say('Hab den nicht in meiner f liste'); 
               Delay(1500); 
            } 
         } 
         else 
         { 
            if (joinChannelInChat) 
               Say('hab nen problem mit dem chat oO'); 
            Delay(1500); 
         } 
          
      } 
      break; 
 
      
   case 1:   // Lobby
      if(location.id == 1 && joinChatAfterGame)
      {
         Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
         controlData.click(controlData.controls.lobby.button.enterChat);
         break;
      }

      if(GetTickCount() > nextGameMake)
      {
         lastGameFailed = false;

         switch(lastGameStatus)
         {
         case 0:
            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(); // 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);
      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);

      RunGC(); // run garbage collector between each game

      locationTimeout(5000, location);

      lastGameMade = GetTickCount();
      lastGameStatus = 1; // pending creation
      break;

   case 5: // Join Game
        if(!controlData.get(controlData.controls.lobby.join.editBox.gameName))
        {
            controlData.click(controlData.controls.lobby.button.create);
            Delay (1000);
            controlData.click(controlData.controls.lobby.button.join);
            Delay (1000);
        }
        if (game != '')
        {
            controlData.setText( controlData.controls.lobby.join.editBox.gameName, game);
            Delay (500);
            controlData.setText( controlData.controls.lobby.join.editBox.password, gamepassword);
            Delay (500);
            controlData.click(controlData.controls.lobby.join.button.joinGame);
            RunGC(); // run garbage collector between each game
            locationTimeout(5000, location);
            lastGameStatus = 1; // pending join
        }
      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
      RunGC(); // run garbage collector between each game

      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, "Game already exists", 0);

      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)
{
   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;
}
03/06/2010 11:28 kal_el#12
ned gut ...ned gut... 3 post in 10 min. gibt normalerweise nen warnschuss.
und ne ellenlage ini...ntj..oder irgendwas gehört in ne code box.
03/06/2010 14:10 MrTorture#13
junge junge^^

die anleitung ist doch echt möglichst easy geschrieben :confused:


hab jetzt den ganzen bot nochmal hochgeladen

bitte lest euch zur not auch mal den ersten post hier zwei mal durch, ich bekomme ständig fragen die ganu dort beantwortet werden ...

habe jetzt den kompletten ordner hochgeladen.

ich müsst nur noch in der joinbot.ntl euren leader eintragen und beim nt manager eurer eigenes profil erstellen ...

(ich setzte natürlich voraus das hier schonmal einen ntbot benutzt habt!!!)


und nochmal! schickt mir bitte nicht immer ne PM!!!!

das geht auf keinen fall schneller, weil ich nicht die ganze zeit auf eurer pm warte :P

wenn ihr hier einfach rein schreibt, dann können euch auch andere helfen
03/07/2010 19:43 MrTorture#14
hoi! ich wieder :/

sagt mal, weiß einer evtl warum der bot nach ner weile im chat einfach nichts mehr macht?

der ist dann einfach tod, wie als wenn man pause drückt, aber ohne das ich es gemacht habe :/

das ist atm das einzigste problem, was mich davon abhält den über nacht laufen zu lassen :/

hab schonmal in der starter geschaut, aber mir ist nix aufgefallen was darauf hinweisen könnte
03/07/2010 20:29 Snow_Junky#15
kann man iwo eintellen das er schneller joint? game is meistens voll bis bot im game