SRL Archive - RS3 Outdated / Broken Scripts

Teh's Crafting


tehq

2013-01-20 15:20:31

Teh's Crafting



SRL Stats


This script only crafts molten glass into unpowered orbs as of right now!



=-=-=-=-=-=-=-= Crafting by Teh =-=-=-=-=-=-=
Time Running: 6 Hours, 1 Minutes and 44 Seconds
Crafting: Unpowered Orbs
Crafting XP Gained: 526260
Crafting XP/Hour: 87287.2790227106
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


How to use the form:
1. Fill in the details of the account you would like to use.*(If you wish to use an account that is already saved, please begin at step 4. Accounts currently work with tAlch, tTeleport, tSuperheat, tFletch, and tCraft).

2. Fill in the information for the script to use.

3. Save the data for future applications. (See C:\Simba\TehScripts\Accounts and C:\Simba\TehScripts\tFletching.)
*Note: See C:\Simba\TehScripts\Stats after each run for overall usage.

4. *(or 1.) Load an account that you have previously saved.

5. Begin the script!
** If you wish to change the Script info without changing the Account info.. First, select the account. Then, clear the account text box. Finally, edit the info you wish to change, save, and begin the script.**



program tCraft;
{$DEFINE SMART} { tCrafting}
{$i SRL/srl.simba}

var
x, y, Count, Antibans, GetTime, i, StartTime,
LoadCount, CHI, Runs, CraftDtm: Integer;
User1, Pass1, StatsUser1, StatsPass1, Uptext,
CraftName, Bankloc, BankPin1, ToCraft: String;
Crafting_XP, XP: extended;

Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := User1;
Pass := Pass1;
BoxRewards := ['amp', 'Xp', 'XP'];
Pin := BankPin1;
LampSkill := SKILL_CRAFTING;
Active := True;
end;
end;

Procedure Run;
begin
SRL_SIXHOURFIX := TRUE;
SMART_FIXSPEED := TRUE;
SetupSRL;
SetupSRLStats(1304, StatsUser1, StatsPass1);
DeclarePlayers;
LoginPlayer;
Count := 0;
if not LoggedIn then
begin
repeat
LoginPlayerToLob;
until LobbyScreen;
OpenWorldScreen;
if not WorldScreen then
OpenWorldScreen;
if WorldScreen then
begin
RandomWorld(True, False);
LoginPlayer;
end;
end;

if LoggedIn then
begin
ClickNorth(SRL_ANGLE_HIGH);
ExitSquealOfFortune;
SetChat('off', CHAT_ASSIST);
SetChat('off', CHAT_PUBLIC);
Setchat('off', CHAT_PRIVATE);
FTab(tab_Inv);
end;
if FindNormalRandoms or FindNonInventoryRandoms then
Exit;
Antibans := 0;
end;

{ Form vars }
var
frmDesign: TForm;
BeginButton, SaveButton: TButton;
TitleLabel, UserLabel, PassLabel, InventoryLabel, StatsUserLabel,StatsPassLabel,
CraftLabel, AccLabel,BankLabel, PinLabel: TLabel;
User, Pass, Inventory, StatsUser, StatsPass, BankPin: TEdit;
ImageCH: TImage;
Acc, Craft, BLList: TComboBox;
Accs: Array of string;
RefTime: TTimer;

Procedure ButtonClick(Sender: TObject);
begin
frmDesign.ModalResult := mrOk;
if (Acc.TEXT <> '') then
begin
if not FileExists('C:\Simba\TehScripts\Accounts\' + Acc.TEXT) or not FileExists('C:\Simba\TehScripts\tCrafting\' + Acc.TEXT) then
begin
Writeln('Could not locate your player information.. Terminating script.');
TerminateScript;
end;
Runs := StrToIntDef(ReadINI('Times Run', 'Times Run', 'C:\Simba\TehScripts\Stats\tCrafting.txt'), 0);
User1 := ReadINI('Name', 'Name', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
Pass1 := ReadINI('Pass', 'Pass', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
StatsUser1 := ReadINI('StatsName', 'StatsName', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
StatsPass1 := ReadINI('StatsPass', 'StatsPass', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
BankLoc := (ReadINI('Location', 'Location', 'C:\Simba\TehScripts\tCrafting\' + Acc.TEXT));
BankPin1 := ReadINI('Pin', 'Pin', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
LoadCount := StrToIntDef(ReadINI('Total Loads', 'Total Loads', 'C:\Simba\TehScripts\tCrafting\' + Acc.TEXT), -1);
ToCraft := ReadINI('Craft', 'Craft', 'C:\Simba\TehScripts\tCrafting\' + Acc.TEXT);
end else
begin
Runs := StrToIntDef(ReadINI('Times Run', 'Times Run', 'C:\Simba\TehScripts\Stats\tCrafting.txt'), 0);
User1 := User.TEXT;
Pass1 := Pass.TEXT;
StatsUser1 := StatsUser.TEXT;
StatsPass1 := StatsPass.TEXT;
BankLoc := BLList.TEXT;
BankPin1 := BankPin.TEXT;
LoadCount := StrToInt(Inventory.TEXT);
ToCraft := Craft.TEXT;
end;
ClearDebug;
WriteLn('Thanks for using Teh''s Crafter. Please leave some feedback.');
FreeBitmap(CHI);
end;

Procedure ButtonClick2(Sender: TObject); //saves player info
begin
ClearDebug;
if (User.TEXT <> '') then
begin
WriteINI('Name', 'Name', User.TEXT, 'C:\Simba\TehScripts\Accounts\' + (User.TEXT) + '.txt');
WriteINI('Pass', 'Pass', Pass.TEXT, 'C:\Simba\TehScripts\Accounts\' + (User.TEXT) + '.txt');
WriteINI('StatsName', 'StatsName', StatsUser.TEXT, 'C:\Simba\TehScripts\Accounts\' + (User.TEXT) + '.txt');
WriteINI('StatsPass', 'StatsPass', StatsPass.TEXT, 'C:\Simba\TehScripts\Accounts\' + (User.TEXT) + '.txt');
Acc.Items.Add(User.TEXT + '.txt');
WriteINI('Craft', 'Craft', (Craft.TEXT), 'C:\Simba\TehScripts\tCrafting\' + (User.TEXT) + '.txt');
WriteINI('Pin', 'Pin', BankPin.TEXT, 'C:\Simba\TehScripts\Accounts\' + (User.TEXT) + '.txt');
WriteINI('Location', 'Location', (BLLIST.TEXT), 'C:\Simba\TehScripts\tCrafting\' + (User.TEXT) + '.txt');
WriteINI('Total Loads', 'Total Loads', Inventory.TEXT,'C:\Simba\TehScripts\tCrafting\' + (User.TEXT) + '.txt');
end else
Writeln('Please enter a username to save your information.');
WriteLn('Info saved to Simba\TehScripts.');
end;

Procedure OnTimer(Sender: TObject);
begin
if (Acc.TEXT <> '') then
begin
User.TEXT := ReadINI('Name', 'Name', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
Pass.TEXT := ReadINI('Pass', 'Pass', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
StatsUser.TEXT := ReadINI('StatsName', 'StatsName', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
StatsPass.TEXT := ReadINI('StatsPass', 'StatsPass', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
Craft.TEXT := ReadINI('Craft', 'Craft', 'C:\Simba\TehScripts\tCrafting\' + Acc.TEXT);
BankPin.TEXT := ReadINI('Pin', 'Pin', 'C:\Simba\TehScripts\Accounts\' + Acc.TEXT);
Inventory.TEXT := ReadINI('Total Loads', 'Total Loads', 'C:\Simba\TehScripts\tCrafting\' + Acc.TEXT);
BLList.TEXT := ReadINI('Location', 'Location', 'C:\Simba\TehScripts\tCrafting\' + Acc.TEXT);
end;
end;

Procedure FinishStats;
var
CurrTime: integer;
CurrXP: extended;
begin
if (Runs < 1) then
WriteINI('Times Run', 'Times Run', IntToStr(1), 'C:\Simba\TehScripts\Stats\tCrafting.txt')
else
WriteINI('Times Run', 'Times Run', IntToStr(Runs + 1), 'C:\Simba\TehScripts\Stats\tCrafting.txt');
CurrTime := StrToIntDef(ReadINI('Time Running (sec)', 'Time Running (sec)', 'C:\Simba\TehScripts\Stats\tCrafting.txt'), 0);
CurrXP := StrToIntDef(ReadINI('Total XP Gained', 'Total XP Gained', 'C:\Simba\TehScripts\Stats\tCrafting.txt'), 0);
WriteINI('Time Running (sec)', 'Time Running (sec)', IntToStr(CurrTime + Round(TimeFromMark(StartTime)/1000)), 'C:\Simba\TehScripts\Stats\tCrafting.txt');
WriteINI('Total XP Gained', 'Total XP Gained', ToStr(CurrXP + Crafting_XP), 'C:\Simba\TehScripts\Stats\tCrafting.txt');
end;

Procedure CreateFolders();
begin
ClearDebug;
if not DirectoryExists(AppPath + 'TehScripts') then
begin
CreateDirectory(AppPath + 'TehScripts');
CreateDirectory(AppPath + 'TehScripts\tSuperheat');
CreateDirectory(AppPath + 'TehScripts\tAlch');
CreateDirectory(AppPath + 'TehScripts\tTeleport');
CreateDirectory(AppPath + 'TehScripts\tAgility');
CreateDirectory(AppPath + 'TehScripts\tVial');
CreateDirectory(AppPath + 'TehScripts\tQuest');
CreateDirectory(AppPath + 'TehScripts\tWoodcutting');
CreateDirectory(AppPath + 'TehScripts\tFletching');
CreateDirectory(AppPath + 'TehScripts\Accounts');
CreateDirectory(AppPath + 'TehScripts\tCrafting');
CreateDirectory(AppPath + 'TehScripts\Stats');
Writeln('Successfully created the directories that are used in my scripts.');
end else
Writeln('Please delete the TehScripts directory in your Simba folder and try again.');
end;

Procedure InitForm;
begin
frmDesign := TForm.Create(nil);;
frmDesign.Left := 270;
frmDesign.Top := 50;
frmDesign.Width := 800;
frmDesign.Height := 500;
frmDesign.Caption := 'Teh''s Crafting';
frmDesign.Font.Color := ClBlack;
frmDesign.Font.Name := 'Calibri';
frmDesign.Color := ClNavy;

BeginButton := TButton.Create(FrmDesign);
BeginButton.Parent := frmDesign;
BeginButton.Left := 650;
BeginButton.Top := 400;
BeginButton.Height := 30;
BeginButton.Width := 105;
BeginButton.Caption := 'Begin Script';
BeginButton.OnClick := @ButtonClick;

SaveButton := TButton.Create(FrmDesign);
SaveButton.Parent := FrmDesign;
SaveButton.Left := 650;
SaveButton.Top := 350;
SaveButton.Height := 30;
SaveButton.Width := 105;
SaveButton.Caption := 'Save Info';
SaveButton.OnClick := @ButtonClick2;

TitleLabel := TLabel.Create(FrmDesign);
TitleLabel.Parent := FrmDesign;
TitleLabel.Left := 275;
TitleLabel.Top := 10;
TitleLabel.Caption := 'Teh''s Crafting';
TitleLabel.Font.Size := 30;
TitleLabel.Font.Color := ClWhite;
TitleLabel.Font.Name := 'Calibri';

RefTime := TTimer.Create(FrmDesign);
RefTime.Interval := 500;
RefTime.OnTimer := @OnTimer;
RefTime.Enabled := True;

User := TEdit.Create(FrmDesign);
User.Parent := FrmDesign;
User.Top := 100;
User.Left := 200;
User.Width := 140;
User.Height := 20;
UserLabel := TLabel.Create(FrmDesign);
UserLabel.Parent := FrmDesign;
UserLabel.Top := 100;
UserLabel.Left := 80;
UserLabel.Caption := 'Username';
UserLabel.FONT.Color := ClWhite;

StatsUser := TEdit.Create(FrmDesign);
StatsUser.Parent := FrmDesign;
StatsUser.Top := 200;
StatsUser.Left := 200;
StatsUser.Width := 140;
StatsUser.Height := 20;
StatsUser.Text := '';
StatsUserLabel := TLabel.Create(FrmDesign);
StatsUserLabel.Parent := FrmDesign;
StatsUserLabel.Top := 200;
StatsUserLabel.Left := 80;
StatsUserLabel.Caption := 'Stats User';
StatsUserLabel.FONT.Color := ClWhite;

StatsPass := TEdit.Create(FrmDesign);
StatsPass.Parent := FrmDesign;
StatsPass.Top := 250;
StatsPass.Left := 200;
StatsPass.Width := 140;
StatsPass.Height := 20;
StatsPass.Text := '';
StatsPassLabel := TLabel.Create(FrmDesign);
StatsPassLabel.Parent := FrmDesign;
StatsPassLabel.Top := 250;
StatsPassLabel.Left := 80;
StatsPassLabel.Caption := 'Stats Pass';
StatsPassLabel.FONT.Color := ClWhite;

Pass := TEdit.Create(FrmDesign);
Pass.Parent := FrmDesign;
Pass.Top := 150;
Pass.Left := 200;
Pass.Width := 140;
Pass.Height := 20;
PassLabel := TLabel.Create(FrmDesign);
PassLabel.Parent := FrmDesign;
PassLabel.Top := 150;
PassLabel.Left := 80;
PassLabel.Caption := 'Password';
PassLabel.FONT.Color := ClWhite;

Accs := GetFiles(AppPath + 'TehScripts\Accounts\', 'txt');
Acc := TComboBox.Create(FrmDesign);
Acc.Parent := FrmDesign;
Acc.Top := 350;
Acc.Left := 450;
Acc.Width := 140;
Acc.Height := 150;
for i := 0 to high(Accs) do
Acc.Items.Add(Accs[i]);
AccLabel := TLabel.Create(FrmDesign);
AccLabel.Parent := FrmDesign;
AccLabel.Top := 350;
AccLabel.Left := 370;
AccLabel.Caption := 'Account?';
AccLabel.FONT.Color := ClWhite;

BankPin := TEdit.Create(FrmDesign);
BankPin.Parent := FrmDesign;
BankPin.Top := 100;
BankPin.Left := 450;
BankPin.Width := 140;
BankPin.Height := 20;
BankPin.Text := '';
BankPin.MaxLength := 4;
PinLabel := TLabel.Create(FrmDesign);
PinLabel.Parent := FrmDesign;
PinLabel.Top := 100;
PinLabel.Left := 370;
PinLabel.Caption := 'Bank Pin';
PinLabel.FONT.Color := ClWhite;

Inventory := TEdit.Create(FrmDesign);
Inventory.Parent := FrmDesign;
Inventory.Top := 200;
Inventory.Left := 450;
Inventory.Width := 140;
Inventory.Height := 20;
Inventory.MaxLength := 4;
Inventory.TEXT := '75';
InventoryLabel := TLabel.Create(FrmDesign);
InventoryLabel.Parent := FrmDesign;
InventoryLabel.Top := 200;
InventoryLabel.Left := 370;
InventoryLabel.Caption := '# of Invs';
InventoryLabel.FONT.Color := ClWhite;

BLList := TComboBox.Create(FrmDesign);
BLList.Parent := FrmDesign;
BLList.Top := 150;
BLList.Left := 450;
BLList.Width := 140;
BLList.Height := 175;
BLList.Items.Add('Soul Wars');
BLList.Items.Add('Castle Wars');
BLList.Items.Add('Burthrope');
BLList.Items.Add('Varrock East');
BLList.Items.Add('Varrock West');
BLList.Items.Add('Falador East');
BLList.Items.Add('Falador West');
BLList.Items.Add('Yanille');
BLList.Items.Add('Camelot');
BLList.Items.Add('Catherby');
BLList.Items.Add('Draynor');
BLList.Items.Add('Al-Kharid');
BLList.Items.Add('Edgeville');
BLList.Items.Add('Taverly');
BLList.Items.Add('Warriors Guild');
BLList.Items.Add('Fishing Guild');
BLList.Items.Add('Ardougne North');
BLList.Items.Add('Ardougne South');
BLList.Items.Add('Gnome North');
BLList.Items.Add('Gnome South');
BankLabel := TLabel.Create(FrmDesign);
BankLabel.Parent := FrmDesign;
BankLabel.Top := 150;
BankLabel.Left := 370;
BankLabel.Caption := 'Bank?';
BankLabel.FONT.Color := ClWhite;

Craft := TComboBox.Create(FrmDesign);
Craft.Parent := FrmDesign;
Craft.Top := 250;
Craft.Left := 450;
Craft.Width := 140;
Craft.Height := 42;
Craft.Items.Add('Unpowered orbs');
CraftLabel := TLabel.Create(FrmDesign);
CraftLabel.Parent := FrmDesign;
CraftLabel.Top := 250;
CraftLabel.Left := 370;
CraftLabel.Caption := 'Craft?';
CraftLabel.FONT.Color := ClWhite;

ImageCH := TImage.Create(FrmDesign);
ImageCH.Parent := FrmDesign;
ImageCH.Left := 610;
ImageCH.Top := 25;
ImageCH.Width := 141;
ImageCH.Height := 310;
CHI := BitmapFromString(141, 310, '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');
DrawBitmap(CHI, ImageCH.canvas, 0, 0);
end;

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 SetupCraft();
begin
Uptext := 'lt';
XP := 52.5;
CraftName := 'Unpowered Orbs';
CraftDtm := DTMFromString('mQwAAAHicY2ZgYDjExMCwA4hPALEYIwODEBBLAPH1bAeGa0B8tCSUgQuoDoYZkTAQAAAzWQdB');
end;

Function WaitFindBitmap(Bitmap: integer; var x, y: integer; xs, ys, xe, ye, Tolerance, WaitPerLoop, MaxTime: integer): boolean;
var
t: integer;
begin
result := false;
t := (getSystemTime + MaxTime);
while (getSystemTime < t) do
begin
if (FindBitmapToleranceIn(Bitmap, x, y, xs, ys, xe, ye, Tolerance)) then
begin
result := true;
break;
end;
wait(WaitPerLoop);
end;
end;

Function Crafting: boolean;
var
StartCraft, CurrentCraft, Done, CraftTime: integer;
begin
Done := BitmapFromString(59, 16, 'meJzVlDGKwlAQhhuV9Vl4h228gJ2lIGJp61aCB7ATjCgGPYXtNiso7BZ7CcFDeBFNnnlO3j8ziSmCwleYf/55+ZSH/Xa1/1YMOzzNzxYilYtSSVASl2Pnwc3tfLogiTazUhpf3SrihOnPS7XZrXIY9yoIFdZDmzswVwr6SGIyqCHUTc+9y4O5VFB2dRYjBvo6JfduDjui9yrnrs5u+oHQE6QcO8Wm+HVYJcf3rI7QdSnHToEp+0fEKjl+5gahh0s5dopNPaJyEGNfGph9kHI7LBnogVKIHUkpmq7UabIePa7MMeae088xv2uGzP9htkan3iMm+IrHNDQRViY0fyEvyQrjBXMCbFPS05PUurV9UtiehmQ2Mc+TpNZB2CeHfKlkCf9vGq/FNkEoXAF3z/CI');
result := true;
StartCraft := InvCount;
MarkTime(CraftTime);
repeat
CurrentCraft := CountItems('dtm', CraftDtm, [0]);
if not (CurrentCraft = 0) and (CurrentCraft <= StartCraft) then
result := true;
if (CurrentCraft = 0) then
begin
if WaitFindBitmap(Done, x, y, MSX1, MSY1, MSX2, MSY2, 10, 100, 1000) then
Mouse(x + 10, y, 50, 15, mouse_Left);
result := false;
break;
end;
until (result = false) or (TimeFromMark(CraftTime) > 65000);
FreeDtm(CraftDtm);
FreeBitmap(Done);
end;

Procedure BankDeposit;
var
BankTime: integer;
begin
MarkTime(BankTime);
repeat
Deposit(1, 28, True);
until InvEmpty or (TimeFromMark(BankTime) > 15000);
if (TimeFromMark(BankTime) > 15000) then
begin
WriteLn('Failed to deposit. Logging out your character and terminating the script.');
Logout;
TerminateScript;
end;
end;

Function WaitCraftCount(Count, CountCraft: Integer): boolean;
var
l: integer;
begin
Result := false;
if not BankScreen then
if not GameTab(tab_Inv) then
exit;
repeat
if (CountCraft >= Count) then
Result := True;
Inc(l);
until (result = true) or (l > 99);
end;

Procedure CraftOT;
begin
if (TimeFromMark(GetTime) > 12001) then
begin
Writeln('Failed to withdraw. Logging out your character and terminating the script.');
repeat
Logout;
TerminateScript;
until not LoggedIn;
end;
end;

Procedure Banking;
var
BankTime: integer;
begin
if FindNormalRandoms or FindNonInventoryRandoms or not LoggedIn then
Exit;
MarkTime(BankTime);
repeat
SetAngle(SRL_ANGLE_HIGH);
case Lowercase(BankLoc) of
'soul wars': OpenBankChest(SRL_BANK_SW);
'castle wars': OpenBankChest(SRL_BANK_CW);
'burthrope': OpenBankChest(SRL_BANK_B);
'varrock east': OpenBankQuiet('veb');
'varrock west': OpenBankQuiet('vwb');
'falador east': OpenBankQuiet('feb');
'falador west': OpenBankQuiet('fwb');
'yanille': OpenBankFast('ynb');
'camelot': OpenBankFast('clt');
'catherby': OpenBankFast('ctb');
'draynor': OpenBankQuiet('db');
'al-kharid': OpenBankQuiet('akb');
'edgeville': OpenBankQuiet('eb');
'taverly': OpenBankFast('tavb');
'warriors guild': OpenBankFast('wgb');
'fishing guild': OpenBankFast('fgb');
'ardougne north': OpenBankFast('nab');
'ardougne south': OpenBankFast('sab');
'gnome north': OpenBankFast('ngb');
'gnome south': OpenBankFast('sgb');
end;
until WaitFunc(@BankScreen, Random(15), 2000) or WaitFunc(@PinScreen, Random(15), 2000) or (TimeFromMark(BankTime) > 25000);
if (TimeFromMark(BankTime) > 25001) then
begin
WriteLn('Failed to open the bank. Logging out your character and terminating the script.');
Logout;
TerminateScript;
end;
if PinScreen then
begin
MarkTime(BankTime);
repeat
InPin(Players[CurrentPlayer].Pin);
until BankScreen or not LoggedIn or (TimeFromMark(BankTime) > 15000);
if (TimeFromMark(BankTime) > 15000) then
begin
WriteLn('Failed to enter your bank pin. Logging out your character and terminating the script.');
Logout;
TerminateScript;
end;
end;
end;

Procedure WithdrawCraft();
var
Amount: integer;
begin
Amount := 28;
repeat
MarkTime(GetTime);
begin
if WithdrawItem(CraftDtm, 'dtm', Amount, Uptext, [0]) then
while not WaitCraftCount(27, CountItems('dtm', CraftDtm, [0])) do
Wait(10);
WriteLn('You currently have ' +IntToStr(CountItems('dtm', CraftDtm, [0])) +' '+ CraftName + ' in your inventory.');
end;
until (CountItems('dtm', CraftDtm, [0]) > 27) or (TimeFromMark(GetTime) > 12000);
CraftOT;
CloseBank;
end;

Procedure Progress;
var
Cxph: extended;
begin
Cxph := ((Crafting_xp) / (GetTimeRunning / 3600000.0));
ClearDebug;
WriteLn('=-=-=-=-=-=-=-= Crafting by Teh =-=-=-=-=-=-=');
WriteLn('Time Running: ' +TimeRunning);
WriteLn('Crafting: ' + (CraftName));
WriteLn('Crafting XP Gained: ' + ToStr(Crafting_XP));
Writeln('Crafting XP/Hour: ' + ToStr(Cxph));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
end;

Function Antiban: boolean;
begin
Result := False;
case Random(51) of
15:
begin
Result := True;
Boredhuman;
Inc(Antibans);
end;

30:
begin
Result := True;
RandomRClick;
Inc(Antibans);
end;
end;
Result := False;
end;

Procedure CraftAll;
var
CraftOrb, ClickedOrb, Blow: integer;
begin
CraftOrb := BitmapFromString(26, 14, 'meJzj4xs+4D8YUNc0BgYGepr2HxUgC2IygKahqcRqIwSg6YUDNEOQVeJxP5peBiSALILL4wRNI6hyqJiGNcDxmIapkg8DMKACZEE8yqiVkjEBAMzDKUk=');
ClickedOrb := BitmapFromString(22, 19, 'meJzVkW1LwlAAhecPieyNxWwxkulQhjGWo2SpZVPUTM2WS///Zx+4cBlz6DUhCM6HcXfOwzn3Jp2T5J+o4XlHEjz/AYjbuP81wQ8CCVHkVBzHqdXrroufoMxyyK+CpuWmmo9PfjPATLBSdcq2neaILIfWXTmX0O29hZ0uENoKP+Zby8LPByKVViY+/pgORmMgrfAZiKxB/NowSqaZm0prMpsP3ycSIraIGqUb80rXd8fR/CsGIpr0or6YA4QaEE6LZ3sJcfIDZPq5AEKZaDBsv7wCYQsr9k5Ay9UayOJ7CUQuYg5XqjJBEtIQarCFIecXlyoERFaKLdwGHXhZdQLCSQFxG6IDj6K4IsPZ1kGEv9cGftZKcQ==');
Blow := BitmapFromString(48, 14, 'meJytlT0KwkAQhRsTNU3uYOM9BBvB1iaVRapUgoWiYg5gZ2thY6OQkwgewosYWXiZvNndsBD4iuybb3bys5BsFmUhpJNpTVBLEOv5QGLGEbL6eX9rZNgv+SIGGEfUOQlIeqdYRkCOA0hIkI09sl8NgBxnTbRgQkC7ac21BKcsBnKcNfEIQY16H3DJh0B/Lyy1oH1XqXMpuRYj4DnPJNANdFb9S8lt0+A/z1qQJarSkp6OGiX37RhI0xq6rq3tdD9osU4Bj12DNK2h69rarl+LTuR0w+uYAP/3IkH7sqQ3dCXE89DgOc8k6ITyTp9MUJUt0vafy1CdE+BKdO73tfmnTH5foPSi');
if InvFull then
begin
if InvMouse(1, mouse_Left) then
begin
if not WaitFindBitmap(CraftOrb, x, y, MSX1, MSY1, MSX2, MSY2, 15, 20, 800) then
if not WaitFindBitmap(ClickedOrb, x, y, MSX1, MSY1, MSX2, MSY2, 10, 50, 1000) then
Mouse(82, 142, 10, 10, mouse_Left);
if WaitFindBitmap(Blow, x, y, MSX1, MSY1, MSX2, MSY2, 10, 10, 800) then
Mouse(x, y, 100, 10, mouse_Left);
end;
end;
FreeBitmap(Blow);
FreeBitmap(CraftOrb);
FreeBitmap(ClickedOrb);
end;

begin
CreateFolders;
MarkTime(StartTime);
SafeInitForm;
//ClearDebug;
SafeShowFormModal;
Freeform(frmDesign);
Run;
AddOnTerminate('FinishStats');
repeat
SetupCraft;
Banking;
if not InvEmpty then
BankDeposit;
WithdrawCraft();
CraftAll;
while Crafting do
Wait(100);
Antiban;
if (Antiban = true) then
begin
while (Antiban = true) do
Wait(10);
end;
Crafting_XP := Crafting_XP + (XP * 28.0);
Progress;
Inc(Count);
until (Count = LoadCount);
Writeln('Load count reached. Terminating script and logging out your character..');
Logout;
TerminateScript;
end.

Ian

2013-01-20 15:24:42

Looks nice, any plans to add something F2P?

tehq

2013-01-20 15:31:57

From: BMWxi
Looks nice, any plans to add something F2P?


Definitely. I'll be adding items as they are requested.. That is requests within reason, of course.

KEVlN

2013-01-26 13:05:19

How about Green D'hide Bodies? 230k+ xp/hr would be nice

Gucci

2013-01-26 14:22:47

Nice release tehq, glad to see your active and releasing again :D

tehq

2013-01-27 22:19:59

From: KEVlN
How about Green D'hide Bodies? 230k+ xp/hr would be nice


Sounds like a good idea to me. I should have that up within the week.