Markus
2013-02-23 15:21:45
Some goodies for you. Mostly sorta 'cracked'/'nulled' scripts.
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GExtremeRanger ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
{
Last Modified: April 15, 2007
Author: Gsquare567 -> MSN/Email - <a href="mailto:Gsquare567alt@hotmail.com">Gsquare567alt@hotmail.com</a>
PM - Gsquare567 on Rs-Resources, Srl
Gsquare on Sythe
And an anonymous auth cracker :)
Credits: Starblaster100, WT-Wataki, Stupid3ooo, RsN, Pyro, Masquerader,
Wizzup?, and all other SRL Members I did not mention,
because they have taught me everything I know about Scar and SRL.
Also Joe from RSR, who helped me make the Auth System!
How to Use:
-----------
1. Setup - first, drag the crosshair onto the runscape client, from there
just click Run Script, edit any settings in the form from previously
saved settings or the default settings and press the "Start Script" button.
2. Watch - once the script is run, your job is simply to sit back and
relax, and watch your ranger own.
Features (so far):
---------
1. Auto-Login
2. Great Monster Detection
3. Auto-Colored Arrow-Pickup and Arrow-Equip with DTMs
4. Multi-Food Eating with DTMs and Runaway
5. Multi-Item-Pickup
6. Incredible Anti-Ban
7. Advanced Anti-Random Checks
8. Incredible Auto-Talk/Auto-Respond System with Chat-Timing and
Last-Chat Checking
9. Script-Killing in response to Time, Kills, Health, and Max-Levels
10. Highly-Detailed Reports
11. Support Ranged Combat
12. Form with Saving and Loading Previous Settings
13. A nice crack so you can use it for free :p
Features (to add):
---------
1. Support of Magic Combat (Non-HP-Growing Spells)
2. Fishing and Cooking and a Variety of Areas (including Edgeville, Draynor, Falador, etc.)
3. Specialized Ranging Areas that will combine Fishing + Cooking with Ranging
4. Support of Melee Combat
5. Specialized Low-Health/Lost/Death Tele-Walk, corresponding to areas used in (3.)
}
//program GExtremeRanger;
{.include SRL/SRL.scar}
{.include SRL/SRL/Skill/Fighting.scar}
{.include srl\srl\extended\xInventory.scar}
const
VERSION = 1.0; // check out RSR or Sythe to see if this is the latest!
{*LEVEL*}
MaxAttack = 20; // will be used in later versions
MaxStrength = 1; // will be used in later versions
MaxRanged = 99; // will be used in later versions
MaxMagic = 99; // will be used in later versions
MaxDefence = 30; // will be used in later versions
MaxPrayer = 1; // will be used in later versions
var
// script variables
ArrowHead, ArrowTail, ArrowMid, ArrowDTM, Killed, ArrowsPicked, NoMonsters,
StartTime, Kills, Runtime, ArrowGrabs, ItemGrabs, FoodEaten, LowestHealth,
LastSpeakTime, FightTime, LastFightTime, i, j, PointColor, RunTox, RunToy,
RunBackx, RunBacky, MMOtherPersonDTM, LastResponseType, PlayerMouseSpeed,
MaxRuntime, MinRuntime, MaxEatHP, MinEatHP, FightMode, MonsterColor1,
MonsterColor2, MonsterColor3, MonsterColorTolerance, MaxKills, MinKills,
MaxFightTime, MinFightTime, ArrowTolerance, LoadsBeforeEquipMax,
LoadsBeforeEquipMin, ItemTolerance, MinChatLinesUntilSpeak, MinSpeakTime
: Integer;
FoodName, FoodDTMName, ItemName, SkillsUsing, Greetings, Questions, Responses,
Messages, GrewMessages, RangeLvlQuestions, DefLvlQuestions, HpLvlQuestions,
LvlQuestions, LvlResponses, NoobQuestions, NoobResponses, MoneyQuestions,
Moneyresponses,AgeQuestions,AgeResponses, LocationQuestions,LocationResponses,
SexQuestions,Sexresponses,LeavingQuestions, LeavingResponses, ArrowQuestions,
ArrowResponses
: array of String;
ArrowName, Skill, CombatType, RunAwayDir, StoreString1, StoreString2
: String;
SkillsLevels, ItemColor, FoodCol, FoodDTM, RandomFightTabs, RandomFishTabs
: array of Integer;
SameColor, FirstLoop, BoxInFight, FirstTalk, PlayerBenMouse, RightClickMonster,
PickArrows, PickItems, AutoTalk, AutoRespond
: Boolean;
// form variables
RealPassword : String;
frmDesign : TForm;
GBGeneral : TGroupBox;
LPassword : TLabel;
LBenMouse : TLabel;
LMouseSpeed : TLabel;
LMaxRuntime : TLabel;
LMinRuntime : TLabel;
LNickname : TLabel;
LUsername : TLabel;
LMaxKills : TLabel;
LMinKills : TLabel;
ENickname : TEdit;
EMouseSpeed : TEdit;
CBBenMouse : TComboBox;
EMaxRuntime : TEdit;
EMinRuntime : TEdit;
EUsername : TEdit;
EMaxKills : TEdit;
EMinKills : TEdit;
EPassword : TEdit;
BGHealth : TGroupBox;
LRunAwayDir : TLabel;
LMaxEatHP : TLabel;
LMinEatHP : TLabel;
LFoods : TLabel;
CBRunAwayDir : TComboBox;
EMaxEatHP : TEdit;
EMinEatHP : TEdit;
CBShrimp : TCheckBox;
CBSardine : TCheckBox;
CBHerring : TCheckBox;
CBAnchovies : TCheckBox;
CBTrout : TCheckBox;
CBPike : TCheckBox;
CBSalmon : TCheckBox;
CBTuna : TCheckBox;
CBLobster : TCheckBox;
CBSwordfish : TCheckBox;
CBCookedChicken : TCheckBox;
CBCookedMeat : TCheckBox;
CBBread : TCheckBox;
CBKebab : TCheckBox;
CBSpinachRoll : TCheckBox;
EFoodColor : TEdit;
BFoodColor : TButton;
GBFight : TGroupBox;
LFightMode : TLabel;
LRightClickMonster : TLabel;
LMaxFightTime : TLabel;
LMinFightTime : TLabel;
LMonsterColor1 : TLabel;
LMonsterColor2 : TLabel;
LMonsterColor3 : TLabel;
LMonsterColorTolerance : TLabel;
CBFightMode : TComboBox;
CBRightClickMonster : TComboBox;
EMaxFightTime : TEdit;
EMinFightTime : TEdit;
EMonsterColor1 : TEdit;
EMonsterColor2 : TEdit;
EMonsterColor3 : TEdit;
BMonsterColor1Pick : TButton;
BMonsterColor2Pick : TButton;
BMonsterColor3Pick : TButton;
EMonsterColorTolerance : TEdit;
GBTalk : TGroupBox;
LMinSpeakTime : TLabel;
LMinChatLinesUntilSpeak : TLabel;
LAutoTalk : TLabel;
LAutoRespond : TLabel;
CBMinChatLinesUntilSpeak : TComboBox;
CBAutoRespond : TComboBox;
EMinSpeakTime : TEdit;
CBAutoTalk : TComboBox;
BStartScript : TButton;
GBItem : TGroupBox;
LPickArrows : TLabel;
LArrowName : TLabel;
LLoadsBeforeEquipMax : TLabel;
LLoadsBeforeEquipMin : TLabel;
LPickItems : TLabel;
LArrowTolerance : TLabel;
LArrowHead : TLabel;
LArrowMid : TLabel;
LArrowTail : TLabel;
LItemName : TLabel;
LItemColor : TLabel;
LItemTolerance : TLabel;
CBArrowName : TComboBox;
CBPickArrows : TComboBox;
ELoadsBeforeEquipMax : TEdit;
ELoadsBeforeEquipMin : TEdit;
EArrowHead : TEdit;
BArrowHead : TButton;
EArrowMid : TEdit;
EArrowTail : TEdit;
EArrowTolerance : TEdit;
CBPickItems : TComboBox;
EItemName : TEdit;
EItemColor : TEdit;
EItemTolerance : TEdit;
BItemColor : TButton;
BArrowMid : TButton;
BArrowTail : TButton;
procedure GAuthorizeScript;
//var
//AuthMessage, AuthUsername, AuthPassword: String;
begin
{ AuthUsername := Readln('Enter Authorization Username:');
AuthPassword := Readln('Enter Authorization Password:');
AuthMessage := GetPage('http://gextremeranger.freehostia.com/abc.php?username=' + AuthUsername + '&password=' + AuthPassword);
if AuthMessage = 'ACCEPTED' then
begin
Writeln('Authorization accepted.');
end else
if AuthMessage = 'DENIED' then
begin
Writeln('Authorization denied.');
TerminateScript;
end else
begin
Writeln(AuthMessage);
TerminateScript;
end; }
end;
{***************************}
{***** FORM PROCEDURES *****}
{***************************}
// file opening/saving
function GetFormSettingsFromFile: array of String;
var
FileNumber: Integer;
Data: String;
begin
SetArrayLength(Result, 0);
if FileExists(ScriptPath + 'GExtremeRanger1.dat') then
begin
FileNumber := OpenFile(ScriptPath + 'GExtremeRanger1.dat', True);
Writeln('Loading saved settings...');
ReadFileString(FileNumber, Data, FileSize(FileNumber));
Data := Trim(Data);
repeat
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := Copy(Data, 1, Pos(Chr(13), Data) - 1);
Delete(Data, 1, Pos(Chr(13), Data));
until Pos(Chr(13), Data) < 1
CloseFile(FileNumber);
end else
begin
// default settings - coded this way to easily add in new settings
Writeln('Loading default settings...');
SetArrayLength(Result, GetArrayLength(Result) + 1); // general
Result[GetArrayLength(Result) - 1] := 'Username';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '******';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'ser';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '5';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'True';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '90';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '60';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '200';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '50';
SetArrayLength(Result, GetArrayLength(Result) + 1); // health
Result[GetArrayLength(Result) - 1] := '20';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '10';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'North';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'True';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'True';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'True';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'True';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'True';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'True';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'True';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'False';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'False';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'False';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'False';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'False';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'False';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'True';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'True';
SetArrayLength(Result, GetArrayLength(Result) + 1); // fight
Result[GetArrayLength(Result) - 1] := 'Accurate';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'False';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '45';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '180';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '0';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'True'; // item settings
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'Bronze';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '5';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '1';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '-1';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '0';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '0';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '0';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'True';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'Coins';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '1413553';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '0';
SetArrayLength(Result, GetArrayLength(Result) + 1); // talk
Result[GetArrayLength(Result) - 1] := '30';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := '1';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'True';
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[GetArrayLength(Result) - 1] := 'True';
end;
end;
procedure SaveFormSettingsToFile;
var
FileNumber: Integer;
begin
Writeln('Saving current settings...');
FileNumber := ReWriteFile(ScriptPath + 'GExtremeRanger1.dat', False);
WriteFileString(FileNumber, Players[0].Name + Chr(13));
WriteFileString(FileNumber, Players[0].Pass + Chr(13));
WriteFileString(FileNumber, Players[0].Nick + Chr(13));
WriteFileString(FileNumber, EMouseSpeed.Text + Chr(13));
WriteFileString(FileNumber, CBBenMouse.Text + Chr(13));
WriteFileString(FileNumber, EMaxRuntime.Text + Chr(13));
WriteFileString(FileNumber, EMinRuntime.Text + Chr(13));
WriteFileString(FileNumber, EMaxKills.Text + Chr(13));
WriteFileString(FileNumber, EMinKills.Text + Chr(13));
WriteFileString(FileNumber, EMaxEatHP.Text + Chr(13));
WriteFileString(FileNumber, EMinEatHP.Text + Chr(13));
WriteFileString(FileNumber, CBRunAwayDir.Text + Chr(13));
WriteFileString(FileNumber, EFoodColor.Text + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBShrimp.Checked) + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBSardine.Checked) + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBHerring.Checked) + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBAnchovies.Checked) + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBTrout.Checked) + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBPike.Checked) + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBSalmon.Checked) + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBTuna.Checked) + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBLobster.Checked) + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBSwordfish.Checked) + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBCookedChicken.Checked) + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBCookedMeat.Checked) + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBBread.Checked) + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBKebab.Checked) + Chr(13));
WriteFileString(FileNumber, BoolToStr(CBSpinachRoll.Checked) + Chr(13));
WriteFileString(FileNumber, CBFightMode.Text + Chr(13));
WriteFileString(FileNumber, CBRightClickMonster.Text + Chr(13));
WriteFileString(FileNumber, EMaxFightTime.Text + Chr(13));
WriteFileString(FileNumber, EMinFightTime.Text + Chr(13));
WriteFileString(FileNumber, EMonsterColor1.Text + Chr(13));
WriteFileString(FileNumber, EMonsterColor2.Text + Chr(13));
WriteFileString(FileNumber, EMonsterColor3.Text + Chr(13));
WriteFileString(FileNumber, EMonsterColorTolerance.Text + Chr(13));
WriteFileString(FileNumber, CBPickArrows.Text + Chr(13));
WriteFileString(FileNumber, CBArrowName.Text + Chr(13));
WriteFileString(FileNumber, ELoadsBeforeEquipMax.Text + Chr(13));
WriteFileString(FileNumber, ELoadsBeforeEquipMin.Text + Chr(13));
WriteFileString(FileNumber, EArrowHead.Text + Chr(13));
WriteFileString(FileNumber, EArrowMid.Text + Chr(13));
WriteFileString(FileNumber, EArrowTail.Text + Chr(13));
WriteFileString(FileNumber, EArrowTolerance.Text + Chr(13));
WriteFileString(FileNumber, CBPickItems.Text + Chr(13));
WriteFileString(FileNumber, EItemName.Text + Chr(13));
WriteFileString(FileNumber, EItemColor.Text + Chr(13));
WriteFileString(FileNumber, EItemTolerance.Text + Chr(13));
WriteFileString(FileNumber, EMinSpeakTime.Text + Chr(13));
WriteFileString(FileNumber, CBMinChatLinesUntilSpeak.Text + Chr(13));
WriteFileString(FileNumber, CBAutoTalk.Text + Chr(13));
WriteFileString(FileNumber, CBAutoRespond.Text + Chr(13));
CloseFile(FileNumber);
end;
function SettingsCorrect: Boolean;
begin
Result := True;
end;
// set variables and start script
procedure ClickStartScript(sender: TObject); // Adding Buttons and Interactivity
begin
Status('Checking settings...');
if not SettingsCorrect then Exit;
Status('Storing settings...');
{*GENERAL*}
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := EUsername.Text;
Players[0].Pass := EPassword.Text;
if Length(ENickname.Text) > 0 then Players[0].Nick := ENickname.Text
else
begin
Players[0].Nick := Copy(Players[0].Name, 2, 3);
Writeln('Your nickname is ' + Players[0].Nick + '.');
end;
Players[0].Active := True;
PlayerMouseSpeed := StrToInt(EMouseSpeed.Text);
PlayerBenMouse := StrToBool(CBBenMouse.Text);
MaxRuntime := StrToInt(EMaxRuntime.Text);
MinRuntime := StrToInt(EMinRuntime.Text);
MaxKills := StrToInt(EMaxKills.Text);
MinKills := StrToInt(EMinKills.Text);
{*HEALTH*}
MaxEatHP := StrToInt(EMaxEatHP.Text);
MinEatHP := StrToInt(EMinEatHP.Text);
RunAwayDir := Copy(CBRunAwayDir.Text, 1, 1);
SetArrayLength(FoodCol, 0);
StoreString1 := EFoodColor.Text;
while Pos(', ', StoreString1) > 0 do
begin
SetArrayLength(FoodCol, GetArrayLength(FoodCol) + 1);
FoodCol[GetArrayLength(FoodCol) - 1] := StrToInt(Trim(Copy(StoreString1, 1, Pos(', ', StoreString1) - 1)));
Delete(StoreString1, 1, Pos(', ', StoreString1) + 1);
end;
if Length(StoreString1) > 0 then
begin
SetArrayLength(FoodCol, GetArrayLength(FoodCol) + 1);
FoodCol[GetArrayLength(FoodCol) - 1] := StrToInt(Trim(StoreString1));
end;
SetArrayLength(FoodName, 0);
if CBShrimp.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBShrimp.Caption;
end;
if CBSardine.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBSardine.Caption;
end;
if CBHerring.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBHerring.Caption;
end;
if CBAnchovies.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBAnchovies.Caption;
end;
if CBTrout.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBTrout.Caption;
end;
if CBPike.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBPike.Caption;
end;
if CBSalmon.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBSalmon.Caption;
end;
if CBTuna.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBTuna.Caption;
end;
if CBLobster.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBLobster.Caption;
end;
if CBSwordfish.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBSwordfish.Caption;
end;
if CBCookedChicken.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBCookedChicken.Caption;
end;
if CBCookedMeat.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBCookedMeat.Caption;
end;
if CBBread.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBBread.Caption;
end;
if CBKebab.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBKebab.Caption;
end;
if CBSpinachRoll.Checked then
begin
SetArrayLength(FoodName, GetArrayLength(FoodName) + 1);
FoodName[GetArrayLength(FoodName) - 1] := CBSpinachRoll.Caption;
end;
{*FIGHT*}
case CBFightMode.Text of
'Accurate': FightMode := 1;
'Rapid': FightMode := 2;
'Longrange': FightMode := 3;
end;
RightClickMonster := StrToBool(CBRightClickMonster.Text);
MaxFightTime := StrToInt(EMaxFightTime.Text);
MinFightTime := StrToInt(EMinFightTime.Text);
MonsterColor1 := StrToInt(EMonsterColor1.Text);
MonsterColor2 := StrToInt(EMonsterColor2.Text);
MonsterColor3 := StrToInt(EMonsterColor3.Text);
MonsterColorTolerance := StrToInt(EMonsterColorTolerance.Text)
{*ITEM*}
PickArrows := StrToBool(CBPickArrows.Text);
ArrowName := CBArrowName.Text;
LoadsBeforeEquipMax := StrToInt(ELoadsBeforeEquipMax.Text);
LoadsBeforeEquipMin := StrToInt(ELoadsBeforeEquipMin.Text);
ArrowHead := StrToInt(EArrowHead.Text);
ArrowMid := StrToInt(EArrowMid.Text);
ArrowTail := StrToInt(EArrowTail.Text);
ArrowTolerance := StrToInt(EArrowTolerance.Text);
PickItems := StrToBool(CBPickItems.Text);
SetArrayLength(ItemName, 0);
SetArrayLength(ItemColor, 0);
StoreString1 := EItemName.Text;
StoreString2 := EItemColor.Text;
while (Pos(', ', StoreString1) > 0) and (Pos(', ', StoreString2) > 0) do
begin
SetArrayLength(ItemName, GetArrayLength(ItemName) + 1);
SetArrayLength(ItemColor, GetArrayLength(ItemColor) + 1);
ItemName[GetArrayLength(ItemName) - 1] := Trim(Copy(StoreString1, 1, Pos(', ', StoreString1) - 1));
ItemColor[GetArrayLength(ItemColor) - 1] := StrToInt(Trim(Copy(StoreString2, 1, Pos(', ', StoreString2) - 1)));
Delete(StoreString1, 1, Pos(', ', StoreString1) + 1);
Delete(StoreString2, 1, Pos(', ', StoreString2) + 1);
end;
if (Length(StoreString1) > 0) and (Length(StoreString2) > 0) then
begin
SetArrayLength(ItemName, GetArrayLength(ItemName) + 1);
SetArrayLength(ItemColor, GetArrayLength(ItemColor) + 1);
ItemName[GetArrayLength(ItemName) - 1] := Trim(StoreString1);
ItemColor[GetArrayLength(ItemColor) - 1] := StrToInt(Trim(StoreString2));
end;
ItemTolerance := StrToInt(EItemTolerance.Text);
{*TALK*}
MinSpeakTime := StrToInt(EMinSpeakTime.Text);
MinChatLinesUntilSpeak := StrToInt(CBMinChatLinesUntilSpeak.Text);
AutoTalk := StrToBool(CBAutoTalk.Text);
AutoRespond := StrToBool(CBAutoRespond.Text);
// save settings
SaveFormSettingsToFile;
// start script
frmDesign.Caption:= frmDesign.Caption + '.';
frmDesign.ModalResult:= mrOk;
end;
// closing form
procedure ClosingForm(sender: TObject); // Adding Buttons and Interactivity
begin
Writeln('Hey! Did you just decide not to use this script?!');
Wait(2000);
Writeln('Whats with that, man? This script pwnz!');
Wait(2000);
Writeln('Whatever. Your choice... even though its not a good one =P');
Wait(3000);
Writeln('Maybe we can chill later ^^');
TerminateScript;
end;
// pick monster colors
procedure ClickPickMColor1(sender: TObject); // Adding Buttons and Interactivity
var Color: Integer;
begin
PickColor(Color, x, y);
EMonsterColor1.Text := IntToStr(Color);
EMonsterColor1.Font.Color := Color;
if Color < 3500000 then EMonsterColor1.Color := clWhite
else EMonsterColor1.Color := clBlack;
end;
procedure ClickPickMColor2(sender: TObject); // Adding Buttons and Interactivity
var Color: Integer;
begin
PickColor(Color, x, y);
EMonsterColor2.Text := IntToStr(Color);
EMonsterColor2.Font.Color := Color;
if Color < 3500000 then EMonsterColor2.Color := clWhite
else EMonsterColor2.Color := clBlack;
end;
procedure ClickPickMColor3(sender: TObject); // Adding Buttons and Interactivity
var Color: Integer;
begin
PickColor(Color, x, y);
EMonsterColor3.Text := IntToStr(Color);
EMonsterColor3.Font.Color := Color;
if Color < 3500000 then EMonsterColor3.Color := clWhite
else EMonsterColor3.Color := clBlack;
end;
// pick food colors
procedure ClickPickFoodColor(sender: TObject); // Adding Buttons and Interactivity
var Color: Integer;
begin
PickColor(Color, x, y);
if Length(EFoodColor.Text) > 0 then EFoodColor.Text := EFoodColor.Text + ', ' + IntToStr(Color)
else EFoodColor.Text := IntToStr(Color);
end;
// pick item colors
procedure ClickPickArrowHColor(sender: TObject); // Adding Buttons and Interactivity
var Color: Integer;
begin
PickColor(Color, x, y);
EArrowHead.Text := IntToStr(Color);
EArrowHead.Font.Color := Color;
if Color < 3500000 then EArrowHead.Color := clWhite
else EArrowHead.Color := clBlack;
end;
procedure ClickPickArrowMColor(sender: TObject); // Adding Buttons and Interactivity
var Color: Integer;
begin
PickColor(Color, x, y);
EArrowMid.Text := IntToStr(Color);
EArrowMid.Font.Color := Color;
if Color < 3500000 then EArrowMid.Color := clWhite
else EArrowMid.Color := clBlack;
end;
procedure ClickPickArrowTColor(sender: TObject); // Adding Buttons and Interactivity
var Color: Integer;
begin
PickColor(Color, x, y);
EArrowTail.Text := IntToStr(Color);
EArrowTail.Font.Color := Color;
if Color < 3500000 then EArrowTail.Color := clWhite
else EArrowTail.Color := clBlack;
end;
procedure ClickPickItemColor(sender: TObject); // Adding Buttons and Interactivity
var Color: Integer;
begin
PickColor(Color, x, y);
if Length(EItemColor.Text) > 0 then EItemColor.Text := EItemColor.Text + ', ' + IntToStr(Color)
else EItemColor.Text := IntToStr(Color);
end;
// form creation
procedure InitForm;
var
SettingValues: array of String;
begin
// set variables
//SetArrayLength(SettingValues, 52);
SettingValues := GetFormSettingsFromFile;
i := 0;
frmDesign := CreateForm;
frmDesign.Left := 121;
frmDesign.Top := 15;
frmDesign.Width := 570;
frmDesign.Height := 613;
frmDesign.Caption := 'GExtremeRanger V1.0';
frmDesign.Color := clBtnFace;
frmDesign.Font.Color := clWindowText;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'MS Sans Serif';
frmDesign.Font.Style := [];
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 96;
GBGeneral := TGroupBox.Create(frmDesign);
GBGeneral.Parent := frmDesign;
GBGeneral.Left := 0;
GBGeneral.Top := 0;
GBGeneral.Width := 212;
GBGeneral.Height := 229;
GBGeneral.Caption := 'General Settings';
GBGeneral.Color := cl3DDkShadow;
GBGeneral.Font.Color := clWindowText;
GBGeneral.Font.Height := -16;
GBGeneral.Font.Name := 'Courier New';
GBGeneral.Font.Style := [fsBold];
GBGeneral.ParentColor := False;
GBGeneral.ParentFont := False;
GBGeneral.TabOrder := 0;
LUsername := TLabel.Create(GBGeneral);
LUsername.Parent := GBGeneral;
LUsername.Left := 23;
LUsername.Top := 33;
LUsername.Width := 63;
LUsername.Height := 14;
LUsername.Caption := 'Username:';
LUsername.Color := clBtnFace;
LUsername.Font.Color := clWindowText;
LUsername.Font.Height := -11;
LUsername.Font.Name := 'Courier New';
LUsername.Font.Style := [];
LUsername.ParentColor := False;
LUsername.ParentFont := False;
LPassword := TLabel.Create(GBGeneral);
LPassword.Parent := GBGeneral;
LPassword.Left := 23;
LPassword.Top := 54;
LPassword.Width := 63;
LPassword.Height := 14;
LPassword.Caption := 'Password:';
LPassword.Font.Color := clWindowText;
LPassword.Font.Height := -11;
LPassword.Font.Name := 'Courier New';
LPassword.Font.Style := [];
LPassword.ParentFont := False;
LMouseSpeed := TLabel.Create(GBGeneral);
LMouseSpeed.Parent := GBGeneral;
LMouseSpeed.Left := 23;
LMouseSpeed.Top := 96;
LMouseSpeed.Width := 84;
LMouseSpeed.Height := 14;
LMouseSpeed.Caption := 'Mouse Speed:';
LMouseSpeed.Font.Color := clWindowText;
LMouseSpeed.Font.Height := -11;
LMouseSpeed.Font.Name := 'Courier New';
LMouseSpeed.Font.Style := [];
LMouseSpeed.ParentFont := False;
LBenMouse := TLabel.Create(GBGeneral);
LBenMouse.Parent := GBGeneral;
LBenMouse.Left := 23;
LBenMouse.Top := 117;
LBenMouse.Width := 70;
LBenMouse.Height := 14;
LBenMouse.Caption := 'Ben Mouse:';
LBenMouse.Font.Color := clWindowText;
LBenMouse.Font.Height := -11;
LBenMouse.Font.Name := 'Courier New';
LBenMouse.Font.Style := [];
LBenMouse.ParentFont := False;
LMaxRuntime := TLabel.Create(GBGeneral);
LMaxRuntime.Parent := GBGeneral;
LMaxRuntime.Left := 23;
LMaxRuntime.Top := 138;
LMaxRuntime.Width := 84;
LMaxRuntime.Height := 14;
LMaxRuntime.Caption := 'Max Runtime:';
LMaxRuntime.Font.Color := clWindowText;
LMaxRuntime.Font.Height := -11;
LMaxRuntime.Font.Name := 'Courier New';
LMaxRuntime.Font.Style := [];
LMaxRuntime.ParentFont := False;
LMinRuntime := TLabel.Create(GBGeneral);
LMinRuntime.Parent := GBGeneral;
LMinRuntime.Left := 23;
LMinRuntime.Top := 159;
LMinRuntime.Width := 84;
LMinRuntime.Height := 14;
LMinRuntime.Caption := 'Min Runtime:';
LMinRuntime.Font.Color := clWindowText;
LMinRuntime.Font.Height := -11;
LMinRuntime.Font.Name := 'Courier New';
LMinRuntime.Font.Style := [];
LMinRuntime.ParentFont := False;
LNickname := TLabel.Create(GBGeneral);
LNickname.Parent := GBGeneral;
LNickname.Left := 23;
LNickname.Top := 75;
LNickname.Width := 63;
LNickname.Height := 14;
LNickname.Caption := 'Nickname:';
LNickname.Font.Color := clWindowText;
LNickname.Font.Height := -11;
LNickname.Font.Name := 'Courier New';
LNickname.Font.Style := [];
LNickname.ParentFont := False;
LMaxKills := TLabel.Create(GBGeneral);
LMaxKills.Parent := GBGeneral;
LMaxKills.Left := 23;
LMaxKills.Top := 180;
LMaxKills.Width := 70;
LMaxKills.Height := 14;
LMaxKills.Caption := 'Max Kills:';
LMaxKills.Font.Color := clWindowText;
LMaxKills.Font.Height := -11;
LMaxKills.Font.Name := 'Courier New';
LMaxKills.Font.Style := [];
LMaxKills.ParentFont := False;
LMinKills := TLabel.Create(GBGeneral);
LMinKills.Parent := GBGeneral;
LMinKills.Left := 23;
LMinKills.Top := 201;
LMinKills.Width := 70;
LMinKills.Height := 14;
LMinKills.Caption := 'Min Kills:';
LMinKills.Font.Color := clWindowText;
LMinKills.Font.Height := -11;
LMinKills.Font.Name := 'Courier New';
LMinKills.Font.Style := [];
LMinKills.ParentFont := False;
EUsername := TEdit.Create(GBGeneral);
EUsername.Parent := GBGeneral;
EUsername.Left := 111;
EUsername.Top := 29;
EUsername.Width := 90;
EUsername.Height := 22;
EUsername.Hint := 'Enter the username of your ranging account.';
EUsername.Font.Color := clWindowText;
EUsername.Font.Height := -11;
EUsername.Font.Name := 'Courier New';
EUsername.Font.Style := [];
EUsername.ParentFont := False;
EUsername.ParentShowHint := False;
EUsername.ShowHint := True;
EUsername.TabOrder := 5;
EUsername.Text := SettingValues[i];
i := i + 1;
EPassword := TEdit.Create(GBGeneral);
EPassword.Parent := GBGeneral;
EPassword.Left := 111;
EPassword.Top := 50;
EPassword.Width := 90;
EPassword.Height := 22;
EPassword.Hint := 'Enter the password or your ranging account.';
EPassword.Font.Color := clWindowText;
EPassword.Font.Height := -11;
EPassword.Font.Name := 'Courier New';
EPassword.Font.Style := [];
EPassword.ParentFont := False;
EPassword.ParentShowHint := False;
EPassword.ShowHint := True;
EPassword.TabOrder := 8;
EPassword.PasswordChar := '*';
EPassword.Text := SettingValues[i];
i := i + 1;
ENickname := TEdit.Create(GBGeneral);
ENickname.Parent := GBGeneral;
ENickname.Left := 111;
ENickname.Top := 71;
ENickname.Width := 90;
ENickname.Height := 22;
ENickname.Hint := 'Enter the nickname of your ranging account. This is usually three letters in the middle of your username. If left blank, the script will automatically create a proper nickname for you.';
ENickname.Font.Color := clWindowText;
ENickname.Font.Height := -11;
ENickname.Font.Name := 'Courier New';
ENickname.Font.Style := [];
ENickname.ParentFont := False;
ENickname.ParentShowHint := False;
ENickname.ShowHint := True;
ENickname.TabOrder := 0;
ENickname.Text := SettingValues[i];
i := i + 1;
EMouseSpeed := TEdit.Create(GBGeneral);
EMouseSpeed.Parent := GBGeneral;
EMouseSpeed.Left := 111;
EMouseSpeed.Top := 92;
EMouseSpeed.Width := 90;
EMouseSpeed.Height := 22;
EMouseSpeed.Hint := 'Enter the desired mouse speed (Lower = Faster, Higher = Slower). Anywhere from 5-15 is normal.';
EMouseSpeed.Font.Color := clWindowText;
EMouseSpeed.Font.Height := -11;
EMouseSpeed.Font.Name := 'Courier New';
EMouseSpeed.Font.Style := [];
EMouseSpeed.ParentFont := False;
EMouseSpeed.ParentShowHint := False;
EMouseSpeed.ShowHint := True;
EMouseSpeed.TabOrder := 1;
EMouseSpeed.Text := SettingValues[i];
i := i + 1;
CBBenMouse := TComboBox.Create(GBGeneral);
CBBenMouse.Parent := GBGeneral;
CBBenMouse.Left := 111;
CBBenMouse.Top := 113;
CBBenMouse.Width := 90;
CBBenMouse.Height := 22;
CBBenMouse.Hint := 'Choose True to use Ben Mouse or False to not use Ben Mouse. Ben Mouse is highly recommended to decrease detectability.';
CBBenMouse.Font.Color := clWindowText;
CBBenMouse.Font.Height := -11;
CBBenMouse.Font.Name := 'Courier New';
CBBenMouse.Font.Style := [];
CBBenMouse.ItemHeight := 14;
CBBenMouse.ItemIndex := 0;
CBBenMouse.ParentFont := False;
CBBenMouse.ParentShowHint := False;
CBBenMouse.ShowHint := True;
CBBenMouse.TabOrder := 2;
CBBenMouse.Text := SettingValues[i];
i := i + 1;
CBBenMouse.Items.Add('True');
CBBenMouse.Items.Add('False');
EMaxRuntime := TEdit.Create(GBGeneral);
EMaxRuntime.Parent := GBGeneral;
EMaxRuntime.Left := 111;
EMaxRuntime.Top := 134;
EMaxRuntime.Width := 90;
EMaxRuntime.Height := 22;
EMaxRuntime.Hint := 'Enter the maximum time in minutes you wish the script to run. *Note - this MUST be of greater value than the minimum runtime.';
EMaxRuntime.Font.Color := clWindowText;
EMaxRuntime.Font.Height := -11;
EMaxRuntime.Font.Name := 'Courier New';
EMaxRuntime.Font.Style := [];
EMaxRuntime.ParentFont := False;
EMaxRuntime.ParentShowHint := False;
EMaxRuntime.ShowHint := True;
EMaxRuntime.TabOrder := 3;
EMaxRuntime.Text := SettingValues[i];
i := i + 1;
EMinRuntime := TEdit.Create(GBGeneral);
EMinRuntime.Parent := GBGeneral;
EMinRuntime.Left := 111;
EMinRuntime.Top := 155;
EMinRuntime.Width := 90;
EMinRuntime.Height := 22;
EMinRuntime.Hint := 'Enter the maximum time in minutes you wish the script to run. *Note - this MUST be of greater value than the minimum runtime.';
EMinRuntime.Font.Color := clWindowText;
EMinRuntime.Font.Height := -11;
EMinRuntime.Font.Name := 'Courier New';
EMinRuntime.Font.Style := [];
EMinRuntime.ParentFont := False;
EMinRuntime.ParentShowHint := False;
EMinRuntime.ShowHint := True;
EMinRuntime.TabOrder := 4;
EMinRuntime.Text := SettingValues[i];
i := i + 1;
EMaxKills := TEdit.Create(GBGeneral);
EMaxKills.Parent := GBGeneral;
EMaxKills.Left := 111;
EMaxKills.Top := 176;
EMaxKills.Width := 90;
EMaxKills.Height := 22;
EMaxKills.Hint := 'Enter the maximum number of monster kills before ending the script. *Note - this MUST be of greater value than the minimum kills.';
EMaxKills.Font.Color := clWindowText;
EMaxKills.Font.Height := -11;
EMaxKills.Font.Name := 'Courier New';
EMaxKills.Font.Style := [];
EMaxKills.ParentFont := False;
EMaxKills.ParentShowHint := False;
EMaxKills.ShowHint := True;
EMaxKills.TabOrder := 6;
EMaxKills.Text := SettingValues[i];
i := i + 1;
EMinKills := TEdit.Create(GBGeneral);
EMinKills.Parent := GBGeneral;
EMinKills.Left := 111;
EMinKills.Top := 197;
EMinKills.Width := 90;
EMinKills.Height := 22;
EMinKills.Hint := 'Enter the minimum number of monsters you wish to kill before ending the script. *Note - this may cause the script to continue past the determined runtime if you have not accomplished the minimum number of kills.';
EMinKills.Font.Color := clWindowText;
EMinKills.Font.Height := -11;
EMinKills.Font.Name := 'Courier New';
EMinKills.Font.Style := [];
EMinKills.ParentFont := False;
EMinKills.ParentShowHint := False;
EMinKills.ShowHint := True;
EMinKills.TabOrder := 7;
EMinKills.Text := SettingValues[i];
i := i + 1;
BGHealth := TGroupBox.Create(frmDesign);
BGHealth.Parent := frmDesign;
BGHealth.Left := 0;
BGHealth.Top := 230;
BGHealth.Width := 274;
BGHealth.Height := 224;
BGHealth.Caption := 'Health Settings';
BGHealth.Color := clBtnFace;
BGHealth.Font.Color := clBlack;
BGHealth.Font.Height := -16;
BGHealth.Font.Name := 'Courier New';
BGHealth.Font.Style := [fsBold];
BGHealth.ParentColor := False;
BGHealth.ParentFont := False;
BGHealth.TabOrder := 1;
LRunAwayDir := TLabel.Create(BGHealth);
LRunAwayDir.Parent := BGHealth;
LRunAwayDir.Left := 23;
LRunAwayDir.Top := 54;
LRunAwayDir.Width := 133;
LRunAwayDir.Height := 14;
LRunAwayDir.Caption := 'Run-Away Direction:';
LRunAwayDir.Font.Color := clWindowText;
LRunAwayDir.Font.Height := -11;
LRunAwayDir.Font.Name := 'Courier New';
LRunAwayDir.Font.Style := [];
LRunAwayDir.ParentFont := False;
LMaxEatHP := TLabel.Create(BGHealth);
LMaxEatHP.Parent := BGHealth;
LMaxEatHP.Left := 23;
LMaxEatHP.Top := 33;
LMaxEatHP.Width := 77;
LMaxEatHP.Height := 14;
LMaxEatHP.Caption := 'Max Eat HP:';
LMaxEatHP.Color := clBtnFace;
LMaxEatHP.Font.Color := clBlack;
LMaxEatHP.Font.Height := -11;
LMaxEatHP.Font.Name := 'Courier New';
LMaxEatHP.Font.Style := [];
LMaxEatHP.ParentColor := False;
LMaxEatHP.ParentFont := False;
LMinEatHP := TLabel.Create(BGHealth);
LMinEatHP.Parent := BGHealth;
LMinEatHP.Left := 141;
LMinEatHP.Top := 33;
LMinEatHP.Width := 77;
LMinEatHP.Height := 14;
LMinEatHP.Caption := 'Min Eat HP:';
LMinEatHP.Color := clBtnFace;
LMinEatHP.Font.Color := clBlack;
LMinEatHP.Font.Height := -11;
LMinEatHP.Font.Name := 'Courier New';
LMinEatHP.Font.Style := [];
LMinEatHP.ParentColor := False;
LMinEatHP.ParentFont := False;
LFoods := TLabel.Create(BGHealth);
LFoods.Parent := BGHealth;
LFoods.Left := 23;
LFoods.Top := 75;
LFoods.Width := 91;
LFoods.Height := 14;
LFoods.Caption := 'Foods to Eat:';
LFoods.Font.Color := clBlack;
LFoods.Font.Height := -11;
LFoods.Font.Name := 'Courier New';
LFoods.Font.Style := [];
LFoods.ParentFont := False;
EMaxEatHP := TEdit.Create(BGHealth);
EMaxEatHP.Parent := BGHealth;
EMaxEatHP.Left := 104;
EMaxEatHP.Top := 29;
EMaxEatHP.Width := 21;
EMaxEatHP.Height := 22;
EMaxEatHP.Hint := 'Enter the maximum number of hitpoints you wish to start eating food.';
EMaxEatHP.Font.Color := clBlack;
EMaxEatHP.Font.Height := -11;
EMaxEatHP.Font.Name := 'Courier New';
EMaxEatHP.Font.Style := [];
EMaxEatHP.ParentFont := False;
EMaxEatHP.ParentShowHint := False;
EMaxEatHP.ShowHint := True;
EMaxEatHP.TabOrder := 1;
EMaxEatHP.Text := SettingValues[i];
i := i + 1;
EMinEatHP := TEdit.Create(BGHealth);
EMinEatHP.Parent := BGHealth;
EMinEatHP.Left := 222;
EMinEatHP.Top := 29;
EMinEatHP.Width := 21;
EMinEatHP.Height := 22;
EMinEatHP.Hint := 'Enter the number of hitpoints you wish to log out at.';
EMinEatHP.Font.Color := clBlack;
EMinEatHP.Font.Height := -11;
EMinEatHP.Font.Name := 'Courier New';
EMinEatHP.Font.Style := [];
EMinEatHP.ParentFont := False;
EMinEatHP.ParentShowHint := False;
EMinEatHP.ShowHint := True;
EMinEatHP.TabOrder := 2;
EMinEatHP.Text := SettingValues[i];
i := i + 1;
CBRunAwayDir := TComboBox.Create(BGHealth);
CBRunAwayDir.Parent := BGHealth;
CBRunAwayDir.Left := 160;
CBRunAwayDir.Top := 51;
CBRunAwayDir.Width := 57;
CBRunAwayDir.Height := 22;
CBRunAwayDir.Hint := 'Choose the direction to which you wish to run away if you have no food left and are below the minimum eat hitpoints.';
CBRunAwayDir.Font.Color := clBlack;
CBRunAwayDir.Font.Height := -11;
CBRunAwayDir.Font.Name := 'Courier New';
CBRunAwayDir.Font.Style := [];
CBRunAwayDir.ItemHeight := 14;
CBRunAwayDir.ItemIndex := 0;
CBRunAwayDir.ParentFont := False;
CBRunAwayDir.ParentShowHint := False;
CBRunAwayDir.ShowHint := True;
CBRunAwayDir.TabOrder := 0;
CBRunAwayDir.Text := SettingValues[i];
i := i + 1;
CBRunAwayDir.Items.Add('North');
CBRunAwayDir.Items.Add('South');
CBRunAwayDir.Items.Add('West');
CBRunAwayDir.Items.Add('East');
EFoodColor := TEdit.Create(BGHealth);
EFoodColor.Parent := BGHealth;
EFoodColor.Left := 119;
EFoodColor.Top := 72;
EFoodColor.Width := 70;
EFoodColor.Height := 22;
EFoodColor.Hint := 'Click on the Pick Color button (to the right) to get the color of any foods you want to eat or pick up which are not preset.';
EFoodColor.Font.Color := clBlack;
EFoodColor.Font.Height := -11;
EFoodColor.Font.Name := 'Courier New';
EFoodColor.Font.Style := [];
EFoodColor.ParentFont := False;
EFoodColor.ParentShowHint := False;
EFoodColor.ShowHint := True;
EFoodColor.TabOrder := 18;
EFoodColor.Text := SettingValues[i];
i := i + 1;
BFoodColor := TButton.Create(BGHealth);
BFoodColor.Parent := BGHealth;
BFoodColor.Left := 189;
BFoodColor.Top := 73;
BFoodColor.Width := 78;
BFoodColor.Height := 20;
BFoodColor.Hint := 'To pick a food color, click me then click on the food.';
BFoodColor.Caption := 'Pick Color';
BFoodColor.Font.Color := clBlack;
BFoodColor.Font.Height := -11;
BFoodColor.Font.Name := 'Courier New';
BFoodColor.Font.Style := [];
BFoodColor.ParentFont := False;
BFoodColor.ParentShowHint := False;
BFoodColor.ShowHint := True;
BFoodColor.TabOrder := 19;
BFoodColor.OnClick := @ClickPickFoodColor;
CBShrimp := TCheckBox.Create(BGHealth);
CBShrimp.Parent := BGHealth;
CBShrimp.Left := 39;
CBShrimp.Top := 96;
CBShrimp.Width := 97;
CBShrimp.Height := 17;
CBShrimp.Caption := 'Shrimp';
CBShrimp.Font.Color := clBlack;
CBShrimp.Font.Height := -11;
CBShrimp.Font.Name := 'Courier New';
CBShrimp.Font.Style := [];
CBShrimp.ParentFont := False;
CBShrimp.TabOrder := 3;
CBShrimp.Checked := StrToBool(SettingValues[i]);
i := i + 1;
CBSardine := TCheckBox.Create(BGHealth);
CBSardine.Parent := BGHealth;
CBSardine.Left := 125;
CBSardine.Top := 96;
CBSardine.Width := 97;
CBSardine.Height := 17;
CBSardine.Caption := 'Sardine';
CBSardine.Font.Color := clBlack;
CBSardine.Font.Height := -11;
CBSardine.Font.Name := 'Courier New';
CBSardine.Font.Style := [];
CBSardine.ParentFont := False;
CBSardine.TabOrder := 4;
CBSardine.Checked := StrToBool(SettingValues[i]);
i := i + 1;
CBHerring := TCheckBox.Create(BGHealth);
CBHerring.Parent := BGHealth;
CBHerring.Left := 198;
CBHerring.Top := 96;
CBHerring.Width := 97;
CBHerring.Height := 17;
CBHerring.Caption := 'Herring';
CBHerring.Font.Color := clBlack;
CBHerring.Font.Height := -11;
CBHerring.Font.Name := 'Courier New';
CBHerring.Font.Style := [];
CBHerring.ParentFont := False;
CBHerring.TabOrder := 5;
CBHerring.Checked := StrToBool(SettingValues[i]);
i := i + 1;
CBAnchovies := TCheckBox.Create(BGHealth);
CBAnchovies.Parent := BGHealth;
CBAnchovies.Left := 39;
CBAnchovies.Top := 117;
CBAnchovies.Width := 97;
CBAnchovies.Height := 17;
CBAnchovies.Caption := 'Anchovies';
CBAnchovies.Font.Color := clBlack;
CBAnchovies.Font.Height := -11;
CBAnchovies.Font.Name := 'Courier New';
CBAnchovies.Font.Style := [];
CBAnchovies.ParentFont := False;
CBAnchovies.TabOrder := 6;
CBAnchovies.Checked := StrToBool(SettingValues[i]);
i := i + 1;
CBTrout := TCheckBox.Create(BGHealth);
CBTrout.Parent := BGHealth;
CBTrout.Left := 125;
CBTrout.Top := 117;
CBTrout.Width := 97;
CBTrout.Height := 17;
CBTrout.Caption := 'Trout';
CBTrout.Font.Color := clBlack;
CBTrout.Font.Height := -11;
CBTrout.Font.Name := 'Courier New';
CBTrout.Font.Style := [];
CBTrout.ParentFont := False;
CBTrout.TabOrder := 7;
CBTrout.Checked := StrToBool(SettingValues[i]);
i := i + 1;
CBPike := TCheckBox.Create(BGHealth);
CBPike.Parent := BGHealth;
CBPike.Left := 198;
CBPike.Top := 117;
CBPike.Width := 97;
CBPike.Height := 17;
CBPike.Caption := 'Pike';
CBPike.Font.Color := clBlack;
CBPike.Font.Height := -11;
CBPike.Font.Name := 'Courier New';
CBPike.Font.Style := [];
CBPike.ParentFont := False;
CBPike.TabOrder := 8;
CBPike.Checked := StrToBool(SettingValues[i]);
i := i + 1;
CBSalmon := TCheckBox.Create(BGHealth);
CBSalmon.Parent := BGHealth;
CBSalmon.Left := 39;
CBSalmon.Top := 138;
CBSalmon.Width := 97;
CBSalmon.Height := 17;
CBSalmon.Caption := 'Salmon';
CBSalmon.Font.Color := clBlack;
CBSalmon.Font.Height := -11;
CBSalmon.Font.Name := 'Courier New';
CBSalmon.Font.Style := [];
CBSalmon.ParentFont := False;
CBSalmon.TabOrder := 9;
CBSalmon.Checked := StrToBool(SettingValues[i]);
i := i + 1;
CBTuna := TCheckBox.Create(BGHealth);
CBTuna.Parent := BGHealth;
CBTuna.Left := 125;
CBTuna.Top := 138;
CBTuna.Width := 97;
CBTuna.Height := 17;
CBTuna.Caption := 'Tuna';
CBTuna.Font.Color := clBlack;
CBTuna.Font.Height := -11;
CBTuna.Font.Name := 'Courier New';
CBTuna.Font.Style := [];
CBTuna.ParentFont := False;
CBTuna.TabOrder := 10;
CBTuna.Checked := StrToBool(SettingValues[i]);
i := i + 1;
CBLobster := TCheckBox.Create(BGHealth);
CBLobster.Parent := BGHealth;
CBLobster.Left := 198;
CBLobster.Top := 138;
CBLobster.Width := 97;
CBLobster.Height := 17;
CBLobster.Caption := 'Lobster';
CBLobster.Font.Color := clBlack;
CBLobster.Font.Height := -11;
CBLobster.Font.Name := 'Courier New';
CBLobster.Font.Style := [];
CBLobster.ParentFont := False;
CBLobster.TabOrder := 11;
CBLobster.Checked := StrToBool(SettingValues[i]);
i := i + 1;
CBSwordfish := TCheckBox.Create(BGHealth);
CBSwordfish.Parent := BGHealth;
CBSwordfish.Left := 39;
CBSwordfish.Top := 159;
CBSwordfish.Width := 97;
CBSwordfish.Height := 17;
CBSwordfish.Caption := 'Swordfish';
CBSwordfish.Font.Color := clBlack;
CBSwordfish.Font.Height := -11;
CBSwordfish.Font.Name := 'Courier New';
CBSwordfish.Font.Style := [];
CBSwordfish.ParentFont := False;
CBSwordfish.TabOrder := 12;
CBSwordfish.Checked := StrToBool(SettingValues[i]);
i := i + 1;
CBCookedChicken := TCheckBox.Create(BGHealth);
CBCookedChicken.Parent := BGHealth;
CBCookedChicken.Left := 39;
CBCookedChicken.Top := 180;
CBCookedChicken.Width := 124;
CBCookedChicken.Height := 17;
CBCookedChicken.Caption := 'Cooked Chicken';
CBCookedChicken.Font.Color := clBlack;
CBCookedChicken.Font.Height := -11;
CBCookedChicken.Font.Name := 'Courier New';
CBCookedChicken.Font.Style := [];
CBCookedChicken.ParentFont := False;
CBCookedChicken.TabOrder := 13;
CBCookedChicken.Checked := StrToBool(SettingValues[i]);
i := i + 1;
CBCookedMeat := TCheckBox.Create(BGHealth);
CBCookedMeat.Parent := BGHealth;
CBCookedMeat.Left := 160;
CBCookedMeat.Top := 180;
CBCookedMeat.Width := 97;
CBCookedMeat.Height := 17;
CBCookedMeat.Caption := 'Cooked Meat';
CBCookedMeat.Font.Color := clBlack;
CBCookedMeat.Font.Height := -11;
CBCookedMeat.Font.Name := 'Courier New';
CBCookedMeat.Font.Style := [];
CBCookedMeat.ParentFont := False;
CBCookedMeat.TabOrder := 14;
CBCookedMeat.Checked := StrToBool(SettingValues[i]);
i := i + 1;
CBBread := TCheckBox.Create(BGHealth);
CBBread.Parent := BGHealth;
CBBread.Left := 39;
CBBread.Top := 201;
CBBread.Width := 97;
CBBread.Height := 17;
CBBread.Caption := 'Bread';
CBBread.Font.Color := clBlack;
CBBread.Font.Height := -11;
CBBread.Font.Name := 'Courier New';
CBBread.Font.Style := [];
CBBread.ParentFont := False;
CBBread.TabOrder := 15;
CBBread.Checked := StrToBool(SettingValues[i]);
i := i + 1;
CBKebab := TCheckBox.Create(BGHealth);
CBKebab.Parent := BGHealth;
CBKebab.Left := 97;
CBKebab.Top := 201;
CBKebab.Width := 97;
CBKebab.Height := 17;
CBKebab.Caption := 'Kebab';
CBKebab.Font.Color := clBlack;
CBKebab.Font.Height := -11;
CBKebab.Font.Name := 'Courier New';
CBKebab.Font.Style := [];
CBKebab.ParentFont := False;
CBKebab.TabOrder := 16;
CBKebab.Checked := StrToBool(SettingValues[i]);
i := i + 1;
CBSpinachRoll := TCheckBox.Create(BGHealth);
CBSpinachRoll.Parent := BGHealth;
CBSpinachRoll.Left := 154;
CBSpinachRoll.Top := 201;
CBSpinachRoll.Width := 105;
CBSpinachRoll.Height := 17;
CBSpinachRoll.Caption := 'Spinach Roll';
CBSpinachRoll.Font.Color := clBlack;
CBSpinachRoll.Font.Height := -11;
CBSpinachRoll.Font.Name := 'Courier New';
CBSpinachRoll.Font.Style := [];
CBSpinachRoll.ParentFont := False;
CBSpinachRoll.TabOrder := 17;
CBSpinachRoll.Checked := StrToBool(SettingValues[i]);
i := i + 1;
GBFight := TGroupBox.Create(frmDesign); // fight settings
GBFight.Parent := frmDesign;
GBFight.Left := 213;
GBFight.Top := 0;
GBFight.Width := 348;
GBFight.Height := 229;
GBFight.Caption := 'Fight Settings';
GBFight.Font.Color := clWindowText;
GBFight.Font.Height := -16;
GBFight.Font.Name := 'Courier New';
GBFight.Font.Style := [fsBold];
GBFight.ParentFont := False;
GBFight.TabOrder := 2;
LFightMode := TLabel.Create(GBFight);
LFightMode.Parent := GBFight;
LFightMode.Left := 23;
LFightMode.Top := 33;
LFightMode.Width := 77;
LFightMode.Height := 14;
LFightMode.Caption := 'Fight Mode:';
LFightMode.Font.Color := clWindowText;
LFightMode.Font.Height := -11;
LFightMode.Font.Name := 'Courier New';
LFightMode.Font.Style := [];
LFightMode.ParentFont := False;
LRightClickMonster := TLabel.Create(GBFight);
LRightClickMonster.Parent := GBFight;
LRightClickMonster.Left := 23;
LRightClickMonster.Top := 54;
LRightClickMonster.Width := 133;
LRightClickMonster.Height := 14;
LRightClickMonster.Caption := 'Right-Click Attack:';
LRightClickMonster.Font.Color := clWindowText;
LRightClickMonster.Font.Height := -11;
LRightClickMonster.Font.Name := 'Courier New';
LRightClickMonster.Font.Style := [];
LRightClickMonster.ParentFont := False;
LMaxFightTime := TLabel.Create(GBFight);
LMaxFightTime.Parent := GBFight;
LMaxFightTime.Left := 23;
LMaxFightTime.Top := 75;
LMaxFightTime.Width := 133;
LMaxFightTime.Height := 14;
LMaxFightTime.Caption := 'Max Time per Fight:';
LMaxFightTime.Font.Color := clWindowText;
LMaxFightTime.Font.Height := -11;
LMaxFightTime.Font.Name := 'Courier New';
LMaxFightTime.Font.Style := [];
LMaxFightTime.ParentFont := False;
LMinFightTime := TLabel.Create(GBFight);
LMinFightTime.Parent := GBFight;
LMinFightTime.Left := 23;
LMinFightTime.Top := 96;
LMinFightTime.Width := 168;
LMinFightTime.Height := 14;
LMinFightTime.Caption := 'Max Time between Fights:';
LMinFightTime.Font.Color := clWindowText;
LMinFightTime.Font.Height := -11;
LMinFightTime.Font.Name := 'Courier New';
LMinFightTime.Font.Style := [];
LMinFightTime.ParentFont := False;
LMonsterColor1 := TLabel.Create(GBFight);
LMonsterColor1.Parent := GBFight;
LMonsterColor1.Left := 23;
LMonsterColor1.Top := 117;
LMonsterColor1.Width := 112;
LMonsterColor1.Height := 14;
LMonsterColor1.Caption := 'Monster Color 1:';
LMonsterColor1.Font.Color := clWindowText;
LMonsterColor1.Font.Height := -11;
LMonsterColor1.Font.Name := 'Courier New';
LMonsterColor1.Font.Style := [];
LMonsterColor1.ParentFont := False;
LMonsterColor2 := TLabel.Create(GBFight);
LMonsterColor2.Parent := GBFight;
LMonsterColor2.Left := 23;
LMonsterColor2.Top := 137;
LMonsterColor2.Width := 112;
LMonsterColor2.Height := 14;
LMonsterColor2.Caption := 'Monster Color 2:';
LMonsterColor2.Font.Color := clWindowText;
LMonsterColor2.Font.Height := -11;
LMonsterColor2.Font.Name := 'Courier New';
LMonsterColor2.Font.Style := [];
LMonsterColor2.ParentFont := False;
LMonsterColor3 := TLabel.Create(GBFight);
LMonsterColor3.Parent := GBFight;
LMonsterColor3.Left := 23;
LMonsterColor3.Top := 158;
LMonsterColor3.Width := 112;
LMonsterColor3.Height := 14;
LMonsterColor3.Caption := 'Monster Color 3:';
LMonsterColor3.Font.Color := clWindowText;
LMonsterColor3.Font.Height := -11;
LMonsterColor3.Font.Name := 'Courier New';
LMonsterColor3.Font.Style := [];
LMonsterColor3.ParentFont := False;
LMonsterColorTolerance := TLabel.Create(GBFight);
LMonsterColorTolerance.Parent := GBFight;
LMonsterColorTolerance.Left := 23;
LMonsterColorTolerance.Top := 179;
LMonsterColorTolerance.Width := 126;
LMonsterColorTolerance.Height := 14;
LMonsterColorTolerance.Caption := 'Monster Tolerance:';
LMonsterColorTolerance.Font.Color := clWindowText;
LMonsterColorTolerance.Font.Height := -11;
LMonsterColorTolerance.Font.Name := 'Courier New';
LMonsterColorTolerance.Font.Style := [];
LMonsterColorTolerance.ParentFont := False;
CBFightMode := TComboBox.Create(GBFight);
CBFightMode.Parent := GBFight;
CBFightMode.Left := 196;
CBFightMode.Top := 30;
CBFightMode.Width := 86;
CBFightMode.Height := 22;
CBFightMode.Hint := 'Choose the desired fight mode.';
CBFightMode.Font.Color := clWindowText;
CBFightMode.Font.Height := -11;
CBFightMode.Font.Name := 'Courier New';
CBFightMode.Font.Style := [];
CBFightMode.ItemHeight := 14;
CBFightMode.ItemIndex := 0;
CBFightMode.ParentFont := False;
CBFightMode.ParentShowHint := False;
CBFightMode.ShowHint := True;
CBFightMode.TabOrder := 0;
CBFightMode.Text := SettingValues[i];
i := i + 1;
CBFightMode.Items.Add('Accurate');
CBFightMode.Items.Add('Rapid');
CBFightMode.Items.Add('Longrange');
CBRightClickMonster := TComboBox.Create(GBFight);
CBRightClickMonster.Parent := GBFight;
CBRightClickMonster.Left := 196;
CBRightClickMonster.Top := 50;
CBRightClickMonster.Width := 86;
CBRightClickMonster.Height := 22;
CBRightClickMonster.Hint := 'Choose True if the monster you are training on has a higher combat level than your combat level. Training on a higher level monster is not recommended, but still supported.';
CBRightClickMonster.Font.Color := clWindowText;
CBRightClickMonster.Font.Height := -11;
CBRightClickMonster.Font.Name := 'Courier New';
CBRightClickMonster.Font.Style := [];
CBRightClickMonster.ItemHeight := 14;
CBRightClickMonster.ItemIndex := 1;
CBRightClickMonster.ParentFont := False;
CBRightClickMonster.ParentShowHint := False;
CBRightClickMonster.ShowHint := True;
CBRightClickMonster.TabOrder := 1;
CBRightClickMonster.Text := SettingValues[i];
i := i + 1;
CBRightClickMonster.Items.Add('True');
CBRightClickMonster.Items.Add('False');
EMaxFightTime := TEdit.Create(GBFight);
EMaxFightTime.Parent := GBFight;
EMaxFightTime.Left := 196;
EMaxFightTime.Top := 71;
EMaxFightTime.Width := 86;
EMaxFightTime.Height := 22;
EMaxFightTime.Hint := 'Enter the maximum number of seconds per fight until assuming there is a swarm attack and running away.';
EMaxFightTime.Font.Color := clWindowText;
EMaxFightTime.Font.Height := -11;
EMaxFightTime.Font.Name := 'Courier New';
EMaxFightTime.Font.Style := [];
EMaxFightTime.ParentFont := False;
EMaxFightTime.ParentShowHint := False;
EMaxFightTime.ShowHint := True;
EMaxFightTime.TabOrder := 2;
EMaxFightTime.Text := SettingValues[i];
i := i + 1;
EMinFightTime := TEdit.Create(GBFight);
EMinFightTime.Parent := GBFight;
EMinFightTime.Left := 196;
EMinFightTime.Top := 92;
EMinFightTime.Width := 86;
EMinFightTime.Height := 22;
EMinFightTime.Hint := 'Enter the minimum number of seconds between fights before assuming you are lost and logging out.';
EMinFightTime.Font.Color := clWindowText;
EMinFightTime.Font.Height := -11;
EMinFightTime.Font.Name := 'Courier New';
EMinFightTime.Font.Style := [];
EMinFightTime.ParentFont := False;
EMinFightTime.ParentShowHint := False;
EMinFightTime.ShowHint := True;
EMinFightTime.TabOrder := 3;
EMinFightTime.Text := SettingValues[i];
i := i + 1;
EMonsterColor1 := TEdit.Create(GBFight);
EMonsterColor1.Parent := GBFight;
EMonsterColor1.Left := 139;
EMonsterColor1.Top := 113;
EMonsterColor1.Width := 65;
EMonsterColor1.Height := 22;
EMonsterColor1.Hint := 'Click on the Pick Color button (to the right) and click on the monster you wish to kill or type in the monster color.'
EMonsterColor1.Font.Color := clWindowText;
EMonsterColor1.Font.Height := -11;
EMonsterColor1.Font.Name := 'Courier New';
EMonsterColor1.Font.Style := [];
EMonsterColor1.ParentFont := False;
EMonsterColor1.ParentShowHint := False;
EMonsterColor1.ShowHint := True;
EMonsterColor1.TabOrder := 4;
EMonsterColor1.Text := SettingValues[i];
i := i + 1;
EMonsterColor2 := TEdit.Create(GBFight);
EMonsterColor2.Parent := GBFight;
EMonsterColor2.Left := 139;
EMonsterColor2.Top := 133;
EMonsterColor2.Width := 65;
EMonsterColor2.Height := 22;
EMonsterColor2.Hint := 'Click on the Pick Color button (to the right) and click on the monster you wish to kill or type in the monster color.';
EMonsterColor2.Font.Color := clWindowText;
EMonsterColor2.Font.Height := -11;
EMonsterColor2.Font.Name := 'Courier New';
EMonsterColor2.Font.Style := [];
EMonsterColor2.ParentFont := False;
EMonsterColor2.ParentShowHint := False;
EMonsterColor2.ShowHint := True;
EMonsterColor2.TabOrder := 5;
EMonsterColor2.Text := SettingValues[i];
i := i + 1;
EMonsterColor3 := TEdit.Create(GBFight);
EMonsterColor3.Parent := GBFight;
EMonsterColor3.Left := 139;
EMonsterColor3.Top := 154;
EMonsterColor3.Width := 65;
EMonsterColor3.Height := 22;
EMonsterColor3.Hint := 'Click on the Pick Color button (to the right) and click on the monster you wish to kill or type in the monster color.';
EMonsterColor3.Font.Color := clWindowText;
EMonsterColor3.Font.Height := -11;
EMonsterColor3.Font.Name := 'Courier New';
EMonsterColor3.Font.Style := [];
EMonsterColor3.ParentFont := False;
EMonsterColor3.ParentShowHint := False;
EMonsterColor3.ShowHint := True;
EMonsterColor3.TabOrder := 6;
EMonsterColor3.Text := SettingValues[i];
i := i + 1;
BMonsterColor1Pick := TButton.Create(GBFight);
BMonsterColor1Pick.Parent := GBFight;
BMonsterColor1Pick.Left := 204;
BMonsterColor1Pick.Top := 114;
BMonsterColor1Pick.Width := 78;
BMonsterColor1Pick.Height := 20;
BMonsterColor1Pick.Hint := 'Click me to pick a monster color, then move your mouse until you see a color that is special to the monster and click.';
BMonsterColor1Pick.Caption := 'Pick Color';
BMonsterColor1Pick.Font.Color := clWindowText;
BMonsterColor1Pick.Font.Height := -11;
BMonsterColor1Pick.Font.Name := 'Courier New';
BMonsterColor1Pick.Font.Style := [];
BMonsterColor1Pick.ParentFont := False;
BMonsterColor1Pick.ParentShowHint := False;
BMonsterColor1Pick.ShowHint := True;
BMonsterColor1Pick.TabOrder := 7;
BMonsterColor1Pick.OnClick := @ClickPickMColor1;
BMonsterColor2Pick := TButton.Create(GBFight);
BMonsterColor2Pick.Parent := GBFight;
BMonsterColor2Pick.Left := 204;
BMonsterColor2Pick.Top := 134;
BMonsterColor2Pick.Width := 78;
BMonsterColor2Pick.Height := 20;
BMonsterColor2Pick.Hint := 'Click me to pick a monster color, then move your mouse until you see a color that is special to the monster and click.';
BMonsterColor2Pick.Caption := 'Pick Color';
BMonsterColor2Pick.Font.Color := clWindowText;
BMonsterColor2Pick.Font.Height := -11;
BMonsterColor2Pick.Font.Name := 'Courier New';
BMonsterColor2Pick.Font.Style := [];
BMonsterColor2Pick.ParentFont := False;
BMonsterColor2Pick.ParentShowHint := False;
BMonsterColor2Pick.ShowHint := True;
BMonsterColor2Pick.TabOrder := 8;
BMonsterColor2Pick.OnClick := @ClickPickMColor2;
BMonsterColor3Pick := TButton.Create(GBFight);
BMonsterColor3Pick.Parent := GBFight;
BMonsterColor3Pick.Left := 204;
BMonsterColor3Pick.Top := 155;
BMonsterColor3Pick.Width := 78;
BMonsterColor3Pick.Height := 20;
BMonsterColor3Pick.Hint := 'Click me to pick a monster color, then move your mouse until you see a color that is special to the monster and click.';
BMonsterColor3Pick.Caption := 'Pick Color';
BMonsterColor3Pick.Font.Color := clWindowText;
BMonsterColor3Pick.Font.Height := -11;
BMonsterColor3Pick.Font.Name := 'Courier New';
BMonsterColor3Pick.Font.Style := [];
BMonsterColor3Pick.ParentFont := False;
BMonsterColor3Pick.ParentShowHint := False;
BMonsterColor3Pick.ShowHint := True;
BMonsterColor3Pick.TabOrder := 9;
BMonsterColor3Pick.OnClick := @ClickPickMColor3;
EMonsterColorTolerance := TEdit.Create(GBFight);
EMonsterColorTolerance.Parent := GBFight;
EMonsterColorTolerance.Left := 151;
EMonsterColorTolerance.Top := 175;
EMonsterColorTolerance.Width := 53;
EMonsterColorTolerance.Height := 22;
EMonsterColorTolerance.Hint := 'Enter the flexibility for monster colors for finding the monster.';
EMonsterColorTolerance.Font.Color := clWindowText;
EMonsterColorTolerance.Font.Height := -11;
EMonsterColorTolerance.Font.Name := 'Courier New';
EMonsterColorTolerance.Font.Style := [];
EMonsterColorTolerance.ParentFont := False;
EMonsterColorTolerance.ParentShowHint := False;
EMonsterColorTolerance.ShowHint := True;
EMonsterColorTolerance.TabOrder := 10;
EMonsterColorTolerance.Text := SettingValues[i];
i := i + 1;
GBItem := TGroupBox.Create(frmDesign);
GBItem.Parent := frmDesign;
GBItem.Left := 274;
GBItem.Top := 230;
GBItem.Width := 287;
GBItem.Height := 287;
GBItem.Caption := 'Item Settings';
GBItem.Font.Color := clWindowText;
GBItem.Font.Height := -16;
GBItem.Font.Name := 'Courier New';
GBItem.Font.Style := [fsBold];
GBItem.ParentFont := False;
GBItem.TabOrder := 5;
LPickArrows := TLabel.Create(GBItem);
LPickArrows.Parent := GBItem;
LPickArrows.Left := 23;
LPickArrows.Top := 33;
LPickArrows.Width := 105;
LPickArrows.Height := 14;
LPickArrows.Caption := 'Pick Up Arrows:';
LPickArrows.Font.Color := clWindowText;
LPickArrows.Font.Height := -11;
LPickArrows.Font.Name := 'Courier New';
LPickArrows.Font.Style := [];
LPickArrows.ParentFont := False;
LArrowName := TLabel.Create(GBItem);
LArrowName.Parent := GBItem;
LArrowName.Left := 23;
LArrowName.Top := 54;
LArrowName.Width := 77;
LArrowName.Height := 14;
LArrowName.Caption := 'Arrow Name:';
LArrowName.Font.Color := clWindowText;
LArrowName.Font.Height := -11;
LArrowName.Font.Name := 'Courier New';
LArrowName.Font.Style := [];
LArrowName.ParentFont := False;
LLoadsBeforeEquipMax := TLabel.Create(GBItem);
LLoadsBeforeEquipMax.Parent := GBItem;
LLoadsBeforeEquipMax.Left := 23;
LLoadsBeforeEquipMax.Top := 75;
LLoadsBeforeEquipMax.Width := 161;
LLoadsBeforeEquipMax.Height := 14;
LLoadsBeforeEquipMax.Caption := 'Max Loads before Equip:';
LLoadsBeforeEquipMax.Font.Color := clWindowText;
LLoadsBeforeEquipMax.Font.Height := -11;
LLoadsBeforeEquipMax.Font.Name := 'Courier New';
LLoadsBeforeEquipMax.Font.Style := [];
LLoadsBeforeEquipMax.ParentFont := False;
LLoadsBeforeEquipMin := TLabel.Create(GBItem);
LLoadsBeforeEquipMin.Parent := GBItem;
LLoadsBeforeEquipMin.Left := 23;
LLoadsBeforeEquipMin.Top := 96;
LLoadsBeforeEquipMin.Width := 161;
LLoadsBeforeEquipMin.Height := 14;
LLoadsBeforeEquipMin.Caption := 'Min Loads before Equip:';
LLoadsBeforeEquipMin.Font.Color := clWindowText;
LLoadsBeforeEquipMin.Font.Height := -11;
LLoadsBeforeEquipMin.Font.Name := 'Courier New';
LLoadsBeforeEquipMin.Font.Style := [];
LLoadsBeforeEquipMin.ParentFont := False;
LPickItems := TLabel.Create(GBItem);
LPickItems.Parent := GBItem;
LPickItems.Left := 23;
LPickItems.Top := 201;
LPickItems.Width := 98;
LPickItems.Height := 14;
LPickItems.Caption := 'Pick Up Items:';
LPickItems.Font.Color := clWindowText;
LPickItems.Font.Height := -11;
LPickItems.Font.Name := 'Courier New';
LPickItems.Font.Style := [];
LPickItems.ParentFont := False;
LArrowTolerance := TLabel.Create(GBItem);
LArrowTolerance.Parent := GBItem;
LArrowTolerance.Left := 23;
LArrowTolerance.Top := 180;
LArrowTolerance.Width := 112;
LArrowTolerance.Height := 14;
LArrowTolerance.Caption := 'Arrow Tolerance:';
LArrowTolerance.Font.Color := clWindowText;
LArrowTolerance.Font.Height := -11;
LArrowTolerance.Font.Name := 'Courier New';
LArrowTolerance.Font.Style := [];
LArrowTolerance.ParentFont := False;
LArrowHead := TLabel.Create(GBItem);
LArrowHead.Parent := GBItem;
LArrowHead.Left := 23;
LArrowHead.Top := 117;
LArrowHead.Width := 119;
LArrowHead.Height := 14;
LArrowHead.Caption := 'Arrow Head Color:';
LArrowHead.Font.Color := clWindowText;
LArrowHead.Font.Height := -11;
LArrowHead.Font.Name := 'Courier New';
LArrowHead.Font.Style := [];
LArrowHead.ParentFont := False;
LArrowMid := TLabel.Create(GBItem);
LArrowMid.Parent := GBItem;
LArrowMid.Left := 23;
LArrowMid.Top := 138;
LArrowMid.Width := 112;
LArrowMid.Height := 14;
LArrowMid.Caption := 'Arrow Mid Color:';
LArrowMid.Font.Color := clWindowText;
LArrowMid.Font.Height := -11;
LArrowMid.Font.Name := 'Courier New';
LArrowMid.Font.Style := [];
LArrowMid.ParentFont := False;
LArrowTail := TLabel.Create(GBItem);
LArrowTail.Parent := GBItem;
LArrowTail.Left := 23;
LArrowTail.Top := 159;
LArrowTail.Width := 119;
LArrowTail.Height := 14;
LArrowTail.Caption := 'Arrow Tail Color:';
LArrowTail.Font.Color := clWindowText;
LArrowTail.Font.Height := -11;
LArrowTail.Font.Name := 'Courier New';
LArrowTail.Font.Style := [];
LArrowTail.ParentFont := False;
LItemName := TLabel.Create(GBItem);
LItemName.Parent := GBItem;
LItemName.Left := 23;
LItemName.Top := 222;
LItemName.Width := 70;
LItemName.Height := 14;
LItemName.Caption := 'Item Name:';
LItemName.Font.Color := clWindowText;
LItemName.Font.Height := -11;
LItemName.Font.Name := 'Courier New';
LItemName.Font.Style := [];
LItemName.ParentFont := False;
LItemColor := TLabel.Create(GBItem);
LItemColor.Parent := GBItem;
LItemColor.Left := 23;
LItemColor.Top := 243;
LItemColor.Width := 77;
LItemColor.Height := 14;
LItemColor.Caption := 'Item Color:';
LItemColor.Font.Color := clWindowText;
LItemColor.Font.Height := -11;
LItemColor.Font.Name := 'Courier New';
LItemColor.Font.Style := [];
LItemColor.ParentFont := False;
LItemTolerance := TLabel.Create(GBItem);
LItemTolerance.Parent := GBItem;
LItemTolerance.Left := 23;
LItemTolerance.Top := 264;
LItemTolerance.Width := 105;
LItemTolerance.Height := 14;
LItemTolerance.Caption := 'Item Tolerance:';
LItemTolerance.Font.Color := clWindowText;
LItemTolerance.Font.Height := -11;
LItemTolerance.Font.Name := 'Courier New';
LItemTolerance.Font.Style := [];
LItemTolerance.ParentFont := False;
CBPickArrows := TComboBox.Create(GBItem);
CBPickArrows.Parent := GBItem;
CBPickArrows.Left := 131;
CBPickArrows.Top := 29;
CBPickArrows.Width := 73;
CBPickArrows.Height := 22;
CBPickArrows.Hint := 'Choose True to pick up arrows or False to not pick up arrows.';
CBPickArrows.Font.Color := clWindowText;
CBPickArrows.Font.Height := -11;
CBPickArrows.Font.Name := 'Courier New';
CBPickArrows.Font.Style := [];
CBPickArrows.ItemHeight := 14;
CBPickArrows.ItemIndex := 0;
CBPickArrows.ParentFont := False;
CBPickArrows.ParentShowHint := False;
CBPickArrows.ShowHint := True;
CBPickArrows.TabOrder := 1;
CBPickArrows.Text := SettingValues[i];
i := i + 1;
CBPickArrows.Items.Add('True');
CBPickArrows.Items.Add('False');
CBArrowName := TComboBox.Create(GBItem);
CBArrowName.Parent := GBItem;
CBArrowName.Left := 131;
CBArrowName.Top := 50;
CBArrowName.Width := 73;
CBArrowName.Height := 22;
CBArrowName.Hint := 'Choose the arrow type you are using.';
CBArrowName.Font.Color := clWindowText;
CBArrowName.Font.Height := -11;
CBArrowName.Font.Name := 'Courier New';
CBArrowName.Font.Style := [];
CBArrowName.ItemHeight := 14;
CBArrowName.ItemIndex := 0;
CBArrowName.ParentFont := False;
CBArrowName.ParentShowHint := False;
CBArrowName.ShowHint := True;
CBArrowName.TabOrder := 0;
CBArrowName.Text := SettingValues[i];
i := i + 1;
CBArrowName.Items.Add('Bronze');
CBArrowName.Items.Add('Iron');
CBArrowName.Items.Add('Steel');
CBArrowName.Items.Add('Mithril');
CBArrowName.Items.Add('Adamant');
ELoadsBeforeEquipMax := TEdit.Create(GBItem);
ELoadsBeforeEquipMax.Parent := GBItem;
ELoadsBeforeEquipMax.Left := 189;
ELoadsBeforeEquipMax.Top := 71;
ELoadsBeforeEquipMax.Width := 15;
ELoadsBeforeEquipMax.Height := 22;
ELoadsBeforeEquipMax.Hint := 'Enter the maximum number of arrow loads before equipping the arrows. *Note - this MUST be of greater value than the minimum loads before equip.'
ELoadsBeforeEquipMax.Font.Color := clWindowText;
ELoadsBeforeEquipMax.Font.Height := -11;
ELoadsBeforeEquipMax.Font.Name := 'Courier New';
ELoadsBeforeEquipMax.Font.Style := [];
ELoadsBeforeEquipMax.ParentFont := False;
ELoadsBeforeEquipMax.ParentShowHint := False;
ELoadsBeforeEquipMax.ShowHint := True;
ELoadsBeforeEquipMax.TabOrder := 2;
ELoadsBeforeEquipMax.Text := SettingValues[i];
i := i + 1;
ELoadsBeforeEquipMin := TEdit.Create(GBItem);
ELoadsBeforeEquipMin.Parent := GBItem;
ELoadsBeforeEquipMin.Left := 189;
ELoadsBeforeEquipMin.Top := 92;
ELoadsBeforeEquipMin.Width := 15;
ELoadsBeforeEquipMin.Height := 22;
ELoadsBeforeEquipMin.Hint := 'Enter the minimum number of arrow loads before equipping the arrows. *Note - this MUST be of lesser value than the max loads before equip.';
ELoadsBeforeEquipMin.Font.Color := clWindowText;
ELoadsBeforeEquipMin.Font.Height := -11;
ELoadsBeforeEquipMin.Font.Name := 'Courier New';
ELoadsBeforeEquipMin.Font.Style := [];
ELoadsBeforeEquipMin.ParentFont := False;
ELoadsBeforeEquipMin.ParentShowHint := False;
ELoadsBeforeEquipMin.ShowHint := True;
ELoadsBeforeEquipMin.TabOrder := 3;
ELoadsBeforeEquipMin.Text := SettingValues[i];
i := i + 1;
EArrowHead := TEdit.Create(GBItem);
EArrowHead.Parent := GBItem;
EArrowHead.Left := 145;
EArrowHead.Top := 113;
EArrowHead.Width := 59;
EArrowHead.Height := 22;
EArrowHead.Hint :='Enter 0 to auto-color the arrow head, -1 to not look for the arrow head, or click the Pick Color button (to the right) to manually choose the color.';
EArrowHead.Font.Color := clWindowText;
EArrowHead.Font.Height := -11;
EArrowHead.Font.Name := 'Courier New';
EArrowHead.Font.Style := [];
EArrowHead.ParentFont := False;
EArrowHead.ParentShowHint := False;
EArrowHead.ShowHint := True;
EArrowHead.TabOrder := 4;
EArrowHead.Text := SettingValues[i];
i := i + 1;
BArrowHead := TButton.Create(GBItem);
BArrowHead.Parent := GBItem;
BArrowHead.Left := 204;
BArrowHead.Top := 114;
BArrowHead.Width := 78;
BArrowHead.Height := 20;
BArrowHead.Hint := 'To pick the arrow head color, click me then click on the arrow head.';
BArrowHead.Caption := 'Pick Color';
BArrowHead.Font.Color := clWindowText;
BArrowHead.Font.Height := -11;
BArrowHead.Font.Name := 'Courier New';
BArrowHead.Font.Style := [];
BArrowHead.ParentFont := False;
BArrowHead.ParentShowHint := False;
BArrowHead.ShowHint := True;
BArrowHead.TabOrder := 5;
BArrowHead.OnClick := @ClickPickArrowHColor;
EArrowMid := TEdit.Create(GBItem);
EArrowMid.Parent := GBItem;
EArrowMid.Left := 145;
EArrowMid.Top := 134;
EArrowMid.Width := 59;
EArrowMid.Height := 22;
EArrowMid.Hint := 'Enter 0 to auto-color the arrow mid, -1 to not look for the arrow mid, or click the Pick Color button (to the right) to manually choose the color.';
EArrowMid.Font.Color := clWindowText;
EArrowMid.Font.Height := -11;
EArrowMid.Font.Name := 'Courier New';
EArrowMid.Font.Style := [];
EArrowMid.ParentFont := False;
EArrowMid.ParentShowHint := False;
EArrowMid.ShowHint := True;
EArrowMid.TabOrder := 6;
EArrowMid.Text := SettingValues[i];
i := i + 1;
EArrowTail := TEdit.Create(GBItem);
EArrowTail.Parent := GBItem;
EArrowTail.Left := 145;
EArrowTail.Top := 155;
EArrowTail.Width := 59;
EArrowTail.Height := 22;
EArrowTail.Hint := 'Enter 0 to auto-color the arrow tail, -1 to not look for the arrow tail, or click the Pick Color button (to the right) to manually choose the color.';
EArrowTail.Font.Color := clWindowText;
EArrowTail.Font.Height := -11;
EArrowTail.Font.Name := 'Courier New';
EArrowTail.Font.Style := [];
EArrowTail.ParentFont := False;
EArrowTail.ParentShowHint := False;
EArrowTail.ShowHint := True;
EArrowTail.TabOrder := 7;
EArrowTail.Text := SettingValues[i];
i := i + 1;
EArrowTolerance := TEdit.Create(GBItem);
EArrowTolerance.Parent := GBItem;
EArrowTolerance.Left := 145;
EArrowTolerance.Top := 176;
EArrowTolerance.Width := 59;
EArrowTolerance.Height := 22;
EArrowTolerance.Hint := 'Enter the flexibility of the arrow colors for finding arrows.';
EArrowTolerance.Font.Color := clWindowText;
EArrowTolerance.Font.Height := -11;
EArrowTolerance.Font.Name := 'Courier New';
EArrowTolerance.Font.Style := [];
EArrowTolerance.ParentFont := False;
EArrowTolerance.ParentShowHint := False;
EArrowTolerance.ShowHint := True;
EArrowTolerance.TabOrder := 8;
EArrowTolerance.Text := SettingValues[i];
i := i + 1;
CBPickItems := TComboBox.Create(GBItem);
CBPickItems.Parent := GBItem;
CBPickItems.Left := 145;
CBPickItems.Top := 197;
CBPickItems.Width := 59;
CBPickItems.Height := 22;
CBPickItems.Hint := 'Choose True to pick up items or False to not pick up items.';
CBPickItems.Font.Color := clWindowText;
CBPickItems.Font.Height := -11;
CBPickItems.Font.Name := 'Courier New';
CBPickItems.Font.Style := [];
CBPickItems.ItemHeight := 14;
CBPickItems.ItemIndex := 0;
CBPickItems.ParentFont := False;
CBPickItems.ParentShowHint := False;
CBPickItems.ShowHint := True;
CBPickItems.TabOrder := 9;
CBPickItems.Text := SettingValues[i];
i := i + 1;
CBPickItems.Items.Add('True');
CBPickItems.Items.Add('False');
EItemName := TEdit.Create(GBItem);
EItemName.Parent := GBItem;
EItemName.Left := 107;
EItemName.Top := 218;
EItemName.Width := 97;
EItemName.Height := 22;
EItemName.Hint := 'Enter the keywords of items you wish to pick up, and be sure to correspond their colors in the next text box. *Note - this is case-sensitive, and you can find the correct case by right-clicking the item.';
EItemName.Font.Color := clWindowText;
EItemName.Font.Height := -11;
EItemName.Font.Name := 'Courier New';
EItemName.Font.Style := [];
EItemName.ParentFont := False;
EItemName.ParentShowHint := False;
EItemName.ShowHint := True;
EItemName.TabOrder := 10;
EItemName.Text := SettingValues[i];
i := i + 1;
EItemColor := TEdit.Create(GBItem);
EItemColor.Parent := GBItem;
EItemColor.Left := 107;
EItemColor.Top := 239;
EItemColor.Width := 97;
EItemColor.Height := 22;
EItemColor.Hint := 'Click on the Pick Color button (to the right) to get the color of the items on the item name list. *Note - positions on this list correspond to the item name list.';
EItemColor.Font.Color := clWindowText;
EItemColor.Font.Height := -11;
EItemColor.Font.Name := 'Courier New';
EItemColor.Font.Style := [];
EItemColor.ParentFont := False;
EItemColor.ParentShowHint := False;
EItemColor.ShowHint := True;
EItemColor.TabOrder := 11;
EItemColor.Text := SettingValues[i];
i := i + 1;
EItemTolerance := TEdit.Create(GBItem);
EItemTolerance.Parent := GBItem;
EItemTolerance.Left := 131;
EItemTolerance.Top := 260;
EItemTolerance.Width := 73;
EItemTolerance.Height := 22;
EItemTolerance.Hint := 'Enter the flexibility of the item colors for finding items.';
EItemTolerance.Font.Color := clWindowText;
EItemTolerance.Font.Height := -11;
EItemTolerance.Font.Name := 'Courier New';
EItemTolerance.Font.Style := [];
EItemTolerance.ParentFont := False;
EItemTolerance.ParentShowHint := False;
EItemTolerance.ShowHint := True;
EItemTolerance.TabOrder := 15;
EItemTolerance.Text := SettingValues[i];
i := i + 1;
BItemColor := TButton.Create(GBItem);
BItemColor.Parent := GBItem;
BItemColor.Left := 204;
BItemColor.Top := 240;
BItemColor.Width := 78;
BItemColor.Height := 20;
BItemColor.Hint := 'To pick an item color, click me then click on the item.';
BItemColor.Caption := 'Pick Color';
BItemColor.Font.Color := clWindowText;
BItemColor.Font.Height := -11;
BItemColor.Font.Name := 'Courier New';
BItemColor.Font.Style := [];
BItemColor.ParentFont := False;
BItemColor.ParentShowHint := False;
BItemColor.ShowHint := True;
BItemColor.TabOrder := 12;
BItemColor.OnClick := @ClickPickItemColor;
BArrowMid := TButton.Create(GBItem);
BArrowMid.Parent := GBItem;
BArrowMid.Left := 204;
BArrowMid.Top := 135;
BArrowMid.Width := 78;
BArrowMid.Height := 20;
BArrowMid.Hint := 'To pick the arrow mid color, click me then click on the arrow mid.';
BArrowMid.Caption := 'Pick Color';
BArrowMid.Font.Color := clWindowText;
BArrowMid.Font.Height := -11;
BArrowMid.Font.Name := 'Courier New';
BArrowMid.Font.Style := [];
BArrowMid.ParentFont := False;
BArrowMid.ParentShowHint := False;
BArrowMid.ShowHint := True;
BArrowMid.TabOrder := 13;
BArrowMid.OnClick := @ClickPickArrowMColor;
BArrowTail := TButton.Create(GBItem);
BArrowTail.Parent := GBItem;
BArrowTail.Left := 204;
BArrowTail.Top := 157;
BArrowTail.Width := 78;
BArrowTail.Height := 20;
BArrowTail.Hint := 'To pick the arrow tail color, click me then click on the arrow tail.';
BArrowTail.Caption := 'Pick Color';
BArrowTail.Font.Color := clWindowText;
BArrowTail.Font.Height := -11;
BArrowTail.Font.Name := 'Courier New';
BArrowTail.Font.Style := [];
BArrowTail.ParentFont := False;
BArrowTail.ParentShowHint := False;
BArrowTail.ShowHint := True;
BArrowTail.TabOrder := 14;
BArrowTail.OnClick := @ClickPickArrowTColor;
GBTalk := TGroupBox.Create(frmDesign);
GBTalk.Parent := frmDesign;
GBTalk.Left := 0;
GBTalk.Top := 454;
GBTalk.Width := 274;
GBTalk.Height := 125;
GBTalk.Caption := 'Talk Settings';
GBTalk.Font.Color := clBlack;
GBTalk.Font.Height := -16;
GBTalk.Font.Name := 'Courier New';
GBTalk.Font.Style := [fsBold];
GBTalk.ParentFont := False;
GBTalk.TabOrder := 3;
LMinSpeakTime := TLabel.Create(GBTalk);
LMinSpeakTime.Parent := GBTalk;
LMinSpeakTime.Left := 23;
LMinSpeakTime.Top := 33;
LMinSpeakTime.Width := 154;
LMinSpeakTime.Height := 14;
LMinSpeakTime.Caption := 'Min Time between Talk:';
LMinSpeakTime.Font.Color := clBlack;
LMinSpeakTime.Font.Height := -11;
LMinSpeakTime.Font.Name := 'Courier New';
LMinSpeakTime.Font.Style := [];
LMinSpeakTime.ParentFont := False;
LMinChatLinesUntilSpeak := TLabel.Create(GBTalk);
LMinChatLinesUntilSpeak.Parent := GBTalk;
LMinChatLinesUntilSpeak.Left := 23;
LMinChatLinesUntilSpeak.Top := 54;
LMinChatLinesUntilSpeak.Width := 154;
LMinChatLinesUntilSpeak.Height := 14;
LMinChatLinesUntilSpeak.Caption := 'Min Lines before Talk:';
LMinChatLinesUntilSpeak.Font.Color := clBlack;
LMinChatLinesUntilSpeak.Font.Height := -11;
LMinChatLinesUntilSpeak.Font.Name := 'Courier New';
LMinChatLinesUntilSpeak.Font.Style := [];
LMinChatLinesUntilSpeak.ParentFont := False;
LAutoTalk := TLabel.Create(GBTalk);
LAutoTalk.Parent := GBTalk;
LAutoTalk.Left := 23;
LAutoTalk.Top := 75;
LAutoTalk.Width := 70;
LAutoTalk.Height := 14;
LAutoTalk.Caption := 'Auto-Talk:';
LAutoTalk.Font.Color := clBlack;
LAutoTalk.Font.Height := -11;
LAutoTalk.Font.Name := 'Courier New';
LAutoTalk.Font.Style := [];
LAutoTalk.ParentFont := False;
LAutoRespond := TLabel.Create(GBTalk);
LAutoRespond.Parent := GBTalk;
LAutoRespond.Left := 23;
LAutoRespond.Top := 96;
LAutoRespond.Width := 91;
LAutoRespond.Height := 14;
LAutoRespond.Caption := 'Auto-Respond:';
LAutoRespond.Font.Color := clBlack;
LAutoRespond.Font.Height := -11;
LAutoRespond.Font.Name := 'Courier New';
LAutoRespond.Font.Style := [];
LAutoRespond.ParentFont := False;
EMinSpeakTime := TEdit.Create(GBTalk);
EMinSpeakTime.Parent := GBTalk;
EMinSpeakTime.Left := 182;
EMinSpeakTime.Top := 30;
EMinSpeakTime.Width := 58;
EMinSpeakTime.Height := 22;
EMinSpeakTime.Hint := 'Enter the minimum number of seconds before talking again.';
EMinSpeakTime.Font.Color := clBlack;
EMinSpeakTime.Font.Height := -11;
EMinSpeakTime.Font.Name := 'Courier New';
EMinSpeakTime.Font.Style := [];
EMinSpeakTime.ParentFont := False;
EMinSpeakTime.ParentShowHint := False;
EMinSpeakTime.ShowHint := True;
EMinSpeakTime.TabOrder := 2;
EMinSpeakTime.Text := SettingValues[i];
i := i + 1;
CBMinChatLinesUntilSpeak := TComboBox.Create(GBTalk);
CBMinChatLinesUntilSpeak.Parent := GBTalk;
CBMinChatLinesUntilSpeak.Left := 182;
CBMinChatLinesUntilSpeak.Top := 51;
CBMinChatLinesUntilSpeak.Width := 58;
CBMinChatLinesUntilSpeak.Height := 22;
CBMinChatLinesUntilSpeak.Hint := 'Choose the minimum number of lines that must be seen in the chat box before talking again. 0 means you can talk again even if you have spoken last.';
CBMinChatLinesUntilSpeak.Font.Color := clBlack;
CBMinChatLinesUntilSpeak.Font.Height := -11;
CBMinChatLinesUntilSpeak.Font.Name := 'Courier New';
CBMinChatLinesUntilSpeak.Font.Style := [];
CBMinChatLinesUntilSpeak.ItemHeight := 14;
CBMinChatLinesUntilSpeak.ItemIndex := 1;
CBMinChatLinesUntilSpeak.ParentFont := False;
CBMinChatLinesUntilSpeak.ParentShowHint := False;
CBMinChatLinesUntilSpeak.ShowHint := True;
CBMinChatLinesUntilSpeak.TabOrder := 0;
CBMinChatLinesUntilSpeak.Text := SettingValues[i];
i := i + 1;
CBMinChatLinesUntilSpeak.Items.Add('0');
CBMinChatLinesUntilSpeak.Items.Add('1');
CBMinChatLinesUntilSpeak.Items.Add('2');
CBMinChatLinesUntilSpeak.Items.Add('3');
CBMinChatLinesUntilSpeak.Items.Add('4');
CBMinChatLinesUntilSpeak.Items.Add('5');
CBAutoTalk := TComboBox.Create(GBTalk);
CBAutoTalk.Parent := GBTalk;
CBAutoTalk.Left := 182;
CBAutoTalk.Top := 72;
CBAutoTalk.Width := 58;
CBAutoTalk.Height := 22;
CBAutoTalk.Hint := 'Choose True to turn on the Auto-Talk feature or False to turn it off.';
CBAutoTalk.Font.Color := clBlack;
CBAutoTalk.Font.Height := -11;
CBAutoTalk.Font.Name := 'Courier New';
CBAutoTalk.Font.Style := [];
CBAutoTalk.ItemHeight := 14;
CBAutoTalk.ItemIndex := 0;
CBAutoTalk.ParentFont := False;
CBAutoTalk.ParentShowHint := False;
CBAutoTalk.ShowHint := True;
CBAutoTalk.TabOrder := 3;
CBAutoTalk.Text := SettingValues[i];
i := i + 1;
CBAutoTalk.Items.Add('True');
CBAutoTalk.Items.Add('False');
CBAutoRespond := TComboBox.Create(GBTalk);
CBAutoRespond.Parent := GBTalk;
CBAutoRespond.Left := 182;
CBAutoRespond.Top := 93;
CBAutoRespond.Width := 58;
CBAutoRespond.Height := 22;
CBAutoRespond.Hint := 'Choose True to turn on the Auto-Respond feature or False to turn it off.';
CBAutoRespond.Font.Color := clBlack;
CBAutoRespond.Font.Height := -11;
CBAutoRespond.Font.Name := 'Courier New';
CBAutoRespond.Font.Style := [];
CBAutoRespond.ItemHeight := 14;
CBAutoRespond.ItemIndex := 0;
CBAutoRespond.ParentFont := False;
CBAutoRespond.ParentShowHint := False;
CBAutoRespond.ShowHint := True;
CBAutoRespond.TabOrder := 1;
CBAutoRespond.Text := SettingValues[i];
CBAutoRespond.Items.Add('True');
CBAutoRespond.Items.Add('False');
BStartScript := TButton.Create(frmDesign);
BStartScript.Parent := frmDesign;
BStartScript.Left := 314;
BStartScript.Top := 518;
BStartScript.Width := 207;
BStartScript.Height := 58;
BStartScript.Hint := 'Start the script with these current settings!';
BStartScript.Caption := 'Start Script!';
BStartScript.Font.Color := clWindowText;
BStartScript.Font.Height := -24;
BStartScript.Font.Name := 'Courier New';
BStartScript.Font.Style := [fsBold, fsUnderline];
BStartScript.ParentFont := False;
BStartScript.ParentShowHint := False;
BStartScript.ShowHint := True;
BStartScript.TabOrder := 4;
BStartScript.OnClick := @ClickStartScript;
end; // end of InitForm
procedure SafeInitForm;
var
v: TVariantArray;
begin
SetArrayLength(V, 0);
ThreadSafeCall('InitForm', v);
end;
procedure ShowFormModal;
begin
frmDesign.ShowModal;
end;
procedure SafeShowFormModal;
var
v: TVariantArray;
begin
SetArrayLength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;
procedure LoadVars;
begin
CombatType := 'Ranged';
case FightMode of
1: SkillsUsing := ['Ranged', 'Hitpoints'];
2: SkillsUsing := ['Ranged', 'Hitpoints'];
3: SkillsUsing := ['Ranged', 'Defence', 'Hitpoints'];
end;
Greetings := ['sup','yo','hey','hi','ey','hello','hey, sup?', 'hows it goin'];
Messages := ['i feel like eatin a nice warm apple pie','i feel like havin a hot chocolate','man its such nice weather','nothin here but ownage heh','ima pk so well when my lvls r up','any1 know a good joke?','???','?','what??','i wish i was high enuff to pk now','its so much harder to grow the higher ur lvl =(','jeez takin so long to grow...','fav bands? i love pink floyd.','ima be an ownage pure! my stats own.','im married to another man and adopted 17 children... not!','can any1 disagree to the fact that the matrix is officially a classic?','man trainin is long','this trainin is takin a while','i wanna get 99 fast so i can pk! lol','me thirsty','pink floyd is the best band ever... listenin to em now','who likes ( . )( . )!!!','ima own u all wen i get 99 range ^^','i loose so much health =( need better def','this game is heaven','i love rs','lol','lolz','haha','lmfao','lol n00bz','range lvls?','hp lvls?','def lvls?','im hitting such high dmg','i pwn','ownzage!','sweet ^^'];
Questions := ['Sup','Wazzup','Wats up','Whats up'];
Responses := ['nm, im lovin rs','nm, life is good ^^','doin sum hw, u?','n2m','nm','nm, u?','not much... rangings awesome','n2m, fun time ranging'];
RangelvlQuestions := ['Range'];
DeflvlQuestions := ['Def'];
HpLvlQuestions := ['Hp','Health','Hitpoint'];
LvlQuestions := ['Lv','Level'];
NoobQuestions := ['Noob','Nub','N00b'];
NoobResponses := ['who u callin noob =@','im not a noob!','how am i a noob?'];
MoneyQuestions := ['Cash','Money','Muney','Gold','Coin','Mill'];
MoneyResponses := ['i have tons of cash','i have mills in bank from pks','im rich'];
AgeQuestions := ['How old','Which grade','What grade'];
AgeResponses := ['looks like im older than u','grade 9, u?','14 years old','im 14, u?','14, you?','gr9 you?','grade 9, you?']
LocationQuestions := ['City','Country','You from'];
LocationResponses := ['lol i cant tell u where im from ^^','r u askin me for personal details?','i can report u for askin personal details, u know','umm my mom says i cant say where im from...','im not supposed to say where im from','its against rules to ask where im from, ur lucky im not reporting'];
SexQuestions := ['Male','Boy','Girl','Guy','Woman','Man'];
SexResponses := ['im a guy','im a male','im a boy','im a sexy guy, why u ask? lol','im a hot guy ^^', 'lol'];
LeavingQuestions := ['G2g','Leav','Cya','Bye','Peace', 'Gotta go'];
LeavingResponses := ['peace','au revoir','see ya later!','ok cya','bi','bye','ciao'];
ArrowQuestions := ['How many arrows', 'Kind of arrows'];
ArrowResponses := ['i use ' + LowerCase(ArrowName) + ' arrows =)', 'i have so many arrows', 'i got tons of arrows','i have tons of arrows, how many u got?','i have tons of ' + LowerCase(ArrowName) + ' arrows, how many do u have', 'i use ' + LowerCase(ArrowName) + ' arrows, u?','i <3 ' + LowerCase(ArrowName) + ' arrows', 'i use ' + LowerCase(ArrowName) + ' arrows... wish i had more tho'];
RandomFightTabs := [1, 5, 8, 11];
RandomFishTabs := [2, 8]
end;
{*********************}
{***** LOAD DTMS *****}
{*********************}
procedure LoadDTMs;
var
i,j:Integer;
begin
MMOtherPersonDTM := DTMFromString('78DA7DCED10D803008045030E9FE33A8ED185' +
'5676004BE990185CF2B8997107E5E72C7D746B413C4DDA9C5E7B8' +
'37C2F7BFC9F013E6406366D59C6844044D760D5AC268727347A1A' +
'A6866ED2A9B67DDBC9A0F15C52317');
j := 0;
SetArrayLength(FoodDTM,GetArrayLength(FoodName));
SetArrayLength(FoodDTMName,GetArrayLength(FoodName));
for i := 0 to GetArrayLength(FoodName)-1 do
begin
if(FoodName[i] = 'Shrimp') then
begin
FoodDTM[j] := DTMFromString('78DA63AC6162606863644006CB0A441944803' +
'448F43F1030E602D5B4A2AA81C8C248205D0A54D34B404D3550CD' +
'64026ADA806AEA8830A711BF1A00BBFC0B63');
FoodDTMName[j] := 'Shr';
end else
if(FoodName[i] = 'Sardine') then
begin
FoodDTM[j] := DTMFromString('78DA63DCC0C0C0309191011974E4663088006' +
'990E87F2060DC0A6474A2AA81C8C24820BD0E48F41150B31A484C' +
'23A0661B11E66C041253F0AB010096870D0A');
FoodDTMName[j] := 'Sar';
end else
if(FoodName[i] = 'Herring') then
begin
FoodDTM[j] := DTMFromString('78DA635CCFC0C0D0CEC8800C3A72331844803' +
'448F43F10306E04321A50D540646124905E0A24BA08A8590524FA' +
'08A8D90F245A09A8D90B24AAF1AB0100786A0CCF');
FoodDTMName[j] := 'Her';
end else
if(FoodName[i] = 'Anchovies') then
begin
FoodDTM[j] := DTMFromString('78DA63DCC8C0C0D0C2C8800C6C1CB31944803' +
'448F43F10302E0132EA51D540646124905E09247A09A8D90924BA' +
'08A83900241A09A8D942D83D001B6D0C55');
FoodDTMName[j] := 'Anc';
end else
if(FoodName[i] = 'Trout') then
begin
FoodDTM[j] := DTMFromString('78DA632C676260E86464400613CA8B1944803' +
'448F43F10301600D54C405503918591403A07A8A69B809A4AA09A' +
'1A026A5A88500332A71FBF1A00EFBD0BA2');
FoodDTMName[j] := 'Tro';
end else
if(FoodName[i] = 'Pike') then
begin
FoodDTM[j] := DTMFromString('78DA63DCC0C0C0D0CEC8800C5267A43288006' +
'990E87F20605C0164F4A3AA81C8C248200D52D34640CD36205147' +
'40CD3E20514140CD1E20D14840CD1620D18B5F0D0072DD0E12');
FoodDTMName[j] := 'Pik';
end else
if(FoodName[i] = 'Salmon') then
begin
FoodDTM[j] := DTMFromString('78DA639CC7C4C090CCC8800CCE79483288006' +
'990E87F20609C0854938EAA06220B2381F424A09A1C026A5603D5' +
'C41050B312A82682809AF984CD0100BFF60B5D');
FoodDTMName[j] := 'Sal';
end else
if(FoodName[i] = 'Tuna') then
begin
FoodDTM[j] := DTMFromString('78DA635CC7C0C0309991011974E4663088006' +
'990E87F20605C0F6474A1AA81C8C24820BD0748F41250B31D484C' +
'23A0663590984340CD52203115BF1A009E5F0D16');
FoodDTMName[j] := 'Tun';
end else
if(FoodName[i] = 'Lobster') then
begin
FoodDTM[j] := DTMFromString('78DA63DCC4C0C030919101199C4965601001D' +
'220D1FF40C0B812C8E8465503918591407A0790984D40CD6E2031' +
'9908739A09A859022426E15703007E1F0CE2');
FoodDTMName[j] := 'Lob';
end else
if(FoodName[i] = 'Swordfish') then
begin
FoodDTM[j] := DTMFromString('78DA63DCC2C0C0309B910119CC489DC12002A' +
'441A2FF8180713B903105550D44164602E93540622E0135AB80C4' +
'32026A761361CE3E902309A8394284399B80C464FC6A0049C4104' +
'C');
FoodDTMName[j] := 'Swo';
end else
if(FoodName[i] = 'Cooked Chicken') then
begin
FoodDTM[j] := DTMFromString('78DA63DCC8C0C0D0C6C8800C8A1C391944803' +
'448F43F10302E07325A50D540646124905E0124FA09A8D90F24DA' +
'09A8D90324EA09A8D902241AF0AB010001FC0C32');
FoodDTMName[j] := 'chi';
end else
if(FoodName[i] = 'Cooked Meat') then
begin
FoodDTM[j] := DTMFromString('78DA63DCCCC0C0D0C2C8800C8A1C391944803' +
'448F43F1030EE0632CA50D54064612490DE0424261350B30C4874' +
'1350731048D41161573D7E350006140C32');
FoodDTMName[j] := 'mea';
end else
if(FoodName[i] = 'Bread') then
begin
FoodDTM[j] := DTMFromString('78DA635CC6C4C0709D910119CCAE17641001D' +
'220D1FF40C0B81AA8E614AA1A882C8C04D20B816A1E1150330BA8' +
'E61601355B806A2EE257030022370CC7');
FoodDTMName[j] := 'rea';
end else
if(FoodName[i] = 'Kebab') then
begin
FoodDTM[j] := DTMFromString('78DA630C646260A86664400642D3C41844803' +
'448F43F1030FA03D5B4A2AA81C8C24820ED06545343404D10504D' +
'3E0135B198EEC150130954538C5F0D00D08E09B9');
FoodDTMName[j] := 'Keb';
end else
if(FoodName[i] = 'Spinach Roll') then
begin
FoodDTM[j] := DTMFromString('78DA630C64626038CFC8800CAA5AA31944803' +
'448F43F1030FA02D59C455503918591403A18A8E6180135619876' +
'61A8F107AAB941408D1750CD15FC6A0032950C4B');
FoodDTMName[j] := 'pin';
end;
j := j + 1;
end;
ArrowDTM := 0;
case ArrowName of
'Bronze':
ArrowDTM := DTMFromString('78DA63AC656260886764400611A69C0C22401' +
'A24FA1F08189B806AC251D5B89ACAC1D58000584D08AA1A982C5C' +
'4D0B504D187E3500751208CE');
'Iron':
ArrowDTM := DTMFromString('78DA63DCC0C4C050CEC8800CC24C381944803' +
'448F43F10306E05AAC94355E3E1E2025703026035D9A86A60B270' +
'35DB816A72F1AB0100EC870A2C');
'Steel':
ArrowDTM := DTMFromString('78DA630C626260686564400611A69C0C22401' +
'A24FA1F081823806AAA51D5E4A5A5C1D580006314A61A982C5C0D' +
'C89C0AFC6A00A2C3095A');
'Mithril':
ArrowDTM := DTMFromString('78DA63DCCAC0C0D0C8C8800CDC35581944803' +
'448F43F1030EE02322A51D5681BB9C0D58000584D19AA1A982C5C' +
'CD1E4C73D0D50000DFE50A16');
'Adamant':
ArrowDTM := DTMFromString('78DA63DCC2C0C0D0CCC8800CDC35581944803' +
'44C94711790A8445563E4680457F31F08C06ACA50D5C04C809BB3' +
'07D31C74350052710A1B');
end;
end;
// more accurate and faster
function GInFight: Boolean;
begin
Result := (FindColor(x, y, 65280, 250, 127, 270, 166) or FindColor(x, y, 255,
242, 127, 282, 166));
end;
procedure GFTFightWait(Time: Integer);
var
i: Integer;
begin
for i := 1 to Time do
begin
Wait(200 + Random(50));
FindTalk;
if not GInFight then Exit;
end;
end;
function GFindNPCUpText: Boolean;
var Tempx, Tempy: Integer;
begin
Result := FindColorTolerance(Tempx, Tempy, 56539, 7, 7, 334, 20, 10);
end;
function GFlag: Boolean;
var
Timeout: Integer;
begin
if (not (FindColor(x, y, 255, MMX1, MMY1, MMX2, MMY2))) then Exit;
Result := True;
repeat
FTWait(1);
Timeout := Timeout + 1;
until (not FindColor(x, y, 255, MMX1, MMY1, MMX2, MMY2)) or (Timeout > 20);
end;
procedure GRunAwayDirection(direction: string);
begin
x := 0;
y := 0;
if (UpperCase(direction) = 'N') then
y := -50;
if (UpperCase(direction) = 'E') then
x := 50;
if (UpperCase(direction) = 'S') then
y := 50;
if (UpperCase(direction) = 'W') then
x := -50;
RunTox := x + 648;
RunBackx := 648 - x;
RunToy := y + 83;
RunBacky := 83 - y;
MouseFindFlag(RunTox, RunToy, 1, 1);
GFlag;
end;
procedure GRunBack;
begin
MouseFindFlag(RunBackx, RunBacky, 1, 1);
GFlag;
end;
{*******************************}
{***** REVISED ANTI-RANDOM *****}
{*******************************}
function GFindNormalRandoms(OnlyInFight: Boolean): Boolean;
var
i: Integer;
begin
if not LoggedIn then LoginPlayer;
Writeln(' Checking for randoms...');
for i := 1 to 12 do
begin
if OnlyInFight then
begin
if not GInFight then Exit;
end;
case I of
1: if FindTalk then
begin
Writeln('Found talking random...');
Result := True;
end;
2: if FindMime then Result := True;
3: if FindMaze then Result := True;
4: if FindQuiz then Result := True;
5: if FindDemon then Result := True;
6: if FindScapeRune then Result := True;
7: if FindLamp(LampSkill) then Result := True;
8: if (FindNewBox) then
begin
if (GInFight) then BoxInFight := True
else
begin
Result := True;
if (UseBoxSolver) then
SolveBox
else
GambleNewBox
end;
end;
9: if NoGameTab then
begin
Result := True;
Writeln('Logged out because you were missing game tabs and in a random event...');
Logout;
Exit;
end;
10: if FindTalk then
begin
Writeln('Found talking random...');
Result := True;
end;
11: SaveToChatLog;
12: if RC then Result := True;
end;
if Result then Continue;
FTWait(1);
end;
end;
procedure CheckLevels;
begin
case FightMode of
3: if (GetSkillLevel('Defence') >= MaxDefence) then
begin
Status('Changed to rapid because your defence level max was reached.');
repeat until GameTab(1);
SetFightMode(2);
end;
end;
end;
{*************************}
{***** SCRIPT REPORT *****}
{*************************}
procedure GReport;
begin
Writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
Writeln('~~~~~~~~~~~~~~~~~~GExtremeFighter~~~~~~~~~~~~~~~~~~');
Writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
Writeln('Runtime: ' + TimeRunning);
Writeln('Monsters Killed: ' + IntToStr(Killed));
Writeln('Arrow Pick-Ups: ' + IntToStr(ArrowGrabs));
Writeln('Item Pick-Ups: ' + IntToStr(ItemGrabs));
Writeln('Food Eaten: ' + IntToStr(FoodEaten));
Writeln('Lowest Health: ' + IntToStr(LowestHealth));
GameTab(2);
if GetArrayLength(SkillsUsing) > 0 then
begin
FirstLoop := True;
for i := 0 to GetArrayLength(SkillsUsing) - 1 do
begin
if GetSkillLevel(SkillsUsing[i]) > SkillsLevels[i] then
begin
if FirstLoop then
begin
Writeln('Levels Gained:');
FirstLoop := False;
end;
Writeln(' +' + IntToStr(GetSkillLevel(SkillsUsing[i]) - SkillsLevels[i]) + ' ' + SkillsUsing[i] + ' = ' + IntToStr(GetSkillLevel(SkillsUsing[i])) + '!!!');
end;
end;
end;
Writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
Writeln('');
CheckLevels;
SRLRandomsReport;
end; // end of report
function GPopUp(Option: String; MaxExamine: Boolean): Boolean;
var
DTMTop, DTMBottom, x, y, x1, x2, y1, y2, MaxExamineY: Integer;
begin
if not LoggedIn then Exit;
DTMTop := DTMFromString('78DA63146464606801622C0026CA28006435A' +
'3AA890D7147552345841A90393D04D4880259DD04D4880359ED04' +
'D4280059AD04FC2504644DC4AF06000DC909E0');
DTMBottom := DTMFromString('78DA635CCCC8C070198891406C883B9886893' +
'22E02B22EA1AA8101B89A8540D64522CCB948843984EC02B9F910' +
'01BBA610E1AF6944D80572F311026AE6005967F0DB05007BD4134' +
'5');
if FindDTM(DTMTop, x1, y1, 10, 10, 764, 502) then
begin
FindDTM(DTMBottom, x2, y2, x1, y1, 764, 502);
MaxExamineY := y2;
if MaxExamine then
begin
if (FindText(x, y, 'xa', upchars, x1, y1, x2, MaxExamineY)) then
begin
repeat
MaxExamineY := y - 1; // finds highest examine so knows to look above only
until not FindText(x, y, 'xa', upchars, x1, y1, x2, MaxExamineY)
end else
begin
Result := False;
FreeDTM(DTMTop);
FREEDTM(DTMBottom);
Exit;
end;
end;
if (FindText(x, y, Option, upchars, x1, y1, x2, MaxExamineY)) then
begin
Result := True;
Mouse(x + Length(Option) * 3, y + 2, 4, 3, True);
end else
begin
if (FindText(x, y, 'ancel', upchars, x1, y1, x2, y2)) then
begin
Mouse(x + 3, y + 2, 4, 3, True);
end;
end;
end;
FreeDTM(DTMTop);
FREEDTM(DTMBottom);
end;
function GSearchLine(Line:Integer; Text:String): Boolean;
var
ColonX: Integer;
begin
// line starts from 1
ColonX := 21;
while IsTextInAreaEx(ColonX, 429 - (Line * 14), MCX2, 429 - (Line * 14), x, y, ':',
100, SmallChars, False, True, 0, 2, -1) do ColonX := x + 1;
if IsTextInAreaEx(ColonX, 429 - (Line * 14), MCX2, 429 - (Line * 14), x, y, Text,
100, SmallChars, False, True, 0, 2, -1) then Result := True;
end;
function GSearchLineNew(Line:Integer; Text:String): Boolean;
var
ColonX: Integer;
begin
// line starts from 1
ColonX := 21;
while IsTextInAreaEx(ColonX, 429 - (Line * 14), MCX2, 429 - (Line * 14), x, y, ':',
100, SmallChars, False, True, 0, 2, -1) do ColonX := x + 1;
if IsTextInAreaEx(ColonX, 429 - (Line * 14), MCX2, 429 - (Line * 14), x, y, Text,
100, SmallChars, False, True, 0, 2, -1) then Result := True;
end;
// sees whether or not player has spoken in chat box
// 0 = current player spoke, 1 = other player spoke, 2 = game message
function GLineTypes: array of Integer;
begin
SetArrayLength(Result, 5);
for i := 1 to 5 do
begin
// -0-
if IsTextInAreaEx(21, 429 - (i * 14), 137, 429 - (i * 14), x, y, Copy(Players[CurrentPlayer].Name + ':',2,Length(Players[CurrentPlayer].Name)), 100, SmallChars, False,
True, 0, 2, -1) then
begin
Result[i - 1] := 0;
end else
// -1-
if IsTextInAreaEx(21, 429 - (i * 14), 137, 429 - (i * 14), x, y, ':', 100,
SmallChars, False, True, 0, 2, -1) then
begin
Result[i - 1] := 1;
end else
// -2-
if IsTextInAreaEx(21, 429 - (i * 14), 137, 429 - (i * 14), x, y, '.', 100,
SmallChars, False, True, 0, 2, -1) or
IsTextInAreaEx(21, 429 - (i * 14), 137, 429 - (i * 14), x, y, ',', 100,
SmallChars, False, True, 0, 2, -1) or
IsTextInAreaEx(21, 429 - (i * 14), 137, 429 - (i * 14), x, y, '!', 100,
SmallChars, False, True, 0, 2, -1) then
begin
Result[i - 1] := 2;
end else
// -NO LINETEXT-
Result[i - 1] := -1;
end;
end;
function GLastGameMessage(Text:String): Boolean;
var
i: Integer;
LinesCheck: array of Integer;
begin
LinesCheck := GLineTypes;
for i := 1 to 5 do
begin
if LinesCheck[i - 1] = 2 then
begin
if GSearchLine(i, Text) then Result := True;
Exit;
end;
end;
end;
procedure GHumanType(Text: string);
begin
SendText(HumanText(Text,45) + Chr(13));
end;
{*****************************************}
{***** AUTO-TALK/AUTO-RESPOND SYSTEM *****}
{*****************************************}
function GAutoTalk(TalkType:Integer): Boolean;
var
i, j, k, l: Integer;
PlayerLines, OtherPlayerLines, GameLines, LinesCheck : array of Integer;
begin
if (not AutoTalk) and (not AutoRespond) then Exit else
if (not AutoTalk) then begin if (TalkType = 0) or (TalkType = 1) then Exit end else
if (not AutoRespond) and (TalkType = 2) then Exit;
if (not FirstTalk) and (TimeFromMark(LastSpeakTime)/1000 < MinSpeakTime) then
begin
Writeln(' -> You spoke ' + IntToStr(TimeFromMark(LastSpeakTime)/1000) + ' seconds ago. Exiting auto-talk/respond...');
Exit;
end;
if not FindDTM(MMOtherPersonDTM, x, y, 618, 53, 678, 113) then
begin
Writeln(' -> Could not find other players close to you on minimap. Exiting auto-talk/respond...');
Exit;
end;
if AutoTalk then
begin
if FirstTalk then
if GLastGameMessage('Welcome to RuneScape') then
begin
TalkType := 0;
FirstTalk := False;
end;
end;
if (TalkType = 1) or (TalkType = 2) then
begin
LinesCheck := GLineTypes;
SetArrayLength(PlayerLines, 0);
SetArrayLength(OtherPlayerLines, 0);
SetArrayLength(GameLines, 0);
for i := 0 to GetArrayLength(LinesCheck) - 1 do
begin
if LinesCheck[i] = 0 then // store current player lines
begin
SetArrayLength(PlayerLines, GetArrayLength(PlayerLines) + 1);
PlayerLines[GetArrayLength(PlayerLines) - 1] := i + 1;
end else
if LinesCheck[i] = 1 then // store other player lines
begin
SetArrayLength(OtherPlayerLines, GetArrayLength(OtherPlayerLines) + 1);
OtherPlayerLines[GetArrayLength(OtherPlayerLines) - 1] := i + 1;
end else
if LinesCheck[i] = 2 then // store game lines
begin
SetArrayLength(GameLines, GetArrayLength(GameLines) + 1);
GameLines[GetArrayLength(GameLines) - 1] := i + 1;
end;
end;
if MinChatLinesUntilSpeak <> 0 then
begin // exits if you spoke before minimum
if (GetArrayLength(PlayerLines) >= 1) then
if (PlayerLines[0] <= MinChatLinesUntilSpeak) then
begin
Writeln(' -> You spoke earlier than the minimum lines of other chat requested...');
Exit;
end;
end;
end;
case TalkType of
0: // greeting
begin
Writeln(' -> Sending a random greeting...');
GHumanType(Greetings[(Random(GetArrayLength(Greetings)))]);
Result := True;
Exit;
end;
1: // random messages
begin
Skill := '';
for i := 0 to GetArrayLength(GameLines) do
begin
if (GSearchLine(i, 'Congra')) then
begin
if CombatType = 'Ranged' then
begin
if (GSearchLine(i, 'range')) then Skill := 'ranged' else
if (FightMode = 3) and (GSearchLine(i, 'defen')) then Skill := 'defence' else
if (GSearchLine(i, 'hitpo')) then Skill := 'hitpoints';
if Skill <> '' then Result := True;
end else
if CombatType = 'Mage' then
begin
// different for staff equipped/not equipped
if Skill <> '' then Result := True;
end else
if CombatType = 'Warrior' then
begin
// different for weapon equipped/not equipped
if Skill <> '' then Result := True;
end;
if Result then
begin
Writeln(' -> Sending a message about level growth...');
GrewMessages := ['only ' + IntToStr(99-GetSkillLevel(Skill)) + ' until 99 ' + Skill + ' lol', IntToStr(GetSkillLevel(Skill)) + ' ' + Skill + ' now','now ' + IntToStr(GetSkillLevel(Skill)) + ' ' + Skill,'yay just grew in ' + Skill,'sweet, ' + IntToStr(GetSkillLevel(Skill)) + ' ' + Skill,'yay! grew ' + Skill + 'level!'];
GHumanType(GrewMessages[(Random(GetArrayLength(GrewMessages)))]);
Exit;
end;
end;
end;
begin
Writeln(' -> Sending a random message...');
GHumanType(Messages[(Random(GetArrayLength(Messages)))]);
Result := True;
Exit;
end;
end;
2: // responding
begin
case LastResponseType of
0:
begin
LastResponseType := LastResponseType + 1;
// respond to level questions
for i := 0 to GetArrayLength(LvlQuestions) - 1 do
begin
for k := 0 to GetArrayLength(OtherPlayerLines) - 1 do
begin
if (not Result) and (GSearchLine(OtherPlayerLines[k],LvlQuestions[i])) or (not Result) and (GSearchLine(OtherPlayerLines[k],Lowercase(LvlQuestions[i]))) then
begin
Writeln(' -> Detected a level question, checking for level type...');
// respond to range level questions
if not Result then
for j := 0 to GetArrayLength(RangeLvlQuestions) - 1 do
begin
if Result then Break;
for l := 0 to GetArrayLength(OtherPlayerLines) - 1 do
begin
if GSearchLine(OtherPlayerLines[l],RangeLvlQuestions[j]) or GSearchLine(OtherPlayerLines[l],Lowercase(RangeLvlQuestions[j])) then
begin
Writeln(' -> Sending answer to range question...');
Skill := 'ranged';
Result := True;
Break;
end;
end;
end;
// respond to hitpoints level
if not Result then
for j := 0 to GetArrayLength(HpLvlQuestions)-1 do
begin
if Result then Break;
for l := 0 to GetArrayLength(OtherPlayerLines) - 1 do
begin
if GSearchLine(OtherPlayerLines[l],HpLvlQuestions[j]) or GSearchLine(OtherPlayerLines[l],Lowercase(HpLvlQuestions[j])) then
begin
Writeln(' -> Sending answer to hp question...');
Skill := 'hitpoints';
Result := True;
Break;
end;
end;
end;
// respond to defence level questions
if not Result then
for j := 0 to GetArrayLength(DefLvlQuestions) - 1 do
begin
if Result then Break;
for l := 0 to GetArrayLength(OtherPlayerLines) - 1 do
begin
if GSearchLine(OtherPlayerLines[l],DefLvlQuestions[j]) or GSearchLine(OtherPlayerLines[l],Lowercase(DefLvlQuestions[j])) then
begin
Writeln(' -> Sending answer to defence question...');
Skill := 'defence';
Result := True;
Break;
end;
end;
end;
end; // end of level responses
end; // end of linesearching for loop
end; // end of level question for loop
if Result then
begin
LvlResponses := [IntToStr(GetSkillLevel(Skill)) + ' meh','uhhh ' + IntToStr(GetSkillLevel(Skill)),'lemme c... oh ' + IntToStr(GetSkillLevel(Skill)),IntToStr(GetSkillLevel(Skill)),'almost ' + IntToStr(GetSkillLevel(Skill) + 1) + ' ' + Skill,IntToStr(GetSkillLevel(Skill)) + ' here... boo ya!',IntToStr(GetSkillLevel(Skill)),'im lvl ' + IntToStr(GetSkillLevel(Skill)),'i have ' + IntToStr(GetSkillLevel(Skill))];
GHumanType(LvlResponses[(Random(GetArrayLength(LvlResponses)))]);
Exit;
end;
end;
1:
begin
LastResponseType := LastResponseType + 1;
// respond to general questions
for i := 0 to GetArrayLength(Questions) - 1 do
begin
for k := 0 to GetArrayLength(OtherPlayerLines) - 1 do
begin
if not Result and (GSearchLine(OtherPlayerLines[k],Questions[i]) or GSearchLine(OtherPlayerLines[k],Lowercase(Questions[i]))) then
begin
GHumanType(Responses[(Random(GetArrayLength(Responses)))]);
Writeln(' -> Sent normal response to question from chat...');
Result := True;
Exit;
end;
end;
end;
// respond to noob questions
for i := 0 to GetArrayLength(NoobQuestions) - 1 do
begin
for k := 0 to GetArrayLength(OtherPlayerLines) - 1 do
begin
if not Result and (GSearchLine(OtherPlayerLines[k],NoobQuestions[i]) or GSearchLine(OtherPlayerLines[k],Lowercase(NoobQuestions[i]))) then
begin
GHumanType(NoobResponses[(Random(GetArrayLength(NoobResponses)))]);
Writeln(' -> Sent angry response to noob question from chat...');
Result := True;
Exit;
end;
end;
end;
// respond to money questions
for i := 0 to GetArrayLength(MoneyQuestions) - 1 do
begin
for k := 0 to GetArrayLength(OtherPlayerLines) - 1 do
begin
if not Result and (GSearchLine(OtherPlayerLines[k],MoneyQuestions[i]) or GSearchLine(OtherPlayerLines[k],Lowercase(MoneyQuestions[i]))) then
begin
GHumanType(MoneyResponses[(Random(GetArrayLength(MoneyResponses)))]);
Writeln(' -> Sent response to money question from chat...');
Result := True;
Exit;
end;
end;
end;
// respond to age questions
for i := 0 to GetArrayLength(AgeQuestions) - 1 do
begin
for k := 0 to GetArrayLength(OtherPlayerLines) - 1 do
begin
if not Result and (GSearchLine(OtherPlayerLines[k],AgeQuestions[i]) or GSearchLine(OtherPlayerLines[k],Lowercase(AgeQuestions[i]))) then
begin
GHumanType(AgeResponses[(Random(GetArrayLength(AgeResponses)))]);
Writeln(' -> Sent response to age question from chat...');
Result := True;
Exit;
end;
end;
end;
// respond to location questions
for i := 0 to GetArrayLength(LocationQuestions) - 1 do
begin
for k := 0 to GetArrayLength(OtherPlayerLines) - 1 do
begin
if not Result and (GSearchLine(OtherPlayerLines[k],LocationQuestions[i]) or GSearchLine(OtherPlayerLines[k],Lowercase(LocationQuestions[i]))) then
begin
GHumanType(LocationResponses[(Random(GetArrayLength(LocationResponses)))]);
Writeln(' -> Sent response to location question from chat...');
Result := True;
Exit;
end;
end;
end;
end;
2:
begin
LastResponseType := LastResponseType + 1;
// respond to sex questions
for i := 0 to GetArrayLength(SexQuestions) - 1 do
begin
for k := 0 to GetArrayLength(OtherPlayerLines) - 1 do
begin
if not Result and (GSearchLine(OtherPlayerLines[k],SexQuestions[i]) or GSearchLine(OtherPlayerLines[k],Lowercase(SexQuestions[i]))) then
begin
GHumanType(SexResponses[(Random(GetArrayLength(SexResponses)))]);
Writeln(' -> Sent response to sex question from chat...');
Result := True;
Exit;
end;
end;
end;
// respond to leaving questions
for i := 0 to GetArrayLength(LeavingQuestions) - 1 do
begin
for k := 0 to GetArrayLength(OtherPlayerLines) - 1 do
begin
if not Result and (GSearchLine(OtherPlayerLines[k],LeavingQuestions[i]) or GSearchLine(OtherPlayerLines[k],Lowercase(LeavingQuestions[i]))) then
begin
GHumanType(LeavingResponses[(Random(GetArrayLength(LeavingResponses)))]);
Writeln(' -> Sent response to somebody leaving from chat...');
Result := True;
Exit;
end;
end;
end;
// respond to arrow questions
for i := 0 to GetArrayLength(ArrowQuestions) - 1 do
begin
for k := 0 to GetArrayLength(OtherPlayerLines) - 1 do
begin
if not Result and (GSearchLine(OtherPlayerLines[k],ArrowQuestions[i]) or GSearchLine(OtherPlayerLines[k],Lowercase(ArrowQuestions[i]))) then
begin
GHumanType(ArrowResponses[(Random(GetArrayLength(ArrowResponses)))]);
Writeln(' -> Sent response to arrow question from chat...');
Result := True;
Exit;
end;
end;
end;
end;
end; // end of responding case
if not Result then
begin
Writeln(' -> Could not find correct response to chat text :(');
Exit;
end;
end; // end of responding
end; // end of case
end; // end of GAutoTalk function
function GIsFightAt(x, y: Integer): Boolean;
var
xx, yy: Integer;
begin
if not LoggedIn then Exit;
Result := FindColorSpiral(xx, yy, GreenStatusColor, x - 20, y - 30, x + 20, y
+ 30) or FindColorSpiral(xx, yy, RedStatusColor, x - 20, y - 30, x + 20, y
+ 30);
end;
function GPopupMulti(x, y, rx, ry: Integer; Options: array of String; MaxExamine: Boolean): Boolean;
var
i:Integer;
begin
if not LoggedIn then Exit;
Mouse(x, y, rx, ry, False);
FTWait(1 + Random(2));
for i := 0 to GetArrayLength(Options) - 1 do
begin
Result := GPopup(Options[i], MaxExamine);
if (Result) then Exit;
end;
end;
function GFindArrowMulti(color1, color2, color3, tolerance: Integer):
Boolean;
var
x, y: Integer;
begin
if not LoggedIn then LoginPlayer;
Result := False;
if((color1 > -1) and (FindColorSpiralTolerance(x, y, color1, MSX1, MSY1, MSX2, MSY2, tolerance))) or
((color2 > -1) and (FindColorSpiralTolerance(x, y, color2, MSX1, MSY1, MSX2, MSY2, tolerance))) or
((color3 > -1) and (FindColorSpiralTolerance(x, y, color3, MSX1, MSY1, MSX2, MSY2, tolerance))) then
begin
if (not x > 0) or (not y > 0) then Exit;
MMouse(x + 5, y, 2, 3);
GetMousePos(x,y);
if y < 1 then y := 1;
FTWait(Random(2));
if(IsUpTextMulti('ar', 'rr', 'row') and (x > 0) and not(IsUpText('Walk'))) then
begin
Mouse(x,y,0,0,true);
Result:=True;
Exit;
end else
if not IsUpText('alk') then
begin
if (GPopupMulti(x,y,0,0,['ar','rr','row'],True)) then
begin
Result := True;
Exit;
end else
begin
Result := True;
Exit;
end;
end else
begin
Result := True;
Exit;
end;
end else
begin
Result := False;
end;
end; // end of gfindarrowsmulti
function GFindMultiObj(firstText:string; Texts:array of string; color, tolerance: Integer):
Boolean;
var
x, y, i: Integer;
begin
if not LoggedIn then Exit;
Result := False;
if (FindColorSpiralTolerance(x, y, color, MSX1, MSY1, MSX2, MSY2, tolerance)) then
begin
if (not x > 0) or (not y > 0) then Exit;
Result := True;
MMouse(x, y, 2, 2);
if y < 1 then y := 1;
FTWait(Random(4));
if (IsUpText('ake')) then // left-click pickup
begin
if(not IsUpText(FirstText)) then
begin
for i := 0 to GetArrayLength(Texts) - 1 do
begin
if(IsUpText(Texts[i])) then
begin
Mouse(x,y,0,0,true);
GFlag;
Result := True;
Exit;
end;
end;
end else
begin
Mouse(x,y,0,0,true);
GFlag;
Result := True;
Exit;
end;
end; // end of left-click pickup
if (not IsUpText('Walk')) then // right-click pickup
begin
if(GPopup(FirstText, True)) then
begin
Result := True;
GFlag;
Exit;
end else if(GPopupMulti(x, y, 0, 0, Texts, True)) then
begin
GFlag;
Result := True;
Exit;
end else
begin
Result := True;
Exit;
end;
end; // end of right-click pickup
end else
begin
Result := False;
Exit;
end;
end; // end of gfindmultiobj
{*************************}
{***** ARROW-PICKING *****}
{*************************}
procedure GPickUpArrows;
var
StillFighting: Integer;
begin
if not LoggedIn then LoginPlayer;
if PickArrows then
begin
Status('Looking for arrows...');
while GFindArrowMulti(ArrowTail,ArrowMid,ArrowHead,ArrowTolerance) do
begin
GFlag;
ArrowGrabs := ArrowGrabs + 1;
FTWait(2 + Random(2));
if GInFight then StillFighting := StillFighting + 1;
if StillFighting >= 2 + Random(2) then Exit;
end;
ArrowsPicked := ArrowsPicked + 1;
end;
end;
{************************}
{***** ITEM-PICKING *****}
{************************}
procedure GPickUpItems;
var
i, StillFighting:Integer;
begin
if not LoggedIn then LoginPlayer;
if GInFight then Exit;
if(PickItems)then
begin
if (InvCount < 27) or ((InvCount = 27) and (FindItemColor(ArrowHead))) then
begin
Status('Looking for items...');
for i := 0 to GetArrayLength(ItemColor)-1 do
begin
repeat
if GFindMultiObj(ItemName[i],ItemName,ItemColor[i],ItemTolerance) then
begin
if GInFight then Exit;
GFlag;
FTWait(2 + Random(2));
ItemGrabs := ItemGrabs + 1;
if GInFight then StillFighting := StillFighting + 1;
if StillFighting >= 2 + Random(2) then Exit;
Continue;
end;
until(true)
end;
end;
end;
end;
{****************************}
{***** DTM/COLOR EATING *****}
{****************************}
function GEatIfNeeded(FoodColor,FoodDTM:array of Integer; MaxEatHp, MinEatHp: Integer):Boolean;
var
i, Health:Integer;
begin
if not LoggedIn then LoginPlayer;
while GetHp = 0 do GameTab(2);
if (GetHp <= MaxEatHp) then
begin
Health := GetHp;
if (Health < LowestHealth) then LowestHealth := Health;
repeat
GameTab(4);
Result := False;
// DTM food-finder
if not Result then
begin
for i:=0 to GetArrayLength(FoodDTM)-1 do
begin
Result := False;
if(FindDTM(FoodDTM[i], x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
MMouse(x + 2, y - 2, 6, 5);
FTWait(1 + Random(2));
if (IsUpText('Eat')) then
begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, True);
FoodEaten := FoodEaten + 1;
FTWait(1 + Random(2));
Result := True;
Break;
end;
end;
end;
end;
// color food-finder
if not Result then
begin
for i:=0 to GetArrayLength(FoodColor)-1 do
begin
if (FindColorSpiralTolerance(x, y, FoodColor[i], MIX1, MIY1, MIX2, MIY2, 2)) then
begin
MMouse(x + 2, y - 2, 6, 5);
FTWait(1 + Random(2));
if (IsUpText('Eat')) then
begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, True);
FoodEaten := FoodEaten + 1;
FTWait(1 + Random(2));
Result := True;
Break;
end;
end;
end;
end;
// food logout
if Result then Writeln(' Ate some food because of low health...')
else
begin
if (Health <= MinEatHp) then
begin
while GInFight do
begin
GRunAwayDirection(RunAwayDir);
Status('Ran away because you had no food and low health of ' + IntToStr(Health) + '...');
GFindNormalRandoms(True);
GRunBack;
end;
if (CombatType = 'Ranged') then GPickUpArrows;
Writeln('Logged out because you had no food and low health!');
Logout;
GReport;
TerminateScript;
end else
begin
Writeln(' You have no food, but your health is above the minimum');
Writeln(' so we are going to fight until it is...');
Result := True;
Exit;
end;
end;
while(not GetCurrentTab = 2) do GameTab(2);
until(GetHp >= MaxEatHp)
end;
end;
function GSetFightMode(FightType: Integer): Boolean;
begin
case FightType of
1:
begin
if not (GetColor(577, 254) = 2369440) then
begin
Mouse(577 + Random(62), 254 + Random(38), 0, 0, True);
FTWait(1 + Random(2));
end else Result := True;
end;
2:
begin
if not (GetColor(661, 254) = 2369440) then
begin
Mouse(661 + Random(62), 254 + Random(38), 0, 0, True);
FTWait(1 + Random(2));
end else Result := True;
end;
3:
begin
if not (GetColor(577, 307) = 2369440) then
begin
Mouse(577 + Random(62), 307 + Random(38), 0, 0, True);
FTWait(1 + Random(2));
end else Result := True;
end;
end;
end;
procedure GHoverSkill(Skill: string; OnlyInFight: Boolean);
var
row, col: Integer;
begin
if not LoggedIn then LoginPlayer;
case LowerCase(Skill) of
'attack':
begin
row := 1;
col := 1;
end;
'strength':
begin
row := 2;
col := 1;
end;
'defence':
begin
row := 3;
col := 1;
end;
'range':
begin
row := 4;
col := 1;
end;
'ranged':
begin
row := 4;
col := 1;
end;
'prayer':
begin
row := 5;
col := 1;
end;
'magic':
begin
row := 6;
col := 1;
end;
'runecraft':
begin
row := 7;
col := 1;
end;
'hitpoints':
begin
row := 1;
col := 2;
end;
'agility':
begin
row := 2;
col := 2;
end;
'herblore':
begin
row := 3;
col := 2;
end;
'thieving':
begin
row := 4;
col := 2;
end;
'crafting':
begin
row := 5;
col := 2;
end;
'fletching':
begin
row := 6;
col := 2;
end;
'slayer':
begin
row := 7;
col := 2;
end;
'smithing':
begin
row := 1;
col := 3;
end;
'mining':
begin
row := 2;
col := 3;
end;
'fishing':
begin
row := 3;
col := 3;
end;
'cooking':
begin
row := 4;
col := 3;
end;
'firemaking':
begin
row := 5;
col := 3;
end;
'woodcutting':
begin
row := 6;
col := 3;
end;
'farming':
begin
row := 7;
col := 3;
end;
'random':
begin
row := Random(6) + 1;
col := Random(2) + 1;
end;
end;
GameTab(2);
case OnlyInFight of
True:
begin
MMouse(532 + (64 * col), 191 + (31 * row), 10, 10);
GFTFightWait(4 + Random(8));
end;
False:
begin
MMouse(532 + (64 * col), 191 + (31 * row), 10, 10);
FTWait(4 + Random(8));
end;
end;
end;
procedure CheckQuestsTab; // tab 3
begin
// scrolls through quests
repeat until GameTab(3);
end;
procedure CheckMagicTab; // tab 7
begin
// hovers random spell(s)
end;
procedure CheckEmotesTab;
begin
// [scroll and ] hovers random emote
end;
{******************************************}
{***** ADVANCED ANTI-BAN FOR FIGHTING *****}
{******************************************}
procedure GFightAntiBan(OnlyInFight: Boolean);
begin
if not LoggedIn then LoginPlayer;
if (OnlyInFight) and (not GInFight) then Exit;
case Random(15) of
0: GEatIfNeeded(FoodCol, FoodDTM, MaxEatHp, MinEatHp);
1: GEatIfNeeded(FoodCol, FoodDTM, MaxEatHp, MinEatHp);
2:
begin
Writeln(' Hovering one of the skills you are using...');
GHoverSkill(SkillsUsing[Random(GetArrayLength(SkillsUsing) - 1)], OnlyInFight);
GEatIfNeeded(FoodCol, FoodDTM, MaxEatHp, MinEatHp);
end;
3:
begin
Writeln(' Hovering one of the skills you are using...');
GHoverSkill(SkillsUsing[Random(GetArrayLength(SkillsUsing) - 1)], OnlyInFight);
GEatIfNeeded(FoodCol, FoodDTM, MaxEatHp, MinEatHp);
end;
4:
begin
Writeln(' Checking out a random tab...');
GameTab(RandomFightTabs[Random(GetArrayLength(RandomFightTabs) - 1)]);
if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
end;
5:
begin
Writeln(' Starting to auto-respond...')
if GAutoTalk(2) then MarkTime(LastSpeakTime)
else if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
end;
6:
begin
Writeln(' Starting to auto-respond...')
if GAutoTalk(2) then MarkTime(LastSpeakTime)
else if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
end;
7:
begin
Writeln(' Starting to auto-talk/auto-respond...')
if GAutoTalk(1 + Random(2)) then MarkTime(LastSpeakTime)
else if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
end;
8:
begin
Writeln(' Starting to auto-talk/auto-respond...')
if GAutoTalk(1 + Random(2)) then MarkTime(LastSpeakTime)
else if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
end;
9:
begin
Writeln(' Checking out the equipment tab...');
GameTab(5);
if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
end;
10: if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
11: if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
12: GFindNormalRandoms(OnlyInFight);
13: GFindNormalRandoms(OnlyInFight);
14:
begin
Writeln(' Sending mouse to random area on mainscreen...')
MMouse(Random(MSX2),Random(MSY2),0,0);
if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
end;
end; // end of case
FindTalk;
end; // end of GFightAntiBan
procedure GFishAntiBan(Skill: String; OnlyInFight: Boolean);
begin
if not LoggedIn then LoginPlayer;
if (OnlyInFight) and (not GInFight) then Exit;
case Random(15) of
2:
begin
Writeln(' Hovering the ' + Skill + ' skill...');
GHoverSkill(Skill, OnlyInFight);
end;
3:
begin
Writeln(' Hovering the ' + Skill + ' skill...');
GHoverSkill(Skill, OnlyInFight);
end;
4:
begin
Writeln(' Checking out a random tab...');
GameTab(RandomFightTabs[Random(GetArrayLength(RandomFightTabs) - 1)]);
if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
end;
5:
begin
Writeln(' Starting to auto-respond...')
if GAutoTalk(2) then MarkTime(LastSpeakTime)
else if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
end;
6:
begin
Writeln(' Starting to auto-respond...')
if GAutoTalk(2) then MarkTime(LastSpeakTime)
else if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
end;
7:
begin
Writeln(' Starting to auto-talk/auto-respond...')
if GAutoTalk(1 + Random(2)) then MarkTime(LastSpeakTime)
else if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
end;
8:
begin
Writeln(' Starting to auto-talk/auto-respond...')
if GAutoTalk(1 + Random(2)) then MarkTime(LastSpeakTime)
else if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
end;
9:
begin
Writeln(' Checking out the equipment tab...');
GameTab(5);
if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
end;
10: if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
11: if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
12: GFindNormalRandoms(OnlyInFight);
13: GFindNormalRandoms(OnlyInFight);
14:
begin
Writeln(' Sending mouse to random area on mainscreen...')
MMouse(Random(MSX2),Random(MSY2),0,0);
if OnlyInFight then GFTFightWait(4 + Random(8)) else FTWait(4 + Random(8));
end;
end; // end of case
FindTalk;
end; // end of GFishAntiBan
{************************}
{***** EQUIP ARROWS *****}
{************************}
function GEquipArrows:Boolean;
begin
Result := False;
if not LoggedIn then LoginPlayer;
if GInFight then Exit;
if(ArrowsPicked >= LoadsBeforeEquipMin + Random(LoadsBeforeEquipMax - LoadsBeforeEquipMin + 1)) then
begin
Status('Equipping arrows...');
GameTab(4);
if(FindDTM(ArrowDTM, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
MMouse(x,y,5,5);
if(IsUpTextMulti(Copy(ArrowName,1,2),Copy(ArrowName,2,3),Copy(ArrowName,3,2))) then
begin
Mouse(x,y,0,0,true);
ArrowsPicked := 0;
Result := True;
end;
end else
if (FindItemColorTol(ArrowHead,5)) then
begin
if(IsUpTextMulti(Copy(ArrowName,1,3),Copy(ArrowName,2,3),Copy(ArrowName,1,2))) then
begin
ClickItemColorTol(ArrowHead,5, true);
ArrowsPicked := 0;
Result := True;
end;
end;
if Result then Writeln('Equipped arrows in inventory...')
else Writeln('Could not find correct arrows in inventory to equip...');
end;
end; // end of GEquipArrows
{************************}
{***** SCRIPT SETUP *****}
{************************}
procedure GSetupScript;
begin
Writeln('Initializing settings form...');
SafeInitForm;
SafeShowFormModal;
Writeln('Initializing game settings...');
Status('Setting up SRL...');
SetupSRL;
Status('Activating client...');
ActivateClient;
Wait(2000);
If not(Loggedin)then
begin
Status('Logging in...');
LoginPlayer;
end;
Status('Loading Variables...');
LoadVars;
Status('Loading DTMs...');
LoadDTMs;
Status('Starting timer...');
MarkTime(StartTime);
MouseSpeed := PlayerMouseSpeed;
BenMouse := PlayerBenMouse;
Status('Setting screen to the highest angle at north...');
HighestAngle;
MakeCompass('n');
Status('Setting chat...');
SetChat('On',1);
SetChat('Off',2);
SetChat('On',3);
Status('Setting fight-mode...');
repeat until GameTab(1);
repeat until GSetFightMode(FightMode);
FirstTalk := True;
GAutoTalk(0);
Status('Turning on run...');
repeat until GameTab(11);
SetRun(True);
if GetArrayLength(FoodName) > 0 then Status('Getting food colors...');
repeat until GameTab(4);
for i:=0 to GetArrayLength(FoodName)-1 do
begin
SameColor := False;
if(FindDTM(FoodDTM[i], x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
PointColor := GetColor(x, y);
for j := 0 to GetArrayLength(ItemColor) - 1 do
begin // does not add color to list if already on it
if (PointColor = ItemColor[j]) then
begin
Writeln('2');
SameColor := True;
Break;
end;
end;
if SameColor then Continue;
SetArrayLength(ItemColor, GetArrayLength(ItemColor) + 1);
SetArrayLength(ItemName, GetArrayLength(ItemName) + 1);
ItemColor[GetArrayLength(ItemColor) - 1] := GetColor(x,y);
ItemName[GetArrayLength(ItemName) - 1] := FoodDTMName[i];
Writeln(' Found ' + FoodName[i] + ' and will now eat and pick it up...');
end else
begin
Writeln(' Could not find ' + FoodName[i] + ' DTM in inventory...');
end;
end;
// equip arrows before taking color
if((FindDTM(ArrowDTM, x, y, MIX1, MIY1, MIX2, MIY2))) then
begin
MMouse(x,y,5,5);
if(IsUpTextMulti(Copy(ArrowName,1,3),Copy(ArrowName,2,3),Copy(ArrowName,1,2))) then
begin
Mouse(x,y,0,0,true);
Writeln('Equipped arrows in inventory using DTM...');
FTWait(4 + Random(3));
end;
end;
if (ArrowTail = 0) or (ArrowMid = 0) or (ArrowHead = 0) then
Status('Getting arrow colors...')
else
Status('Checking for arrows...');
repeat until GameTab(5);
if FindDTM(ArrowDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Found arrow DTM in equipment tab...');
if ArrowTail = 0 then
begin
ArrowTail := GetColor(687, 273);
Writeln(' Arrow Tail: ' + IntToStr(ArrowTail));
end;
if ArrowMid = 0 then
begin
ArrowMid := GetColor(692, 261);
Writeln(' Arrow Mid: ' + IntToStr(ArrowMid));
end;
if ArrowHead = 0 then
begin
ArrowHead := GetColor(696, 254);
Writeln(' Arrow Head: ' + IntToStr(ArrowHead));
end;
end else
begin
Writeln('Logged out because could not find arrows.');
Logout;
TerminateScript;
end;
LowestHealth := GetHp;
SetArrayLength(SkillsLevels, GetArrayLength(SkillsUsing));
FirstLoop := True;
for i := 0 to GetArrayLength(SkillsLevels) - 1 do
begin
SkillsLevels[i] := GetSkillLevel(SkillsUsing[i]);
if FirstLoop then Writeln('Starting levels are as follows:');
FirstLoop := False;
Writeln(' ' + SkillsUsing[i] + ': ' + IntToStr(SkillsLevels[i]));
end;
NoMonsters := 0;
Runtime := (MinRuntime + Random(MaxRuntime - MinRuntime + 1)) * 60000;
Kills := MinKills + Random(MaxKills - MinKills + 1);
end;
{********************}
{***** FIGHTING *****}
{********************}
procedure GFight;
begin
MarkTime(LastFightTime); // reset time before start searching for monster
Status('Finding monster...');
repeat
If not(Loggedin)then
begin
LoginPlayer;
FTWait(4 + random (4));
end;
if (TimeFromMark(StartTime) >= Runtime) or (TimeFromMark(LastFightTime) >= (MinFightTime * 1000)) then Exit;
if (NoMonsters >= 10) then
begin
NoMonsters := 0;
if GLastGameMessage('dead') then
begin
Writeln('Logged out because you died somehow =(.');
GReport;
Logout;
TerminateScript;
end;
if (CombatType = 'Ranged') and (GLastGameMessage('no ammo')) then
begin
GEatIfNeeded(FoodCol, FoodDTM, MaxEatHp, MinEatHp);
GPickUpArrows;
if not GEquipArrows then
begin
Writeln('Logged out because you had no more arrows.');
end;
end;
if (CombatType = 'Mage') and (GLastGameMessage('no runes')) then
begin
Writeln('Logged out because you had no more of the required runes.');
GReport;
TerminateScript;
end;
GFindNormalRandoms(False);
Writeln('Monster not found for a while...');
end;
NoMonsters := NoMonsters + 1;
FTWait(Random(3));
if (not GInFight) and
(FindColorSpiralTolerance(x,y,MonsterColor1,0,0,520,340,MonsterColorTolerance) or
FindColorSpiralTolerance(x,y,MonsterColor2,0,0,520,340,MonsterColorTolerance) or
FindColorSpiralTolerance(x,y,MonsterColor3,0,0,520,340,MonsterColorTolerance)) then
begin
if (not GIsFightAt(x,y)) then
begin
MMouse(x,y,5,5);
if y < 1 then y := 1;
if not GInFight then
begin // left click monster
if IsUpTextMulti('tta','tac','ack') then
begin
Mouse(x,y,0,0,true);
Status('Found monster...');
FTWait(Random(3));
GFlag;
NoMonsters := 0;
if not GInFight then FTWait(4 + Random(4));
if not GInFight then GFightAntiBan(False);
if GLastGameMessage('no ammo') then
begin
Writeln('Uh oh! Ran out of arrows. Looking and equipping if found...');
if not GEquipArrows then GPickUpArrows;
end;
end else // right click monster
if (RightClickMonster) and (IsUpText('/')) then
begin
if GPopupMulti(x,y,0,0,['tta','tac','ack'],False) then
begin
Status('Found monster...');
GFlag;
NoMonsters := 0;
if not GInFight then FTWait(4 + Random(4));
if not GInFight then GFightAntiBan(False);
if GLastGameMessage('no ammo') then
begin
Writeln('Uh oh! Ran out of arrows. Looking and equipping if found...');
if not GEquipArrows then GPickUpArrows;
end;
end;
end; // end of GInFight check
end; // end of left and right clicking
end; // end of GFightAt finding
end; // end of monster-finding
until(GInFight)
// antiban while in fight
if(GInFight) then
begin
Status('Attacking monster...');
MarkTime(FightTime);
Writeln('Commencing anti-ban procedure...');
repeat
GFightAntiBan(True);
if(GLastGameMessage('no ammo')) then
begin
GEatIfNeeded(FoodCol, FoodDTM, MaxEatHp, MinEatHp);
GPickUpArrows;
GEquipArrows;
end;
until(not GInFight) or (TimeFromMark(FightTime) >= (MaxFightTime * 1000))
end;
// check if fight lasted longer than requested
if (TimeFromMark(FightTime) >= MaxFightTime * 1000) and (GInFight) then
begin
repeat
GRunAwayDirection(RunAwayDir);
Writeln('Ran away because fight lasted ' + IntToStr(TimeFromMark(FightTime)/1000) + ' seconds...');
GFindNormalRandoms(True);
GEatIfNeeded(FoodCol, FoodDTM, MaxEatHp, MinEatHp);
GPickUpArrows; // in case wall blocked runaway, not to lose arrows
GRunBack;
until not GInFight
end;
if (not GInFight) and (BoxInFight) then
begin
Status('Managing box random out of fight...');
if (UseBoxSolver) then SolveBox
else
GambleNewBox;
BoxInFight := False;
end;
if(FindChatText('Oh dear,') and FindChatText('dead')) then
begin
Writeln('Logged out because you died somehow =(.');
Logout;
TerminateScript;
end;
Status('Killed monster...');
Killed := Killed + 1;
// health check
while GetCurrentTab <> 2 do GameTab(2);
if(GetHp < MaxEatHp) then
begin
GEatIfNeeded(FoodCol, FoodDTM, MaxEatHp, MinEatHp);
end;
Writeln('Health is currently ' + IntToStr(GetHp) + '...');
GPickUpArrows;
GEquipArrows;
GPickUpItems;
end; // end of GFight
{*********************}
{***** MAIN LOOP *****}
{*********************}
begin
Writeln('Commencing script authorization...');
GAuthorizeScript;
Writeln('Commencing script setup...');
GSetupScript;
{
MouseSpeed := PlayerMouseSpeed + 5;
GFishAndCook;
Writeln('You fished ' + IntToStr(FishCaught) + ' fish, and successfully cooked ' + IntToStr(FishCooked) + ' fish.');
Writeln('Finished fishing test!');
TerminateScript;
}
// GCast(SpellDTM);
Writeln('Commencing fight sequence...');
MouseSpeed := PlayerMouseSpeed;
repeat
GFight;
GReport;
if TimeFromMark(StartTime) >= Runtime then
begin
Status('The script has completed the requested runtime!');
Break;
end else
if TimeFromMark(LastFightTime) >= (MinFightTime * 1000) then
begin
Writeln('Logged out because you have not been in a fight for ' + IntToStr(TimeFromMark(LastFightTime)/1000) + ' seconds.');
Break;
end else
if Killed >= Kills then
begin
Writeln('The script has completed the requested kills!');
Break;
end;
until False
GReport;
Writeln('Thank you for using GExtremeRanger V' + FloatToStr(VERSION) + ',');
Writeln('I hope it enhanced your SCAR/SRL experience.');
Logout;
end.
Payscript which was sold at Mopar's. Don't ask me how I got it..