SRL Archive - Archive

King - SRL Member Application


King

2013-04-20 02:32:42

How Long have You Played Runescape?
9 Year(s)


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?



What is your general programming knowledge?
Pascal/C##/Java


Are you a member of any other communities?
Sythe, Tribot, Powerbot


Tell us about yourself…
From: King
Hey all, my name is Thomas, recently 17. I was born in Jackson Michigan. I love coding, drawing, and baseball. Im hoping to go to Eastern University in Pre-med with my major in Bio-medicine minor in business to become an orthopedic surgeon. I love the friendly community here and would love to stay for many more years and see it grow!


E* Fixed ring detection to use my own TPA/ATPA finding function, implemented location check failsafe (Walks back if Fiends not found in 10 tries) Added DTM item finding for most screens


Please show us one (or multiple) of your scripts.
program KingsWaterFiends;
{$DEFINE SMART8}
{$I SRL/SRL.simba}
{$I SPS/SPS.simba}
{$I SRL/SRL/skill/prayer.simba}
{$i SRL/srl/misc/smartgraphics.simba}
{.Include SRL\SRL\Misc\Debug.simba}
{$i SRL-OSR/SRL/misc/MouseHandler.simba}
{$i su_surfaces.simba}

var
Status: string;
x, y, fx, fy: Integer;
Shark, Rocktail, PrayerFlask, PrayerPotion, BunyipPouch, CharmingIMP: Integer;
GoToBank: Boolean;
obj_fairyring: TSurfaceObject;
BeforeKillTPA, AfterKillTPA: TPointArray;

const
//--------------------User Settings-------------------------------------//
Debug = True; //Set to True if you are editing

FoodAmount = 15; //Amount of Food to bring

FoodType = 'Shark'; //Name of food to bring, Only supports Shark and Rocktail atm!

FoodBound = '='; //Key on the action bar the food is bound too

PrayerPotAmount = 1; //Amount of prayer potions to bring

PType = 'Flask'; //Flask or potion?

Prayer = False; //Use quick prayer?

RangeBooster = False; //Bring other potions?

RangeBoosterName = 'Ranging potion';// Name of potion as written in runescape

BoosterAmount = 1; //Amount of other potions to bring?

LevelToRepotAt = 99; //When to repot?

LevelBoosted = 'Range'; //What level to look for repot level

HpToEatAt = 4000; //When do we want to eat?

TimeToRun = 4; //In hours

UseCharmingImp = True;// True if you are using, False if you are not

//--------------------End User Settings-------------------------------------//

procedure DeclarePlayers;
var
FileNum: integer;
s: string;
usrInfo: TStringArray;
begin
FileNum := OpenFile('C:\acc.txt', true); // Got the Idea from Football
ReadFileString(FileNum, s, FileSize(FileNum));
CloseFile(FileNum);
usrInfo := Explode(chr(10), s);
NumberOfPlayers(1);
CurrentPlayer := 0;
with Players[0] do
begin
Name := usrInfo[0];
Pass := usrInfo[1];
Pin := usrInfo[2];
Active := True;
end;
end;


function WalkToCaveRing: Boolean;
var
ToCaveRing: TPointArray;
begin
SPS_Setup(RUNESCAPE_OTHER, ['ANCIENT_CAVERN']);
ToCaveRing := [Point(141, 252), Point(124, 247), Point(110, 237), Point(92, 236), Point(81, 232), Point(72, 227)];
if SPS_WalkPath(ToCaveRing) then
begin
result := true;
Status := 'Walked to the ring';
if debug then
writeln(status);
exit;
end
else
begin
result := false;
Status := 'Did not walk to cave ring, stopping.';
if debug then
writeln(status);
Logout;
TerminateScript;
end;
end;

function LocationCheck: Boolean;
var
MyLoc, StartingLoc: TPoint;
begin
SPS_Setup(RUNESCAPE_OTHER, ['ANCIENT_CAVERN']);
Result := false;
MyLoc := SPS_GetMyPos;
StartingLoc := point(85, 230);
if Distance(myloc.x, myloc.y, startingloc.x, startingloc.y) > 50 then
begin
result := true;
status := 'Relocated';
if debug then
writeln(status);
WalkToCaveRing;
exit;
end
else
begin
status := 'Close enough still';
if debug then
writeln(status);
exit;
end;
end;

procedure DeclareDTMz;
begin
Shark := DTMFromString('mlwAAAHicY2dgYJjIxMDQAcQ9QDwLiJcA8VwoX4KRgUEaiDmBWBmKuYFYBYirUoKAupmwYmUG3IARD4YCAPHlBkA=');
Rocktail := DTMFromString('mggAAAHicY2NgYFgHxPOBeDsQrwDizUC8GoiVgVgXiKWgWA2INYG4o6KagQNIcwMxiOYFYjYgVmTADhhxYAgAAKkYBrQ=');
PrayerFlask := DTMFromString('mwQAAAHic42RgYDjIxMBwCIi3A/EpID4OxDug+CRUrpWRgaGUEUK3AHEtENcDcQ8QdwPxBCA2XFoFNI0JL1ZmIAwYicBwAADRlg0d');
PrayerPotion := DTMFromString('mlwAAAHicY2dgYDjIxMBwAIq3A/EpIN4JxMeAuJWRgaEUiCcAcTcQdwFxDRQbLq0C6mbCipUZcANGPBgKANdLCns=');
BunyipPouch := DTMFromString('mrAAAAHic42BgYDjABMGbgPg8EJ8A4p1AvBWIzwKxGCMDgwojhJYCYg4gZgdiBSBWBGIvL0OgKUw4sRwDfsBIAMMAAGekB9g=');
CharmingIMP := DTMFromString('mrAAAAHic42BgYHBlYmCwAGIbILZkgvCdgNgbiqUZGRh4oFgMiAWBWA6IJYFYGYgXWxoBTWHCieUY8ANGAhgGAB61BCY=');
end;

procedure FreeDTMz;
begin
FreeDTM(Shark);
FreeDTM(Rocktail);
FreeDTM(PrayerFlask);
FreeDTM(PrayerPotion);
FreeDTM(BunyipPouch);
FreeDTM(CharmingIMP);
end;

function FindArrow: Boolean;
var
tmpCTS: integer;
ArrowTPA: TPointArray;
begin
Result := False;
if not LoggedIn then
exit;
tmpCTS := GetToleranceSpeed;
SetColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(1.88, 1.16);
if FindColorsTolerance(ArrowTPA, 13032391, 706, 230, 730, 247, 16) then
Result := True;
SetColorToleranceSpeed(tmpCTS);
SetToleranceSpeed2Modifiers(0.02, 0.02);
end;

function Fighting: Boolean;
begin
if not LoggedIn then
exit;
if not (GetCurrentTab = tab_Combat) then
begin
GameTab(tab_Combat);
wait(RandomRange(1000, 1200));
end
else if FindArrow then
begin
writeln('We still have a target');
Result := True;
exit;
end
else
begin
Result := False;
writeln('No longer fighting');
exit;
end;
end;

function FairyScreen: Boolean;
var
TPA: TPointArray;
ATPA: T2DPointArray;
i, L, X, Y: Integer;
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.03, 0.18);
if InvFull then
Exit;
if FindColorsSpiralTolerance(x, y, TPA, 3948686, MSX1, MSY1, MSX2, MSY2, 14) then
begin
ColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.02, 0.02);
ATPA := TPAtoATPAEx(TPA, 40, 40);
SortATPAFrom(ATPA, Point(MSCX, MSCY));
if debug then
DebugATPA(ATPA, '');
L := High(ATPA) for i := 0 to L do
if GetArrayLength(ATPA[i]) >= 25 then
begin
status := 'Found fairy screen';
if debug then
writeln(status);
result := true;
exit;
end
else
begin
status := 'Did not find fairy screen';
if debug then
writeln(status);
result := false;
exit;
end;
end
else
begin
ColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.02, 0.02);
end;
end;

function FindFairyScreen: Boolean;
begin
if FairyScreen then
begin
status := 'At fairy screen';
if debug then
writeln(status);
Result := true;
exit;
end
else
begin
status := 'Not at fairy screen';
if debug then
writeln(status);
result := false;
exit;
end;
end;

function PickLocation: Boolean;
begin
if FindFairyScreen then
begin
AL_HumanMMouse(point(53, 222), 2, 2);
ClickMouse2(true);
wait(RandomRange(1800, 2200));
AL_HumanMMouse(point(206, 216), 2, 2);
ClickMouse2(true);
wait(RandomRange(1800, 2200));
AL_HumanMMouse(point(371, 217), 2, 2);
ClickMouse2(true);
wait(RandomRange(1800, 2200));
AL_HumanMMouse(point(260, 284), 2, 2);
ClickMouse2(true);
wait(RandomRange(1800, 2200));
result := true;
status := 'Picked the location';
if debug then
writeln(status);
exit;
end
else
begin
result := false;
status := 'Fairy ring screen is not open';
if debug then
writeln(status);
TerminateScript;
end;
end;

function FindCaveFloor: Boolean;
var
TPA: TPointArray;
ATPA: T2DPointArray;
i, L, X, Y: Integer;
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(12.50, 0.27);
if InvFull then
Exit;
if FindColorsSpiralTolerance(x, y, TPA, 3618613, 606, 24, 682, 134, 25) then
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.02, 0.02);
ATPA := TPAtoATPAEx(TPA, 200, 200);
SortATPAFrom(ATPA, Point(MMCX, MMCY));
if debug then
DebugATPA(ATPA, '');
L := High(ATPA) for i := 0 to L do
if GetArrayLength(ATPA[i]) >= 5 then
begin
status := 'Found cave floor';
if debug then
writeln(status);
result := true;
exit;
end
else
begin
status := 'Did not find cave floor';
if debug then
writeln(status);
result := false;
exit;
end;
end
else
begin
ColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.02, 0.02);
end;
end;

procedure Init();
begin
SMART_ClearMS();

CreateSurfaceParts(obj_fairyring, 2);

with obj_fairyring do begin
parts[0].c := 13953702;
parts[0].hm := 0.03;
parts[0].sm := 3.28;
parts[0].t := 12;
parts[0].minw := 50;
parts[0].maxw := 75;
parts[0].minh := 50;
parts[0].maxh := 75;
parts[0].step := 32;
parts[0].max_distance := 999;

parts[1].c := 4344898;
parts[1].hm := 0.31;
parts[1].sm := 0.16;
parts[1].t := 12;
parts[1].filter := @SurfaceFilterClosest; // We want to have the closest fairy ring next to us.
parts[1].minw := 10;
parts[1].maxw := parts[0].maxw;
parts[1].minh := 10;
parts[1].maxh := parts[0].maxh;
parts[1].step := 32;
parts[1].max_distance := parts[0].max_distance;

name := 'Fairy ring';
uptext := 'Fairy';
filter := @SurfaceFilterClosest;
end;
end;





function FindZanarisFloor: Boolean;
var
TPA: TPointArray;
ATPA: T2DPointArray;
i, L, X, Y: Integer;
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.09, 0.75);
if InvFull then
Exit;
if FindColorsSpiralTolerance(x, y, TPA, 5992015, MMX1, MMY1, MMX2, MMY2, 6) then
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.02, 0.02);
ATPA := TPAtoATPAEx(TPA, 40, 40);
SortATPAFrom(ATPA, Point(MMCX, MMCY));
if debug then
DebugATPA(ATPA, '');
L := High(ATPA) for i := 0 to L do
if GetArrayLength(ATPA[i]) >= 150 then
begin
status := 'Found Zanaris floor';
if debug then
writeln(status);
result := true;
exit;
end
else
begin
status := 'Did not find Zanaris floor';
if debug then
writeln(status);
result := false;
exit;
end;
end
else
begin
ColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.02, 0.02);
end;
end;

function AtCave: Boolean;
begin
if FindCaveFloor then
begin
status := 'At the cave';
if debug then
writeln(status);
Result := true;
exit;
end
else
begin
status := 'Not at the cave';
if debug then
writeln(status);
result := false;
exit;
end;
end;

function AtZanaris: Boolean;
begin
if FindZanarisFloor then
begin
status := 'At Zanaris';
if debug then
writeln(status);
Result := true;
exit;
end
else
begin
status := 'Not at Zanaris';
if debug then
writeln(status);
result := false;
exit;
end;
end;

function UseFairyRing: Boolean;
begin
if ClickSurfaceObject(obj_fairyring, true) then
begin
while IsMoving do
wait(RandomRange(25, 50));
MarkTime(x);
repeat
wait(RandomRange(25, 55));
until ((TimeFromMark(x) >= 20000) or FindFairyScreen);
if FindFairyScreen then
begin
if PickLocation then
begin
MarkTime(x);
repeat
wait(RandomRange(25, 55));
until (AtCave or (TimeFromMark(x) >= 25000));
if AtCave then
begin
result := true;
status := 'Taveled to the cave';
if debug then
writeln(status);
exit;
end
else
begin
result := false;
status := 'Did not use the fairy ring correctly, exiting..';
if debug then
writeln(status);
TerminateScript;
end;
end;
end;
end
else
begin
result := false;
status := 'Could not find the fairy ring';
if debug then
writeln(status);
TerminateScript;
end;
end;


function CheckFood: Boolean;
var
FoodCount: Integer;
begin
case Lowercase(FoodType) of
'shark':
begin
FoodCount := CountItems('dtm', shark, []);
writeln(IntToStr(FoodCount) + 'Shark in inventory');
Result := (FoodCount > 5);
exit;
end;
'rocktail':
begin
FoodCount := CountItems('dtm', Rocktail, []);
writeln(IntToStr(FoodCount) + 'Rocktail in inventory');
Result := (FoodCount > 5);
exit;
end;
end;
end;

function CheckPrayerPotions: Boolean;
var
PotionCount: Integer;
begin
case Lowercase(PType) of
'flask':
begin
PotionCount := CountItems('dtm', PrayerFlask, []);
if debug then
writeln(IntToStr(PotionCount) + 'Flask in inventory');
Result := (PotionCount >= PrayerPotAmount);
exit;
end;
'potion':
begin
PotionCount := CountItems('dtm', PrayerPotion, []);
if debug then
writeln(IntToStr(PotionCount) + 'Potions in inventory');
Result := (PotionCount >= PrayerPotAmount);
exit;
end;
end;
end;

function ImpPresent : boolean;
begin
result := FindDTM( x, y, CharmingIMP, MIX1, MIY1, MIX2, MIY2);
end;

function NeedToBank: Boolean;
begin
if not (CheckFood) then
if UseCharmingImp then
if not ImpPresent then
begin
result := true;
GoToBank := true;
end;
end;

function FindWaterFiend: Boolean;
var
x, y, I, failcount: integer;
FiendTPA: TPointArray;
FiendATPA: T2DPointArray;
begin
Result := False;
failcount := 0;
repeat
SetColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.23, 1.80);
if FindColorsSpiralTolerance(x, y, FiendTPA, 5653788, 45, 45, 499, 242, 10) then
begin
SetColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.02, 0.02);
if Length(FiendTPA) < 5 then
begin
writeln('Could not find Fiend, exiting');
Inc(failcount);
if failcount > 10 then
LocationCheck;
end;
FiendATPA := TPAToATPAEx(FiendTPA, 10, 20);
SortATPASize(FiendATPA, true);
SortATPAFromMidPoint(FiendATPA, point(MSCX, MSCY));
for I := 0 to High(FiendATPA) do
if GetArraylength(FiendATPA[i]) > 10 then
begin
MiddleTPAEx(FiendATPA[i], x, y);
AL_BrakeMMouse(point(x, y), 2, 2, false);
if WaitUpTextMulti(['Water', 'fiend', 'Waterfiend'], 250) then
begin
AL_FastClick(1);
GetMousePos(fx, fy);
MarkTime(x);
repeat
wait(RandomRange(50, 60));
until (Fighting or (TimeFromMark(x) >= 2500));
if Fighting then
begin
Status := 'Fighting Fiend';
if debug then
writeln(status);
result := true;
exit;
end
else
begin
Status := 'Could not find the Fiend uptext';
if debug then
writeln(status);
Inc(failcount);
if failcount > 10 then
begin
LocationCheck;
exit;
end;
end;
end
else
begin
Status := 'Could not find the Fiend uptext';
if debug then
writeln(status);
Inc(failcount);
if failcount > 10 then
begin
LocationCheck;
exit;
end;
end;
end
else
begin
Status := 'Could not find the Fiend';
if debug then
writeln(status);
Inc(failcount);
if failcount > 10 then
begin
LocationCheck;
exit;
end;
end;
end
else
begin
SetColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.02, 0.02);
end;
until ((failcount >= 10));
end;


function WalkToRing: Boolean;
var
ToRing: TPointArray;
begin
SPS_Setup(RUNESCAPE_OTHER, ['zanaris']);
ToRing := [Point(123, 138), Point(131, 143), Point(140, 147), Point(152, 154), Point(163, 159), Point(172, 162), Point(181, 166), Point(193, 171), Point(204, 178), Point(213, 183), Point(224, 192), Point(229, 200), Point(232, 210), Point(232, 222), Point(230, 231), Point(224, 237)];
if SPS_WalkPath(ToRing) then
begin
while ismoving do
wait(RandomRange(25, 45));
Status := 'At the ring';
if debug then
writeln(status);
result := true;
exit;
end
else
begin
Status := 'Did not walk to the fairy ring';
if debug then
WriteLn(status);
TerminateScript;
end;
end;

function WalkToBank: Boolean;
var
ToBank: TPointArray;
begin
SPS_Setup(RUNESCAPE_OTHER, ['zanaris']);
ToBank := [Point(230, 213), Point(226, 194), Point(224, 187), Point(218, 183), Point(207, 177), Point(197, 176), Point(187, 175), Point(170, 173), Point(159, 169), Point(147, 161), Point(142, 154), Point(137, 144), Point(135, 141), Point(130, 139), Point(127, 138), Point(126, 138)];
if SPS_WalkPath(ToBank) then
begin
Status := 'At the bank';
if debug then
writeln(status);
result := true;
exit;
end
else
begin
Status := 'Did not walk to the bank';
if debug then
WriteLn(status);
TerminateScript;
end;
end;

function ExitCave: Boolean;
begin
if WalkToCaveRing then
begin
if UseFairyRing then
if AtZanaris then
begin
status := 'Exited the cave';
if debug then
writeln(status);
result := True;
exit;
end
else
begin
status := 'Exited the cave';
if debug then
writeln(status);
result := false;
Logout;
TerminateScript;
end;
end;
end;

function GetToBank: Boolean;
begin
if AtCave and NeedToBank then
begin
if ExitCave then
begin
if WalkToBank then
begin
Result := true;
status := 'Got to the bank';
if debug then
writeln(status);
exit;
end
else
begin
Result := false;
TerminateScript;
end;
end;
end;
if not AtCave and NeedToBank then
begin
if WalkToBank then
begin
Result := true;
status := 'Got to the bank';
if debug then
writeln(status);
exit;
end
else
begin
Result := false;
TerminateScript;
end;
end;
end;

function OpenBankSRLKing: Boolean;
var
TPA: TPointArray;
ATPA: T2DPointArray;
i, L, X, Y: Integer;
R: TPoint;
begin
while IsMoving do
wait(RandomRange(25, 45));
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.24, 0.60);
if InvFull then
Exit;
if FindColorsSpiralTolerance(x, y, TPA, 9872302, MSX1, MSY1, MSX2, MSY2, 4) then
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.02, 0.02);
ATPA := TPAtoATPAEx(TPA, 20, 10);
SortATPAFrom(ATPA, Point(MSCX, MSCY));
if debug then
DebugATPA(ATPA, '');
L := High(ATPA) for i := 0 to L do
if GetArrayLength(ATPA[i]) > 50 then
begin
R := MiddleTPA(ATPA[i]);
AL_HumanMMouse(point(r.x, r.y), 0, 0);
if WaitUptext('ank', 350) then
begin
ClickMouse2(false);
wait(RandomRange(250, 300));
ChooseOption('ank');
MarkTime(x)
repeat
wait(RandomRange(25, 45));
until (BankScreen or (TimeFromMark(x) >= 20000));
if BankScreen then
begin
result := true;
exit;
end
else
begin
result := false;
exit;
end;
end;
end;
end
else
begin
SetColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.02, 0.02);
end;
end;

function AtBank: boolean;
begin
Result := FindSymbolIn(x, y, Symbol_Bank, 550, 10, 700, 150) and (Distance(x, y, 627, 84) <= 30);
end;

function OpenZBank: Boolean;
begin
if OpenBankSRLKing then
begin
if PinScreen then
InPin(Players[0].Pin);
if BankScreen then
begin
status := 'Bank Open' if debug then
writeln(status);
result := true;
exit;
end
else
begin
status := 'Could not open bank' if debug then
writeln(status);
result := false;
TerminateScript;
end;
end;
end;

function WithdrawCustom(Item: string; ATW, TimeToWait: Integer): Boolean;
var
StartingInvCount: Integer;
begin
result := false;
StartingInvCount := InvCount;
SearchBank(Item);
wait(RandomRange(600, 722));
Withdraw(0, 0, ATW);
MarkTime(x);
repeat
wait(RandomRange(25, 30));
until ((TimeFromMark(x) >= TimeToWait) or (InvCount > StartingInvCount));
if (InvCount <= StartingInvCount) then
begin
result := false;
Status := 'Could not find' + Item;
if debug then
writeln(status);
TerminateScript;
end;
end;

function DoBanking: Boolean;
begin
result := false;
while IsMoving do
wait(RandomRange(25, 45));
if BankScreen then
begin
if BankScreen then
Deposit(1, 22, 1);
if UseCharmingIMP then
WithdrawCustom('Charming imp' , 1, 25000);
if Prayer then
WithdrawCustom('Prayer' + PType + '(4)' , PrayerPotAmount, 25000);
if RangeBooster then
WithdrawCustom(RangeBoosterName + '(4)' , BoosterAmount, 25000);
WithdrawCustom(FoodType , FoodAmount, 25000);
if CloseBank then
if not BankScreen then
begin
result := true;
Status := 'Banked';
if Debug then
writeln(status);
exit;
end;
end
else
begin
result := False;
Status := 'Couldnt Bank';
if Debug then
writeln(status);
TerminateScript;
end;
end;

function KillFiends: Boolean;
begin
if FindWaterFiend then
begin
BeforeKillTPA := GetMMDotsOnMS('red');
MarkTime(x);
repeat
wait(RandomRange(50, 75));
until ((TimeFromMark(x) >= 2500) or Fighting);
if Fighting then
begin
Status := 'Fighting Fiend';
if debug then
writeln(status);
result := true;
exit;
end
else
begin
Status := 'Not Fighting Fiend';
if debug then
writeln(status);
result := false;
exit;
end;
end;
end;

function Eating: Boolean;
var
currentHP: integer;
colorsign: string;
begin
if not LoggedIn then
exit;
CurrentHP := GetMMLevels('hp', colorsign);
wait(RandomRange(50, 150));
if CurrentHP < HpToEatAt then
begin
SendKeys(FoodBound, 50, 5);
begin
MarkTime(x);
repeat
wait(RandomRange(30, 60));
until ((CurrentHP < GetMMLevels('hp', colorsign)) or (TimeFromMark(x) >= 15000));
if GetMMLevels('hp', colorsign) > HpToEatAt then
begin
Result := True;
exit;
end
else
begin
if (GetMMLevels('hp', colorsign) < 2000) then
begin
Result := false;
GoToBank := True;
writeln('Banking because we are out of food and low on health');
exit;
end;
end;
end;
end;
end;

procedure FightFiends;
begin
if not Fighting then
KillFiends;
if Fighting then
begin
writeln('getting before kill TPA');
MarkTime(x);
repeat
Eating;
wait(RandomRange(150, 260));
until ((TimeFromMark(x) >= 45000) or not Fighting);
wait(RandomRange(5000, 6000));
AfterKillTPA := GetMMDotsOnMS('red');
writeln('getting after kill TPA');
wait(RandomRange(250, 300));
end;
end;

Procedure Looting;
var
LootTPA: TPointArray;
L, i:integer;
LootPoint: TPoint;
begin
writeln('looting');
LootTPA := combinetpa(BeforeKillTPA, AfterKillTPA)
cleardoubletpa(LootTPA);
L := High(LootTPA) for i := 0 to L do
begin
writeln('looting2');
LootPoint := MMToMSEx(0, 2, LootTPA[i]);
MMouse(LootPoint.x, LootPoint.y, 1, 1);
ClickMouse2(False);
if WaitOptionMulti(['ater orb', 'Rune helm', 'eaweed', 'attlestaff', 'eath rune', 'charm', 'Snape'], 350) then
begin
FFlag(1);
While IsMoving Do Wait(RandomRange(25, 50));
exit;
end;
end;
SetArrayLength(BeforeKillTPA, 0);
SetArrayLength(AfterKillTPA, 0);
end;



begin
SetupSRL;
DeclarePlayers;
MouseSpeed := 25;
DeclareDTMz;
AddOnTerminate('FreeDTMz');
Init;
repeat
if not LoggedIn then
begin
LogInPlayer;
wait(RandomRange(1000, 6000));
end;
if not NeedToBank and AtCave then
begin
repeat
FightFiends;
Looting;
until (GoToBank);
end;
if AtBank and NeedToBank then
begin
OpenZBank;
DoBanking;
end;
if not AtBank and NeedToBank then
begin
GetToBank;
OpenZBank;
DoBanking;
end;
if not NeedToBank and not AtCave then
begin
WalkToRing;
UseFairyRing;
end;
until (False);
end.

E* updated looting method, fighting and small minor tweaks, no longer supports dramen staff ( did the quest)

Sjoe

2013-04-20 02:37:58

Hi, yes, bye

King

2013-04-20 02:38:32

From: Sjoe
Hi, yes, bye


Lol XD Made my night

Kevin

2013-04-20 03:48:32

I'm noticing a few things I'm curious if you could answer for me before I choose to vote.

Is there a reason for including the OSR mouse handler in your EOC script?

In WalkToCaveRing I notice you call 'Exit;' when it's the last possible line in the function for its branch (this actually happens many times throughout your code). And then in the opposing branch you set the result to false, even though it defaults to false (this also happens a few times throughout your code). Were there reasons for these things happening?

You're calling
if debug then
writeln(status);
an awful lot, could you think of a way to simplify this?

I realize you mention you took your FindRedBar function from ShatterHand, but I admit I'm still confused by portions of it. Why are RedBar1 and RedBar2 the exact same? And why do you never free RedBar3? Your else statement in here causes none of the dtms to become free even though you did declare them. (This method also caused me to noticed you're treating the mouse positions and object detection positions as global variables instead of passing them around as needed, is there a reason for this?) Not necessarily everyone wants their object detection debugged on screen for them - especially since it can take extra processing power to draw on smart. Can you think of a way to make that optional?

In your looting function, you lack a lot of randomness in your position clicking, even going so far as
MMouse(259, 187, 0, 0);
Is there a reason you can't add randomness to this situation?

In FindArrows, could you think of a way to avoid having the following occur in both branches, and instead just occur by default instead?
SetColorToleranceSpeed(tmpCTS);
SetToleranceSpeed2Modifiers(0.02, 0.02);

In your FairyScreen function, you change the CTS, hue, and saturation all away from the default, and then you change them again to non-default values - and I never see a reset for this. Is there a reason for that, or am I missing something?

I noticed that traversing through the fairy teleports is done via static position clicking, is there some reason bitmap or DTM detection doesn't work for this?

Is there a reason you look for the very specific royal crossbow and Dramen Staff in your inventory using TPAs instead of DTMs?

What kind of walking/travel method would you do in the cases that SPS may fail?

Maybe I missed it, but I don't actually see you implementing the EOC combat at all? Does this simply auto attack water fiends until they die?

Also, I maybe missing something else here, but it doesn't look like you handle more than one trip per script run. Is there a reason you don't support longer runtimes?

Don't take all of these as me instantly saying no, but I am curious to hear your answers before I vote. Also, don't take everything as bad, you are a very friendly and active person on these forums and you do seem more than competent in many respects. And of course, nobody is perfect and everyone makes mistakes. The question that arises is how do you fix them? :)

I look forward to your response, and good luck!

King

2013-04-20 09:55:38

From: Kevin
I'm noticing a few things I'm curious if you could answer for me before I choose to vote.

Is there a reason for including the OSR mouse handler in your EOC script?

This is just where Flights mouse handler is in my includes(:

In WalkToCaveRing I notice you call 'Exit;' when it's the last possible line in the function for its branch (this actually happens many times throughout your code). And then in the opposing branch you set the result to false, even though it defaults to false (this also happens a few times throughout your code). Were there reasons for these things happening?

I thought that I should include the false( Smetimes it says result = always true at line blah blah, so I just always include false) As for the exit function I copy and paste my own functions, so It probably just got thrown in there from a previous True result function.

You're calling
if debug then
writeln(status);
an awful lot, could you think of a way to simplify this?

I want it only to write what it's doing when debug at the top is turn to true, not sure another way.


I realize you mention you took your FindRedBar function from ShatterHand, but I admit I'm still confused by portions of it. Why are RedBar1 and RedBar2 the exact same? And why do you never free RedBar3? Your else statement in here causes none of the dtms to become free even though you did declare them. (This method also caused me to noticed you're treating the mouse positions and object detection positions as global variables instead of passing them around as needed, is there a reason for this?) Not necessarily everyone wants their object detection debugged on screen for them - especially since it can take extra processing power to draw on smart. Can you think of a way to make that optional?

I can easily add the red bar debugging to be in with the debug feature so it can be turned off. I treat the mouse positions and and object detections co-ordinate as Global variables as I use them in a few later functions, Including determining if the Distance from the original position of the Waterfiend is too far away from where it finds the Red Bar DTM( It keeps it from finding other Monsters that you did not attack. For the dtms being the same, one of mine must not have copied over properly when I was making it.

In your looting function, you lack a lot of randomness in your position clicking, even going so far as
MMouse(259, 187, 0, 0);
Is there a reason you can't add randomness to this situation?

I could add very very slight randomness, But it needs to click directly under the player to continue looting( I could possible Make a TPA search around a small box around the player?) that way there would be a randomness.



In FindArrows, could you think of a way to avoid having the following occur in both branches, and instead just occur by default instead?
SetColorToleranceSpeed(tmpCTS);
SetToleranceSpeed2Modifiers(0.02, 0.02);

I Should have put this just later before it exits, oops!

In your FairyScreen function, you change the CTS, hue, and saturation all away from the default, and then you change them again to non-default values - and I never see a reset for this. Is there a reason for that, or am I missing something?

Should have been a reset, may have forgotten it >.< I'll look when I fix up some stuff ( on my ipad now :p )

I noticed that traversing through the fairy teleports is done via static position clicking, is there some reason bitmap or DTM detection doesn't work for this?

Static clicking was much easier and less likely to fail, The fairy screen ring is majority the same color, best I would do besides this is TPA search in a very very small box, I could always makea mouse box, just found static after testing on that screen to fail least because it detects the screen(:

Is there a reason you look for the very specific royal crossbow and Dramen Staff in your inventory using TPAs instead of DTMs?

My Dtma occasionally failed, the TPAs haven't failed yet. Probably just not as good at dtms as I should be ( dramen staff got confused with shark fin occasionall as well )

What kind of walking/travel method would you do in the cases that SPS may fail?

I haven't put one in, I haven't had Sps fail in Zanaris yet so far, I can add an ODTM path as a backup(:

Maybe I missed it, but I don't actually see you implementing the EOC combat at all? Does this simply auto attack water fiends until they die?

Just uses momentum at this point, all you have to do is turn it on once, it never has to be reset anymore. At 80 range and with royal d hide and c bow, I manage to 3 hit the, consistently. Abilities don't really speed it up at all. I can always add it if requested enough(:

Also, I maybe missing something else here, but it doesn't look like you handle more than one trip per script run. Is there a reason you don't support longer runtimes?

Was a copy n past error from testing, just forgot my repeat :p

Don't take all of these as me instantly saying no, but I am curious to hear your answers before I vote. Also, don't take everything as bad, you are a very friendly and active person on these forums and you do seem more than competent in many respects. And of course, nobody is perfect and everyone makes mistakes. The question that arises is how do you fix them? :)

I look forward to your response, and good luck!

THankyou for taking e time to read and help out! I love having people give me ways to do better, in the future I can use them as well! Fixing them as soon as my computer starts up!



Answered all the questions in the quote(:

E* I fixed some stupid errors I would have caught by not posting at 3am, but I am going to leave the rest as it is, I feel like its cheating on a test to fix what Kevin said before anyone else gets to vote. @Kevin all your suggestions will go into the posted script on my thread! I just feel like its cheating to fix before everyone gets a chance to see /:

Olly

2013-04-20 10:46:38

Hmm, your way of looting really bugs me so randomness basically static clicking under the hp bar :s, aside from that (point out if im wrong) your script doesn't make use of any of the eoc ability's?

Also can you see a problem here?

  ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.24, 0.60);
if InvFull then
Exit;
if FindColorsSpiralTolerance(x, y, TPA, 9872302, MSX1, MSY1, MSX2, MSY2, 4) then
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.00, 0.00);

King

2013-04-20 10:49:46

From: Ollybest
Hmm, your way of looting really bugs me so randomness basically static clicking under the hp bar :s, aside from that (point out if im wrong) your script doesn't make use of any of the eoc ability's?


The loot always appears the same distance away and location under the loot bar, it does check distance to make sure it isnt too far away from the fiend. As for abilities, I 2-3 hit them with momentum and royal d hide, and c bow. I used abilities legit and it sped up my kills an hour by like 3-4. You never have to turn momentum on again ( no 20 minute timer anymore) so just turn it on before the script and you are good(:

E* I thought about using an array of Red MM dots to loot, have it check an array before and after attacking, then check the dots that are new between the two, this way is simpler and is more accurate in my experience between the two and it doesnt just randomly click loot piles around while its killing. I probably will add a T-box around the loot pile, still using red bar to detect the general area and use a ATPA to search for the common colors instead of static clicking in the final version.

E* fixed olly

Janilabo

2013-04-20 13:54:51

..however:

function FairyScreen: Boolean;
var
TPA: TPointArray;
ATPA: T2DPointArray;
i, L, X, Y: Integer;
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.03, 0.18);
if InvFull then
Exit;
if FindColorsSpiralTolerance(x, y, TPA, 3948686, MSX1, MSY1, MSX2, MSY2, 14) then
begin
ColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.02, 0.02);

..and…

function FindCaveFloor: Boolean;
var
TPA: TPointArray;
ATPA: T2DPointArray;
i, L, X, Y: Integer;
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(12.50, 0.27);
if InvFull then
Exit;
if FindColorsSpiralTolerance(x, y, TPA, 3618613, MMX1, MMY1, MMX2, MMY2, 20) then
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.00, 0.00);

..and more…

function FindZanarisFloor: Boolean;
var
TPA: TPointArray;
ATPA: T2DPointArray;
i, L, X, Y: Integer;
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(12.50, 0.27);
if InvFull then
Exit;
if FindColorsSpiralTolerance(x, y, TPA, 3618613, MMX1, MMY1, MMX2, MMY2, 20) then
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.00, 0.00);

..even more…

function FindCrossbow: Boolean;
var
OldCTS, x, y, I: integer;
RoyalTPA: TPointArray;
RoyalATPA: T2DPointArray;
begin
Result := False;
OldCTS := GetToleranceSpeed;
SetColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.03, 0.22);
if FindColorsSpiralTolerance(x, y, RoyalTPA, 7833743, MIX1, MIY1, MIX2, MIY2, 13) then
begin
SetColorToleranceSpeed(OldCTS);

..?!…

function FindStaff: Boolean;
var
OldCTS, x, y, I: integer;
StaffTPA: TPointArray;
StaffATPA: T2DPointArray;
begin
Result := False;
OldCTS := GetToleranceSpeed;
SetColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.02, 0.13);
if FindColorsSpiralTolerance(x, y, StaffTPA, 1002858, MIX1, MIY1, MIX2, MIY2, 10) then
begin
SetColorToleranceSpeed(OldCTS);

..continues…

function FindWaterFiend: Boolean;
var
OldCTS, x, y, I: integer;
FiendTPA: TPointArray;
FiendATPA: T2DPointArray;
begin
if Fighting then
exit;
Result := False;
OldCTS := GetToleranceSpeed;
SetColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.23, 1.80);
if FindColorsSpiralTolerance(x, y, FiendTPA, 5653788, 45, 45, 499, 242, 10) then
begin
SetColorToleranceSpeed(OldCTS);

..OK last one:

function OpenBankSRLKing: Boolean; //Custom finding for Zanaris bank
var
TPA: TPointArray;
ATPA: T2DPointArray;
i, L, X, Y: Integer;
R: TPoint;
begin
while IsMoving do
wait(RandomRange(25, 45));
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.24, 0.60);
if InvFull then
Exit;
if FindColorsSpiralTolerance(x, y, TPA, 9872302, MSX1, MSY1, MSX2, MSY2, 4) then
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.00, 0.00);

As Olly pointed out, do you see anything wrong there? There's logical issue with all of those parts.
Issue, that can seriously fuck up some areas of your scripts, areas where you use color/bitmap Tolerance methods (unless you use custom CTS settings for every single one - which you definitely should)..

-Jani

King

2013-04-20 13:59:02

From: Janilabo
..however:

function FairyScreen: Boolean;
var
TPA: TPointArray;
ATPA: T2DPointArray;
i, L, X, Y: Integer;
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.03, 0.18);
if InvFull then
Exit;
if FindColorsSpiralTolerance(x, y, TPA, 3948686, MSX1, MSY1, MSX2, MSY2, 14) then
begin
ColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.02, 0.02);

..and…

function FindCaveFloor: Boolean;
var
TPA: TPointArray;
ATPA: T2DPointArray;
i, L, X, Y: Integer;
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(12.50, 0.27);
if InvFull then
Exit;
if FindColorsSpiralTolerance(x, y, TPA, 3618613, MMX1, MMY1, MMX2, MMY2, 20) then
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.00, 0.00);

..and more…

function FindZanarisFloor: Boolean;
var
TPA: TPointArray;
ATPA: T2DPointArray;
i, L, X, Y: Integer;
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(12.50, 0.27);
if InvFull then
Exit;
if FindColorsSpiralTolerance(x, y, TPA, 3618613, MMX1, MMY1, MMX2, MMY2, 20) then
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.00, 0.00);

..even more…

function FindCrossbow: Boolean;
var
OldCTS, x, y, I: integer;
RoyalTPA: TPointArray;
RoyalATPA: T2DPointArray;
begin
Result := False;
OldCTS := GetToleranceSpeed;
SetColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.03, 0.22);
if FindColorsSpiralTolerance(x, y, RoyalTPA, 7833743, MIX1, MIY1, MIX2, MIY2, 13) then
begin
SetColorToleranceSpeed(OldCTS);

..?!…

function FindStaff: Boolean;
var
OldCTS, x, y, I: integer;
StaffTPA: TPointArray;
StaffATPA: T2DPointArray;
begin
Result := False;
OldCTS := GetToleranceSpeed;
SetColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.02, 0.13);
if FindColorsSpiralTolerance(x, y, StaffTPA, 1002858, MIX1, MIY1, MIX2, MIY2, 10) then
begin
SetColorToleranceSpeed(OldCTS);

..continues…

function FindWaterFiend: Boolean;
var
OldCTS, x, y, I: integer;
FiendTPA: TPointArray;
FiendATPA: T2DPointArray;
begin
if Fighting then
exit;
Result := False;
OldCTS := GetToleranceSpeed;
SetColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.23, 1.80);
if FindColorsSpiralTolerance(x, y, FiendTPA, 5653788, 45, 45, 499, 242, 10) then
begin
SetColorToleranceSpeed(OldCTS);

..OK last one:

function OpenBankSRLKing: Boolean; //Custom finding for Zanaris bank
var
TPA: TPointArray;
ATPA: T2DPointArray;
i, L, X, Y: Integer;
R: TPoint;
begin
while IsMoving do
wait(RandomRange(25, 45));
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.24, 0.60);
if InvFull then
Exit;
if FindColorsSpiralTolerance(x, y, TPA, 9872302, MSX1, MSY1, MSX2, MSY2, 4) then
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.00, 0.00);

As Olly pointed out, do you see anything wrong there? There's logical issue with all of those parts.
Issue, that can seriously fuck up some areas of your scripts, areas where you use color/bitmap Tolerance methods (unless you use custom CTS settings for every single one - which you definitely should)..

-Jani


Yeah, I copy and paste a lot of my finding functions from earlier parts in the script, if one got messed up, they alll probably are. Ill fix em.

E* fixed the problems, it'll teach me not copy n paste my own functions :D

Janilabo

2013-04-20 14:09:11

From: King
Yeah, I copy and paste a lot of my finding functions from earlier parts in the script, if one got messed up, they alll probably are. Ill fix em.
Don't worry, I didn't mean to be a dick or anything like that, just wanted to point you out those issues, because they are pretty nasty AND sneaky! :p

Also, I have a solution that I will post later today, it is a solution that might be helpful for many of you guys who keep playing around with custom CTS settings. Will make your life a little easier - guaranteed. :)
I came up with this solution when I were dealing with the same problems (unrestored CTS settings, when jumping from function/procedure to another one)

Keep up the good work, I can see you definitely have motivation to get yourself membered in the near future anyways - you are active around this application! Shows me potential and passion towards these things.

-Jani

King

2013-04-20 14:11:27

From: Janilabo
Don't worry, I didn't want to be a dick or anything like that, just wanted to point you out those issues, because they are pretty nasty AND sneaky! :p

Also, I have a solution that I will post later today, it is a solution that might be helpful for many of you guys who keep playing around with custom CTS settings. Will make your life a little easier - guaranteed. :)
I came up with this solution when I were dealing with the same problems (unrestored CTS settings, when jumping from function/procedure to another one)

Keep up the good work, I can see you definitely have motivation to get yourself to membered in the near future anyways - you are active around this application! Shows me potential and passion towards these things.

-Jani


I know you weren't trying to be! I just made the mistake of copying a bad function I made :P I'd love to see the CTS function as Im not the best at making sure I restore them ( as seen above XD) Thanks for taking the time to read an post(:

Janilabo

2013-04-20 15:37:30

From: King
I know you weren't trying to be! I just made the mistake of copying a bad function I made :P I'd love to see the CTS function as Im not the best at making sure I restore them ( as seen above XD) Thanks for taking the time to read an post(:
As I promised, here you go: http://villavu.com/forum/showthread.php?t=101777

Check it out and let me know what you think. ;)

-Jani

The Mayor

2013-04-20 19:01:11

You have a good attitude and show a strong willingness to improve, which is evident from how you are responding to the (somewhat harsh) queries above. A lot of people find it hard to accept criticism and lash out, but you are taking it on board and making changes.

Yes there are little issues here and there, but you learn to iron out those things over time. You can't expect someone to apply with a 100% flawless script. I was talking to Kevin about this yesterday, and I think it is more appropriate to look for potential rather than perfection in someones application. If SRLKing doesn't show potential then I don't know what potential is. He stays fairly active even though he is busy with real life. This is a sign the he will stick around, continue learning, and eventually be a big asset to this community.

Yes from me.

King

2013-04-20 20:11:40

From: Janilabo
As I promised, here you go: http://villavu.com/forum/showthread.php?t=101777

Check it out and let me know what you think. ;)

-Jani


Just got home, Looking over it now! Ill post on the thread(:

From: The Mayor
You have a good attitude and show a strong willingness to improve, which is evident from how you are responding to the (somewhat harsh) queries above. A lot of people find it hard to accept criticism and lash out, but you are taking it on board and making changes.

Yes there are little issues here and there, but you learn to iron out those things over time. You can't expect someone to apply with a 100% flawless script. I was talking to Kevin about this yesterday, and I think it is more appropriate to look for potential rather than perfection in someones application. If SRLKing doesn't show potential then I don't know what potential is. He stays fairly active even though he is busy with real life. This is a sign the he will stick around, continue learning, and eventually be a big asset to this community.

Yes from me.


Thankyou(: I've always thought criticism was meant to help people improve (not rudeness and such, which I haven't found here so far(: ) but constructive! I enjoy learning so, feel free to tear it apart and let me learn! Im always ready to improve and dont ever be afraid to tell me your opinion on what you think, no one should have to be afraid of that.

Off to bed for the night, if I dont answer, that's why! Ill be back on tomorrow and checking

Benny

2013-04-21 04:24:44

Yes from me.

I see good things from you.

King

2013-04-21 08:37:01

From: Benny
Yes from me.

I see good things from you.


Thanks Benny!(: I hope to do good things in the community!

Kevin

2013-04-21 12:59:02

From: The Mayor
You have a good attitude and show a strong willingness to improve, which is evident from how you are responding to the (somewhat harsh) queries above. A lot of people find it hard to accept criticism and lash out, but you are taking it on board and making changes.

Yes there are little issues here and there, but you learn to iron out those things over time. You can't expect someone to apply with a 100% flawless script. I was talking to Kevin about this yesterday, and I think it is more appropriate to look for potential rather than perfection in someones application. If SRLKing doesn't show potential then I don't know what potential is. He stays fairly active even though he is busy with real life. This is a sign the he will stick around, continue learning, and eventually be a big asset to this community.

Yes from me.


I do agree mostly with Mayor here. Especially on the activity in the community (And, to be honest, Member is a community rank). Not to mention a big portion of bringing in new members having the potential to bring out bigger and better things.

However, I also feel I need to stand by current capabilities as listed here: http://villavu.com/forum/showthread.php?t=74195.

//Required:
Walking (try not to use SPS, but instead try TPA walking/use RadialWalk)
Appropriate use of variable scope (i.e. local/global variables)
Backups/fail safes (in case something goes wrong, do what?)
//Recommended
DTM finding (e.g. for inventory/bank objects, equipped items, etc)

While I see great things from you, I don't see all of this. Since you are doing inventory based searches and you don't quite understand DTMs, I would really like to see that from you (as well as those 'required' updates). Since I'm not explicitly telling you how to code the following solutions, I feel like if I can see these changes prior to the app's end, I will give you a yes.

Until then, I'll hold onto that vote as some encouragement ;)

King

2013-04-21 13:01:00

From: Kevin
I do agree mostly with Mayor here. Especially on the activity in the community (And, to be honest, Member is a community rank). Not to mention a big portion of bringing in new members having the potential to bring out bigger and better things.

However, I also feel I need to stand by current capabilities as listed here: http://villavu.com/forum/showthread.php?t=74195.

While I see great things from you, I don't see all of this. Since you are doing inventory based searches and you don't quite understand DTMs, I would really like to see that from you (as well as those 'required' updates). Since I'm not explicitly telling you how to code the following solutions, I feel like if I can see these changes prior to the app's end, I will give you a yes.

Until then, I'll hold onto that vote as some encouragement ;)


I can do that(: Hopefully have the script updated tonight! Thanks for the help kevin!

[XoL]

2013-04-21 19:20:35

Yes from me. Good attitude, and I see scripting ability improving over time.

King

2013-04-21 20:28:31

From: [XoL]
Yes from me. Good attitude, and I see scripting ability improving over time.


Thankyou(: dont forget to check out the finished product! :D

@Kevin I'm making DDTM walking the main method and SPS the back-up, using DTMs to find the items in the invy, and localizing my variables. I'm also thinking of changing the looting to using arrays of red mm dots, then comparing a before and after to get new points in the array, then while in a fight it will click the newest 1-2 loot piles like a normal person would, looking for valuables not picked up by another bot, then also checking our own(:

E* Olly showed me the function to clear the matching co-ordinates, working on it now! Ill post tomorrow after school.

cause

2013-04-22 14:09:56

Voted yes.

xtrapsp

2013-04-22 14:31:42

Accidentally voted no! sorry!

Change to yes please

Olly

2013-04-22 14:35:22

From: King


E* Olly showed me the function to clear the matching co-ordinates, working on it now! Ill post tomorrow after school.


off-topic: what did you want that for? in 95% of situations ive found it faster just to live with duplicate points in a tpa than use clearDoubleTPA() since it pretty slow :p

King

2013-04-22 15:44:33

From: cause
Voted yes.


Thankyou!

From: xtrapsp
Accidentally voted no! sorry!

Change to yes please


Lol thankyou! @Justin Can you change please? :P

From: Ollybest
off-topic: what did you want that for? in 95% of situations ive found it faster just to live with duplicate points in a tpa than use clearDoubleTPA() since it pretty slow :p


Im working on a new way of looting in my script, basically it will log all the red points right before a Attack, then it will log them after the fiend has died, with an appropriate delay to wait for the drop to spawn, this way I will have a TPA of before and after points, then after that is done, I can just use the function you showed me to Combine and then remove the duplicate points leaving me with a new TPA that contains all new points in that time period, which while it may not only include mine, I can adjust it to run based on my monsters HP bar in the target screen so it is as close as possible to the death, leaving as few as possible points to Move the mouse to, examine them and pick up any loot(:

E* was a busy day today, got some testing done on the script, all changes seem to be working well(: Tomorrow I have to work from 5-11pm, so I will check back that night, but sadly, no scripting /:

The Claw

2013-04-23 05:49:51

From: King
Thankyou!



Lol thankyou! @Justin Can you change please? :P



Im working on a new way of looting in my script, basically it will log all the red points right before a Attack, then it will log them after the fiend has died, with an appropriate delay to wait for the drop to spawn, this way I will have a TPA of before and after points, then after that is done, I can just use the function you showed me to Combine and then remove the duplicate points leaving me with a new TPA that contains all new points in that time period, which while it may not only include mine, I can adjust it to run based on my monsters HP bar in the target screen so it is as close as possible to the death, leaving as few as possible points to Move the mouse to, examine them and pick up any loot(:

E* was a busy day today, got some testing done on the script, all changes seem to be working well(: Tomorrow I have to work from 5-11pm, so I will check back that night, but sadly, no scripting /:


Impressive, voted yes.

NKN

2013-04-23 07:18:07

Voted yes.

King

2013-04-23 07:53:24

From: The Claw
Impressive, voted yes.


Thankyou(: means a lot to be complimented by you :D !


From: NKN
Voted yes.

THANKYOU!(:

Ian

2013-04-23 08:32:50

Finally got a chance to read through it, yes :)

King

2013-04-23 10:49:26

From: BMWxi
Finally got a chance to read through it, yes :)


Thanks for taking the time, you seem busy on e Skype channel, THANKYOU!

Kevin

2013-04-24 15:17:31

Sorry it took so long to reply and vote after my original posts (vacation :P) but I like the extreme willingness to learn and obvious quick improvements as well as the ease and kindness in accepting constructive criticism. Definite yes in my book.

Edit: Although for coding practice's sake, I do recommend avoiding "Copy-paste methods" like you admit to using. If you find yourself copy-pasting methods and only changing small portions of them, it's much easier, simpler, and more versatile to create a single method that accepts the small changes as parameters to accomplish your goals. I know this is something that can be done in your script to save at least a hundred lines of code, and for future reference, it's definitely the way to go as it helps you find and fix bugs much quicker with less code to look over. :)

King

2013-04-24 15:52:47

From: Kevin
Sorry it took so long to reply and vote after my original posts (vacation :P) but I like the extreme willingness to learn and obvious quick improvements as well as the ease and kindness in accepting constructive criticism. Definite yes in my book.

Edit: Although for coding practice's sake, I do recommend avoiding "Copy-paste methods" like you admit to using. If you find yourself copy-pasting methods and only changing small portions of them, it's much easier, simpler, and more versatile to create a single method that accepts the small changes as parameters to accomplish your goals. I know this is something that can be done in your script to save at least a hundred lines of code, and for future reference, it's definitely the way to go as it helps you find and fix bugs much quicker with less code to look over. :)


Sorry I didnt get all the improvements yet, Im working on a lot of AP chem till friday :P I was thinking about that earlier! I think I should do it to my location checking, with a case statement !

rj

2013-04-24 15:55:51

I voted yes because I think your application is good and you have plenty of activity

King

2013-04-24 15:59:49

From: Officer Barbrady
I voted yes because I think your application is good and you have plenty of activity


Thankyou <3

Vinyl Scratch

2013-04-24 21:27:52

After going through all of the replies, and looking at your script (Pretty good!) I'm voting yes.

King

2013-04-24 22:24:38

From: Vinyl Scratch
After going through all of the replies, and looking at your script (Pretty good!) I'm voting yes.


Thankyou(: Feel free to post any suggestions! I'm always open to them!

CynicRus

2013-04-29 15:19:49

Yes from me.

King

2013-04-29 20:15:58

From: CynicRus
Yes from me.


Thankyou(: !

Shatterhand

2013-05-01 05:32:22

Voted yes. :)
status := 'Taveled to the cave';
if debug then
writeln(status)
Instead of this you could make a small procedure which takes the status string and writeln if debug turned on.

King

2013-05-01 10:06:55

From: Shatterhand
Voted yes. :)
status := 'Taveled to the cave';
if debug then
writeln(status)
Instead of this you could make a small procedure which takes the status string and writeln if debug turned on.


I will definitely do this(: Thank you for he vote!


E* can the people who are voting no please post a reason? I would like to be able to get your guy's vote next time if I dont make it this time. I love feedback, what does voting no help me if you don't at-least post some hint of what to fix? I love all the feedback, but it is coming from people who voted yes..It's just frustrating to see someone vote no, but not bother to post /:
I dont hold anything personally and just would like to know what you think I could improve upon! So dont be afraid to post why you voted no! It really helps!

Justin

2013-05-03 21:18:17

Voted Yes :)

Sin

2013-05-03 21:19:19

From: King
I will definitely do this(: Thank you for he vote!


E* can the people who are voting no please post a reason? I would like to be able to get your guy's vote next time if I dont make it this time. I love feedback, what does voting no help me if you don't at-least post some hint of what to fix? I love all the feedback, but it is coming from people who voted yes..It's just frustrating to see someone vote no, but not bother to post /:
I dont hold anything personally and just would like to know what you think I could improve upon! So dont be afraid to post why you voted no! It really helps!


Welcome to SRL Member's Applications.

King

2013-05-03 21:21:07

From: Justin
Voted Yes :)


Thankyou :D

From: Sin
Welcome to SRL Member's Applications.


If I vote on an app, Im going to post a reason even if it may be short /:

Vinyl Scratch

2013-05-03 23:46:10

From: King
Thankyou :D



If I vote on an app, Im going to post a reason even if it may be short /:


This is what I try to do, especially with no. But if I'm voting yes, then I'm going to be a bit more lenient with i, because they're obviously doing something right.

King

2013-05-04 01:40:33

From: Vinyl Scratch
This is what I try to do, especially with no. But if I'm voting yes, then I'm going to be a bit more lenient with i, because they're obviously doing something right.


Well with a yes, I would give a slight explanation as to why (like you did, and several others), With a no, I would try and give some advice as to what to fix to get my vote, such as Kevin did for me (:

Smidqe

2013-05-04 02:37:05

I read through your script and I think it's adequate (atleast in my eyes), altough, like Kevin said there are functions that can be combined. But your activity combined with the script, is enough for me to vote..

Yes.

E: Well that was unfortunate, the poll was closed before I made my vote…

King

2013-05-04 12:01:28

From: Smidqe
I read through your script and I think it's adequate (atleast in my eyes), altough, like Kevin said there are functions that can be combined. But your activity combined with the script, is enough for me to vote..

Yes.

E: Well that was unfortunate, the poll was closed before I made my vote…


Awh ): Well thankyou for the vote! (sorta) (:

Hobbit

2013-05-05 21:31:36

Welcome