masterBB
2011-06-13 09:14:52
How Long have You Played Runescape?
6 Year(s)
Are you affilated in anyway with Jagex LTD?
no
Were you Referred to SRL?
not by a member
What is your general programming knowledge?
As3.0 guru, java common, PHP common, C++ newbie
Are you a member of any other communities?
No
Tell us about yourself…
Please show us one (or multiple) of your scripts.
6 Year(s)
Are you affilated in anyway with Jagex LTD?
no
Were you Referred to SRL?
not by a member
What is your general programming knowledge?
As3.0 guru, java common, PHP common, C++ newbie
Are you a member of any other communities?
No
Tell us about yourself…
From: masterBB
I'm Bart de Boer, and welcome to my members app. I will try to keep it short, not for you, but the shorter the less grammar mistakes ;) .
I'm a programmer of games and interactive web solutions, worked as a freelancer for: A few companies and the dutch Ministry of Justice(short one, I hate "ambtenaren"<-(don't know a correct translation)).
I quit my programming school, personal reason. And I will start a technical school next year. With plans to go to the TU of Delft.
Well I hope I can put some live in to color botting, as I've much more interest in that area of botting. I tend to make scripts with high requirements made for only one player, since I believe that armies ruins the fun of botting.
Please show us one (or multiple) of your scripts.
I attached my final work. The timer system still needs some testing and the reflection functions couldn't be made till the release of reflection 2.
You will also need to apply these fixes to SRL: http://villavu.com/forum/showthread.php?t=64881
I wasn't able to attach the file, cause Junior members can't attach files in this form. Uploaded the new version in this thread:
http://villavu.com/forum/showthread.php?p=811546#post811546
^ MagicTreeRaper2.zip
{--------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
---- ----
---- Masterbb proudly presents: ----
---- ----
---- Magic tree raper - Rapes magic trees, so you don't have to. ----
---- ----
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
---- ----
---- Features full color routines. ----
---- An user friendly form. ----
---- And very human procedures. ----
---- ----
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
---- ----
---- Just press run to start the form ----
---- ----
---- ----
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
}
var
RuneBankSlots:TIntegerArray;
procedure SetupColorFunctions;
begin
end;
Const
HOME_TELE_DTM = 0;
VECNA_DTM = 1;
MAGIC_LOG_DTM = 2;
JENNICAS_RING_DTM = 3;
WILDY_TEXT_DTM = 4;
WILDY_TREE_MAP_DTM = 5;
GHOST_TREE_MAP_DTM = 6;
GHOST_TREE_DTM = 7;
LAW_RUNE_DTM = 8;
AIR_RUNE_DTM = 9;
FIRE_RUNE_DTM = 10;
DAR_TELE_DTM = 11;
DAR_TELE_BITMAP = 1;
HOME_TELE_BITMAP = 2;
function LoadDTM(whichDTM:Integer):Integer;
begin
Case whichDTM of
HOME_TELE_DTM: RESULT := DTMFromString('mwQAAAHic42RgYHBmYWBwBGJXKAaxXaC0FxBbAzEPIwMDPxRzQjELEAsDMS8QcwPxviOfGFbufQrGf//+BeO5VdsZytrOMrTNucGQFXmAgR9oHyHMSASGAwAGmxeX');
DAR_TELE_DTM: RESULT := DTMFromString('mrAAAAHic42BgYEhhZmBIB+I8IE4D4jgoDRMPZoRgfyD2BOJAII4AYl8oXr3vEhgXiPUw7LW6ypAsVAPGf//+BWMRoB34MCMBDAMAjQQVpA==');
VECNA_DTM: RESULT := DTMFromString('mggAAAHicY2NgYHBgYmCwBWJvILYGYgsg9gLiJ0C5z0B8H4hvA/FjIL4JxMWZKUCSicHSxBBMw7AkkGQFYiEoDcOMODAEAAA60gkQ');
MAGIC_LOG_DTM: RESULT := DTMFromString('mggAAAHicY2NgYNjAzMAwF4hXAPF2IN4BZVcxMjA0AXExEJcCcQsQdwBxZJAhUBcTBhYBktgwIw4MAQBKgwh/');
JENNICAS_RING_DTM: RESULT := DTMFromString('mlwAAAHicfcQxDgARAAXRTyJ7ZkqUe5etKEh07mWS1TLJm0dStdJAx8SHgobX/DwSIgIyJHvk+Im52C1HbAj7');
WILDY_TEXT_DTM: RESULT := DTMFromString('mQwAAAHicY2ZgYHjHBMGczAwM04H8fiCeDMQPZ8jCsSSQD8OMSBgIAHH9CLk=');
WILDY_TREE_MAP_DTM: RESULT := DTMFromString('mQwAAAHicY2ZgYEhnYmBIA+IsII4G8sOBOAKIpax5GQwTxRgctYQZhIF8GGZEwkAAALQhBA8=');
GHOST_TREE_MAP_DTM: RESULT := DTMFromString('mQwAAAHicY2ZgYEhgguAUIA4H8qOAOBKIHZJkGfSDRRhCHWQYRIB8GGZEwkAAAMFyBH0=');
GHOST_TREE_DTM: RESULT := DTMFromString('mrAAAAHic42BgYPAA4iAgDgNiVyCOAeI0II4HYh8gngjEPUA8B4iXA3E7EM8C4jVAvA+I6xpbGfIKSxlKyqoZSitqGOKTUhnSs3IZsnMLwZgLqAYfZiSAYQAAt0USig=='); //DMFromString('mrAAAAHic42BgYPjMyMDwF4g5mBgYeICYDYi/APlfgZgByH4JpB4A8V0g/grEnEBxASD+CWR/AeKa2iaG7Nwihpj4JIa0jByGzJwCMF1aVs1QXFLJwA9Ugw8zEsAwAADhzxSM');
LAW_RUNE_DTM: RESULT := DTMFromString('mrAAAAHic42BgYOBlZGAQBGJxIBaAsiWBmAOIpYA4kwGCs4C4CIjLgTgXiAuAuBiI5VWuoWBvD3eGxppqhpDAADDND1SDDzMSwDAAAEegDbo=');
AIR_RUNE_DTM: RESULT := DTMFromString('mlwAAAHicY2dgYLBhZGAwBWITILYFYi8gdgViZyDOZoDgIiAugdKZQFwMYufmMty9cpnBzdmZIT46GijCxNDe2AgW5wfycGFGPBgKAOxXDcU=');
FIRE_RUNE_DTM: RESULT := DTMFromString('mrAAAAHic42BgYDjEyMCwC4hPMELYx4F4H1TsJBBnMUBwDhDnA3EqEKcBcTEQlwLxHAUxhqzUVDANwpN7e8G0t4c7Q2lhAQM/UA0+zEgAwwAASzMSWg==');
end;
end;
function LoadBitmap(whichBitmap:Integer):Integer;
begin
case whichBitmap of
DAR_TELE_BITMAP: RESULT := BitmapFromString(24, 25, 'meJzNlLFKA1EQRbNFBBtBC7HSSq' +
'yEaAJiBDck6MbGLtiITX5ALKzsbP2ApLKxs7RWG3sh6AdYWFkI9oI' +
'nuTIM7+2uIBbKZZidnTnOm82beprV/4E2O3slj3+um5WhV1Kp/I5w' +
'v3plEPOhWf+NVnesYghVz83bWKIJ9Q2ZKBfiqy7mj/vT+1hPFqrRy' +
'iaCk62nO7mdYCkXQdKjvbVxAcF6jof0qp2zuX4s4mrYTz743OJ4yK' +
'f7GxwODaW0YOYGuVw810DI1Ck+3t92k42l6sJJeiCfIFbjIj/+MRD' +
'RW4PgUAsEx3y9AqX/GLdEhJ55S44K0evLiFoiSL7itWSZTPJ/5Pja' +
'wO9V2wEnPpesCtHT48Ps1AwO88EXh4gyczk8CsL0VItGd9emwdGp4' +
'lhybDjxpfMtqYT+6QFfkm85RTdXLelrCmWNqQ2D2Bcv2gAehWUC6g' +
'GLb/EYUmu2c1G6U8H+sWDciThGw1nb6gilQn+57E7Fx/H92DIRymh' +
'+H5bMJICMtd21MwYq36LWhm02+gyUO0y/dorWoyfEEE/A/wL4xQuh');
HOME_TELE_BITMAP: RESULT := BitmapFromString(26, 25, 'meJytlDEvQ1EUxyffQUJITAyoVK' +
'Qq9EUlqulQEWkIBhKDpVFJB4tJI2EuA6PBYDYRCZUYzIwWX8DexK/' +
'913Xfu95TIvnn5Lxzz/m98+4978ZTs/EQjXqZ3ykc9Qfav3XVHu3l' +
'tGIrkhb1jSp/qByiq90zhBPFDN8xcbBv1xe2HqtHirffG8lUUStmr' +
'bhfym5j8RXH2sCRibTZt8ArRKAEu5hfQCdrZUmPZpXM4JH5aSTQg0' +
'EZji3iysE2gb7PdBvjQ5Y97yC3jur1unwsvoL4Oh21Z8+GOMmZLEu' +
'3S1vYu9JOMpGkiu2CgF9KFbD4RIjjk2Pyw0aL1dfL6vn8KuVoczAH' +
'IdY/JOETKU0VAJJDZi3RYGo2xtNzgaOsja1gKdwbyFGI3u9vbCnIK' +
'jkmv3WazmBolVeLttHnQRju7pHwiYhGzhfNmbFYclqrT5UyX9Hb0U' +
'mhaPj5rjhWNIRPDpmiuSik9tg6dtjQmARDwzc0ctwjcP8C5WANEEE' +
'zvhr79kDDgM/HRX2vzdQjcVZ9qMmfgRo8atlzIFj8sDGz581+bI5N' +
'xmwgW20uN3x3u8KuTThf90Cqdb9xarYUdJvRIRq4vRT4c313r39K1' +
'YDdUoBmfF7Hz/sZadwSEXd1oAeX5sqMZZs0Be27NEBjGNz7x4Z8AA' +
'tPqMs=');
end;
end;
function Color_IsInWildy:Boolean;
var
textDTM,x,y:Integer;
begin
textDTM := LoadDTM(WILDY_TEXT_DTM);
Result := FindDTM(textDTM,x,y,453,37,508,56);
freeDTM(textDTM);
end;
function Color_Antiban:Boolean;
Begin
Result := True;
Case Random(200) of
0: begin
Gametab(tab_Stats);
wait(random(1000)+1000);
Gametab(tab_inv);
wait(random(200)+random(100));
end;
1: HoverSkill('Random', False);
// 2, 6: BoredHuman;
7..15: SleepAndMoveMouse(RandomRange(200, 1200));
End;
Gametab(tab_Inv);
End;
function Color_OperateRing:Boolean; //finished <- bugless
var
ringDTM, x, y, attempts:Integer;
begin
Gametab(tab_Equip);
ringDTM := LoadDTM(JENNICAS_RING_DTM);
attempts := 0;
repeat
FindNonInventoryRandoms;
Inc(attempts);
Wait(70+random(30));
if(attempts = 20) then
GameTab(tab_Equip);
if(attempts = 40) and not(GetCurrentTab = tab_Equip) then
GameTab(tab_Equip);
if(attempts >= 60) then
StopScript;
until(FindDTM(ringDTM,x,y,MIX1,MIY1,MIX2,MIY2));
Mouse(x,y-10,4,4,False);
attempts := 0;
repeat
FindNonInventoryRandoms;
Inc(attempts);
if(attempts = 20) then
begin
if(FindDTM(ringDTM,x,y,MIX1,MIY1,MIX2,MIY2))then
Mouse(x,y,4,4,False)
else
StopScript;
end;
if(attempts > 50) then
StopScript;
Wait(80+Random(50));
until(OptionsExist(['perate'],True));
wait(20+random(30));
getMousepos(x,y);
Mouse(x,y,0,0,True);
freeDTM(ringDTM);
Result := true;
end;
function Color_ClickPortal:Boolean;
var
p:Integer;
ClickPoint:TPoint;
PortalPoints:TPointArray;
PortalPoints2:T2DPointArray;
begin
p := 0;
repeat
inc(p);
wait(20+random(10));
FindColorsToleranceOptimised(PortalPoints,8029832 ,MSX1,MSY1,MSX2,MSY2,10); //TODO: Might filter out the borders
//FilterPointsPie(PortalPoints,15,135,1,150,264,175); //Makes this function less sensitive to the walls, makes it more dependend on your location
PortalPoints2 := TPAtoATPA(PortalPoints,15);
SortATPASize(PortalPoints2,True);
if(Length(PortalPoints2) > 0) then
PortalPoints := PortalPoints2[0];
if(p > 50) then //Lower as 100 points is not reliable
Exit;
until(High(PortalPoints) > (150 - p));
ClickPoint := MiddleTPA(PortalPoints);
if Color_IsInWildy then
begin
MMouse(ClickPoint.x,ClickPoint.y,3,3);
if(IsUpTextMultiCustom(['alk','portal'])) then
Mouse(ClickPoint.x,ClickPoint.y,0,0,True)
else
begin
Mouse(ClickPoint.x,ClickPoint.y,0,0,False);
wait(500+random(200));
if(not(ChooseOption('alk')))then
Exit;
end;
end else
Mouse(ClickPoint.x,ClickPoint.y,0,0,True);
wait(300+random(200));
Flag;
Result := true
end;
function Color_IsTreeAlive:Boolean;
var
AllColouredTreePoints,ColouredTreePoints:TPointArray;
ClickPoint:Tpoint;
x,y:Integer;
treeDTM:Integer;
begin
if(IsUpText('hop')) then
begin
Result := True;
Exit;
end;
If Color_IsInWildy then
begin
FindColorsToleranceOptimised(ColouredTreePoints,1786167,MSX1,MSY1,MSX2,MSY2,15);
AllColouredTreePoints := CombineTPA(AllColouredTreePoints,ColouredTreePoints);
FindColorsToleranceOptimised(ColouredTreePoints,10413546,MSX1,MSY1,MSX2,MSY2,15);
AllColouredTreePoints := CombineTPA(AllColouredTreePoints,ColouredTreePoints);
FindColorsToleranceOptimised(ColouredTreePoints,9756643,MSX1,MSY1,MSX2,MSY2,15);
AllColouredTreePoints := CombineTPA(AllColouredTreePoints,ColouredTreePoints);
if(High(AllColouredTreePoints) > 800) then
begin
ClickPoint := MiddleTPA(AllColouredTreePoints);
MMouse(ClickPoint.x,ClickPoint.y,15,15);
end;
end;
If not(Color_IsInWildy) then
begin
treeDTM := LoadDTM(GHOST_TREE_DTM);
if(FindDTM(treeDTM,x,y,MSX1,MSY1,MSX2,MSY2)) then
MMouse(x,y,15,15);
freeDTM(treeDTM);
end;
wait(100+random(50));
if(IsUpText('hop')) then
Result := True;
end;
function Color_Animating:Boolean;
var
p:Integer;
begin
p := AveragePixelShift(Inttobox(MSCX-15,MSCY-30,MSCX+15,MSCY+15),200,1000);
Result := ((p > 230) and (p < 520));
end;
function Color_ClickTree:Boolean;
var
x,y:Integer;
begin
if(not(Color_IsTreeAlive)) then
Exit;
GetMousePos(x,y);
Mouse(x,y,1,1,True);
Result := waitFunc(@Color_Animating,100,5000);
end;
function Color_AtEdgeville:Boolean;
var
x,y:Integer;
begin
Result := (FindSymbol(x,y,'water') or FindSymbol(x,y,'bank'));
end;
function Color_CastHomeTele:Boolean;
var
x,y,spellDTM:Integer;
begin
if(gameTab(tab_Magic))then
begin
wait(1000);
spellDTM := LoadDTM(HOME_TELE_DTM);
if(FindDTM(spellDTM,x,y,MIX1,MIY1,MIX2,MIY2))then
begin
MMouse(575,232,5,5);
wait(300+random(200));
getMousePos(x,y);
Mouse(x,y,5,5,True);
end;
FreeDTM(spellDTM);
end else
Exit;
Wait(2000+random(1000));
Result := WaitFunc(@Color_AtEdgeville,200+random(50),20000);
wait(random(200));
end;
function Color_SwitchWorld:Boolean;
var
p:Integer;
ghostWorld:Boolean;
begin
ghostWorld := not(Color_IsInWildy);
if(not(WaitFunc(@Color_ClickPortal,200,620)))then
Exit;
if(not(WaitFunc(@Color_OperateRing,200,620)))then
Exit;
p:= 0;
repeat
Inc(p);
Wait(150+random(100));
if(p = 50) then
writeln('changing world takes damn long');
if(p > 80) then
Exit;
until(ghostWorld = (CountDots('item')>3));
p:= 0;
repeat
inc(p)
wait(100+random(50));
if(p > 20)then
Exit;
Result := (ghostWorld = Color_IsInWildy);
until(Result);
wait(4000+random(2000)); //temp fix..
end;
function Color_TalkToBankers:Boolean;
var
x,y,p:Integer;
AllColouredNPCs,NPCColorPoints:TPointArray;
ClickPoint:TPoint;
NPCPointsATPA:T2DPointArray;
begin
FindColorsToleranceOptimised(NPCColorPoints,5915981,MSX1,MSY1,MSX2,MSY2,10);
AllColouredNPCs := CombineTPA(AllColouredNPCs,NPCColorPoints);
FindColorsToleranceOptimised(NPCColorPoints,5061442,MSX1,MSY1,MSX2,MSY2,10);
AllColouredNPCs := CombineTPA(AllColouredNPCs,NPCColorPoints);
FindColorsToleranceOptimised(NPCColorPoints,4400689,MSX1,MSY1,MSX2,MSY2,10);
AllColouredNPCs := CombineTPA(AllColouredNPCs,NPCColorPoints);
FindColorsToleranceOptimised(NPCColorPoints,4728885,MSX1,MSY1,MSX2,MSY2,10);
AllColouredNPCs := CombineTPA(AllColouredNPCs,NPCColorPoints);
NPCPointsATPA := SplitTPA(AllColouredNPCs,10);
SortATPASize(NPCPointsATPA,True);
for p := 0 to High(NPCPointsATPA) do
begin
if(High(NPCPointsATPA[p]) < 50) then
break;
ClickPoint := MiddleTpa(NPCPointsATPA[p]);
MMouse(ClickPoint.x,ClickPoint.y,0,0);
Wait(300+random(100));
inc(p)
if(IsUpText('ank'))then
begin
Result := True;
Break;
end;
end;
if not(Result) then
Exit;
getMousePos(x,y);
Mouse(x,y,0,0,False);
p:=0;
repeat
inc(p);
if( p > 150) then
Exit;
wait(40+Random(20));
until(OptionsExist(['ank '],True)); //Bank Banker
wait(70+random(50));
getMousepos(x,y);
Mouse(x,y,0,0,True);
Result:=WaitFunc(@BankScreen,200+random(50),6000+random(1500));
end;
function Color_WalkTobank:Boolean;
var
p:Integer;
bankCarpetPoints:TPointArray;
ClickPoint:TPoint;
begin
if(not(waitFunc(@Color_AtEdgeville,RandomRange(150,500),RandomRange(11000,14000)))) then
begin
writeln('damn');
StopScript;
end;
p := 0;
repeat
inc(p);
wait(RandomRange(200,400));
if(p > 20)then
Exit;
FindColorsTolerance(bankCarpetPoints,1250909,MMX1,MMY1,MMX2,MMY2,15);
until(High(bankCarpetPoints) > 40);
p := 0;
Repeat
inc(p)
FilterPointsDist(bankCarpetPoints,10+p,70,MMCX,MMCY);
until(High(bankCarpetPoints) < 20);
ClickPoint := MiddleTpa(bankCarpetPoints);
Mouse(ClickPoint.x,ClickPoint.y,3,3,True);
wait(RandomRange(400,700));
Flag;
wait(RandomRange(1400,1700));
Result := WaitFunc(@Color_TalkToBankers,RandomRange(500,900),RandomRange(6000,7000));
end;
{
WithdrawRunes -> is based on
{*******************************************************************************
function RuneAmount(area, runetype: String): Integer;
By: masquerader and modified by Ron and ZephyrsFury
Description: Returns the amount of a certain rune in the specified area.
*******************************************************************************
note:Doesn't do what the name suggest. Amount is the desired amount, not to withdraw, but to have in inv.
}
function WithdrawRunes(runetype:String;amount:Integer):Boolean;
var
amountNeeded,RuneBmp,II:Integer;
RuneNames:TStringArray;
begin
amountNeeded := amount - RuneAmount('inv',Lowercase(runeType));
if(amountNeeded < 1) then
Exit;
RuneNames := ['Air', 'Mind', 'Water', 'Fire', 'Earth', 'Law', 'Nature', 'Chaos', 'Death', 'Body', 'Cosmic', 'Soul', 'Blood'];
if (InStrArrEx(runetype, RuneNames, II)) then
begin
WithdrawItemEx(srl_GetBitmap(18+II),'bmp',RuneBankSlots[II],amountNeeded,RuneNames[II],[20]);
wait(200+random(100));
srl_FreeBitmapEx(18+II);
end;
Result := amount - RuneAmount('inv',Lowercase(runeType)) = 0;
end;
function Color_CanTeleportWildy:Boolean;
var
x,y:Integer;
fireRuneDTM,airRuneDTM,lawRuneDTM:Integer;
begin
wait(RandomRange(200,500));
gameTab(Tab_Inv);
lawRuneDTM := LoadDTM(LAW_RUNE_DTM);
airRuneDTM := LoadDTM(AIR_RUNE_DTM);
fireRuneDTM := LoadDTM(FIRE_RUNE_DTM);
if (RuneAmount('inv','law') >= 2)then
if (RuneAmount('inv','air') >= 2)then
if (RuneAmount('inv','fire') >= 3)then
if(FindItemEx(x,y,'dtm',lawRuneDTM,IntToBox(MSX1,MIY1,MIX2,MIY2),[0]))then
if(FindItemEx(x,y,'dtm',airRuneDTM,IntToBox(MSX1,MIY1,MIX2,MIY2),[0]))then
if(FindItemEx(x,y,'dtm',fireRuneDTM,IntToBox(MIX1,MIY1,MIX2,MIY2),[0]))then
Result := True; //double check(bitmap + dtm)
freeDTM(lawRuneDTM);
freeDTM(airRuneDTM);
freeDTM(fireRuneDTM);
end;
function Color_Bank:Boolean;
var
x,y,logsInv:Integer;
magicLogDTM:Integer;
begin
if not(WaitFunc(@BankScreen,200,10000)) then
Exit;
magicLogDTM := LoadDTM(MAGIC_LOG_DTM);
logsInv := CountItemsIn('inv','dtm',magicLogDTM,[0]);
Result := FindDTM(magicLogDTM,x,y,MIX1,MIY1,MIX2,MIY2);
if(FindDTM(magicLogDTM,x,y,MIX1,MIY1,MIX2,MIY2)) then
Deposit(CoordsToItem(x,y),CoordsToItem(x,y),True);
wait(300+random(200));
Inc(Loads);
IncEx(Logs,(logsInv-CountItemsIn('inv','dtm',magicLogDTM,[0])));
freeDTM(magicLogDTM);
if(waitFunc(@InvFull,200,1000)) then
Exit;
wait(RandomRange(200,400));
WithdrawRunes('Law',2);
wait(RandomRange(200,400));
WithdrawRunes('Air',2);
wait(RandomRange(200,400));
WithdrawRunes('Fire',3);
wait(RandomRange(300,500));
Result := waitFunc(@Color_CanTeleportWildy,150,5000);
if(Result) then
CloseBank;
end;
function Color_CastDarTeleport:Boolean;
var
x,y,skullDTM,spellBitmap:Integer;
begin
skullDTM := LoadDTM(VECNA_DTM);
if(FindDTM(skullDTM,x,y,MIX1,MIY1,MIX2,MIY2)) then
Mouse(x,y,5,5,True); //If you got a vecna, use it.
if(gameTab(tab_Magic))then
begin
wait(1000);
spellBitmap := LoadBitmap(DAR_TELE_BITMAP);
if(FindBitmapToleranceIn(spellBitmap,x,y,MIX1,MIY1,MIX2,MIY2,15))then
begin
MMouse(x+15,y+15,5,5);
wait(100+random(200)); //click spell
end;
FreeBitmap(spellBitmap);
end;
Result := IsUpText('ast');
if(not(Result)) then
Exit;
getMousePos(x,y);
Mouse(x,y,1,1,True);
Wait(2000+random(1000));
Result := WaitFunc(@Color_IsInWildy,200+random(50),20000);
wait(random(200));
end;
function Color_WalktoMagicTree:Boolean;
var
x,y:Integer;
WildyTreeMapDTM:Integer;
begin
if(not(Color_CastDarTeleport))then
Exit;
WildyTreeMapDTM := LoadDtm(WILDY_TREE_MAP_DTM);
Mouse(628,17,4,6,True);
Wait(300+random(200));
FFlag(1);
if(FindDtm(WildyTreeMapDTM,x,y,MMX1,MMY1,MMX2,MMY2))then
begin
Mouse(x+12+random(2),y,1,0,True);
Result := True;
end;
Wait(200+random(100));
Flag;
FreeDTM(WildyTreeMapDTM);
end;
procedure Color_Setup;
begin
SetLength(RuneBankSlots,10);
FindNormalRandoms;
MakeCompass('E');
SetAngle(True);
if(FindAxe = '')then
Exit;
end;