PDA

View Full Version : How To Configure PindleXP For D2jsp



Extremeblizz!
07-30-2004, 06:49 PM
Credit for this guide goes to the great Snarg, Visit www.blizzhackers.com (http://www.blizzhackers.com/) for more of his wisdom :D.
For anyone having problem with skills config, scroll down or do Ctrl+F and look for attacks.


The following guide will instruct you on how to configure PindleXP. If you have followed the guide located here (http://www.blizzhackers.com/viewtopic.php?t=182543) then you will already have d2jsp installed and running PindleXP. This guide is for those who wish to tweak the settings of PindleXP for maximum performance.

This guide makes the assumption that you can read, undersand and follow directions.

It is best to make the changes one at a time. For the best results in editing these files and to help ensure you minimize or avoid errors, use the following procedures:

1) Start Diablo, log in and bring your character to the lounge.
2) Open the configuration file of the bot you wish to edit.
3) Make changes, one at a time. Save, but do not exit, the file after every change.
4) Use d2jsp.exe to start the bot.
5) Watch the run, checking for errors.

This process will allow you to view the effect any changes you have made have on the bot.

In this guide we are going to tweak the settings for PindleXP in an effort to obtain maximum performance.

Please keep in mind this bot can be used for *any* class of character, not just a Sorc.

Navigate to d2jsp\scripts\libs. Find and open the file called: PXP_Config.d2l. You can use any text editor to open this file.

The first things we will look at are the General Configuration settings. The default values look like this:

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>//////////////////////////////////////////////////////////////////////
// General configuration
//================================================== ==================
// DC_Language=0/1/2 Preferred language for messages (doesn't affect debug messages)
// 0 = English, 1 = German, 2 = French.
// DC_Verbose=true/false Set to true to display various action messages, false for silent mode.
// PXP_AbortNoMerc=true/false If set to true, abort the game if the merc is dead and not ressurected.
// PXP_StopFullInv=true/false Set to true to stop botting if the inventory is full.
// PXP_StartGameDelay=xxxx Delay before beginning script in ms (1000ms = 1 second). Set a value here if you are
// having trouble with the script not detecting your merc or other problems
// at the beginning of the game.
// PXP_MaxGameLength=xxxxx Maximum game length before aborting, in SECONDS. Set to 0 for infinite game length.
// PXP_SkipCredits=true/false Set this to true to skip printing the credits.
// MXP_UseConsole=true/false Set to true to use the 1337 console (Can be toggled on and off in game with "U")
// PXP_UseTaunts=true/false Set to true to have Pindleskin sling random taunts your direction.
// PXP_SellBackItems=true/false Turn this off if you don't want to sell items.
// PXP_FormatHTML=true/false Set to on to use formatted html logging.
// DA_LogChickens=true/false Set true or false to log chickens
// DL_LogMode = 0/1/2 Item logging level, 0 by default
// 0 = minimum (snagged,kept,bought and gambled only)
// 1 = normal (added dropped,ignored and sold)
// 2 = full (added snagged for val. and full stats of identified items)
//--------------------------------------------------------------------

DC_Language=0;
DC_Verbose=true;
PXP_AbortNoMerc=true;
PXP_StopFullInv=false;
PXP_StartGameDelay=0;
PXP_MaxGameLength=120;
PXP_SkipCredits=false;
PXP_UseConsole = true;
PXP_UseTaunts=true;
PXP_SellBackItems=true;
PXP_FormatHTML=true;
DA_LogChickens=true;
DL_LogMode=0;</TD></TR></TBODY></TABLE>


Although they should be self-explanatory, it seems some people have trouble reading so, we will go over them one-by-one.


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DC_Language=0/1/2 Preferred language for messages (doesn't affect debug messages)</TD></TR></TBODY></TABLE>

Unless you do not speak English, you should not have to change this.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DC_Verbose=true;</TD></TR></TBODY></TABLE>
Leaving this as true the bot will display all kinds of message. To help reduce lag a bit, set this to false. Most of the messages displayed you will not care about anyways.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_AbortNoMerc=true;</TD></TR></TBODY></TABLE>

Leaving this on true, the bot will abort the current run if your merc is dead and it could not revive it. This could be due to various reasons, some being lag or perhaps you have run out of gold. If your merc is somewhat weak, you may want to set this to false. If you run out of gold and the bot can not revive your merc, you will be stuck in an endless loop of failed runs.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_StopFullInv=false;</TD></TR></TBODY></TABLE>

Set this to true if you want the bot to stop running when your inventory is full.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_StartGameDelay=0;</TD></TR></TBODY></TABLE>

This sets a delay before the bot starts running. This time is in miliseconds so if you want the bot to pause one second before running, you would set this to 1000. Set a value here if you are having trouble with the script not detecting your merc or other problems at the beginning of the game.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_MaxGameLength=120;</TD></TR></TBODY></TABLE>

This setting is for how long you want the game to last. This setting is in *SECONDS*. The default value will let the game run for two minutes. If you can't kill Pindleskin in two minutes you need a better character.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_SkipCredits=false;</TD></TR></TBODY></TABLE>

Set this to true if you do not want to see the credits every run. Since we are all aware of who made this script, set this to true. It may also help reduce the lag a bit.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_UseConsole = true;</TD></TR></TBODY></TABLE>

Set this to false if you do not want to see the On Screen Display. Although it does like nice and pretty, it can create a bit of lag on lower end computers. I recomend setting this to false.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_UseTaunts=true;</TD></TR></TBODY></TABLE>

Set this to false if you no longer want to see the funny insults your character says to Pindleskin. Setting this to false may help reduce a bit of lag on lower end systems.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_SellBackItems=true;</TD></TR></TBODY></TABLE>

Keep this set on true if you want the bot to sell back items to Malah. This comes in handy if you are a bit short of gold. Setting this to false may speed up runs a little bit.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_FormatHTML=true;</TD></TR></TBODY></TABLE>

Leave this set on true and you will get a very nice looking HTML log. This log can be found in d2jsp\scripts\output.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DA_LogChickens=true;</TD></TR></TBODY></TABLE>

This setting will log every time you chicken out. If you don't want to see how much of a wimp you are, set this to false.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DL_LogMode=0;</TD></TR></TBODY></TABLE>

This setting controls how much information is logged:
0 = minimum (snagged,kept,bought and gambled only)
1 = normal (added dropped,ignored and sold)
2 = full (added snagged for val. and full stats of identified items)

================================================== ========

Unless you know how to use and setup the Automule features, I suggest leaving this setting as-is:

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>///////////////////////////////////////////////////////////////////
// Sicojola's Automule configuration
//
// AUTOMULE DISCLAIMER:
// Automule is solely the work of Sicojola. Although the XP scripters have been nice enough
// to include my script as an option in their bots, they are not responsible for Automule.
// SEND ALL QUESTIONS, COMMENTS, OR COMPLAINTS REGARDING AUTOMULE TO SICOJOLA VIA THE FORUMS
// OR PM. Do not bother the XP scripters with Automule-related material if you choose to use this option.
//
// Furthermore, although I consider Automule safe for your items, I take no responsibility for any items
// you lose due to this script. *** YOU USE THIS SCRIPT AT YOUR OWN RISK ***.
//================================================== ===============
// PXP_Automule=true/false Set true or false to use Sicojola's Automule script
// PXP_StopFullInv MUST be true to use this feature
// ------------------------------------------------------------------
PXP_Automule=false;</TD></TR></TBODY></TABLE>


================================================== ========

The next settings are for Snagit, d2jsp's version of pickit. Since you are using an XP script, I recomend leaving these settings as-is:

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>
///////////////////////////////////////////////////////////////////
// These are the .ini settings for PindleXP
// These are generic .ini files that we supply so your script will work(Thanks to Gill_105)
// Feel free to edit this section as needed so they point to the files you wish to use
//================================================== ===============
// DSN_SnagItINIFile="which" Set this to the ini you want used for snagit
// DT_BMitemsINIFile="which" Set this to the ini you want used for the bmitems file you want to use
// DT_GamblItINIFile="which" Set this to the ini you want used for the bmgambleit file you want to use
// DT_ShopItINIFile="which" Set this to the ini you want used for the bmshopit file you want to use
// ------------------------------------------------------------------
DSN_SnagItINIFile = "snagit_XP.ini";
DT_BMitemsINIFile = "bmitems_XP.ini";
DT_GambleItINIFile = "bmGambleIt_XP.ini";
DT_ShopItINIFile = "bmShopIt_XP.ini";</TD></TR></TBODY></TABLE>


================================================== ========

Next, we will setup Snagit. Following is the default values:

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>///////////////////////////////////////////////////////////////////
// Public Snagit Variables
// Change these for options in how you want your snagit to act
//================================================== ==============
// DSN_MinGoldStack=xxxx Minimum gold stack amount to pickup (ignore small stacks), set to 0 to ignore all gold stacks
// DSN_PickPotions=true/false Set to true to include potions in the checking
// DSN_SnagType=x Type of pickup, 0 = Best item first and 1 = Closest item first
// DSN_LogGold=true/false Set to true to log gold stacks pickup
// DSN_UseTK=true; Set to true to use Telekinesis on certain items
// DSN_SnagRange = xx Radius to check for dropped items. 40 is a good number here
// DSN_SnagDelay=xxx This is the amount of time to wait before snagit picks up items.
// ------------------------------------------------------------------
DSN_MinGoldStack=0;
DSN_PickPotions=false;
DSN_SnagType=0;
DSN_LogGold=false;
DSN_UseTK=true;
DSN_SnagRange=40;
DSN_SnagDelay=150;</TD></TR></TBODY></TABLE>



<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DSN_MinGoldStack=0;</TD></TR></TBODY></TABLE>

This setting tells Snagit what size stacks of gold to grab. If you are low on gold and want Snagit to grab all the gold, set this to 1. If you only want really big piles of gold, set it to 500. Leaving it at 0 it will not pickup any gold. This setting is seperate from and has nothing to do with the settings in your snagit_XP.ini.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DSN_PickPotions=false;</TD></TR></TBODY></TABLE>

If you want snagit to pick up health and mana potions, set this to true.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DSN_SnagType=0;</TD></TR></TBODY></TABLE>

With the default setting of 0 it will grab the best item first. This can use a bit of processor power on lower end machines possibly causing a little bit of lag. You may be able to speed the bot up a little bit by setting this to 1.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DSN_LogGold=false;</TD></TR></TBODY></TABLE>

Who want's to log all the gold they pick up? Leave this as it is.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DSN_UseTK=true;</TD></TR></TBODY></TABLE>

If you are not a Sorc, you probably do not have this spell. I would set this to false for any non-Sorc characters.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DSN_SnagRange=40;</TD></TR></TBODY></TABLE>

I would leave this as-is. Larger numbers will cause more processing and will possibly lag lower end machines. To low of a number and you will miss the goodies.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DSN_SnagDelay=150;</TD></TR></TBODY></TABLE>

This is the ammoun of time, in miliseconds, to wait before picking up items. Snagit is *FAST*! You can possibly get away with a lower number, but I would not recomend it. If your log shows a lot of goodies dropped by none of those goodies in your inventory/stash, try increasing this number.

================================================== ========


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>//////////////////////////////////////////////////////////////////////
// Stashing configuration
//================================================== ==================
// DT_FreeSpace=x Number of free columns. If less full columns are free stashing is set.
//--------------------------------------------------------------------

DT_FreeSpace=3;

//--------------------------------------------------------------------
// The numbers correspond to your inventory. Set 0 to keep whatever is there, 1 to stash it.
// This allows you to keep charms in inventory. Note: If you have an empty spot set to 0
// the item that appears there during a run will NEVER get stashed. (Useful if you have
// lots of space and want to use the bonuses of freshly-ID'd charms).
//--------------------------------------------------------------------

DT_Columns[0]=[1,1,1,1,1,0,0,0,0,0];
DT_Columns[1]=[1,1,1,1,1,0,0,0,0,0];
DT_Columns[2]=[1,1,1,1,1,0,0,0,0,0];
DT_Columns[3]=[1,1,1,1,1,0,0,0,0,0];</TD></TR></TBODY></TABLE>



<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DT_FreeSpace=3;</TD></TR></TBODY></TABLE>

This number determins the number of free colums you must have before stashing happens. If you have less then this number, the bot will stash.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DT_Columns[0]=[1,1,1,1,1,0,0,0,0,0];
DT_Columns[1]=[1,1,1,1,1,0,0,0,0,0];
DT_Columns[2]=[1,1,1,1,1,0,0,0,0,0];
DT_Columns[3]=[1,1,1,1,1,0,0,0,0,0];</TD></TR></TBODY></TABLE>

These lines determine what is to be kept in your inventory. These numbers are important if you do not want the bot to stash charms that you need to have in your inventory. To better undersand this setting, bring your character into a game and open your inventory. Compare the numbers here with each 'box' in your inventory. A '1' will stash any item in that box, a '0' will keep that item.

================================================== ========


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>//////////////////////////////////////////////////////////////////////
// Belt configuration
//================================================== ==================
// PXP_UseBeltManager = true/false Set to true if you want to be able to use the
// belt management to buy potions. May slow the bot.
//--------------------------------------------------------------------

PXP_UseBeltManager = true;

//--------------------------------------------------------------------
// Type of potion used in each belt column
// Available types : "hp" = health | "mp" = mana | "rv" = rejuv. Can use other potion types too (untested!).
// Keep equal types at adjacent columns. First HP then MP and then HP again is a bad choice.
// Keep HP and MP at the beginning of the belt (in case you want to use rejuv and other types).
// Rejuvenations MUST, I REPEAT MUST be at the end of the belt (last x columns).
// To use rejuvenations only, put "rv" in all columns.
//--------------------------------------------------------------------

DT_BeltColType[0]="hp"; // Column 1 in belt
DT_BeltColType[1]="hp"; // Column 2
DT_BeltColType[2]="mp"; // 3
DT_BeltColType[3]="mp"; // Yep, you guessed it, 4.

//--------------------------------------------------------------------
// Minimum amount of potions in each column before needing refilling
// If there's less potions then this number in the column we go and shop.
// Set to 4 to go shopping as soon as there's a potion missing.
// Recommend leaving columns set to "rv" at 0. Since shops won't carry rejuvs.
//--------------------------------------------------------------------

DT_BeltColMin[0]=0;
DT_BeltColMin[1]=0;
DT_BeltColMin[2]=0;
DT_BeltColMin[3]=0;</TD></TR></TBODY></TABLE>



<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_UseBeltManager = true;</TD></TR></TBODY></TABLE>

Leaving this set on true will use XP's excellent belt management program. If you plan on using health/mana potions I recomend you leaving it set on true.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DT_BeltColType[0]="hp"; // Column 1 in belt
DT_BeltColType[1]="hp"; // Column 2
DT_BeltColType[2]="mp"; // 3
DT_BeltColType[3]="mp"; // Yep, you guessed it, 4.</TD></TR></TBODY></TABLE>

This really should be self-explanatory. Set it for what type of potion you want in that belt column. If you only want the bot to pickup and use Rejuve potions, I recomend setting all these to 'rv'. Also, I would set the belt manager above to false.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DT_BeltColMin[0]=0;
DT_BeltColMin[1]=0;
DT_BeltColMin[2]=0;
DT_BeltColMin[3]=0;</TD></TR></TBODY></TABLE>

If you are using health/mana potions, set this to the minimum ammount of potions in that column before the bot goes to Malah for more potions. If you have any of the columns set to use rejuves, keep it set at 0. If you are using health/mana potions set these to '4' regardless of your belt size. It will slow your runs a bit but it will purchase potions.

================================================== ========


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>//////////////////////////////////////////////////////////////////////
// Randomizations to avoid detection
//================================================== ==================
// DC_RandomDel=true/false This will randomize all delays to make the script harder to detect by blizz
// DM_RandomMove=true/false This will make your movements random
// DM_RandomMoveDel=true/false This will make movement delays random
// DT_RandomNPC=true/false Visit random npcs during your runs
//--------------------------------------------------------------------

DC_RandomDel=true;
DM_RandomMove=true;
DM_RandomMoveDel=true;
DT_RandomNPC=false;</TD></TR></TBODY></TABLE>

Self explanatory. Personaly, I don't care if I get detected and I doubt these will prevent it. Set these all to false to speed up your runs.

================================================== ========


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>//////////////////////////////////////////////////////////////////////
// Debugging informations
//================================================== ==================
// DC_DebugLevel=0/1/2/3 0 = none, 1 = print to file only, 2 = print to screen only and 3 = both
// DC_DebugPrintDel=xxxx How long you want to have the script pause after a debug print
// DC_AbortPrintDel=xxxx How much time to display the error message before stopping or aborting the game
// PXP_UseOverheads=true/false Set to true to show overheads
// DA_DisplayImmunities=true/false Set this to true to see what Pindle is immune to on screen.
//--------------------------------------------------------------------

DC_DebugLevel=0;
DC_DebugPrintDel=0;
DC_AbortPrintDel=5000;
PXP_UseOverheads=true;
DA_DisplayImmunities=true;</TD></TR></TBODY></TABLE>


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DC_DebugLevel=0;</TD></TR></TBODY></TABLE>

If you want to see all of the debug information, change this setting. If you have it set to send debug information to file, be advised this can get VERY LARGE! It may also slow down lower end systems.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DC_DebugPrintDel=0;</TD></TR></TBODY></TABLE>

Determins how long to keep debug information on screen. Usefull only for trouble shooting.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DC_AbortPrintDel=5000;</TD></TR></TBODY></TABLE>

How much time to display the error message before stopping or aborting the game. Usefull only for trouble shooting.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_UseOverheads=true;</TD></TR></TBODY></TABLE>

Setting this to false can possibly reduce lag on lower end systems.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DA_DisplayImmunities=true;</TD></TR></TBODY></TABLE>

Setting this to false can possibly reduce lag on lower end systems.

================================================== ========


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>//////////////////////////////////////////////////////////////////////
// ADVANCED SETTINGS. Change the values only if you are experiencing
// problems running the script.
//================================================== ==================
// DT_NPCDelay=xxx Amount of time after interaction or trade with npc to avoid missing menu or trade window.
// DC_LagDelay=xxx Lag delay for all interactions with items in milliseconds (Increase if it miss items sometime.)
// DC_Timeout=x Timeout delay for various loops, in SECONDS.
// DC_SwitchTimeout=x Timeout delay for weapon switch loops, in SECONDS.
// DC_ClickDel=xx Delay used when using mouseclicks, in milliseconds (increase if you are missing clicks).
// DM_WalkDel=xx This is the delay between steps. Change this if you are having problems with black walls
// DM_AreaChangeDel=xxx Delay to wait until the area change (using wp or stairs).
// Increase this if you get too much "Failed to interact".
// DC_UseCheckLoop=true/false Set to true to use a loop to check up to 3 times (may slow the run a little)
// This will be useful to solve the problem with the monster detection
//--------------------------------------------------------------------

DT_NPCDelay=500;
DC_LagDelay=10;
DC_Timeout=3;
DC_SwitchTimeout=3;
DC_ClickDel=100;
DM_WalkDel=150;
DM_AreaChangeDel=500;
DC_UseCheckLoop=false;</TD></TR></TBODY></TABLE>


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DT_NPCDelay=500;</TD></TR></TBODY></TABLE>

Determines how long to wait to interact with an NPC. Set this to a higher value if you are having trouble talking to Malah.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DC_LagDelay=10;</TD></TR></TBODY></TABLE>

Lag delay for all interactions with items in milliseconds. Increase if it misses items sometimes.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DC_Timeout=3;</TD></TR></TBODY></TABLE>

I have never had to mess with this setting. You can try increasing it if your bot is having troubles.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DC_SwitchTimeout=3;</TD></TR></TBODY></TABLE>

Timeout delay for weapon switch, in SECONDS.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DC_ClickDel=100;</TD></TR></TBODY></TABLE>

Try increasing this time if your bot is having trouble clicking on things.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DM_WalkDel=150;</TD></TR></TBODY></TABLE>

This is a good setting to mess with! Go with a lower and lower value untill you start to get a black wall. Increase it a bit from there. This will help shave time off of your bot runs.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DM_AreaChangeDel=500;</TD></TR></TBODY></TABLE>

I would suggest a lower setting for higher end systems with a fast connection. Be careful with this setting though, if it's to low it can cause a lot of problems.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DC_UseCheckLoop=false;</TD></TR></TBODY></TABLE>

Set this to true if your bot is having trouble detecting Pindleskin.

================================================== ========

Allright, I am going to cover the Sorc setup and THAT IS IT! You *MUST* be able to read and comprehend in order to use this bot. Below I will cover the Sorc variables and settings:

================================================== ========


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>//////////////////////////////////////////////////////////////////////
// Precasting configuration
//================================================== ==================
// DA_UseCTA=true/false If you have a CTA weapon, set to true to use the precasts from the runeword
// It will automatically figure which weapon tab has the CTA weapon
// DA_AutoPrecasts=true/false Set to true to use precasts before killing Pindle
// When DA_AutoPrecasts is set to true, the config below is ignored
// XP_ColdArmor = 0; Cast a cold armor (0 = disabled, 1 = Frozen, 2 = Shiver and 3 = Chilling)
// XP_EnergyShield = false; Set to true to cast Energy Shield
// XP_ThunderStorm = false; set to true to cast Thunderstorm
//--------------------------------------------------------------------

DA_UseCTA=false;
DA_AutoPrecasts=true;
XP_ColdArmor=2;
XP_EnergyShield=false;
XP_ThunderStorm=false;</TD></TR></TBODY></TABLE>


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DA_UseCTA=false;</TD></TR></TBODY></TABLE>

Do you use Call To Arms on your sorc? If not leave it at false, if you do set it to true.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DA_AutoPrecasts=true;</TD></TR></TBODY></TABLE>

If you want to bot to automaticly select your precasts I.E. Thunderstorm, Shiver armor, leave this as true. If you want to set up your own, set this to false and edit the lines below:

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>XP_ColdArmor=2;
XP_EnergyShield=false;
XP_ThunderStorm=false;</TD></TR></TBODY></TABLE>


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>XP_ColdArmor=2;</TD></TR></TBODY></TABLE>

Cast a cold armor (0 = disabled, 1 = Frozen, 2 = Shiver and 3 = Chilling)

================================================== ========


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>//////////////////////////////////////////////////////////////////////
// Attack configuration
//================================================== ==================
// timedfirst=true/false If set true, will cast your first listed timed spell before casting static field
// Recommended with Frozen Orb or Blizzard, spells which freeze and slow Pindle
// statictimes=x This is the number of times you want static field to be cast
// If set to 0, it will not be cast.
// spelllist.push"xxxxx" The first attack in the list will be used first
// spelllist.push("Hydra"); To use a new skill, remove the comments, like nova and orb are setup
// //Put comments like the one at the start of this line in front of spells to disclude them
//
// You can use any number of timed and untimed spells. The script will alternate between them in the order
// that you list them, in a pattern of first timed, first untimed, second timed, second untimed, etc...
// So you can list any number of spells but the order in which you list them will determine which timed
// spell goes off in what order, and likewise for untimed spells. For instance, if you list Frozen Orb,
// Meteor, Blizzard and Nova, the script will cast Frozen Orb, Nova, Meteor, Nova, Blizzard, Nova etc...
//
// untimedrepeat=x This is the number of times to cast each untimed spell when only using untimed spells
// XP_MaxAttacks=xx This is the maximum number of attack sequences used to attack Pindleskin
// If he is still alive after this many attacks, the game will abort
// PXP_OffsetY=x This is the y coordinate of the last teleport before attacking Pindleskin
// Set to 0 or a negative number to be far from Pindle and 10 to be close
// Only 0-10 would be an advisable number to use here, higher than 10 makes ya REAL close.
// PXP_OffsetX=x This is the x coordinate of the last teleport before attacking Pindleskin
// The position is relative to the side walls of the temple. Right wall is at 3 and left is at
// -10 but the script will limit yourself to -5 because a section will block attacks.
// XP_SwitchOnKill=true/false Set this to true to switch to the weapon with the greatest magic find upon killing Pindleskin
// XP_SwitchHP=xx This is the amount of Pindle's hp out of 128 that is remaining before switching weapon
// XP_StallKill=true/false Set this to true to let your merc get the last hit
// XP_StallHP=xx This is the amount of hp of 128 that you will stall for Pindle to die on
// XP_StallSkipPhys=true/false Set this to true along with StallKill and you won't stall if Pindle is immune to phys
// DM_UseTeleport=true/false Set to false if you want to walk instead of teleporting to save mana
// XP_KillMinions=true/false Set to true to kill all minions before picking items, after killing Pindle.
// Edit PXP_ZombieSkill too because it use the same code from Zombie attack routines.
//
// For those wondering what is the lower right corner, it is PXP_OffsetX = 3 and PXP_OffsetY = -10.
//--------------------------------------------------------------------

timedfirst=false;
statictimes=0;

spelllist.push(59); // "Blizzard"
spelllist.push(45); // "Ice Blast"
//spelllist.push(55); // "Glacial Spike"
//spelllist.push(64); // "Frozen Orb"
//spelllist.push(48); // "Nova"
//spelllist.push(62); // "Hydra"
//spelllist.push(56); // "Meteor"
//spelllist.push(38); // "Charged Bolt"
//spelllist.push(47); // "Fire Ball"
//spelllist.push(51); // "Fire Wall"
//spelllist.push(53); // "Chain Lightning"
untimedrepeat=5;
XP_MaxAttacks=20;
PXP_OffsetY=0;
PXP_OffsetX=2;
XP_SwitchOnKill=false;
XP_SwitchHP=40;
XP_StallKill=false;
XP_StallHP=40;
XP_StallSkipPhys=true;
DM_UseTeleport=true;
XP_KillMinions=false;</TD></TR></TBODY></TABLE>


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>timedfirst=false;</TD></TR></TBODY></TABLE>

Set this to true if you want the bot to cast your untimed attacks I.E. Blizzard and such, before you use static field. This is a good setting if you want your cold spells to freeze and slow Pindle prior to using static field.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>statictimes=0;</TD></TR></TBODY></TABLE>

How many times to cast static field. Leave it at 0 if you don't want to use it.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>spelllist.push(59); // "Blizzard"
spelllist.push(45); // "Ice Blast"
//spelllist.push(55); // "Glacial Spike"
//spelllist.push(64); // "Frozen Orb"
//spelllist.push(48); // "Nova"
//spelllist.push(62); // "Hydra"
//spelllist.push(56); // "Meteor"
//spelllist.push(38); // "Charged Bolt"
//spelllist.push(47); // "Fire Ball"
//spelllist.push(51); // "Fire Wall"
//spelllist.push(53); // "Chain Lightning"</TD></TR></TBODY></TABLE>


READ THIS YOU ****ING RETARDS!!! THIS IS WHERE YOU CONFIGURE YOUR ATTACKS. I AM TIRED OF HEARING THIS QUESTION!!

If you do not wish to use one of these spells, remove the '//'s in front of them. Example:


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>//spelllist.push(64); // "Frozen Orb"</TD></TR></TBODY></TABLE>

Set up like that, the bot will *NOT* use Frozen Orb. If you want to use Frozen Orb, change the line to this:

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>spelllist.push(64); // "Frozen Orb"</TD></TR></TBODY></TABLE>


Make sense? Good.


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>untimedrepeat=5;</TD></TR></TBODY></TABLE>

This is the number of times to cast each untimed spell when only using untimed spells.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>XP_MaxAttacks=20;</TD></TR></TBODY></TABLE>

This is how many attacks your bot will use I.E. it will cast 20 Frozen Orbs. Set this to a higher number if you can not kill Pindleskin with this number of attacks. No matter what you set this number at, the bot will stop the attack and pick up items once Pindleskin is dead.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_OffsetY=0;
PXP_OffsetX=2;</TD></TR></TBODY></TABLE>

PXP_OffsetY=x: This is the y coordinate of the last teleport before attacking Pindleskin. Set to 0 or a negative number to be far from Pindle and 10 to be close. Only 0-10 would be an advisable number to use here, higher than 10 makes ya REAL close.
PXP_OffsetX=x: This is the x coordinate of the last teleport before attacking Pindleskin. The position is relative to the side walls of the temple. Right wall is at 3 and left is at -10 but the script will limit yourself to -5 because a section will block attacks.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Quote:</TD></TR><TR><TD class=quote>XP_SwitchOnKill=false;</TD></TR></TBODY></TABLE>

Setting this to true will casue you to switch to your other weapon just prior to killing Pindleskin. The reasoning for this is to have a higher MF weapon/shield in weapon slot 2 thus having better MF when Pindle dies. The ammount of life Pindle has before the switch is determined by this line:

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>XP_SwitchHP=40;</TD></TR></TBODY></TABLE>

This number is a percentage.

Since this guide was tooo long for this forum's max characters, here is:
Part 2:

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>XP_StallKill=false;</TD></TR></TBODY></TABLE>

Setting this line to false will cause the bot to stop it's attack just prior to Pindleskin's death, thus allowing your merc to get the kill. The reason for this is your MF and your mercs MF combine when your merc gets the kill. Set this to true if you want your merc to get the kill. This is used in conjunction with the line below:

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>XP_StallHP=40;</TD></TR></TBODY></TABLE>

This number is a percentage.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>XP_StallSkipPhys=true;</TD></TR></TBODY></TABLE>

Set this to true along with StallKill and you won't stop your attack if Pindle is immune to physical.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DM_UseTeleport=true;</TD></TR></TBODY></TABLE>

Set this to false if you do not want to use teleport.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>XP_KillMinions=false;</TD></TR></TBODY></TABLE>

Set this to true if you want to kill Pindle's minions. It will slow down your runs but you may find more items.

================================================== ========


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>//////////////////////////////////////////////////////////////////////
// Mercenary configuration
//================================================== ==================
// DT_UseMerc=true/false Set to true if you use a mercenary, will revive merc at Qual-Kehk if necessary
// XP_EnchantMerc=true/false Set to true if you want to cast Enchant on your merc with other precasts
//--------------------------------------------------------------------

DT_UseMerc=true;
XP_EnchantMerc=false;</TD></TR></TBODY></TABLE>


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DT_UseMerc=true;</TD></TR></TBODY></TABLE>

Set this to false if you do not want to use a Merc.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>XP_EnchantMerc=false;</TD></TR></TBODY></TABLE>

Set this to true if you want to use the Enchant skill, otherwise leave it at false.

================================================== ========


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>//////////////////////////////////////////////////////////////////////
// ShopIt! and GambleIt!
//================================================== ==================
// PXP_ShopIt=true/false Set this to true to shop every npc you talk to, false to skip this
// PXP_GambleIt=true/false Set this to true to gamble at Anya each time you talk to her
// PXP_AlwaysGamble=true/false If GambleItOn is set to true, always go to Anya to gamble
// PXP_GambleMinGold=xxxxxx Set a minimun amount of gold before starting to gamble
// PXP_AlwaysMalah=true/false Set this to true to shop Malah every run
// PXP_AlwaysLarzuk=true/false Set this to true to shop Larzuk every run
// PXP_VisitAnya=true/false Set this to true to visit Anya each run
//--------------------------------------------------------------------

PXP_ShopIt=true;
PXP_GambleIt=false;
PXP_AlwaysGamble=false;
PXP_GambleMinGold=250000;
PXP_AlwaysMalah=false;
PXP_AlwaysLarzuk=false;
PXP_VisitAnya=false;</TD></TR></TBODY></TABLE>


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_ShopIt=true;</TD></TR></TBODY></TABLE>

Set this to false if you do not want to use the shop functions, otherwise leave it at true. Leaving this on true will slow down your runs.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_GambleIt=false;</TD></TR></TBODY></TABLE>

Set this to true if you want to gamele at Anya, otherwise leave it at false. Setting this to true will slow down your runs.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_AlwaysGamble=false;</TD></TR></TBODY></TABLE>

Set this to true and the bot will always stop at Anya and gamble.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_GambleMinGold=250000;</TD></TR></TBODY></TABLE>

This is the minimum ammount of gold to have before the bot trys to gamble.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_AlwaysMalah=false;
PXP_AlwaysLarzuk=false;</TD></TR></TBODY></TABLE>

Set these to true to have the bot always shop at Malah and Larzuk. Doing so will slow down your runs.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>PXP_VisitAnya=false;</TD></TR></TBODY></TABLE>

Set this to true to have the bot always shop at Anya. Setting this to true will slow down your runs.

================================================== ========


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>//////////////////////////////////////////////////////////////////////
// Other configurations
//================================================== ==================
// DT_RepairPercent=xx You will visit Charsi for repair if any of your items fall below this percent of durability
// DT_SkipHealLife=xx If you have more than this percent of your life, you won't go to Akara
// DT_SkipHealMana=xx If you have more than this percent of your mana, you won't go to Akara
//--------------------------------------------------------------------

DT_RepairPercent=25;
DT_SkipHealLife=75;
DT_SkipHealMana=35;</TD></TR></TBODY></TABLE>


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DT_RepairPercent=25;</TD></TR></TBODY></TABLE>

This determins at what percentage of damage you bot will stop at Larzuk to repair. Lower settings = faster run times.

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DT_SkipHealLife=75;
DT_SkipHealMana=35;</TD></TR></TBODY></TABLE>

These settings are at what percentage of health and mana your bot will stop at Malah to heal. Lower settings = faster run times.

================================================== ========


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>//////////////////////////////////////////////////////////////////////
// Zombie attack!
//================================================== ==================
// XP_AttackZombies=true/false Set to true if you want to attack the Zombies in the courtyard. Requires Nova
// XP_ZombieUseStatic=true/false Set to false if you don't want to use static field on the Zombies
// XP_ZombieStaticTimes=x This is the number of times to cast Static Field at each attack stop for the Zombies
// XP_ZombieSkill=x Skill to attack zombies with
// XP_ZombieStand=true/false If true, stand still to attack (strafe/traps/...)
//--------------------------------------------------------------------

XP_AttackZombies=false;
XP_ZombieUseStatic=false;
XP_ZombieStaticTimes=3;
XP_ZombieSkill=55; // "Glacial Spike"
XP_ZombieStand=true;</TD></TR></TBODY></TABLE>


The above settings determine if you want to attack the zombies in the courtyard or not. This is best used at lower levels in order to gain experience. Setting this setting to true will cause the bot to attack the zombies but will also result in slower run times:

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>XP_AttackZombies=false;</TD></TR></TBODY></TABLE>


================================================== ========


<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>//////////////////////////////////////////////////////////////////////
// Immunities/Resistances/Enchantments to skip
//================================================== ==================
//Set each to true to chicken out if Pindle is immune to that kind of damage
//--------------------------------------------------------------------

DA_Immunities[1]=false; // Physical
DA_Immunities[2]=false; // Magic
DA_Immunities[3]=false; // Fire
DA_Immunities[4]=false; // Lightning
DA_Immunities[5]=true; // Cold
DA_Immunities[6]=false; // Poison</TD></TR></TBODY></TABLE>


I will not cover these settings one by one, they are self-explantory. If you want your bot to chicken on certain immunities/enchantments, set the setting to true. If you want the bot to ignore those immunities/enchantments, set the setting to flase. Example: I want my bot to chicken out when Pindleskin is immune to fire. I would change this setting:

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DA_Immunities[3]=false; // Fire</TD></TR></TBODY></TABLE>

To this:

<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0><TBODY><TR><TD>Code:</TD></TR><TR><TD class=code>DA_Immunities[3]=true; // Fire</TD></TR></TBODY></TABLE>


================================================== ========

Bowbow
07-30-2004, 10:38 PM
Gj Extremeblizz, ur outdoing urself with all this info= P Heres sum points

Anthrax
08-02-2004, 08:32 AM
Hey everytime it kills pindle and exits the game and gives me a error that says assertion error or some crap whats up =o

Tool
08-02-2004, 10:07 AM
Tell me how to config it for Meph, that's all I want.