SRL Archive - Archive

PriSoner - SRL Member Application Form


PriSoner

2008-02-01 08:00:18

<!– BEGIN TEMPLATE: formanswers –>
PriSoner - SRL Member Application Form
PriSoner

What is the meaning to life?


Where you Referred to SRL? If yes, by whom?
no


Programming Knowledge
Perl, Java Script, Pascal, Cobol etc

Other Communitys


How Long have You Played Runescape
7 Months

Are you affilated in anyway with Jagex LTD?
No
—————————————————–
Please write down a paragraph about Yourself.

I used to program a lot but haven’t had the opportunity for quite a while. Despite some decidedly unhelpful comments from a I'm really enjoying getting back in to the swing of things and re-learning all I have forgotten. It’s surprising how quickly things come back to you..

I have already written my own FindBirdsNest Procedure and plan to release it to the wider community when it has been fully tested and peer reviewed as the current SRL FindBirdsNest procedure doesn’t work and never could have in it’s current state. I’m also currently working on a couple of Random Event Solvers which I intent to release.

and the answer to the meaning of life the universe and everything is of course: 42

——————————————————
Please Post a Sample of your Work. Only SCAR Scripts Accepted

i originally released this in the first scripts section here and then moved it to the junior Members Scripts section here

{------------------------- <<--PriSoner-->> -------------------------------
--------------- Simple Yew Cutter & Banker (Edgeville) -------------------
--------------- V1.0 -------------------
--------------- Requires Scar 3.12c & SRL 10 -------------------
--------------------------------------------------------------------------
------------------------- Description --------------------------------
--------------- Chops yews just south of edgeville -------------------
--------------- and banks them. Deals with randoms -------------------
--------------- where possible & has basic Anti-Ban. -------------------
--------------- only deals with 1 player -------------------
--------------------------------------------------------------------------
--------------- Put axe into backpack or hand, -------------------
--------------- place you character in the edgeville -------------------
--------------- bank and run the script. Simple! -------------------
--------------------------------------------------------------------------
--------------- Fill in your username, password, bank -------------------
--------------- pin if you have one set, time you want -------------------
--------------- the script to run & max loads/yews. -------------------
--------------- See end of script for version notes. -------------------
--------------------------------------------------------------------------

##########################################################################
##########################################################################
##### #####
##### THIS IS MY FIRST SCRIPT USE WITH CAUTION AND #####
##### SUPERVISE WHILST IN USE! #####
##### #####
##### YOU HAVE BEEN WARNED!! #####
##### #####
##########################################################################
##########################################################################}

program Simple_Yew_Cut_n_Bank_Ed;
{.include SRL\SRL.scar}
{.include SRL\SRL\skill\WoodCutting.scar}

// -----------------------------------------------------------------------
// -------------- Change your details in this section --------------------
// -----------------------------------------------------------------------
const
PlayerName = 'changeme'; // Enter your runescape username here.
PlayerPass = 'changeme'; // Enter your Runescape password here.
PlayerNick = 'changeme'; // Enter a 3-4 letter version of your username here: i.e. evilbob may be just bob
PlayerPin = 0000; // If you have a Bank Pin set enter it here. If you don't leave it at 0000
PickSkill = 'runecraft'; // Choose skill you want any genie lamps aquired to be used on. (Must be spelt exactly as it is in skill list)
HideScar = 'NAV32'; // Enter the name of any program you want scar to disguise itself as.

SRL_ID = ''; // Get them here [url]http://www.stats.srl-forums.com/[/url] - This is not the same as your SRL Forum Username & Pass
SRL_PASS = ''; // If you do not have one leave empty.

// -----------------------------------------------------------------------
// ----- Enter the maximums below. Your player will go to the bank, bank all items in your
// ----- back pack & log out if any condition is met. Enter 0 for infinite.
// -----------------------------------------------------------------------
maxloads = 0; // Enter the number of loads to collect.
maxyews = 0; // Enter the number of yews to chop.
maxtime = 0; // Enter the maximum time to run in minutes.
maxlevel = 0; // Enter Maximum Woodcutting Level you wish to achieve.

// -----------------------------------------------------------------------
// ---- Do not alter below this line unless you know what your doing! ----
// -----------------------------------------------------------------------

YewColour = 1865575; // Colour of Yew Tree Foliage. Yew Should not have to change this. LoL
BankCashierColour = 195836; // Colour of Bank Cashier in Mini Map. The Yellow Dot. You Should not have to change this.

type AllAxes = record
AxeDTM: word;
AxeName: string;
end;

var
AxeList: Array of AllAxes;
YewCoords: TPointArray;
YewDTM, YewCount, NestSeedDTM, NestCountSeeds, NestRingDTM, NestCountRings, RndItemCount: integer;
x, y, i, DTMAxe, BirdsNestsMissed, LoadsBanked, CurrentTree, BankIconColour, TreeIconColour:integer;
CIBReason: String;
First: boolean;

// -----------------------------------------------------------------------
// Basic Standard Setup of Players.. Only 1 player currently supported.
// -----------------------------------------------------------------------
procedure DeclarePlayers;
begin
NumberOfPlayers(1);
CurrentPlayer := 0;

HowManyPlayers:= 1;
CurrentPlayer:= 0;
NumberOfPlayers(HowManyPlayers);

SRLID := SRL_ID;
SRLPassword := SRL_PASS;

Players[0].Name := PlayerName;
Players[0].Pass := PlayerPass;
Players[0].Nick := PlayerNick;
Players[0].Active := True;
Players[0].pin := PlayerPin;
Players[0].Integers[1] := 0;

Players[CurrentPlayer].NickTPA := CreateTPAFromText(Players[CurrentPlayer].Nick, UpChars);
end;

// -----------------------------------------------------------------------
// CountItemDTM Function by ???
// -----------------------------------------------------------------------
function CountItemDTM(DTM: Integer): Integer;
var
x, y, i: Integer;
TB: TBox;
begin
for i := 1 to 28 do
begin
TB := InvBox(i);
if(ExistsItem(i)) then
if(FindDTM(DTM, x, y, TB.x1, TB.y1, TB.x2, TB.y2)) then
Inc(Result);
end;
end;

// -----------------------------------------------------------------------
// Procedure: MyFindBirdsNest;
// By: Prisoner
// Beta Testing
// Attempts to a Find Birds Nest if one is dropped & Pick it up.
// If it can't find one within 90 seconds it exits as Fallen Birds Nests do not last that long.
// beta version Records a failure to find the birds nest.
// -----------------------------------------------------------------------
procedure MyFindBirdsNest;
var OriginalDegrees, NewDegree, StartFBN, x, y: Integer;
b: boolean;
begin
if Pos('nest falls', GetNewChatMsg) = 10 then
begin
b := false;
writeln('Birds Nest Drop Detected. Attempting To Find It...');
MarkTime(StartFBN);
SetAngle(true);
OriginalDegrees := Round(rs_GetCompassAngleDegrees);
NewDegree := OriginalDegrees;
repeat
if (FindObj(x, y, 'Take Bird', 3623505, 6)) then
begin
WriteLn('Birds Nest Found. Picking Up...');
Mouse(x, y, 1, 1, True);
Flag;
Wait(500 + Random(500));
Birdsnest := Birdsnest + 1;
GameTab(4);
Mouse(575, 225, 5, 5, False);
ChooseOption('Examine');
Wait(1000 + Random(1000));
SetAngle(true);
MakeCompass(IntToStr(OriginalDegrees));
exit;
end else
begin
if b then
begin
SetAngle(false);
b := false;
end else
begin
SetAngle(True);
NewDegree := (NewDegree + 25 + Random(30)); // Deliberately not a factor of 360
MakeCompass(IntToStr(NewDegree));
b := true;
end;
end;
until TimeFromMark(StartFBN) > 90000;
WriteLn('Birds Nest Not Found Within Required Time. Aborting...');
BirdsNestsMissed := BirdsNestsMissed + 1; // Temporary reporting to see how effective function is.
ReportVars[4] := ReportVars[4] + 1; // Temporary reporting to SRL Stats see how effective function is.
MakeCompass(IntToStr(OriginalDegrees));
end;
end;

// -----------------------------------------------------------------------
// Just a small little procedure to drop unwanted items..
// ongoing depending on what other useless items I find that randoms give
// -----------------------------------------------------------------------
procedure DropUnwanted;
var x, y, i, DTMa2z: integer;
UnwantedDTM: Array of Integer;
begin
SetLength(UnwantedDTM, 4);
UnwantedDTM[0] := DTMFromString('78DA63E4656060E0624001F764EF307000694' + // Security Book
'620FE0F048C4C408610031A60442281340F906021A0460A487010' +
'50230C24C4F1AB0100A6DF0671');
UnwantedDTM[1] := DTMFromString('78DA631461606010604001CB26C7337000694' + // Baguette
'620FE0F048CEC408604031A60442281B434906021420D1F013502' +
'84ED020096E3065E');
UnwantedDTM[2] := DTMFromString('78DA631460606010624001FC45CE0C1C409A1' + // Frog Token
'188FF0301232B90C1C4800618914820AD00245808A89103120A04' +
'D480EC91C3AF06000AB00582');
UnwantedDTM[3] := DTMFromString('78DA63E46160601067400117CF9B31B002694' + // Strength Potion (2)
'620FE0F048C1C40060F031A60442281343F906025A0461848C812' +
'50C34A580D00B1530683');

GameTab(4);

for i := 0 to High(UnwantedDTM) do
begin
DTMa2z := UnwantedDTM[i]
if FindDTM(DTMa2z, x, y, 546, 203, 737, 466) then
begin
mouse(x, y, 2, 2, false);
wait(500 + Random(500));
ChooseOption('rop');
wait(1000 + Random(1000));
end;
FreeDTM(DTMa2z);
end;

{ if CoinAmount('Inv') > 0 and CoinAmount('Inv') < 299 then // Drop Coins if less than 299 (Not Working Yet)
begin
coinbmp := loadcoinbmp;
FindBitmapToleranceIn(coinbmp, x, y, 546, 203, 737, 466, 1);
writeln(IntToStr(x) + ' ' + IntToStr(y));
mouse(x, y, 3, 3, false);
wait(500 + Random(500));
ChooseOption('rop');
wait(1000 + Random(1000));
FreeBitmap(coinbmp);
end; }
end;

// -----------------------------------------------------------------------
// Displays Report when called on current totals.
// Quits and Saves/Displays a Debug image when appropriate.
//
// SYCBReport(ReasonCalled: String; FinalSYBCReport, DebugImage: boolean);
// ReasonCalled: String explaing why, when, where it SYCBReport was called.
// FinalSYBCReport: Boolean, If true will end script and display final report along with ReasonCalled
// DebugImage: Boolean, If true will save & display a screen capture of moment script ended.
// -----------------------------------------------------------------------
procedure SYCBReport(ReasonCalled: String; FinalSYBCReport, DebugImage: boolean);
var x, y: integer;
begin
if DebugImage then
begin
SaveScreenshot('SYCBDebug.bmp');
GetClientDimensions(x, y);
DisplayDebugImgWindow(x, y);
LoadDebugBitmap('SYCBDebug.bmp');
end;


// I did want to have the GetSkillInfo Check in CheckIfBank procedure however it created
// a conflict with CountItemDTM constantly switching between GameTabs..
if (maxlevel > 0) and (maxlevel <= GetSkillInfo('woodcutting',False)) then
begin
FinalSYBCReport := true;
ReasonCalled := 'Woodcutting Skill Level ' + IntToStr(GetSkillInfo('woodcutting',False)) + ' Reached';
end;

writeLn('##################################################################');
writeLn(' Simple Yew Cutter & Banker (Edgeville)');
writeLn(' Ran for: ' + TimeRunning);
writeLn(' Loads Banked: ' + IntToStr(LoadsBanked));
writeLn(' Yew Logs Banked: ' + IntToStr(YewCount));

if NestCountSeeds > 0 then writeLn('Birds Nests (Seeds) Banked: ' + IntToStr(NestCountSeeds));

if NestCountRings > 0 then writeLn('Birds Nests (Rings) Banked: ' + IntToStr(NestCountRings));

if BirdsNestsMissed > 0 then writeLn(' Birds Nests Missed: ' + IntToStr(BirdsNestsMissed));

if RndItemCount > 0 then writeLn(' Random Event Items Banked: ' + IntToStr(RndItemCount));

if (maxloads > 0) and (maxloads <= LoadsBanked) then
begin
writeLn(' Script Ended: Maximum Loads Banked Limit Reached.');
writeLn('##################################################################');
if LoggedIn then LogOut;
SendSRLReport;
TerminateScript;
end;

if FinalSYBCReport then
begin
writeLn(' Script Ended: ' + ReasonCalled);
writeLn('##################################################################');
if LoggedIn then LogOut;
SendSRLReport;
TerminateScript;
end;

writeLn('##################################################################');
writeLn(' ');
SendSRLReport;
end;

// -----------------------------------------------------------------------
// Returns True if any condition that may require banking is met.
// -----------------------------------------------------------------------
Function CheckIfBank: Boolean;
begin
result := false;
GameTab(4);
if InvFull then result := true;

if (maxtime > 0) and (maxtime <= ((GetTimeRunning div 1000) div 60)) then
begin
writeLn('maxtime true');
result := true;
CIBReason := 'Maximum Time Limit Reached';
exit;
end;

if (maxyews > 0) and (maxyews <= YewCount + CountItemDTM(YewDTM)) then
begin
writeLn('maxyews true');
result := true;
CIBReason := 'Maximum Yew Logs Cut Limit Reached';
exit;
end;
end;

// -----------------------------------------------------------------------
// Add all items in the back pack to a running total before banking.
// -----------------------------------------------------------------------
procedure CountBankedItems;
var a, b, c, d: integer;
begin
a := InvCount;
b := CountItemDTM(YewDTM);
c := CountItemDTM(NestSeedDTM);
d := CountItemDTM(NestRingDTM);

RndItemCount := (RndItemCount + (a - b - c - d));
YewCount := (YewCount + b);
NestCountSeeds := (NestCountSeeds + c);
NestCountRings := (NestCountRings + d);
LoadsBanked := LoadsBanked + 1;


// SRL Stats Reporting
ReportVars[0] := ReportVars[0] + b; // Yews Banked Reported to SRL Stats
ReportVars[1] := (ReportVars[1] + (c + d)); // Birds Nests Banked Reported to SRL Stats
ReportVars[2] := (ReportVars[2] + (a - b - c -d)); // Randoms Items Banked Reported to SRL Stats
ReportVars[3] := ReportVars[3] + 1; // Loads Banked Reported to SRL Stats
Banks := Banks + 1; // Official Banked Stats for Global SRL Report
end;

// -----------------------------------------------------------------------
// Get Current Colour of Bank and Tree Icons in Mini Map
// -----------------------------------------------------------------------
Procedure GetIconColours;
var StartFind: integer;
var i: integer;
begin
if not LoggedIn then SYCBReport('Not Logged in During Procedure: GetIconColours.', true, false);
MarkTime(StartFind);
i := 0;
repeat
if TimeFromMark(StartFind) >= 20000 then
begin
i := i + 1;
writeLn('Cannot Find Bank Icon.. Logging Out and In Again to Change Icon Position.');
if i >= 5 then SYCBReport('Could Not Find Bank Icon After 5 Login Attempts.', true, true);
Logout;
LoginPlayer;
MarkTime(StartFind);
end;

until FindSymbol(x, y, 'bank');

BankIconColour:= GetColor(x + 1, y);

If FindSymbol(x, y, 'tree') then
begin
TreeIconColour:= GetColor(x + 2, y);
end else
begin
SYCBReport('Cannot find tree icon. Quitting', true, true);
end;
end;

// -----------------------------------------------------------------------
// Populate AxeList with all Axe DTM's and Names
// -----------------------------------------------------------------------
procedure InitAxeTypes;
begin

SetLength(AxeList, 8);
AxeList[0].AxeDTM := DTMFromString('78DA6314616060E0664001A962BC0CFC409A1' +
'188FF0301231790C1C58006189148202D03243809A81106124204' +
'D430010919FC6A00E8B5053D');
AxeList[0].AxeName := 'Dragon Axe';

AxeList[1].AxeDTM := DTMFromString('78DA639CCEC4C0F09401051485F1318800694' +
'620FE0F048C4B806AEEA2AA718E4864E082AA0101C6C54035F751' +
'D5D887C6A1AA590A547313558D4B740A8A1A00CFA10E03');
AxeList[1].AxeName := 'Rune Axe';

AxeList[2].AxeDTM := DTMFromString('78DA6374606060686440014D497C0C22409A1' +
'188FF0301A337905187AAC6C6D786810BAA0604187D804415AA1A' +
'7B7F7B5435BE40A21C558D73B0338A1A00C1660AA8');
AxeList[2].AxeName := 'Adamant Axe';

AxeList[3].AxeDTM := DTMFromString('78DA633CC4C4C010C0C8800C5A53F81852803' +
'448F43F10309E05AAF14155636111CCC0055503028CE7816A5C51' +
'D5D839C4A2AA3981A9C6C52D0D450D0061FC0C64');
AxeList[3].AxeName := 'Mithril Axe';

AxeList[4].AxeDTM := DTMFromString('78DA63E4656060E06240038C0C1C609281E13' +
'F1030F200194C986A1024901606126CA82AC4444450D5B0020919' +
'FCE60000E9AC04AD');
AxeList[4].AxeName := 'Black Axe';

AxeList[5].AxeDTM := DTMFromString('78DA63CC636260D8C3C8800C5A53F81852803' +
'448F43F10305602D5EC4055939B9ACAC0055503028CD540351B51' +
'D594E5E5A2AA29C154D3545989A20600C3BC0E32');
AxeList[5].AxeName := 'Steel Axe';

AxeList[6].AxeDTM := DTMFromString('78DA63BCC9C4C0309191010498182020C6859' +
'34103488344FF0301E353A04C2F230332F0707161E082AA0101C6' +
'0740356DA86A22838351D5BC00AAE94655932ACA89AAE639A6394' +
'1DEDE286A00B1F90F6D');
AxeList[6].AxeName := 'Iron Axe';

AxeList[7].AxeDTM := DTMFromString('78DA63EC626060086140016DA97C0C22409A1' +
'188FF0301E33420C307558D97A5220317540D08304E051201A86A' +
'DCCCE451D54C07129EA86AFC6C5450D40000D77E0AA2');
AxeList[7].AxeName := 'Bronze Axe';
end;

// -----------------------------------------------------------------------
// Find the axe and move it to hand if in back pack. Returns False if no axe found.
// -----------------------------------------------------------------------
function FindTheAxe: boolean;
var ax, ay: integer;
var i: integer;
begin
for i := 0 to High(AxeList) do
begin
DTMAxe := AxeList[i].AxeDTM;
GameTab(4);
if FindDTM(DTMAxe, ax, ay, 546, 203, 737, 466) then
begin
writeLn('Found ' + AxeList[i].AxeName + ' Moving to Hand.');
Mouse(ax, ay, 10, 4, true);
wait(500 + Random(400));
result:= true;
exit;
end else
begin
GameTab(5);
if FindDTM(DTMAxe, ax, ay, 568, 285, 603, 321) then
begin
writeLn('Found ' + AxeList[i].AxeName);
result:= true;
exit;
end;
end;
result:= false;
end;
end;

// -----------------------------------------------------------------------
// Find Both Tree Icons in Mini Map
// -----------------------------------------------------------------------

function FindBothYews: boolean;
var x2, y2, y3: integer;
begin
if not LoggedIn then SYCBReport('Not Logged in During Procedure: FindBothYews.', true, false);
MakeCompass('N');
SetAngle(true);
x2:= 626; y2:= 25; y3:= 140;
if FindColorSpiral(x2, y2, TreeIconColour, 550, 7, 703, 161) then
begin
if FindColorSpiral(x2, y3, TreeIconColour, 550, 7, 703, 161) then
begin
if y3 - y2 > 25 then
begin
result:= true
exit;
end else result:= False;
end else result:= False;
end else result:= False;
SYCBReport('Could Not Find Both Yew Symbols (Function: FindBothYews)', true, true);
end;

// -----------------------------------------------------------------------
// Find Top and Bottom Trees Based on Icon Colour and Area of Map..
// Needs Tweaking Searches whole of Mini Map instead of small area
// -----------------------------------------------------------------------
function FindTopYew: integer;
var y2: integer;
begin
x:= 626; y:= 25; y2:= y;
if FindColorSpiral(x, y, TreeIconColour, 550, 7, 703, 161) then
begin
result:= y - y2;
end else result:= -1;
end;

function FindBottomYew: integer;
var y2: integer;
begin
x:= 626; y:= 140; y2:= y;
if FindColorSpiral(x, y, TreeIconColour, 550, 7, 703, 161) then
begin
result:= y2 - y;
end else result:= -1;
end;

// -----------------------------------------------------------------------
// Tries to Find Bank and Bank all Items
// -----------------------------------------------------------------------
Procedure GoToBank;
begin
if not LoggedIn then SYCBReport('Not Logged in During Procedure: GoToBank.', true, false);
SetRun(True);
If FindTopYew >= 0 then
begin
Mouse(x + 16, y - 10, 10, 10, true);
writeLn('Running to Bank');
Flag;
wait(500 + Random(1000));
If FindColor(x, y, BankIconColour, 550, 7, 682, 161) then
begin
If FindColorSpiralTolerance(x, y, BankCashierColour, x - 18, y - 15, x + 35, y + 35, 2) then
begin
Mouse(x, y, 2, 2, true);
Flag;
wait(500 + Random(1000));
If OpenBankFast('eb') then
begin
if (PinScreen) then InPin(IntToStr(Players[CurrentPlayer].Pin));
CountBankedItems;
Deposit(1,28,2);
wait(500 + Random(1000));
Deposit(1,28,2); // Just as a Double Check because, although it rarely happens, it does occasionally fail to bank all items.
wait(500 + Random(1000));
CloseBank;
if CheckIfBank and not InvFull then
begin
SYCBReport(CIBReason, true, false);
end else SYCBReport('Just Finished Banking in GoToBank', false, false);
end else SYCBReport('OpenBankFast cannot find the Bank Booth', true, true);
end;
end else If FindTopYew >= 0 then
begin
GoToBank;
exit;
end else SYCBReport('GoToBank Procedure Could Not Find Bank or Tree Icons.', true, true);
end else SYCBReport('GoToBank Procedure Could Not Find Tree Icons.', true, true);
end;

// -----------------------------------------------------------------------
// Basic AntiBan Proceedure.
// -----------------------------------------------------------------------
procedure AntiBan;
begin
case random(6) of
0: RandomRClick;
1: HoverSkill('woodcutting', False);
2: PickUpMouse;
3: BoredHuman;
4: RandomMovement;
5: BoredHuman;
end;
MakeCompass('N');
SetAngle(true);
end;

// -----------------------------------------------------------------------
// Moves to Top or Bottom Yew tree assuming you are in the bank.
// -----------------------------------------------------------------------
Procedure MoveToYews;
begin
if not LoggedIn then SYCBReport('Not Logged in During Procedure: MoveToYews.', true, false);

if Random(2) = 1 then
begin
writeLn('Moving to Top Yew');
CurrentTree := 1;
if FindTopYew >= 0 then
begin
SetRun(true);
Mouse(x + 3, y + 5, 5, 5, true);
Flag;
SetRun(false);
GameTab(4);
end else
begin
MoveToYews;
exit;
end;
end else
begin
writeLn('Moving to Bottom Yew');
CurrentTree := 0;
If FindBottomYew >= 0 then
begin
SetRun(true);
Mouse(x + 23, y, 7, 20, true);
Flag;
FindBottomYew;
Mouse(x + 4, y - 4, 5, 3, true);
Flag;
SetRun(false);
GameTab(4);
end else
begin
MoveToYews;
exit;
end;
end;
end;

// -----------------------------------------------------------------------
// Custom Run Away Procedure as the SRL RunAway Procedure usually fails to come back.
// WaitTime is MilliSeconds. Recomemded period is 30000 to 120000 or (Random(90000) + 30000)
// This has not been fully tested (BETA)
// -----------------------------------------------------------------------
Procedure CustomRunAway(WaitTime: integer);
var StartedWaiting: integer;
begin;
if not LoggedIn then SYCBReport('Not Logged in During Procedure: CustomRunAway.', true, false);
SetRun(True);
If FindTopYew >= 0 then
begin
Mouse(x + 16, y - 5, 10, 5, true);
writeLn('Running Away From Fight');
Flag;
If FindColor(x, y, BankIconColour, 550, 7, 682, 161) then
begin
Mouse(x, y, 3, 3, true);
Flag;
wait(800 + Random(2000));
Mouse(600, 40, 4, 4, true);
Flag;
wait(800 + Random(2000));
Mouse(570, 50, 4, 4, true);
Flag;
MarkTime(StartedWaiting);

repeat
FTWait(Random(10));
AntiBan;
if FindFight then SYCBReport('Still Fighting Even After RunAway: Random May have Poisoned or Followed you.', true, true);
until WaitTime <= TimeFromMark(StartedWaiting);

Mouse(690, 130, 4, 4, true);
Flag;
wait(800 + Random(2000));

If FindColor(x, y, BankIconColour, 550, 7, 682, 161) then
begin
Mouse(x, y + 10, 3, 3, true);
Flag;
wait(800 + Random(2000));
end else
begin;
Mouse(660, 140, 4, 4, true);
Flag;
wait(800 + Random(2000));
end;
end else
begin
SYCBReport('Could Not Find Bank To RunAway to during Fight. Procedure: CustomRunAway', true, true);
end;
end else If FindTopYew >= 0 then
begin
CustomRunAway((Random(90000) + 30000));
exit;
end else SYCBReport('Could Not FindTopYew During Procedure: CustomRunAway', true, true);
MoveToYews;
end;

// -----------------------------------------------------------------------
// Basic Check For all Randoms, Uses Standard SRL Checks.
// -----------------------------------------------------------------------
procedure CheckForAllRandoms;
begin
MyFindBirdsNest;
FindNormalRandoms;
FindInventoryRandoms;
FindNonInventoryRandoms;
FindTalk;
DwarfItem;
DropUnwanted;
if FindFight then CustomRunAway((Random(90000) + 30000));
end;

// -----------------------------------------------------------------------
// Checks for Randoms, Occasionally Re-Clicks On Yew & Performs an AntiBan Functions
// Until Yew Tree has Been Fully Cut Down.
// -----------------------------------------------------------------------
Procedure CutTillDown;
var StartCut, RandWait: integer;
begin
MarkTime(StartCut);
RandWait := (12000 + Random(33000));
repeat
if not LoggedIn then SYCBReport('CutTillDown: Not Logged In. Lost Connection or Unsolveable Random?', true, true);
FindEnt(YewCoords[i].x, YewCoords[i].y, true)
CheckForAllRandoms;
if TimeFromMark(StartCut) > RandWait then
begin
if not FindEnt(YewCoords[i].x, YewCoords[i].y, true) then
begin
CheckForAllRandoms;
if IsUptext('down Yew') then
begin
if random(100) >= 70 then
begin
AntiBan;
end else Mouse(YewCoords[i].x, YewCoords[i].y, 5, 5, true);
CheckForAllRandoms;
end else exit;
end;
CheckForAllRandoms;
MarkTime(StartCut);
RandWait := (12000 + Random(33000));
end;
MyFindBirdsNest;
until not IsUpText('down Yew') or CheckIfBank;
end;

// -----------------------------------------------------------------------
// Find Yew Tree Foliage and Populate YewCoords
// -----------------------------------------------------------------------
Function FindYew: boolean;
begin
FindColorsSpiralTolerance(255, 166, YewCoords, YewColour, 5, 5, 515, 337, 4);
If Length(YewCoords) <= 0 then result := false
else for i:= 0 to High(YewCoords) do
begin
MMouse(YewCoords[i].x, YewCoords[i].y, 3, 3)
If IsUpText('down Yew') then
begin
result:= true;
exit;
end;
end;
result := false;
end;

// -----------------------------------------------------------------------
// Changes Tree. Moves up if your at Bottom Yew and VisaVersa.
// -----------------------------------------------------------------------
Procedure ChangeTree;
begin
if FindBothYews then
begin
CheckForAllRandoms;
If FindTopYew < FindBottomYew then
begin
FindTopYew;
Mouse(x + 4, y + 15, 5, 5, true);
Flag;
end else if FindTopYew > FindBottomYew then
begin
FindBottomYew;
Mouse(x + 4, y - 15, 5, 5, true);
Flag;
end;
First:= true;
end;
end;

// -----------------------------------------------------------------------
// Start Cutting Down Tree
// -----------------------------------------------------------------------
Procedure CutDownTree;
begin
if not LoggedIn then SYCBReport('CutDownTree: Not Logged In. Lost Connection or Unsolveable Random?', true, true);
First:= True;
repeat
if not LoggedIn then SYCBReport('CutDownTree: Not Logged In. Lost Connection or Unsolveable Random?', true, true);
If FindYew then
begin
First:= False;
If not FindEnt(YewCoords[i].x, YewCoords[i].y, true) then
begin
Mouse(YewCoords[i].x, YewCoords[i].y, 4, 4, true);
CheckForAllRandoms;
CutTillDown;
MyFindBirdsNest;
end;
end else If not First and not CheckIfBank then
begin
ChangeTree;
end else if random(1000) <= 200 then AntiBan;
CheckForAllRandoms;
until CheckIfBank;
end;

// -----------------------------------------------------------------------
// Sets up all the initial items.
// -----------------------------------------------------------------------
Procedure SetupSYCB;
begin
Disguise(HideScar);
ScriptID := '611';
DeclarePlayers;
InitAxeTypes;
if not LoggedIn then LoginPlayer else Players[CurrentPlayer].NickTPA := CreateTPAFromText(Players[CurrentPlayer].Nick, UpChars);
SRL_Logs := SRL_Logs + 1;
YewDTM := DTMFromString('78DA6314666060E06740017ED65C60214620F' +
'E0F048C9C40061B031A60442281B434906026A04611D32E0C3562' +
'404282801A907BC4F1AB0100B63D057D');
NestSeedDTM := DTMFromString('78DA6314646060E0614001FE11DC0CFC409A1' +
'188FF0301232790C1CA8006189148202D0C245808A891C1B40B43' +
'8D08901025A006E41E61FC6A00BFF8057E');
NestRingDTM := DTMFromString('78DA63E4636060E06240013B168A33F003694' +
'620FE0F048CEC40062B031A60442281B430906021A0461A48F011' +
'5003B25884801A2620C18B5F0D00489B0623');
ActivateClient;
YewCount := 0;
LoadsBanked := 0;
TreeIconColour := 0;
BankIconColour := 0;
NestCountSeeds := 0;
NestCountRings := 0;
BirdsNestsMissed := 0;
LampSkill := PickSkill;
ClearDebug;
ClearReport;
if not FindTheAxe then SYCBReport('Could not find any axes.', true, false);
repeat
GetIconColours;
until (BankIconColour > 0) and (TreeIconColour > 0);
MakeCompass('N');
SetAngle(true);
end;

// --------------------- Program Starts --------------------------

begin
SetupSRL;
SetupSYCB;
repeat
MoveToYews;
CutDownTree;
GoToBank;
until not LoggedIn;
end.

// Version History:
// V1.0 beta First public beta release
// V1.01 beta Minor Tweaks to a few Coordinates & small counting fix.
// V1.02 beta Fixed a few bugs introduced when I cleaned up the script for release.
// Improved Item Count Function & Fixed intermitent problems with it.
// Created Custom Runaway From Fight Routine just for Edgeville Yew Area. (beta)
// V1.03 beta Fixed the intermittent FindTalk Random bug.
// Improved CustomRunAway procedure.
// Integrated SRL Stats.
// Minor bug fixes and optimisations.
// V1.04 beta Updated to work with SRL 11
// increased speed of cutting.
// V1.05 beta Fixed Minor Reorting issue for RandomItemsBanked
// Lots of small improvements.
// Last Version Posted in First Scripts, If you want further versions become a Junior Member.
// V1.06 beta Added Custom Procedure to Find Birds Nests when dropped from tree. (beta)
// Record failed attempts to find Birds Nest.
// added procedure to drop low value items from Random events
// improved random detection.

——————————————————
<!– END TEMPLATE: formanswers –>

n3ss3s

2008-02-01 08:07:27

Finally a decent app!

Yes :)

Bobarkinator

2008-02-01 08:14:33

Very good effort!
I will give it a yes

Harry

2008-02-01 08:16:58

Yes sir.

Edit: Is your name Ed or something?
program Simple_Yew_Cut_n_Bank_Ed;

PriSoner

2008-02-01 08:20:29

No.. Ed is short for Edgeville… :)

Thanks for the support guys….

Naike

2008-02-01 08:27:14

Good work! I give it a Yes!

footballjds

2008-02-01 08:36:02

From: n3ss3s
Finally a decent app!

Yes :)


indeed, yes from me!

Hugolord

2008-02-01 08:36:16

Yes from me.

Naike

2008-02-01 08:38:58

PriSoner you be Member in no time ^^

footballjds

2008-02-01 08:47:27

one thing i noticed, UnwantedDTMs… how about wanted dtms? and drop everything else. like

function ToKeep : booleanArray;
var
KeepInvItemsArray : Array[1..28] of boolean;
begin
do for i := 1 to 28 do
begin
if da items to keep are here then keepInvItemsArray[i] := true;
end;
Result := KeepInvItemsArray;
end;
and then have a procedure that drops everything:

procedure DropJunk(WhatToKeep : booleanArray);
begin
for i := 1 to 28 do
begin
if not WhatToKeep[i] then DropItem(i);
end;
end;
and do it like:
DropJunk(ToKeep);
not perfect but i believe you get the picture no?
also players[0].pin := playersPin should be IntToStr(PlayersPin);
i noticed when you go to open the bank you convert players[0].pin to a string… but i dunno if thatl even work, even if it does you should either have playerspin be a string or convert it first off.

PriSoner

2008-02-01 09:32:37

Yeahhh.. Thanks to all you that have voted Yes so far and a boo to the one cowardly custard who voted no and didn't say why. :p

From: footballjds
one thing i noticed, UnwantedDTMs… how about wanted dtms? and drop everything else. like
not perfect but i believe you get the picture no?

I get the picture and will take on board your suggestion as the procedure develops. The procedure is my newest addition and I will be improving it greatly over time. The reason it's set to drop unwanted instead of keep wanted is that at the moment there are more wanted items than unwanted. I also feared it may start conflicts with other functions like FindInventoryRandoms.

From: footballjds
also players[0].pin := playersPin should be IntToStr(PlayersPin);
i noticed when you go to open the bank you convert players[0].pin to a string… but i dunno if thatl even work, even if it does you should either have playerspin be a string or convert it first off.


I always thought it was odd the way that Players[x].pin is defined as an integer and that the only SRL function that uses it InPin(pin; string) is defined as a string. Shome mistake surely….
So in a word players[0].pin := IntToStr(PlayersPin); would not work. As for converting it on the fly after opening the bank.. It does work and has been working for me without a hitch.

Thanks for the input though it all help..

Psychor

2008-02-01 09:47:14

From: PriSoner
I get the picture and will take on board your suggestion as the procedure develops. The procedure is my newest addition and I will be improving it greatly over time. The reason it's set to drop unwanted instead of keep wanted is that at the moment there are more wanted items than unwanted.


I agree, there are more items on the wanted list, there are even items on your unwanted list that i prefer to keep, what about those? Maybe make that part optional. But it is a great application.

footballjds

2008-02-01 10:11:58

wanted vs. unwanted
wanted := logs and axe unwanted := everything else

PriSoner

2008-02-01 10:12:44

From: Psychor
I agree, there are more items on the wanted list, there are even items on your unwanted list that i prefer to keep, what about those? Maybe make that part optional. But it is a great application.


Thanks for the feedback.. I agree it is a bit inflexible at the moment. I did want to keep it simple without having a need for the user to set hundreds of options, hence the name ;) . But i do think you are right and I will expand it into optional items..

From: footballjds
wanted vs. unwanted
wanted := logs and axe unwanted := everything else

hehe.. that would keep it very simple.. I do however want to keep all gems, birdsnest etc and use all lamps etc.

PriSoner

2008-02-01 11:50:21

##################################################################
Simple Yew Cutter & Banker (Edgeville)
Ran for: 3 Hours, 46 Minutes and 43 Seconds
Loads Banked: 23
Yew Logs Banked: 609
Birds Nests (Seeds) Banked: 1
Random Event Items Banked: 2
##################################################################

Naum

2008-02-01 12:02:07

You learned fast???
Could someone IPz0r him??
Any way in just suspisious so don't hold that against me plz. I fthe ip results come out good ill vote yes.
Holding for now!

EvilChicken!

2008-02-01 12:13:04

Thats the most certain yes I've ever given to an app.
Such skills @ an such low longtivity?

WHEN you get members, you need to write an intruduction. PLAWX.

Santa_Clause

2008-02-01 12:39:22

Prove you're not MOB :p

Negaal

2008-02-01 12:43:51

From: NaumanAkhlaq
You learned fast???
Could someone IPz0r him??
Any way in just suspisious so don't hold that against me plz. I fthe ip results come out good ill vote yes.
Holding for now!


Yes, if someone verifys him…

PriSoner

2008-02-01 12:50:22

From: NaumanAkhlaq
You learned fast???
Could someone IPz0r him??
Any way in just suspisious so don't hold that against me plz. I fthe ip results come out good ill vote yes.
Holding for now!


I don't mind IPz0r away…. It's the way it's said that can offend and i can live with the way you expressed it…. :)

As for learning fast.. Not really.. It's taken me just over 2 weeks to get to this point in the script. I may be completely new to SCAR but as I mentioned in the application blurb.. I used to program quite a lot and well… It's just like Riding a Bike you never forget.. :p

From: Santa_Clause
Prove you're not MOB :p

What or Who are MOB??


Version 1.07 beta Out.. download it now.. here

V1.07 beta Added a procedure to wait and try again when a "not LoggedIn" event is detected
………Now saves and Displays a Screenshot for when "Not LoggedIn" event is detected to help debug
………Added Woodcutting Level, XP & Script Version to reporting


If You Use and Like This Script Please Rate This Thread.
If You have Used This Script Please Leave Comments.

nielsie95

2008-02-01 12:57:47

From: Negaal
Yes, if someone verifys him…


Don't worry, he's clean.

MylesMadness

2008-02-01 13:56:10

I think you will make no matter what people said that in my app and I failed. But still its a yes

Dan Cardin

2008-02-01 14:11:00

:) most definitely

and rofl. You called the person who got no a cowardly custard :) makes me laugh… :p

Naum

2008-02-01 15:16:52

Yes dude keep it up :)!!!

richk1693

2008-02-01 15:32:37

Yes.

IEatJ00erBaybees

2008-02-01 15:42:44

Yes, but I ask of you one thing. Use the declareplayers to ..well..declare players instead of using the constants. In that fashion, people can add more players easier and less confusingly.

footballjds

2008-02-01 19:52:05

From: IEatJ00erBaybees
Yes, but I ask of you one thing. Use the declareplayers to ..well..declare players instead of using the constants. In that fashion, people can add more players easier and less confusingly.


agreed, multi player leaves a bit to be desired, but multiplayer isn't very importent because of the update. the main focus is anti bans/rands.

MylesMadness

2008-02-01 20:53:21

But multi player is something you kinda need to know. Not that it's needed anymore but…

IEatJ00erBaybees

2008-02-01 21:36:38

From: Mylesmadness
But multi player is something you kinda need to know. Not that it's needed anymore but…


Total BS! I have a way to trade across multi-accounts.

Ashur2Good

2008-02-01 22:34:45

Yes, and welcome :)

Smartzkid

2008-02-01 23:45:22

Learn multiplayer, even if you don't use it often, it's a good skill to have.

Yes.

Home

2008-02-02 04:34:05

Yes, from me… Finally someone who really tries to learn :) !


~Home

Rambozin

2008-02-02 04:38:30

Yes! You need to get in! :)

Naum

2008-02-02 07:35:28

PsuedoIn.

GoF

2008-02-02 10:50:40

I had a feeling that some things you claimed your own were based quite lot on some other scripters material, not sure if that is it but still… Hmm..

I'll think. Most likely yes, but not sure ;)

Jackrawl

2008-02-02 11:52:22

Yes.

MoB was this funny little kid who still comes back every now and then to make us laugh.
You can search for 'Mage of Begu' if you're interested in the little guy. My first thought too was an old member that got banned…Thats very good work.

Naum

2008-02-02 15:18:00

Lol He was the one who tried to frame JAD. MOB/insane is an idiot

Sumilion

2008-02-02 16:50:09

In! With an amazing 19-3 =O Good job ! Enjoy :)