dweg
2011-12-17 12:49:02
How Long have You Played Runescape?
5 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
Near fluent html and php, Visual Basic, partial C++, partial Java, some Arduino programming and linux/android kernel compiling and distro builds/rebuilds, a little bit of flash coding and animation here and there, and finally in the process of learning pascal/simba :)
Are you a member of any other communities?
Used to be a part of powerbot and RsBuddy… seeing how they are not exactly re-developing, I'm no longer active there.
Tell us about yourself…
Please show us one (or multiple) of your scripts.
5 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
Near fluent html and php, Visual Basic, partial C++, partial Java, some Arduino programming and linux/android kernel compiling and distro builds/rebuilds, a little bit of flash coding and animation here and there, and finally in the process of learning pascal/simba :)
Are you a member of any other communities?
Used to be a part of powerbot and RsBuddy… seeing how they are not exactly re-developing, I'm no longer active there.
Tell us about yourself…
From: dweg
I am a high school student in the USA, coming here from Europe (but let's keep the specifics out xD). I have a major interest in developing any software and hardware aiding automation of people's lives. I regularly participate in a robotics club, building and coding prototypes. Not too long ago, I finished a robot to pick up and stack rings for a local VEX competition. Anyways, I also have a LOT of interest in RC - cars, bots, airplanes, you name it. I mod, build, tune and recreate many models. I also have a very high interest in modifying mobile phones, by building and flashing new roms, especially windows mobile 6.5 and now android 2.3 roms and above for my htc touch pro and new acquired galaxy s. I have a passion for learning new trends of technology, despite the fact that I often fail at them.
Please show us one (or multiple) of your scripts.
{*******************************************************************************
Revised Granite
Created previously by ForgotMyName
Fixed for post nuke and urn support by Dweg
This script will powermine granite in the kharidian desert quarry.
YOU NEED A WATER TIARA. THIS IS NOT FOR PURES.
A REVISED EDITION WILL LATER BE AVAIABLE WITH MORE UNIVERSAL SUPPORT.
Setup:
Adjust constants as necessary.
Fill in account info under DeclarePlayers.
Start logged out in the northern part of the desert quarry.
Wear desert clothing.
Wear an enchanted tiara. (no waterskins or humidify support due to URNS)
Keep everything you do not want dropped (picks, runes, skins, etc)
within the first 4 rows of your inventory.
SCRIPT IS STILL IN BETA, KEEP AN EYE AN IT, IT CAN MESS UP!
BY USING IT, YOU ASSUME ALL RESPONSIBILITIES FOR YOUR ACCOUNT!
I AM NOT RESPONSIBLE FOR ANY BANS OR LOSSES THAT OCCUR!
Revision history:
1: Initial release.
2: Revision by Dweg 12/17/11 and more public release.
*******************************************************************************}
program GraniteMiner2;
{$DEFINE SMART}
{$i SRL\SRL.scar}
const
World = 33;
Members = false;
Signed = true;
NumbOfPlayers = 1; //single player script
StartPlayer = 0; //do not change these lines
RockColor = 8897009; //granite color (careful, no fence/dropped ore colors)
RockTol = 10;
RockRadius = 5;
MouseTol = 2;
BitmapTol = 3;
MineWait = 7000;
UseHumidify = False; //MUST keep false due to urns support
UsingUrns = True;
RunLimit = 120; //time in mins to run
var
HumidifyBitmap: Integer;
ScriptStartMark: Integer;
LastHumidifyMark: Integer;
{*******************************************************************************
procedure DeclarePlayers;
By: SRL
Description: SRL's Player Setup
*******************************************************************************}
procedure DeclarePlayers;
var i:integer;
begin
NumberOfPlayers(NumbOfPlayers);
CurrentPlayer := StartPlayer;
for i := 0 to NumbOfPlayers-1 do
Players[i].BoxRewards := ['ithril', 'oal', 'une', 'oins'];
with Players[0] do
begin
Name := ''; //Player username.
Pass := ''; //Player password.
Nick := ''; //Player nickname - 3-4 letters of Player username.
Active := True;
end;
end;
{*******************************************************************************
procedure SetUpScript
By: ForgotMyName
Description: Initialize SRL, script data, etc
*******************************************************************************}
procedure SetUpScript;
begin
HumidifyBitmap := BitmapFromString(15, 8, 'meJxNj7sNgEAMQ0NxC9DSsBVr0DM' +
'EkyBdzQD0t9AJS0+yLLlInJff6O291+fcpOvY51fS6E0xpqqY+MCQ' +
'ipH5NGkB9goGuj1Nt3h1LiLVIsktiuGRD/DAfI35xDmZEqYfATZp3' +
'ilV7klyqUreH/0DU50c');
MarkTime(ScriptStartMark);
MarkTime(LastHumidifyMark);
ActivateClient;
MakeCompass('n');
SetAngle(True);
end;
{*******************************************************************************
procedure TakeDownScript
By: ForgotMyName
Description: Frees resources, cleans up
*******************************************************************************}
procedure TakeDownScript;
begin
FreeBitmap(HumidifyBitmap);
end;
{*******************************************************************************
procedure BailOut
By: ForgotMyName
Description: If we get here, something horrible broke. Log out, terminate.
*******************************************************************************}
procedure BailOut;
begin
Logout;
Logout;
TerminateScript;
end;
{*******************************************************************************
function FindRock: Boolean
By: ForgotMyName
Description: Find a granite rock and mouse over it
Returns: True if rock found and mouse at rock, false if failed
*******************************************************************************}
function FindRock: Boolean;
var RockPoints: TPointArray;
RockSplits: T2DPointArray;
I, H, X1, Y1: Integer;
begin
SetColorToleranceSpeed(1);
if not (FindColorsSpiralTolerance(MSCX, MSCY, RockPoints, RockColor, MSX1, MSY1, MSX2, MSY2, 3)) then
begin
WriteLn('Could not find rock color on mainscreen!');
Result := False;
Exit;
end;
RockSplits := TPAtoATPA(RockPoints, RockRadius);
H := High(RockSplits);
for I := 0 to H do
begin
MiddleTPAEx(RockSplits[I], X1, Y1);
MMouse(X1, Y1, MouseTol, MouseTol);
Wait(50 + Random(100));
if IsUpText('ine') then
begin
Result := True;
Exit;
end;
end;
Result := False;
end;
{*******************************************************************************
function MineRock: Boolean
By: ForgotMyName
Description: Mine a rock, click and wait
Precondition: Mouse is over the rock we want
Returns: True if we believe we succeeded, false otherwise
*******************************************************************************}
function MineRock: Boolean;
var X1, Y1, X2, Y2, X3, Y3, ClickedTime: Integer;
begin
GetMousePos(X1, Y1);
MMouse(X1, Y1, 3, 3);
Wait(50 + Random(100));
if not IsUpText('ine') then
begin
Result := False;
Exit;
end;
GetMousePos(X2, Y2);
Mouse(X2, Y2, 0, 0, True);
Flag;
Wait(150 + Random(100));
MarkTime(ClickedTime);
repeat
Wait(500 + Random(100));
if (TimeFromMark(ClickedTime) > MineWait) then
begin
Result := False;
Exit;
end;
until InChat('quarry');
Result := True;
Wait(200 + Random(500));
end;
{*******************************************************************************
procedure ClearSpace;
By: ForgotMyName & Dweg
Description: Clear inventory space, drop everything in last 2 rows, teleport any full urns
*******************************************************************************}
procedure ClearSpace;
var FUrns,x,y,I: Integer;
begin
for I := 21 to 28 do
begin
DropItem(I);
Wait(50 + Random(100));
end;
begin
Wait(50 + Random(100));
FUrns := DTMFromString('mFQEAAHic42VgYOAHYhYg5gJiMSCWAWI5IJYGYhGoPAcDAsDUswExIxAzATE7EPMBsThUPwwLQ8VBICUhAaqaeMzKQDpgJAOjAAAhxgLM');
if FindDTM(FUrns,x, y,550, 200, 740, 470) then
begin
MouseBox(x-5, y+5, x+5, y+15, 1);
Wait(450 + Random(100));
MouseBox(207, 396, 310, 455, 1);
end;
end;
Wait(250 + Random(100));
end;
{*******************************************************************************
procedure LunarHumidify;
By: ForgotMyName
Description: Cast humidify
*******************************************************************************}
procedure LunarHumidify;
var X1, Y1: Integer;
begin
GameTab(tab_Magic);
Wait(50 + Random(100));
if not FindBitmapToleranceIn(HumidifyBitmap, X1, Y1, MIX1, MIY1, MIX2, MIY2, BitmapTol) then
begin
Writeln('Could not find Lunar humidify!');
end;
MMouse(X1, Y1, MouseTol, MouseTol);
if not IsUpText('umid') then
begin
Writeln('Humidify uptext missing!');
end;
Mouse(X1, Y1, MouseTol, MouseTol, True);
Wait(6000 + Random(500));
end;
{*******************************************************************************
procedure RecenterMine;
By: ForgotMyName
Description: Walk to mine center, failsafe, then move to north rocks
*******************************************************************************}
procedure RecenterMine;
var X1, Y1: Integer;
begin
MakeCompass('n');
SetAngle(True);
if not FindSymbol(X1, Y1, 'mine') then
begin
Writeln('Could not find mining symbol!');
BailOut;
end;
Mouse(X1, Y1, MouseTol, MouseTol, True);
Flag;
Wait(1000 + Random(500));
//the northern rocks are better
//more availability, less stickage
//todo: better than blind click?
Mouse(630, 60, MouseTol, MouseTol, True);
Flag;
Wait(1000 + Random(500));
end;
{*******************************************************************************
procedure MainLoop;
By: ForgotMyName
Description: Main script loop
*******************************************************************************}
procedure MainLoop;
var Health: String;
MinedNow, ToMine, FindFails: Integer;
Done: Boolean;
begin
repeat
FindNormalRandoms;
GetMMLevels('health', Health);
if (Health = 'Red') or (Health = 'Orange') then
begin
Writeln('Dying!');
BailOut;
end;
if InvCount > 18 then
begin
ClearSpace;
end;
if (UseHumidify and (TimeFromMark(LastHumidifyMark) > (10 * 60000))) then
begin;
LunarHumidify;
MarkTime(LastHumidifyMark);
end;
MinedNow := 0;
FindFails := 0;
ToMine := 5 + Random(3);
repeat
FindNormalRandoms;
if FindRock then
begin
MineRock;
end
else begin
FindFails := FindFails + 1;
end;
if FindFails > 3 then
begin
RecenterMine;
end;
MinedNow := MinedNow + 1;
until MinedNow >= ToMine;
until TimeFromMark(ScriptStartMark) > (RunLimit * 60000);
Writeln('Done!');
BailOut;
end;
{... and finally ...}
begin
Smart_Signed := Signed;
Smart_Server := World
Smart_SuperDetail := False;
SetUpSRL;
DeclarePlayers;
LoginPlayer;
SetUpScript;
Wait(2000 + Random(500));
MainLoop;
LogOut;
TakeDownScript;
end.
// [url]http://villavu.com/forum/showthread.php?t=69388[/url]
//My granite miner, revised from a previous script by ForgotMyName. Took his base and built in some epic, modern day features. This is all the work I have really done in Simba/SCAR that is significant and recent. I've left for a very long time since other communities had already premade scripts and more stable bots. Around 2006-2007, I've made multiple scripts, but I don't have any work/sources to show due to reformats of my computers and failure to back up my scripts.
//(unrelated previous php works)
//http://img88imageshack.p4o.net/account26.png
//Yes, I know that's not a legit looking link, but that is my IP showing picture (and oh gosh did it scare a few people here xD)