Ich bin mir nicht sicher, was der aktuelle Standard "Leechbot" ist, aber da ich den für Muddies ja eh grad geschrieben und veröffentlich hab, jetzt noch für alle die nicht Muddies verwenden.
Credits: An alle die was damit zu tun hatten, weiss leider nimmer wo die Scripte herkommen die ich als Vorlage genommen habe. Aber auf alle Fälle Danke!
Features:
- Automatische Erkennung ob 2 oder 3 Zeilen
- Kein /f l Spamm
- 1 EntryPoint deckt Leader und Leecher ab
- AutoMule[1], KeyChange etc. sollten damit funktionieren
[1] Muss natürlich im Bot enthalten sein
Einfach NTBot.ntj anpassen!
Variablen (zum selber definieren):
Der Teil gehört über das "// DONT EDIT ANYTHING BELOW THIS"
Variablen (vorgegeben)/Initialisierung:
Der Teil gehört unter das "// DONT EDIT ANYTHING BELOW THIS" und vor die NTMain() Funktion
Und eine If .. else .. - Schleife (+ paar Variablen):
Das ist der einzige etwas kompliziertere Teil, ihr müsst eure locationAction(location) oder wie die bei euch heisst finden und da den "case 1: // Lobby" finden und anpassen. Sprich den original Code ausschneiden und im "else" einfügen (da wo der Kommentar ist).
Wenn ihr wollt dass eure Leecher einen Channel betreten, dann müsst ihr nicht ganz alles ins "else" kopieren sondern einen kleinen Teil vor das "if".
*Den Teil hier (oder ähnlich je nach Version) könnt ihr direkt nach das "case 1: // Lobby" kopieren, wenn der Leecher den Channel auch joinen soll (ist aber nicht nötig).
Hab das Mal für den standard D2NT gemacht, zwar nicht getestet aber ich bin zuversichtlich :)
Achtung!: Ihr müsst uU folgende 2 Variablen anpassen:
controlData
joinChatAfterLogin
Die sind z.B. bei Muddy anders geschrieben. Schaut also kurz wie die bei eurer Version heissen, sollte aber eigentlich meistens korrekt sein.
edit: (Sop nun sollte auch in belebten Chats alles klappen ;))
Das PW für die NTBot.ntj für Muddy V1.2 (ohne AutoMule!) ist muddy
Credits: An alle die was damit zu tun hatten, weiss leider nimmer wo die Scripte herkommen die ich als Vorlage genommen habe. Aber auf alle Fälle Danke!
Features:
- Automatische Erkennung ob 2 oder 3 Zeilen
- Kein /f l Spamm
- 1 EntryPoint deckt Leader und Leecher ab
- AutoMule[1], KeyChange etc. sollten damit funktionieren
[1] Muss natürlich im Bot enthalten sein
Einfach NTBot.ntj anpassen!
Variablen (zum selber definieren):
Code:
[COLOR="Green"]// Leech settings[/COLOR] [B][I][COLOR="Navy"]var [/COLOR][/I][/B]LeaderAccountName = [COLOR="DimGray"]"DefaultAccount"[/COLOR]; [COLOR="Green"]// leader account name here[/COLOR] [B][I][COLOR="Navy"]var [/COLOR][/I][/B]LeaderGamePW = [COLOR="DimGray"]"default"[/COLOR]; [COLOR="Green"]// The password used for the games you want to join[/COLOR] [COLOR="Navy"][B][I]var [/I][/B][/COLOR]LeecherAccounts = [[COLOR="DimGray"]"DefaultAccount"[/COLOR]]; [COLOR="Green"]// List ALL accounts that use leechscript[/COLOR]
Variablen (vorgegeben)/Initialisierung:
Code:
[COLOR="Green"]// Set Leecher Settings[/COLOR]
[B][I][COLOR="Navy"]var [/COLOR][/I][/B]isLeecher = [I][B][COLOR="Navy"]false[/COLOR][/B][/I];
[B][I][COLOR="Navy"]for [/COLOR][/I][/B]([B][I][COLOR="Navy"]var [/COLOR][/I][/B]i = [COLOR="Red"]0[/COLOR]; i < LeecherAccounts.length; i++)
{
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](me.account == LeecherAccounts[i])
{
isLeecher = [B][I][COLOR="Navy"]true[/COLOR][/I][/B];
}
}
[B][I][COLOR="Navy"]var [/COLOR][/I][/B]OldGame = [COLOR="DimGray"]''[/COLOR];
[I][COLOR="Navy"]var[/COLOR][/I] Check = [COLOR="Red"]1[/COLOR];
Und eine If .. else .. - Schleife (+ paar Variablen):
Code:
[B][I][COLOR="Navy"]case [/COLOR][/I][/B][COLOR="Red"]1[/COLOR]: // Lobby
[B][I][COLOR="Navy"]var [/COLOR][/I][/B]_Lines;
[B][I][COLOR="Navy"]var [/COLOR][/I][/B]chat;
[B][I][COLOR="Navy"]var [/COLOR][/I][/B]_Game = [COLOR="DimGray"]""[/COLOR];
[B][I][COLOR="Navy"]var [/COLOR][/I][/B]_Errors = [COLOR="DimGray"]""[/COLOR];
[B][I][COLOR="Navy"]var [/COLOR][/I][/B]_FoundLeader = [B][I][COLOR="Navy"]false[/COLOR][/I][/B];
[B][I][COLOR="Navy"]var [/COLOR][/I][/B]_LineWithName = [COLOR="DimGray"]""[/COLOR];
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](isLeecher)
{
Delay([COLOR="Red"]1000[/COLOR]);
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](chat = controlData.get(controlData.controls.lobby.chat.textBox.channelText))
{
_Lines = chat.GetText();
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](_Lines.length > [COLOR="Red"]1[/COLOR])
{
[B][I][COLOR="Navy"]for [/COLOR][/I][/B]([B][I][COLOR="Navy"]var [/COLOR][/I][/B]_Friend = [COLOR="Red"]0[/COLOR]; _Friend < _Lines.length; _Friend++)
{
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](_Lines[_Friend].indexOf(LeaderAccountName) > [COLOR="Red"]-1[/COLOR])
{
_Game = [COLOR="DimGray"]''[/COLOR];
_FoundLeader = [B][I][COLOR="Navy"]true[/COLOR][/I][/B];
[B][I][COLOR="Navy"]var [/COLOR][/I][/B]regOfflineEnglish=/^\d\s?:\s?(\w*)\s?,\s?offline\s*$/gi;
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](_Lines[_Friend].match(regOfflineEnglish))
{
_Errors += (_Errors == [COLOR="DimGray"]''[/COLOR] ? [COLOR="DimGray"]''[/COLOR] : [COLOR="DimGray"]' '[/COLOR]) + [COLOR="DimGray"]'leader is offline'[/COLOR];
Delay([COLOR="Red"]5000[/COLOR]);
[B][I][COLOR="Navy"]break[/COLOR][/I][/B];
}
_LineWithName = _Lines[_Friend + [COLOR="Red"]2[/COLOR]];
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](_LineWithName === undefined)
_LineWithName = _Lines[_Friend + [COLOR="Red"]1[/COLOR]];
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](_LineWithName !== undefined)
_LineWithName = _LineWithName.replace(/^\s+/,[COLOR="DimGray"]""[/COLOR]);
[B][I][COLOR="Navy"]else[/COLOR][/I][/B]
[B][I][COLOR="Navy"]break[/COLOR][/I][/B];
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](_LineWithName.indexOf([COLOR="DimGray"]'called'[/COLOR]) > [COLOR="Red"]-1[/COLOR])
_Game = _LineWithName.substring(_LineWithName.indexOf([COLOR="DimGray"]'called'[/COLOR])+[COLOR="Red"]7[/COLOR],_LineWithName.indexOf([COLOR="DimGray"]'.'[/COLOR]));
[B][I][COLOR="Navy"]else[/COLOR][/I][/B]
_Game = _LineWithName.substring([COLOR="Red"]0[/COLOR],_LineWithName.indexOf([COLOR="DimGray"]'.'[/COLOR]));
_LineWithName = [COLOR="DimGray"]''[/COLOR];
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](_Game != [COLOR="DimGray"]''[/COLOR] && _Game != OldGame)
{
controlData.click(controlData.controls.lobby.button.join);
Delay([COLOR="Red"]200[/COLOR]);
controlData.setText(controlData.controls.lobby.join.editBox.gameName, _Game);
Delay ([COLOR="Red"]200[/COLOR]);
controlData.setText(controlData.controls.lobby.join.editBox.password, LeaderGamePW);
Delay ([COLOR="Red"]1234[/COLOR]);
controlData.click(controlData.controls.lobby.join.button.joinGame);
Check = [COLOR="Red"]1[/COLOR];
}
[B][I][COLOR="Navy"]else[/COLOR][/I][/B]
{
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](!_Errors)
_Errors = [COLOR="DimGray"]'leader is not in game.'[/COLOR];
}
}
}
}
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](!_FoundLeader && joinChannelInChat)
{
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](_Errors)
Say([COLOR="DimGray"]'Errors : '[/COLOR] + _Errors);
[B][I][COLOR="Navy"]else[/COLOR][/I][/B]
Delay([COLOR="Red"]15000[/COLOR]);
}
}
[B][I][COLOR="Navy"]else[/COLOR][/I][/B]
{
Delay([COLOR="Red"]1500[/COLOR]);
}
_Errors = [COLOR="DimGray"]''[/COLOR];
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](_Game != [COLOR="DimGray"]''[/COLOR])
OldGame = _Game;
[B][I][COLOR="Navy"]break[/COLOR][/I][/B];
}
[B][I][COLOR="Navy"]else[/COLOR][/I][/B]
{
[COLOR="DarkGreen"]// der original Code kommt hier hin
// das ist alles* zwischen "case 1: //Lobby" und dem "break;" am Ende[/COLOR]
}
[B][I][COLOR="Navy"]break[/COLOR][/I][/B];
Wenn ihr wollt dass eure Leecher einen Channel betreten, dann müsst ihr nicht ganz alles ins "else" kopieren sondern einen kleinen Teil vor das "if".
*Den Teil hier (oder ähnlich je nach Version) könnt ihr direkt nach das "case 1: // Lobby" kopieren, wenn der Leecher den Channel auch joinen soll (ist aber nicht nötig).
Code:
[B][I][COLOR="Navy"]if [/COLOR][/I][/B](location.id == [COLOR="Red"]1[/COLOR] && joinChatAfterLogin)
{
Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
controlData.click(controlData.controls.lobby.button.enterChat);
[B][I][COLOR="Navy"]break[/COLOR][/I][/B];
}
Achtung!: Ihr müsst uU folgende 2 Variablen anpassen:
controlData
joinChatAfterLogin
Die sind z.B. bei Muddy anders geschrieben. Schaut also kurz wie die bei eurer Version heissen, sollte aber eigentlich meistens korrekt sein.
edit: (Sop nun sollte auch in belebten Chats alles klappen ;))
Das PW für die NTBot.ntj für Muddy V1.2 (ohne AutoMule!) ist muddy