kolton / d2bot-with-kolbot

d2bot game manager by D3STROY3R with kolbot libs by kolton for d2bs
346 stars 334 forks source link

Script to kill Creeping Feature #1480

Open firekil opened 5 years ago

firekil commented 5 years ago

Hey guys I've been trying to make a script to kill the Creeping Feature. He is located in the Stony Tomb outside of Lut Gholein. He's got good rune drop rates as well as a gold chest in the Tomb.

I don't quite understand how to use pather.movetoPreset(); to get to him. Do I need to assign him a unique monster classID?

So far this is what I came up with (mostly copying from Izual script, but he has his own monster classID):

function CreepingFeature() {
    Town.doChores();
    Pather.useWaypoint(40); // Lut Gholein
    Precast.doPrecast(true);

    if (!Pather.moveToPreset(55,3,){
        throw new Error("Failed to move to CreepingFeature");
    }

    Attack.kill(); // Kill CreepingFeature
    Pickit.pickitems();

    return true;
}
3CoRmEuM commented 5 years ago

You need following Scripts/Datas from kolbot opened up in Notepad++:

First, go to: d2bot-with-kolbot-master/d2bs/kolbot/libs/common/...

You will see, what you need to do in your "Pather.moveToExit/Pather.moveToPreset" and "Attack.kill/Attack.clear" functions, there are declarations for it ;)

Second, go to: d2bot-with-kolbot-master/d2bs/kolbot/sdk/...

if (!(Pather.moveToExit([41, 55, 59], true) && Pather.moveToPreset(me.area, 1, 748))) {

    throw new Error("Failed to move to Creeping Feature");
}

Two possible kill-options but don't use both at the same time xD:

Attack.clear(20, Config.ClearType, getLocaleString(2883)); // Creeping Feature
Attack.kill(getLocaleString(2883)); // Creeping Feature
firekil commented 5 years ago

Thank you that worked beautifully!

This is what I did for anyone interested:

First I created a .js file called CreepingFeature in kolbot/libs/bots Here is the entire script:

function CreepingFeature() {
    Town.doChores();
    Pather.useWaypoint(40); // Lut Gholein
    Precast.doPrecast(true);

    if (!(Pather.moveToExit([41, 55, 59], true) && Pather.moveToPreset(me.area, 1, 748))) {
        throw new Error("Failed to move to Creeping Feature");
    }

    Attack.clear(20, Config.ClearType, getLocaleString(2883)); // Creeping Feature

    return true;
}

Then I added this line to my configuration file:

// *** act 2 ***
    Scripts.Radament = false;
    Scripts.CreepingFeature = true; <-- Added this
    Scripts.Coldworm = false;

Now the bot will kill Creeping Feature in the script order. It doesn't take long to get to him and kill him, maybe 30 seconds.

noah- commented 5 years ago

feel free to pr this to add to kolbot

IGhostcrawler commented 5 years ago

You need following Scripts/Datas from kolbot opened up in Notepad++:

First, go to: d2bot-with-kolbot-master/d2bs/kolbot/libs/common/...

  • Pather.js <- In NP++ press Ctrl+F and search for "moveToExit" and "moveToPreset" functions
  • Attack.js <- In NP++ press Ctrl+F and search for "kill" and/or "clear" functions

You will see, what you need to do in your "Pather.moveToExit/Pather.moveToPreset" and "Attack.kill/Attack.clear" functions, there are declarations for it ;)

Second, go to: d2bot-with-kolbot-master/d2bs/kolbot/sdk/...

  • areas.txt <- refer to all areas your bot has to journey to, until he arrives Creeping Feature ( stuff for "Pather.moveToExit" )
  • LocaleStringID.js <- refer to "Leatherarm" ( yeah I know, you are searching for Creeping Feature, the number 2883 is correct tho )
  • ???.txt/???.js <- 748 is the Preset-Number for Creeping Feature ( ToDo: I guess I refered to D2NT-Etal-Scripts in the past, dunno atm if a reference is existing in kolbot sdk or elswhere... long time ago since I've went through this situation ).
if (!(Pather.moveToExit([41, 55, 59], true) && Pather.moveToPreset(me.area, 1, 748))) {

  throw new Error("Failed to move to Creeping Feature");
}

Two possible kill-options but don't use both at the same time xD:

Attack.clear(20, Config.ClearType, getLocaleString(2883)); // Creeping Feature
Attack.kill(getLocaleString(2883)); // Creeping Feature

Just a quick notion: shouldn't Pather.moveToPreset(me.area, 1, 748) be Pather.moveToPreset(me.area, 1, 718)?

The text file you are referring to is called: superunique_presetunitids.txt

:-)

3CoRmEuM commented 5 years ago

@firekil, Shall I PR this stuff for you ?

@noah-, I got some ideas to improve kolbot. Some are already working i.e: To use paladin Redemption like barbarians Find Item. It was just a copy/paste work and some modifications to do I were able to handle. My intention was to make sure, that pally activates redemption ONLY IF... ... corpse is in range !

If corpse detected but not in range:
[1] move into corpse range by putting aura range/radius into account
[2] let aura activated until life/mana reaches the predefined percentage and/or corpse is redeemed ( or exploded, or find item was used on it etc )

If detected but not relevant, due to corpseexplosion etc.:
don't activate to ensure fluently movement

If monsters are getting in range while aura activated, clear a little spot and try again

btw there is a bug with items that gives chance to reanimate a Returned, pala and baba will loop here, I failed to find out, if it was a localestring on corpses, which localestring it was, or which mode the corpse has, to skip/ignore ( maybe as simple as mlvl for catapults lol ? )

@IGhostcrawler, you referred proper to the list, but sadly the 718 is wrong, I tested it to be sure. This number in this specific case will throw an error ;) 748 is correct. Regards o/

firekil commented 5 years ago

That would be awesome @3CoRmEuM