As_Snuske
Messages : 607
| Sujet: TUTO Config Baal Follow Bot Fight Leecher Sans ENIGMA Lun 4 Oct - 14:34 | |
| Hey !!
Suite à de longue recherche, je viens de dégoter un EXCELLENT script de Baal Leech sans ENI pour D2NT...
Le but : permettre d'exp en baalrun sans avoir trop de soucis d'immun.
En effet, ce scrpit est un Fight script, autrement dis tout perso cac ou hammer fonce dans le tas. Cela permet quand même d'avoir la puissance du hammer, et la Téleport de la Soso à un prix très très faible. Pas besoin ni d'Infinity ni d'Enigma ! pratique en ce début de Ladder !
L'installation n'étant pas extrêmement evidente, je me lance dans un petit Tuto...
Alors déjà il faut déterminer qui vous souhaitez Lecher... euh Leecher !
Perso je tourne avec comme leader ma fire soso, et comme fightleecher mon hammerdin (sans eni bien evidemment! ).
A vous de voir si vous souhaitez suivre quelqu'un en particulier... Par défaut le leader du tuto sera :
Leader As_MFFAST account : As_MFFAST Leecher As_MFFASTx account : As_MFFAST4
Il faut déjà que les 2 persos soient dans leur liste d'amis respective.
tapez InGame : /f a As_MFFAST (nom de l'account)
meme chose du coté du Leadr avec le leecher
tapez InGame : /f a As_MFFASTx (nom de l'account)
Ensuite
Dans le dossier D2NT\scripts\NTBot\bots
clique droit > nouveau fichier texte nom : NTBaalLeechWalk.ntj
- Spoiler:
Editez avec Notepad++ :
function NTMain() { Include("libs/common/NTCommon.ntl"); NTC_IncludeLibs(); NTC_IncludeConfig("NTBot/char_configs");
NT_LoadConfig(); NTSI_LoadNIPFiles("NTBot/item_configs");
NTA_Initialize(); // 10
if(!NTTM_CheckAct()) { NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()"); return; }
if(me.areaid != 109) { if(!NTTM_TownMove("waypoint")) { NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()"); return; }
if(!NTM_TakeWaypoint(109)) { NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()"); return; } } NTTMGR_TownManager(); NTTM_TownMove("portalspot");
for(i = 0; i <= 100; i++) { if(NTC_InMyParty(NTConfig_Leader)) break;
Delay(200); }
while(me.areaid == 109 && NTC_InMyParty(NTConfig_Leader)) { NTM_UsePortal("BluePortal", 131, NTConfig_Leader); // 50 Delay(1000); } NTP_DoPrecast(true);
while(NTC_InMyParty(NTConfig_Leader)) { NTM_WalkTo(15115, 5045); NTA_ClearPosition(25, true, 2); NTM_WalkTo(15092, 5045); NTA_ClearPosition(40, true, 2);
while(1) { if(me.classid == NTC_CHAR_CLASS_PALADIN || me.classid == NTC_CHAR_CLASS_BARBARIAN || me.classid == NTC_CHAR_CLASS_DRUID) NTM_WalkTo(15092, 5028); else NTM_WalkTo(15092, 5040);
if(me.GetState(2)) NTC_PutSkill(109, NTC_HAND_RIGHT);
for(i = 0 ; i < 6 ; i++) { _wave = NT_ThroneCheckInt();
if(_wave > 0) break;
NTC_Delay(500); }
_starttick = GetTickCount();
while(_wave == 0) { if(!NT_ThronePreAttackInt()) NTC_Delay(200);
if(GetTickCount()-_starttick > 20000) _starttick = GetTickCount();
_wave = NT_ThroneCheckInt(); }
switch(_wave) { case 1: NTA_ClearPosition(40, true, 1); NTP_DoPrecast(true); break; case 3: NTA_ClearPosition(40, true, 2); break; case 4: NTA_ClearPosition(40, true, 2); break; case 5: NTA_ClearPosition(40, true); break; default: NTA_ClearPosition(40, true, 1); break; }
if(_wave == 5) break; }
if(NTConfig_KillBaal) { var _portal;
if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe|0x01, NTConfig_CheckMercSafe)) { NTC_SendMsgToScript("NTBotGame.ntj", "NTTMGR_CheckSafe()"); return; }
NTM_WalkTo(15092, 5010);
NTP_DoPrecast(true);
while(NTC_GetUnit(NTC_UNIT_MONSTER, 543)) NTC_Delay(500);
_portal = NTC_GetUnit(NTC_UNIT_OBJECT, 563, 1); if(!_portal) { NTC_SendMsgToScript("NTBotGame.ntj", "NTC_GetUnit()"); return; }
if(!NTM_UsePortal("Portal", 132, null, _portal)) { NTC_SendMsgToScript("NTBotGame.ntj", "NTM_UsePortal()"); return; }
//if(me.classid == NTC_CHAR_CLASS_NECROMANCER) //NTConfig_Curse = 87; // Use Decrepify on Baal
NTM_WalkTo(15175, 5938); NTM_WalkTo(15138, 5938);
if(!NTA_KillMonster(544)) { NTC_SendMsgToScript("NTBotGame.ntj", "NTA_KillMonster()"); return; }
NTSI_PickItems(); } NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END"); }
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END"); }
function NT_ThroneCheckInt() { var _monster;
if(!NTC_GetUnit(NTC_UNIT_MONSTER, 543)) return 5;
_monster = NTC_GetUnit(NTC_UNIT_MONSTER);
if(_monster) { do { if(NTA_IsValidMonster(_monster)) { if(_monster.classid == 23 || _monster.classid == 62) return 1;
if(_monster.classid == 105 || _monster.classid == 381) return 2;
if(_monster.classid == 557) return 3;
if(_monster.classid == 558) return 4;
if(_monster.classid == 571) return 5; } } while(_monster.GetNext()); }
return 0; }
function NT_ThronePreAttackInt() { if(me.classid == NTC_CHAR_CLASS_SORCERESS) { if(NTConfig_AttackSkill[3] == 56 || NTConfig_AttackSkill[3] == 59) return NTC_CastSkill(NTConfig_AttackSkill[3], 2, 15092, 5028); } else if(me.classid == NTC_CHAR_CLASS_PALADIN) { if(NTConfig_AttackSkill[3] == 112) { if(NTConfig_AttackSkill[4] > 0) NTC_PutSkill(NTConfig_AttackSkill[4], NTC_HAND_RIGHT);
return NTC_CastSkill(NTConfig_AttackSkill[3], 2); } }
return false; }
function NTC_GetUnit(unittype, classid) { var _unit;
for(var i = 0 ; i < 2 ; i++) { if(arguments.length < 2) _unit = GetUnit(unittype); else _unit = GetUnit(unittype, classid);
if(_unit) return _unit;
if(i < 1) NTC_PingDelay(200); }
return false; }
Enregitrez
Ensuite dans D2NT\scripts copiez le fichier NTBot.ntj et renommez le NTBotLeech.ntj
Supprimez tout le contenu et Editez avec Notepad++ :
var gameMinLength = 90000; // 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 = 260; // 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 = 1000; // time in milliseconds to wait for a login to time out and click cancel and retry var characterScreenTimeout = 5000; // time in milliseconds to wait for character screen to appear var pleaseWaitTimeout = 2000; // time in milliseconds to wait for a please wait popup var createGameThreshold = 5000; // time in milliseconds to wait between making games var createGameThresholdRandom = 500; // 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 = 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 = 5000; // 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 = 500; // how long to wait when a Game Does Not Exist occurs - minimum - default 10 minutes var gameDoesNotExistDelayMax = 500; // how long to wait when a Game Does Not Exist occurs - maximum - default 15 minutes var gameDoesNotExistTimeout = 1000; // 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 lastbaal"; // 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 var JoinFromChat = true; var leaderAccountName = "As_MFFAST"; var gamepassword = ''; var samegame = ''; var oldgame = ''; var check = 1;
// 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("libs/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("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(!chatActionsDone) { chatActionsDone = true; Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax)); if(joinRandomChannel || joinChannelInChat != "") { Say("/join " + (joinRandomChannel ? getRandomString(Random(3,10)) : joinChannelInChat)); Delay(1000); } } if(JoinFromChat){
game = ''; Delay(1000); if(chat = controlData.get(controlData.controls.lobby.chat.textBox.channelText)) { var errors = ''; var found_leader = false; var linewithname = ''; lines = chat.GetText(); if (lines.length > 1) for (var friend = 0; friend < lines.length; friend++) { if (undefined!==lines[friend + 1]) linewithname = lines[friend + 1]; if (undefined!==lines[friend + 1]) linewithname = lines[friend + 2]; if (undefined!==linewithname && linewithname.length > 0) if ((lines[friend + 1].lastIndexOf('game called') > -1 || linewithname.lastIndexOf('called') > -1)&& lines[friend].lastIndexOf(leaderAccountName) > -1) { game = ''; found_leader = true; var regOfflineEnglish=/^\d\s?:\s?(\w*)\s?,\s?offline\s*$/gi; if (lines[friend].match(regOfflineEnglish)) { errors += (errors == '' ? '' : ' ') + 'leader is offline'; Delay(5000); } linewithname = linewithname.replace(/^\s+/,""); if (linewithname.lastIndexOf('called') > -1) game = linewithname.substring(linewithname.lastIndexOf('called')+7,linewithname.lastIndexOf('.')); else { game = linewithname.substring(0,linewithname.lastIndexOf('.')); } linewithname = ''; if (game != '' && game != samegame && game != oldgame) { controlData.click(controlData.controls.lobby.button.join); Delay(200); controlData.setText( controlData.controls.lobby.join.editBox.gameName, game); Delay (200); controlData.setText( controlData.controls.lobby.join.editBox.password, gamepassword); Delay (200); controlData.click(controlData.controls.lobby.join.button.joinGame); check = 1; } else { if(!errors) { errors = 'leader is not in game.'; } } } } if (!found_leader && joinChannelInChat) { if (errors) Say('Errors : ' + errors); else // Say('I couldn't find the leader in my friend list.'); Delay(1500); } } else { //if (joinChannelInChat) // Say('I can't read the chat!'); Delay(1500); } } errors = ''; if(game != '') samegame = game; break; case 1: // Lobby if(check == 1) { sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0); outputGameLength(); lastGameStatus = 0; setNextGameMake(); sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0); check = check + 1; }
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 (100); http://controlData.setText( controlData.controls.lobby.join.editBox.password, gamepassword); //Delay (100); controlData.click(controlData.controls.lobby.join.button.joinGame); } check = 1; lastGameStatus = 1; // pending creation 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(); this.controls.lobby.button.quit 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
Delay(160000); // 40 seconds longer then leader's min game time, edit yourself controlData.click(controlData.controls.lobby.button.quit) Delay(1000); controlData.click(controlData.controls.characterSelect.textBox.characters[me.charloc], 0, 0, 1); controlData.click(controlData.controls.characterSelect.textBox.characterInfo[me.charloc], 0, 0, 1) check = 1; oldgame = game;
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; }
Editez Maintenant la ligne 31
var leaderAccountName = "As_MFFAST"; <-- le nom du COMPTE du Leader
Enregistrez.
Allez dans D2NT\scripts\libs
Editez le fichier ControlInfo.ntj
rajoutez juste après la ligne 135 :
this.controls.lobby.chat.textBox.channelText = [4,28,410,354,298];
Vous devriez donc avoir :
this.controls.lobby.chat.textBox = new Array(); this.controls.lobby.chat.textBox.channelName = [4,28,138,354,60]; this.controls.lobby.chat.textBox.channelText = [4,28,410,354,298]; this.controls.lobby.chat.location = ge] Enregistrez.
Dans votre Char_Config du leecher rajouter ces 2 lignes au niveau des boss qu'il fait
NTConfig_Leader = "As_MFFAST" // Your Leader name
NTConfig_Script.push("NTBaalLeechWalk.ntj"); NTConfig_KillBaal = true;
CONFIGURER maintenant le manager
Si vous utlisez une seul clé CD,il vous faudra créer une clé cd mpq pour le leecherbot, pour leech/bot d'un même pc.
Remplissez la config habituelle :
Laissez room name et password sur "random"
Dans "entry point" juste au dessus de "ok" sélectionnez "NTBotLeech.ntj"
Enregistrez
C'est prets ! Lancez d'abord le Leecher
Puis Lancez Le Leader
Enjoy !!!
Ca marche tres bien chez moi... dites moi si vous avez des problemes... des suggestions...
Source : http://forum.gmstemple.com/index.php?showtopic=8577 http://www.edgeofnowhere.cc/viewtopic.php?t=450711 |
|
As_Snuske
Messages : 607
| Sujet: Re: TUTO Config Baal Follow Bot Fight Leecher Sans ENIGMA Sam 9 Oct - 22:39 | |
| La partie concernant le chat :
Allez dans D2NT\scripts\libs
Editez le fichier ControlInfo.ntj
rajoutez juste après la ligne 135 :
this.controls.lobby.chat.textBox.channelText = [4,28,410,354,298];
Vous devriez donc avoir :
this.controls.lobby.chat.textBox = new Array(); this.controls.lobby.chat.textBox.channelName = [4,28,138,354,60]; this.controls.lobby.chat.textBox.channelText = [4,28,410,354,298]; this.controls.lobby.chat.location = ge] Enregistrez.
Cela permet au leecher de detecter quand le bot créer la partie et de se connecter dessus.
Fais un test : allume le leecher puis le bot et regarde sur la page de chat du leecher si un message, en vert s'affiche quand le bot se connecte, et quand le not cree la partie.
Oublie pas aussi de selectionner dans le manager point de depart leechbot, en bas a droite. Quand le leech se connect le statut loby doit apparaître montrant qu'il est en attente de la connection du bot leader.
Surveille bien toutes les etapes, il m a fallut plusieurs eesaies pour bien tout valider... Courage !
Ps : jette un coup d'oeil sur la source que j'ai indiqué a la fin du premier poste, peut etre formulé differement |
|