Blizzhackers

Home of the Dupe since 2001

* Login   * Register    * FAQ    * Search

Join us on IRC: #bh@irc.synirc.net (or Mibbit Web IRC)


It is currently Wed Nov 22, 2017 11:21 pm


All times are UTC [ DST ]





Post new topic Reply to topic  [ 51 posts ]  Go to page Previous  1, 2, 3, 4
Author Message
 Post subject: Re: Kolbot - updated chantbot
PostPosted: Wed Jul 12, 2017 6:08 pm 
 
User
User

Joined: Mon Aug 24, 2009 5:19 pm
This works perfectly!

Just it doesnt "follow" games.
If "enchanter-4" already exists the bot should join that game.
Instead it created "enchanter-5" ??

Top
 Profile  
 Post subject: Re: Kolbot - updated chantbot
PostPosted: Thu Jul 13, 2017 11:22 pm 
 
User
User

Joined: Thu Dec 01, 2011 2:38 am
This works perfectly!

Just it doesnt "follow" games.
If "enchanter-4" already exists the bot should join that game.
Instead it created "enchanter-5" ??

https://pastebin.com/RWu3nUmz

Top
 Profile  
 Post subject: Re: Kolbot - updated chantbot
PostPosted: Thu Jul 20, 2017 7:52 pm 
 
User
User

Joined: Mon Aug 24, 2009 5:19 pm
This works perfectly!

Just it doesnt "follow" games.
If "enchanter-4" already exists the bot should join that game.
Instead it created "enchanter-5" ??

https://pastebin.com/RWu3nUmz


This works.
But problem is it tries to join games way too quick and will always result in FTJ
CreateGameDelay: 20, // Seconds to wait before creating a new game
        JoinGameDelay: 20, // Seconds to wait before creating a new game


Doesnt affect anything. It tries to join games instantly after leaving and getting FTJ.
Please help :D :(

Top
 Profile  
 Post subject: Re: Kolbot - updated chantbot
PostPosted: Fri Jul 21, 2017 7:51 pm 
 
User
User

Joined: Thu Dec 01, 2011 2:38 am
ctrl + f , in your script to find " Announce game "

and below that you will find < createOrJoinGame(location);
. < break;

but add a delay before that createOrJoinGame
should fix it , I have my delay to create/join run in on my announce from channel spot
since I would announce games from channel

Top
 Profile  
 Post subject: Re: Kolbot - updated chantbot
PostPosted: Tue Jul 25, 2017 7:04 pm 
 
User
User

Joined: Fri Feb 17, 2006 1:24 am
I used the one from magace and added a delay to prevent this fast FTJ problem. Works now fine :)

var StarterConfig = {
        MinGameTime: 220, // Minimum game length in seconds. If a game is ended too soon, the rest of the time is waited in the lobby
        PingQuitDelay: 30, // Time in seconds to wait in lobby after quitting due to high ping
        CreateGameDelay: 5, // Seconds to wait before creating a new game
        ResetCount: 99, // Reset game count back to 1 every X games.
        CharacterDifference: 99, // Character level difference. Set to false to disable character difference.
        ChatActionsDelay: 2, // Seconds to wait in lobby before entering a channel

        // ChannelConfig can override these options for individual profiles.
        JoinChannel: "", // Default channel. Can be an array of channels - ["channel 1", "channel 2"]
        FirstJoinMessage: "", // Default join message. Can be an array of messages
        AnnounceGames: false, // Default value
        AfterGameMessage: "", // Default message after a finished game. Can be an array of messages

        SwitchKeyDelay: 1, // Seconds to wait before switching a used/banned key or after realm down
        CrashDelay: 10, // Seconds to wait after a d2 window crash
        FTJDelay: 20, // Seconds to wait after failing to create a game
        RealmDownDelay: 2, // Minutes to wait after getting Realm Down message
        UnableToConnectDelay: 5, // Minutes to wait after Unable To Connect message
        CDKeyInUseDelay: 5, // Minutes to wait before connecting again if CD-Key is in use.
        ConnectingTimeout: 20, // Seconds to wait before cancelling the 'Connecting...' screen
        PleaseWaitTimeout: 10, // Seconds to wait before cancelling the 'Please Wait...' screen
        WaitInLineTimeout: 60, // Seconds to wait before cancelling the 'Waiting in Line...' screen
        GameDoesNotExistTimeout: 30 // Seconds to wait before cancelling the 'Game does not exist.' screen
};

var ChannelConfig = {
        /* Override default values for JoinChannel, FirstJoinMessage, AnnounceGames and AfterGameMessage per profile
                It's possible to override any number of these options (you don't have to put all of them)

                **** DO NOT EDIT ANYTHING INSIDE THIS COMMENT BLOCK ***

                Format:

                "Profile Name": {
                        JoinChannel: "channel name", -OR- ["channel 1", "channel 2"],
                        FirstJoinMessage: "first message", -OR- ["join msg 1", "join msg 2"],
                        AnnounceGames: true,
                        AfterGameMessage: "message after a finished run" -OR- ["msg 1", msg 2"]
                }

                Multiple entries are separated by a comma

                Examples:

                "Profile 1": {
                        JoinChannel: "my channel",
                        FirstJoinMessage: ".login",
                        AnnounceGames: true,
                        AfterGameMessage: "follow my runs or die"
                },
                "Profile 2": {
                        JoinChannel: ["channel 1", "channel 2"],
                        FirstJoinMessage: [".login", "^login"],
                        AfterGameMessage: ["follow my runs or die", "seriously, you'll die"]
                }
        */

        // Add your lines here

};



// No touchy!
include("json2.js");
include("OOG.js");
include("automule.js");
include("gambling.js");
include("torchsystem.js");
include("common/misc.js");

if (!FileTools.exists("data/" + me.profile + ".json")) {
        DataFile.create();
}

var attemptedJoin = false, gameExistsCount = 0,
        gameInfo, gameStart, ingame, chatActionsDone, pingQuit,
        handle, useChat, firstLogin, connectFail,
        gameCount = DataFile.getStats().runs + 1,
        lastGameStatus = "ready",
        loginFail = 0,
        isUp = "no",
        chanInfo = {
                joinChannel: "",
                firstMsg: "",
                afterMsg: "",
                announce: false
        };

function sayMsg(string) {
        if (!useChat) {
                return;
        }

        say(string);
}

function ReceiveCopyData(mode, msg) {
        var obj;

        switch (msg) {
        case "Handle":
                handle = mode;

                break;
        }

        switch (mode) {
        case 2: // Game info
                print("Recieved Game Info");

                gameInfo = JSON.parse(msg);

                break;
        case 3: // Game request
                // Don't let others join mule/torch/key/gold drop game
                if (AutoMule.inGame || Gambling.inGame || TorchSystem.inGame) {
                        break;
                }

                if (gameInfo) {
                        obj = JSON.parse(msg);

                        if (me.gameReady) {
                                D2Bot.joinMe(obj.profile, me.gamename.toLowerCase(), "", me.gamepassword.toLowerCase(), isUp);
                        } else {
                                D2Bot.joinMe(obj.profile, gameInfo.gameName.toLowerCase(), gameCount, gameInfo.gamePass.toLowerCase(), isUp);
                        }
                }

                break;
        case 4: // Heartbeat ping
                if (msg === "pingreq") {
                        sendCopyData(null, me.windowtitle, 4, "pingrep");
                }

                break;
        case 0xf124: // Cached info retreival
                if (msg !== "null") {
                        gameInfo.crashInfo = JSON.parse(msg);
                }

                break;
        }
}

function setNextGame() {
        var nextGame = gameInfo.gameName;

        if (StarterConfig.ResetCount && gameCount + 1 >= StarterConfig.ResetCount) {
                nextGame += 1;
        } else {
                nextGame += (gameCount + 1);
        }

        DataFile.updateStats("nextGame", nextGame);
}

function locationTimeout(time, location) {
        var endtime = getTickCount() + time;

        while (getLocation() === location && endtime > getTickCount()) {
                delay(500);
        }

        return (getLocation() !== location);
}

function updateCount() {
        D2Bot.updateCount();
        delay(1000);
        ControlAction.click(6, 264, 366, 272, 35);

        try {
                login(me.profile);
        } catch (e) {

        }

        delay(1000);
        ControlAction.click(6, 33, 572, 128, 35);
}

function ScriptMsgEvent(msg) {
        switch (msg) {
        case "mule":
                AutoMule.check = true;

                break;
        case "muleTorch":
                AutoMule.torchCheck = true;

                break;
        case "torch":
                TorchSystem.check = true;

                break;
        case "getMuleMode":
                if (AutoMule.torchCheck) {
                        scriptBroadcast("1");
                } else if (AutoMule.check) {
                        scriptBroadcast("0");
                }

                break;
        case "pingquit":
                pingQuit = true;

                break;
        }
}

function timer(tick) {
        if (!tick) {
                return "";
        }

        var min, sec;

        min = Math.floor((getTickCount() - tick) / 60000).toString();

        if (min <= 9) {
                min = "0" + min;
        }

        sec = (Math.floor((getTickCount() - tick) / 1000) % 60).toString();

        if (sec <= 9) {
                sec = "0" + sec;
        }

        return " (" + min + ":" + sec + ")";
}

function randomString(len) {
        var i,
                rval = "",
                letters = "abcdefghijklmnopqrstuvwxyz";

    for (i = 0; i < len; i += 1) {
                rval += letters[Math.floor(Math.random() * 26)];
        }

        return rval;
}

function main() {
        debugLog(me.profile);
        addEventListener('copydata', ReceiveCopyData);
        addEventListener('scriptmsg', ScriptMsgEvent);

        while (!handle) {
                delay(100);
        }

        DataFile.updateStats("handle", handle);
        delay(500);
        D2Bot.init();
        load("tools/heartbeat.js");

        while (!gameInfo) {
                D2Bot.requestGameInfo();
                delay(500);
        }

        if (gameInfo.error) {
                //D2Bot.retrieve();
                delay(200);

                /*if (!!DataFile.getStats().debugInfo) {
                        D2Bot.printToConsole("Crash at " + DataFile.getStats().debugInfo, 10);
                        DataFile.updateStats("debugInfo", false);
                }*/

                /*if (gameInfo.crashInfo) {
                        D2Bot.printToConsole("Crash Info: Script: " + gameInfo.crashInfo.currScript + " Area: " + gameInfo.crashInfo.area + (gameInfo.crashInfo.hasOwnProperty("lastAction") ? " " + gameInfo.crashInfo.lastAction : ""), 10);
                }*/

                ControlAction.timeoutDelay("Crash Delay", StarterConfig.CrashDelay * 1e3);
                D2Bot.updateRuns();
        }

        //D2Bot.store(JSON.stringify({currScript: "none", area: "out of game"}));

        while (true) {
                while (me.ingame) { // returns true before actually in game so we can't only use this check
                        if (me.gameReady) { // returns false when switching acts so we can't use while
                                isUp = "yes";

                                if (!ingame) {
                                        gameExistsCount = 0;
                                        attemptedJoin = false;
                                        gameStart = getTickCount();

                                        print("Updating Status");
                                        D2Bot.updateStatus("Game: " + me.gamename);

                                        lastGameStatus = "ingame";
                                        ingame = true;

                                        DataFile.updateStats("runs", gameCount);
                                        DataFile.updateStats("ingameTick");
                                }

                        }

                        delay(1000);
                }

                isUp = "no";

                locationAction(getLocation());
                delay(1000);
        }
}

function createOrJoinGame(location){
        if (attemptedJoin){
                if (!ControlAction.click(6, 533, 469, 120, 20)) { // Create
                        return false;
                }

                if (!locationTimeout(5000, location)) { // in case create button gets bugged
                        if (!ControlAction.click(6, 652, 469, 120, 20)) { // Join
                                return false;
                        }

                        if (!ControlAction.click(6, 533, 469, 120, 20)) { // Create
                                return false;
                        }
                }
        }
        else {
                if (!ControlAction.click(6, 652, 469, 120, 20)) { // Join
                        return false;
                }

                if (!locationTimeout(5000, location)) { // in case join button gets bugged
                        if (!ControlAction.click(6, 533, 469, 120, 20)) { // Create
                                return false;
                        }

                        if (!ControlAction.click(6, 652, 469, 120, 20)) { // Join
                                return false;
                        }
                }
        }
        return true;
}

function locationAction(location) {
        var i, control, string, text;

MainSwitch:
        switch (location) {
        case 0:
                break;
        case 1: // Lobby
                D2Bot.updateStatus("Lobby");

                if (lastGameStatus === "pending") {
                        gameCount += 1;
                }

                loginFail = 0;

                if (StarterConfig.PingQuitDelay && pingQuit) {
                        ControlAction.timeoutDelay("Ping Delay", StarterConfig.PingQuitDelay * 1e3);

                        pingQuit = false;
                }

                if (StarterConfig.JoinChannel !== "" || (ChannelConfig[me.profile] && ChannelConfig[me.profile].JoinChannel !== "")) {
                        ControlAction.click(6, 27, 480, 120, 20);

                        break;
                }

                if (ingame || gameInfo.error) {
                        if (!gameStart) {
                                gameStart = DataFile.getStats().ingameTick;
                        }

                        if (getTickCount() - gameStart < StarterConfig.MinGameTime * 1e3) {
                                ControlAction.timeoutDelay("Min game time wait", StarterConfig.MinGameTime * 1e3 + gameStart - getTickCount());
                        }
                }

                if (ingame) {
                        //D2Bot.store(JSON.stringify({currScript: "none", area: "out of game"}));

                        if (AutoMule.outOfGameCheck() || TorchSystem.outOfGameCheck() || Gambling.outOfGameCheck()) {
                                break;
                        }

                        print("updating runs");
                        D2Bot.updateRuns();

                        gameCount += 1;
                        lastGameStatus = "ready";
                        ingame = false;

                        if (StarterConfig.ResetCount && gameCount >= StarterConfig.ResetCount) {
                                gameCount = 1;

                                DataFile.updateStats("runs", gameCount);
                        }
                }

                createOrJoinGame(location);

                break;
        case 2: // Waiting In Line
                D2Bot.updateStatus("Waiting...");
                locationTimeout(StarterConfig.WaitInLineTimeout * 1e3, location);
                ControlAction.click(6, 433, 433, 96, 32);

                break;
        case 3: // Lobby Chat
                D2Bot.updateStatus("Lobby Chat");

                if (lastGameStatus === "pending") {
                        gameCount += 1;
                }

                if (ingame || gameInfo.error) {
                        if (!gameStart) {
                                gameStart = DataFile.getStats().ingameTick;
                        }

                        if (getTickCount() - gameStart < StarterConfig.MinGameTime * 1e3) {
                                ControlAction.timeoutDelay("Min game time wait", StarterConfig.MinGameTime * 1e3 + gameStart - getTickCount());
                        }
                }

                if (ingame) {
                        //D2Bot.store(JSON.stringify({currScript: "none", area: "out of game"}));

                        if (AutoMule.outOfGameCheck() || TorchSystem.outOfGameCheck() || Gambling.outOfGameCheck()) {
                                break;
                        }

                        print("updating runs");
                        D2Bot.updateRuns();

                        gameCount += 1;
                        lastGameStatus = "ready";
                        ingame = false;

                        if (StarterConfig.ResetCount && gameCount >= StarterConfig.ResetCount) {
                                gameCount = 1;

                                DataFile.updateStats("runs", gameCount);
                        }

                        if (ChannelConfig[me.profile] && ChannelConfig[me.profile].hasOwnProperty("AfterGameMessage")) {
                                chanInfo.afterMsg = ChannelConfig[me.profile].AfterGameMessage;
                        } else {
                                chanInfo.afterMsg = StarterConfig.AfterGameMessage;
                        }

                        if (chanInfo.afterMsg) {
                                if (typeof chanInfo.afterMsg === "string") {
                                        chanInfo.afterMsg = [chanInfo.afterMsg];
                                }

                                for (i = 0; i < chanInfo.afterMsg.length; i += 1) {
                                        sayMsg(chanInfo.afterMsg[i]);
                                        delay(500);
                                }
                        }
                }

                if (!chatActionsDone) {
                        chatActionsDone = true;

                        if (ChannelConfig[me.profile] && ChannelConfig[me.profile].hasOwnProperty("JoinChannel")) {
                                chanInfo.joinChannel = ChannelConfig[me.profile].JoinChannel;
                        } else {
                                chanInfo.joinChannel = StarterConfig.JoinChannel;
                        }

                        if (ChannelConfig[me.profile] && ChannelConfig[me.profile].hasOwnProperty("FirstJoinMessage")) {
                                chanInfo.firstMsg = ChannelConfig[me.profile].FirstJoinMessage;
                        } else {
                                chanInfo.firstMsg = StarterConfig.FirstJoinMessage;
                        }

                        if (chanInfo.joinChannel) {
                                if (typeof chanInfo.joinChannel === "string") {
                                        chanInfo.joinChannel = [chanInfo.joinChannel];
                                }

                                if (typeof chanInfo.firstMsg === "string") {
                                        chanInfo.firstMsg = [chanInfo.firstMsg];
                                }

                                for (i = 0; i < chanInfo.joinChannel.length; i += 1) {
                                        ControlAction.timeoutDelay("Chat delay", StarterConfig.ChatActionsDelay * 1e3);

                                        if (ControlAction.joinChannel(chanInfo.joinChannel[i])) {
                                                useChat = true;
                                        } else {
                                                print("�c1Unable to join channel, disabling chat messages.");

                                                useChat = false;
                                        }

                                        if (chanInfo.firstMsg[i] !== "") {
                                                sayMsg(chanInfo.firstMsg[i]);
                                                delay(500);
                                        }
                                }
                        }
                }

                // Announce game
                if (ChannelConfig[me.profile] && ChannelConfig[me.profile].hasOwnProperty("AnnounceGames")) {
                        chanInfo.announce = ChannelConfig[me.profile].AnnounceGames;
                } else {
                        chanInfo.announce = StarterConfig.AnnounceGames;
                }

                if (chanInfo.announce) {
                        sayMsg("Next game is " + gameInfo.gameName + gameCount + (gameInfo.gamePass === "" ? "" : "//" + gameInfo.gamePass));
                }

                createOrJoinGame(location);

                break;
        case 4: // Create Game
                D2Bot.updateStatus("Creating Game");

                control = getControl(1, 657, 342, 27, 20);

                // Set character difference
                if (typeof StarterConfig.CharacterDifference === "number") {
                        if (control.disabled === 4) {
                                ControlAction.click(6, 431, 341, 15, 16);
                        }

                        ControlAction.setText(1, 657, 342, 27, 20, StarterConfig.CharacterDifference.toString());
                } else if (StarterConfig.CharacterDifference === false && control.disabled === 5) {
                        ControlAction.click(6, 431, 341, 15, 16);
                }

                // Get game name if there is none
                while (!gameInfo.gameName) {
                        D2Bot.requestGameInfo();
                        delay(500);
                }

                // FTJ handler
                if (lastGameStatus === "pending") {
                        D2Bot.printToConsole("Failed to join/create game. FTJ or someone made it with bad PW.");
                        ControlAction.timeoutDelay("FTJ delay", StarterConfig.FTJDelay * 1e3);
                        D2Bot.updateRuns();
                }

                ControlAction.createGame(gameInfo.gameName + gameCount, gameInfo.gamePass, gameInfo.difficulty, StarterConfig.CreateGameDelay * 1000);

                lastGameStatus = "pending";

                setNextGame();
                locationTimeout(10000, location);

                break;
        case 5: // Join Game
                D2Bot.updateStatus("Join Game");
               
                // Get game name if there is none
                while (!gameInfo.gameName) {
                        D2Bot.requestGameInfo();
                        delay(1500);
                }

                if (gameInfo && gameInfo.gameName !== "") {
                        ControlAction.setText(1, 606, 148, 155, 20, gameInfo.gamePass);
                        ControlAction.setText(1, 432, 148, 155, 20, gameInfo.gameName + gameCount);

                        if (lastGameStatus === "pending" || (gameInfo.error === "@error" && DataFile.getStats().gameName === gameInfo.gameName)) {
                                if (gameInfo.error === "@error") {
                                        gameInfo.error = "";
                                }
                               
                                //CUSTOM
                                D2Bot.printToConsole("Failed to join game or game ended abruptly.");
                                //ENDCUSTOM

                                ControlAction.timeoutDelay("Join Delay", StarterConfig.JoinRetryDelay * 1000);
                                D2Bot.updateRuns();
                                delay(200);

                                lastGameStatus = "ready";
                        }
                       
                        delay(1000);

                        print("joining game " + gameInfo.gameName);

                        me.blockMouse = true;

                        DataFile.updateStats("gameName", gameInfo.gameName);
                        attemptedJoin = true;
                  delay(3000); //FTJ prevention test e-soni
                        ControlAction.click(6, 594, 433, 172, 32);

                        me.blockMouse = false;

                        lastGameStatus = "pending";

                        locationTimeout(15000, location);
                }
                delay(100);
                break;
        case 6: // Ladder
                break;
        case 7: // Channel List
                break;
        case 8: // Main Menu
        case 9: // Login
        case 12: // Character Select
        case 18: // D2 Splash
                // Single Player screen fix
                if (getLocation() === 12 && !getControl(4, 626, 100, 151, 44)) {
                        ControlAction.click(6, 33, 572, 128, 35);

                        break;
                }

                if (firstLogin && getLocation() === 9) { // multiple realm botting fix in case of R/D or disconnect
                        ControlAction.click(6, 33, 572, 128, 35);
                }

                if (!firstLogin) {
                        firstLogin = true;
                }

                D2Bot.updateStatus("Logging In");

                try {
                        login(me.profile);
                } catch (e) {
                        print(e + " " + getLocation());
                }

                break;
        case 10: // Login Error
                string = "";
                text = ControlAction.getText(4, 199, 377, 402, 140);

                if (text) {
                        for (i = 0; i < text.length; i += 1) {
                                string += text[i];

                                if (i !== text.length - 1) {
                                        string += " ";
                                }
                        }

                        switch (string) {
                        case getLocaleString(5207):
                                D2Bot.updateStatus("Invalid Password");
                                D2Bot.printToConsole("Invalid Password");

                                break;
                        case getLocaleString(5208):
                                loginFail += 1;

                                if (loginFail < 2) {
                                        ControlAction.timeoutDelay("Login retry", 3000);
                                        ControlAction.click(6, 335, 412, 128, 35);

                                        break MainSwitch;
                                }

                                D2Bot.updateStatus("Invalid Account");
                                D2Bot.printToConsole("Invalid Account");

                                break;
                        case getLocaleString(5199):
                                D2Bot.updateStatus("Disabled CDKey");
                                D2Bot.printToConsole("Disabled CDKey: " + gameInfo.mpq, 6);
                                D2Bot.CDKeyDisabled();

                                if (gameInfo.switchKeys) {
                                        ControlAction.timeoutDelay("Key switch delay", StarterConfig.SwitchKeyDelay * 1000);
                                        D2Bot.restart(true);
                                } else {
                                        D2Bot.stop();
                                }

                                break;
                        case getLocaleString(5347):
                                D2Bot.updateStatus("Disconnected");
                                D2Bot.printToConsole("Disconnected");
                                ControlAction.click(6, 335, 412, 128, 35);

                                break MainSwitch;
                        default:
                                D2Bot.updateStatus("Login Error");
                                D2Bot.printToConsole("Login Error - " + string);

                                break;
                        }
                }

                ControlAction.click(6, 335, 412, 128, 35);

                while (true) {
                        delay(1000);
                }

                break;
        case 11: // Unable To Connect
                D2Bot.updateStatus("Unable To Connect");

                if (connectFail) {
                        ControlAction.timeoutDelay("Unable to Connect", StarterConfig.UnableToConnectDelay * 6e4);

                        connectFail = false;
                }

                if (!ControlAction.click(6, 335, 450, 128, 35)) {
                        break;
                }

                connectFail = true;

                break;
        case 13: // Realm Down - Character Select screen
                D2Bot.updateStatus("Realm Down");
                delay(1000);

                if (!ControlAction.click(6, 33, 572, 128, 35)) {
                        break;
                }

                updateCount();
                ControlAction.timeoutDelay("Realm Down", StarterConfig.RealmDownDelay * 6e4);
                D2Bot.CDKeyRD();

                if (gameInfo.switchKeys && !gameInfo.rdBlocker) {
                        D2Bot.printToConsole("Realm Down - Changing CD-Key");
                        ControlAction.timeoutDelay("Key switch delay", StarterConfig.SwitchKeyDelay * 1000);
                        D2Bot.restart(true);
                } else {
                        D2Bot.printToConsole("Realm Down - Restart");
                        D2Bot.restart();
                }

                break;
        case 14: // Character Select / Main Menu - Disconnected
                D2Bot.updateStatus("Disconnected");
                delay(500);
                ControlAction.click(6, 351, 337, 96, 32);

                break;
        case 16: // Character Select - Please Wait popup
                if (!locationTimeout(StarterConfig.PleaseWaitTimeout * 1e3, location)) {
                        ControlAction.click(6, 351, 337, 96, 32);
                }

                break;
        case 17: // Lobby - Lost Connection - just click okay, since we're toast anyway
                delay(1000);
                ControlAction.click(6, 351, 337, 96, 32);

                break;
        case 19: // Login - Cdkey In Use
                D2Bot.printToConsole(gameInfo.mpq + " is in use by " + ControlAction.getText(4, 158, 310, 485, 40), 6);
                D2Bot.CDKeyInUse();

                if (gameInfo.switchKeys) {
                        ControlAction.timeoutDelay("Key switch delay", StarterConfig.SwitchKeyDelay * 1000);
                        D2Bot.restart(true);
                } else {
                        ControlAction.click(6, 335, 450, 128, 35);
                        ControlAction.timeoutDelay("CD-Key in use", StarterConfig.CDKeyInUseDelay * 6e4);
                }

                break;
        case 20: // Single Player - Select Difficulty
                break;
        case 21: // Main Menu - Connecting
                if (!locationTimeout(StarterConfig.ConnectingTimeout * 1e3, location)) {
                        ControlAction.click(6, 330, 416, 128, 35);
                }

                break;
        case 22: // Login - Invalid Cdkey (classic or xpac)
                text = ControlAction.getText(4, 162, 270, 477, 50);
                string = "";

                if (text) {
                        for (i = 0; i < text.length; i += 1) {
                                string += text[i];

                                if (i !== text.length - 1) {
                                        string += " ";
                                }
                        }
                }

                switch (string) {
                case getLocaleString(10914):
                        D2Bot.printToConsole(gameInfo.mpq + " LoD key in use by " + ControlAction.getText(4, 158, 310, 485, 40), 6);
                        D2Bot.CDKeyInUse();

                        if (gameInfo.switchKeys) {
                                ControlAction.timeoutDelay("Key switch delay", StarterConfig.SwitchKeyDelay * 1000);
                                D2Bot.restart(true);
                        } else {
                                ControlAction.click(6, 335, 450, 128, 35);
                                ControlAction.timeoutDelay("LoD key in use", StarterConfig.CDKeyInUseDelay * 6e4);
                        }

                        break;
                default:
                        if (gameInfo.switchKeys) {
                                D2Bot.printToConsole("Invalid CD-Key");
                                ControlAction.timeoutDelay("Key switch delay", StarterConfig.SwitchKeyDelay * 1000);
                                D2Bot.restart(true);
                        } else {
                                ControlAction.click(6, 335, 450, 128, 35);
                                ControlAction.timeoutDelay("Invalid CD-Key", StarterConfig.CDKeyInUseDelay * 6e4);
                        }

                        break;
                }

                break;
        case 23: // Character Select - Connecting
        case 42: // Empty character screen
                if (!locationTimeout(StarterConfig.ConnectingTimeout * 1e3, location)) {
                        ControlAction.click(6, 33, 572, 128, 35);

                        if (gameInfo.rdBlocker) {
                                D2Bot.restart();
                        }
                }

                break;
        case 24: // Server Down - not much to do but wait..
                break;
        case 25: // Lobby - Please Wait
                if (!locationTimeout(StarterConfig.PleaseWaitTimeout * 1e3, location)) {
                        ControlAction.click(6, 351, 337, 96, 32);
                }

                break;
        case 26: // Lobby - Game Name Exists
                //ControlAction.click(6, 533, 469, 120, 20);
               
                gameExistsCount++;
                attemptedJoin = false;
               
                if (gameExistsCount > 1)
                        gameCount += 1;
                else {
                        lastGameStatus = "ready";
                        //D2Bot.printToConsole("Game exists! Trying to join once more!");
                }
                lastGameStatus = "ready";

                break;
        case 27: // Gateway Select
                ControlAction.click(6, 436, 538, 96, 32);

                break;
        case 28: // Lobby - Game Does Not Exist
                ControlAction.click(6, 533, 469, 120, 20);
                //D2Bot.printToConsole("Game doesn't exist!");

                if (gameInfo.rdBlocker) {
                        D2Bot.printToConsole(gameInfo.mpq + " is probably flagged.", 6);

                        if (gameInfo.switchKeys) {
                                ControlAction.timeoutDelay("Key switch delay", StarterConfig.SwitchKeyDelay * 1000);
                                D2Bot.restart(true);
                        }
                } else {
                        locationTimeout(StarterConfig.GameDoesNotExistTimeout * 1e3, location);
                }

                lastGameStatus = "ready";

                break;
        case 38: // Game is full
                D2Bot.printToConsole("Game is full. Moving to next.");
                ControlAction.click(6, 652, 469, 120, 20);
               
                gameCount += 1;

                lastGameStatus = "ready";

                break;
        default:
                if (location !== undefined) {
                        D2Bot.printToConsole("Unhandled location " + location);
                        //takeScreenshot();
                        delay(500);
                        D2Bot.restart();
                }

                break;
        }
}

Top
 Profile  
 Post subject: Re: Kolbot - updated chantbot
PostPosted: Thu Oct 26, 2017 5:13 am 
 
User
User

Joined: Wed Oct 11, 2017 5:04 am
gg

Top
 Profile  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 51 posts ]  Go to page Previous  1, 2, 3, 4

All times are UTC [ DST ]


Who is online

Users browsing this forum: No registered users and 8 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
cron