im totally fine with that. im planing on getting all of them up with this script anyways
im totally fine with that. im planing on getting all of them up with this script anyways
Also, the deathwalk to the 10th room does not work.. it just tries to blind click through the wall. Perhaps having it walk to each room individually?
It runs great inside.
Last edited by Nava2; 08-21-2011 at 03:39 PM.
Writing an SRL Member Application | [Updated] Pascal Scripting Statements
My GitHub
Progress Report:13:46 <@BenLand100> <SourceCode> @BenLand100: what you have just said shows you have serious physchological problems 13:46 <@BenLand100> HE GETS IT! 13:46 <@BenLand100> HE FINALLY GETS IT!!!!1
Current projects:
[ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]
"I won't fall in your gravity. Open your eyes,
you're the Earth and I'm the sky..."
I started messing with this script.. I changed how you declare your areas to a record setup. Much cleaner then when walking to an area, you can cycle through the area array and walk to each RTile until you're at the correct room.
Just a thought.. I don't have time to make it compile, its close though. Basically "CurrentArea" holds the record of the fighting room, and the other global rooms are in indecies. I would suggest writing in some constants to make the indicies easier!
Simba Code:{/////////////////////////////////////////
// ~Catacomber by Flight~ //
// //
// Version: 1.0 //
/////////////////////////////////////////}
program Catacomber;
{$define SMART}
{$i SRL/SRL.scar}
{$i SRL/SRL/skill/magic.scar}
{$i SRL/SRL/Misc/stats.simba}
{$i Reflection/Reflection.simba}
{$i SRL/SRL/misc/paintsmart.scar}
//////////////////////////////-Begin setup-/////////////////////////////////////
Const
//SRL Stats
SRLStats_Username = '';
SRLStats_Password = '';
//Script settings
FightRegion = 10;
ChangeWorlds = True;
Member = True;
//Break settings
BreakIn = 135; //How long before we take a break? (minutes)
BreakFor = 13; //How long will we break for? (minutes)
Bir = 12; //Random minutes to add/subtract from how long until we break
Bfr = 7; //Random minutes to add/subjtract from break duraction
//////////////////////////////-End of setup-////////////////////////////////////
Var
BreakImg: TMufasaBitmap;
targetName,Version: String;
lastFightTime: Integer;
lastInteractedTile,Stairs1_Down,Stairs2_Down,
Stairs_Enter,RTile: TTile;
Deaths,CommitTime,ScreenTime,NewImg: Integer;
//Break variables
BreakRounds,TotalBreaks: Integer;
//Exp variables
AttXP_Start,AttXP_Old,AttXP_New,StrXP_Start,
StrXP_Old,StrXP_New,DefXP_Start,DefXP_Old,
DefXP_New,HitXP_Start,HitXP_Old,HitXP_New,
RngXP_Start,RngXP_Old,RngXP_New: Integer;
Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := '';
Pass := '';
BoxRewards := ['XP','xp','lamp'];
LampSkill := 'hitpoints';
Active := True;
end;
end;
Procedure CheckStats;
begin
if ((SRLStats_Username = '') And (SRLStats_Password = '')) then
begin
case MessageBox('No Stats account entered, would you like to set one up?','SRL Stats',mbYesNoCancel) of
mrYes:
begin
OpenWebPage('http://stats.villavu.com/register');
TerminateScript;
end;
mrNo:
begin
SetupSRLStats(165,'Anonymous','anon1337');
Exit;
end;
mrCancel: TerminateScript;
end;
end else
SetupSRLStats(165,SRLStats_Username,SRLStats_Password);
end;
type
TArea = record
Region: TBox;
DAnim: TIntegerArray;
targetName: String;
RTile: TTile;
fightArea: Boolean;
end;
TAreaArray = array of TArea;
var
currentArea: TArea;
Areas: TAreaArray;
Procedure DefineAreas;
Var
Zone: Integer;
begin
Zone := FightRegion;
setLength(Areas, 15);
// lumbridge:
with Areas[0] do
begin
Region := IntToBox(3217,3210,3226,3228);
fightArea := False;
end;
// grave:
with Areas[1] do
begin
Region := intToBox(3238, 3191, 3251, 3203);
fightArea := False;
end;
// room 1:
with Areas[2] do
begin
Region := intToBox(3875,5526,3879,5529);
fightArea := False;
end;
with Areas[3] do
begin
Region := intToBox(3863,5522,3869,5526);
fightArea := False;
end;
with Areas[4] do
begin
Region := intToBox(3970,5560,3974,5565);
fightArea := False;
end;
with Areas[5] do
begin
DAnim := [8878, 8878];
targetName := 'Warped cockroach';
RTile := Point(3972,5553);
Region := intToBox(3969,5550,3977,5557);
fightArea := True;
end;
with Areas[6] do
begin
DAnim := [12896,12896]
targetName := 'Corpse Spider';
RTile := Point(3986,5553);
Region := intToBox(3978, 5550, 3994, 5556);
fightArea := True;
end;
with Areas[7] do
begin
DAnim := [7244, 7244];
targetName := 'Warped fly';
RTile := Point(3995,5543);
Region.X1 := 3987;
Region.Y1 := 5539;
Region.X2 := 4003;
Region.Y2 := 5547;
fightArea := True;
end;
with Areas[8] do
begin
DAnim := [12893, 12893];
targetName := 'Crawling corpse torso';
RTile := Point(4010,5544);
Region.X1 := 4004;
Region.Y1 := 5542;
Region.X2 := 4015;
Region.Y2 := 5546;
fightArea := True;
end;
with Areas[9] do
begin
DAnim := [14860, 14860];
targetName := 'Warped rat';
RTile := Point(4023,5544);
Region.X1 := 4016;
Region.Y1 := 5538;
Region.X2 := 4029;
Region.Y2 := 5548;
fightArea := True;
end;
with Areas[10] do
begin
DAnim := [12869, 12870];
targetName := 'Skeleton';
RTile := Point(4024,5530);
Region.X1 := 4019;
Region.Y1 := 5523;
Region.X2 := 4028;
Region.Y2 := 5537;
fightArea := True;
end;
with Areas[11] do
begin
DAnim := [4917, 4917];
targetName := 'Warped bat';
RTile := Point(4020,5515);
Region.X1 := 4011;
Region.Y1 := 5504;
Region.X2 := 4027;
Region.Y2 := 5520;
fightArea := True;
end;
with Areas[12] do
begin
DAnim := [12869, 12870];
targetName := 'Corpse archer';
RTile := Point(4017,5496);
Region.X1 := 4009;
Region.Y1 := 5489;
Region.X2 := 4021;
Region.Y2 := 5502;
fightArea := True;
end;
with Areas[13] do
begin
DAnim := [6182, 6282];
targetName := 'Skoblin';
RTile := Point(4000,5495);
Region.X1 := 3992;
Region.Y1 := 5492;
Region.X2 := 4009;
Region.Y2 := 5499;
fightArea := True;
end;
with Areas[14] do
begin
DAnim := [12869, 12870];
targetName := 'Corpse mage';
RTile := Point(3995,5481);
Region.X1 := 3988;
Region.Y1 := 5475;
Region.X2 := 4002;
Region.Y2 := 5489;
fightArea := True;
end;
currentArea := Areas[zone+4];
end;
{Skeleton by Brak, re-written with bitmaps, yay!}
Procedure TurnAidOff;
Var
x,y,BMP: Integer;
begin
BMP := BitmapFromString(9, 8, 'meJyTkqmSkWuUkqkSl8yWArORuRAR' +
'eaUeCBuCgFy4GknpYggbohLIBcoyMjDgQd0z5gNRdueS8Kwy7+Ri+' +
'9iK0JScv//+wRHDXk4g4pohCEQZx1GkgFxkWWQpNI0AjLpP/A==');
setbitmapname(BMP,'AidButton'); //Don't laugh
if TabExists(tab_Options) then
if GameTab(tab_Options) then
begin
if FindBitmapIn(BMP,x,y,570,410,605,450) then
begin
MMouse(x,y,5,5);
Wait(Random(100));
if WaitUpTextMulti(['oggle', 'ccep', 'cept', ' Aid'], 500) then
begin
GetMousePos(x,y);
Mouse(x,y,0,0,True);
Wait(RandomRange(150,250));
Exit;
end;
end;
end;
Gametab(tab_Inv);
FreeBitmap(BMP);
end;
Procedure LoadVars;
Var
tempPic: TMufasaBitmap;
begin
Retaliate(True);
TurnAidOff;
Version := '1.0';
MarkTime(CommitTime);
MarkTime(ScreenTime);
MouseSpeed := RandomRange(17,20);
AttXp_Start := R_GetSkillExp(SKILL_ATTACK);
StrXp_Start := R_GetSkillExp(SKILL_STRENGTH);
DefXp_Start := R_GetSkillExp(SKILL_DEFENCE);
HitXp_Start := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_Start := R_GetSkillExp(SKILL_RANGE);
AttXp_Old := R_GetSkillExp(SKILL_ATTACK);
StrXp_Old := R_GetSkillExp(SKILL_STRENGTH);
DefXp_Old := R_GetSkillExp(SKILL_DEFENCE);
HitXp_Old := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_Old := R_GetSkillExp(SKILL_RANGE);
Stairs_Enter := Point(3248,3198);
Stairs1_Down := Point(3874,5527);
Stairs2_Down := Point(3867,5524);
DefineAreas;
NewImg := BitmapFromString(311, 49, 'meJztnXdcFNf6/1M01auJ0Rg7X' +
'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' +
'19LSjL4WKie3+XHFTQvMzslJx96erKujYGVBAEilpTf20DdIWUVpZ' +
'LR3cOhJwAU7IHRktCsvL/P9cTMgFJxUl7JhSD9ZuRMqIiPNIyPDAx' +
'Gvu5sRK8tBAoEhM4WOTSaTUlJu5eTeSk0Nb2spe/y41MCA8vY2kPG' +
'hVCQUFSCcliqvyAAzJWmqMH4RgCy+/EHhi4XJZ/OjYKa9vfWrkK7l' +
'pMFxty+mp4drqMkBpyKiaz5+Ky4uhEJJQrlfmgTOC5yqoD7Yi18zM' +
'69ATlpYeEtVVRIgNaDrL/EJwSkpoeXlqWiMDE2OAi6e9j9vX1l5B4' +
'tDbBxSl6KirUGafY0KqbgojflyiorSOKwMDittZIgNDXHh5WXWZmx' +
'JMeg5AGZGRkJpaXLeveu93dVdnZVGRnobbeEHkclJvLkZnoCXzM27' +
'vTp2dOCng4xOitu5c4fnGffJycGJ8V7w0IrK7JmZ4ba2BppDZ4GXH' +
'KGQNZHNzaUQ6zIe7n6yesbk5UXlEHwS4pzNTSVqBBngFINRom8uEM' +
'UVFuXOTA8+fdrU2lI2Otr54tnE6Gj3+3PXhYR45eQE5GT5UtPCzUz' +
'wHBxHKBQ8I3Oqoaq6usrnz8YeN5fAmUTKCTrY6Tx+fH/1Rd40IAUb' +
'jQj3eFR1F4+T0dfHfPcdvSW18Th5DEZKVUX81at5cTFuSFQ/1FTSl' +
'NTQhITLV696B146vWqmHHAy19o4MtI7JsYvNSVURwdFc2zH0krXzl' +
'731ClDT08LQ6ONQer/BlKzTUKanb3qpIY4MVqQfvbZp2p4eQJeFnK' +
'Hof5GSE5Xc3z0ej2H6f79/IXnY2OjT3p7qqen+14uTU9NPmVnp3H7' +
'Q1lZoa+35cYNP309VWNDPI7WUkvKSgo93c1RV89qkxX09TDvL5vzy' +
'Wo42tFRHxbqSlKXpWgpo9G/j7pTdNEG+ioA6dTUIEAKRUUF8X4N7x' +
'37Z1gcpqyscHZmuK+vycBAtbAwEQhtb2tgZmaiuYu3t/kZTxMcVqK' +
'7u56L8wiUdb/lbe3atUseKSwrwwNBb0truZMjhYvzqLY2hoWVxiPG' +
'8BOYmBiPjvbNza2sof382fjTp43z8/Bh4qyXB836lZWl5OUFZWV4q' +
'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' +
'3wWJk5OX4rMzwoyNPIPmqrS15fxuUiqSsNJepEWpooBUCv6pHBW/+' +
'tGPHDikJbgtzQlJqeMadqMzMqMyMlf+mpkempEWkpV9JSYtMTAqLS' +
'wiNjb0cGubr7eNiamZAJ1lbS/BF0tIiFB1UatrV5KTYLS7gA0mxoB' +
'Avkajk4EDx9jIPD3NPSAzOyorOK7gNTNXXFzQ0luTmJlnbmG3iXfO' +
'QxSgryxro486eNQsJcUlJCS0qSayty2tvr+jqqEpOvo7FoXau8S4M' +
'+jp85BCZjEpODr9x4yrjhggWTySqXLjgWFCQ5uzs+EHeynfgwI8UC' +
'sHOlhIRcaa7pwo4jYujfdn89ttvtbXQGRk3zMxO/iMmu9IXHIKoqK' +
'CeHuGctxXERYkJl/LzYsvLkh89ygRIOzsednU9KinJsLe3PHyYobF' +
'Nbm4OElE++qpXSXFazLUQmtcKLi52Al46IsytID8x6mqQAD+NITJO' +
'TjYsWiI40Ole7u0rkYH8tLb5h2rHjs9ZWJgkJEVQaAUNEk6diFVBK' +
'YqKCa/1BocN6cCB/fCDKiohSJoEEokA+eAeuuOx/zgdPPSTvLyMtg' +
'5RW5v0Qc7YP0jgGmxszDIy4ni8iraOuiZZDYNRFpcQYWRhq79G/w+' +
'LKQil');
//Procedures taken from Iamadam's StrongHolder
tempPic := GetMufasaBitmap(NewImg);
BreakImg := TMufasaBitmap.create;
BreakImg.SetSize(tempPic.Width, tempPic.Height);
tempPic.FastDrawTransparent(0, 0, BreakImg);
end;
//Procedures taken from Iamadam's StrongHolder
Procedure BreakScreen;
Var
Canvas: TCanvas;
begin
Wait(500);
try
SmartSetDebug(True);
Canvas := TCanvas.Create;
Canvas.Handle := SmartGetDebugDC;
ClearRSCanvas(Canvas);
BreakImg.DrawToCanvas(235,200,Canvas);
except
writeln('error...');
end;
end;
Procedure Report;
Var
ExpA,ExpS,ExpD,ExpC,ExpR: Integer;
begin
ClearDebug;
ExpA := R_GetSkillExp(SKILL_ATTACK) - AttXp_Start;
ExpS := R_GetSkillExp(SKILL_STRENGTH) - StrXp_Start;
ExpD := R_GetSkillExp(SKILL_DEFENCE) - DefXp_Start;
ExpC := R_GetSkillExp(SKILL_HITPOINTS) - HitXp_Start;
ExpR := R_GetSkillExp(SKILL_RANGE) - RngXp_Start;
WriteLn('=-=-=-=-=-= Catacomber '+Version+' by Flight =-=-=-=-=-=');
WriteLn('Time Running: '+TimeRunning);
WriteLn('Attack XP: '+IntToStr(ExpA));
WriteLn('Strength XP: '+IntToStr(ExpS));
WriteLn('Defence XP: '+IntToStr(ExpD));
WriteLn('Constitution XP: '+IntToStr(ExpC));
WriteLn('Ranged XP: '+IntToStr(ExpR));
WriteLn('Deaths: '+IntToStr(Deaths));
//WriteLn('Breaks: '+IntToStr(TotalBreaks));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
end;
Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,131072);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
FreeBitmap(Pic);
end;
Procedure OnScreen;
Var
ExpA,ExpS,ExpD,
ExpH,ExpR,XPH_A,XPH_S,
XPH_D,XPH_H,XPH_R: Integer;
begin
ExpA := R_GetSkillExp(SKILL_ATTACK) - AttXp_Start;
ExpS := R_GetSkillExp(SKILL_STRENGTH) - StrXp_Start;
ExpD := R_GetSkillExp(SKILL_DEFENCE) - DefXp_Start;
ExpH := R_GetSkillExp(SKILL_HITPOINTS) - HitXp_Start;
ExpR := R_GetSkillExp(SKILL_RANGE) - RngXp_Start;
XPH_A := Round((ExpA * 3600) / (GetTimeRunning / 1000));
XPH_S := Round((ExpS * 3600) / (GetTimeRunning / 1000));
XPH_D := Round((ExpD * 3600) / (GetTimeRunning / 1000));
XPH_H := Round((ExpH * 3600) / (GetTimeRunning / 1000));
XPH_R := Round((ExpR * 3600) / (GetTimeRunning / 1000));
PrintOnSmart(['~Catacomber '+Version+' (by Flight)~'],Point(15,30),3716227);
PrintOnSmart([''+TimeRunning,'Attack XP: '+IntToStr(ExpA)+' ('+IntToStr(XPH_A)+' XP/Hour)',
'Strength XP: '+IntToStr(ExpS)+' ('+IntToStr(XPH_S)+' XP/Hour)',
'Defence XP: '+IntToStr(ExpD)+' ('+IntToStr(XPH_D)+' XP/Hour)',
'Hitpoints XP: '+IntToStr(ExpH)+' ('+IntToStr(XPH_H)+' XP/Hour)',
'Ranged XP: '+IntToStr(ExpR)+' ('+IntToStr(XPH_R)+' XP/Hour)',
'Deaths: '+IntToStr(Deaths)],Point(20,60),15856381);
MarkTime(ScreenTime);
end;
Procedure Commit;
begin
AttXp_New := R_GetSkillExp(SKILL_ATTACK);
StrXp_New := R_GetSkillExp(SKILL_STRENGTH);
DefXp_New := R_GetSkillExp(SKILL_DEFENCE);
HitXp_New := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_New := R_GetSkillExp(SKILL_RANGE);
stats_IncVariable('Attack EXP (Gained)',(AttXp_New-AttXp_Old));
stats_IncVariable('Strength EXP (Gained)',(StrXp_New-StrXp_Old));
stats_IncVariable('Defence EXP (Gained)',(DefXp_New-DefXp_Old));
stats_IncVariable('Hitpoints EXP (Gained)',(HitXp_New-HitXp_Old));
stats_IncVariable('Ranged EXP (Gained)',(RngXp_New-RngXp_Old));
Stats_Commit;
AttXp_Old := AttXp_New;
StrXp_Old := StrXp_New;
DefXp_Old := DefXp_New;
HitXp_Old := HitXp_New;
RngXp_Old := RngXp_New;
Report;
MarkTime(CommitTime);
end;
Procedure ScriptSetup(World:Integer;Signed,Clear,SetCam:Boolean);
Begin
AddOnTerminate('Report');
Smart_Server := World;
Smart_Members := Member;
Smart_Signed := Signed;
Smart_SuperDetail := False;
SetupSRL;
DeclarePlayers;
CheckStats;
R_UpdateHooks;
if Clear then
ClearDebug;
LogInPlayer;
if SetCam then
SetAngle(true);
LoadVars;
OnScreen;
End;
Procedure humanWait(time : Integer);
begin
wait(time + random(time) + random(random(time)));
end;
Function DeathScreen: Boolean;
begin
Result := R_ValidInterface(18);
end;
Function R_ClickItem_F(Slot: Integer; Action1, Action2: String): Boolean;
var
InterfaceID, X, Y: Integer;
Item: TInterfaceComponent;
begin
Result := False;
InterfaceID := R_GetInventoryInterfaceIndex;
if InterfaceID = NULL_INT then
begin
R_Debug('The Inventory interface doesn''t exist!', '');
Exit;
end;
if InterfaceID = INTERFACE_INVENTORY then
begin
R_GameTab(RTAB_INVENTORY);
end;
Item := R_GetInterfaceComponent(InterfaceID, 0, Slot-1);
if(Item.ID <= 0)then
Exit;
R_ClickInterface(Item, 3);
GetMousePos(X, Y);
wait(125+Random(55));
if(IsUpText(Action1) Or IsUpText(Action2))then
begin
Mouse(X, Y, 0, 0, True);
Result := True;
end;
end;
Function R_WindWalk_F(T: TTile): Boolean;
Var
I, Tries: Integer;
M, P: TPoint;
CTRLPoints: TPointArray;
begin
P := T;
repeat
M := R_GetMyPos;
CtrlPoints := R_WindPath(M.x, M.y, P.X, P.Y, 5.0, 2.5, 0.0, 0.0, 4.5, 2.5);
Inc(Tries);
if(Tries > 20)then
begin
R_Debug('Failed more than 20 times', 'R_WindWalk');
R_FindRandoms;
if Cast('lumbridge home teleport', False) then
Wait(RandomRange(9500,1175));
Exit;
end;
for I:= High(CtrlPoints) downto 0 do
if R_WalkToTile(CtrlPoints[i],0, 10) then
begin
Result := I = High(CtrlPoints);
Break;
end;
until(Result);
end;
Function inArea(Area : TBox) : boolean;
begin
result := PointInBox(R_GetMyPos, Area);
end;
function atTile(location: TTile; name, action : TStringArray; height, randomness : Integer) : boolean;
var
tilePoint : TPoint;
begin
result := False;
tilePoint := R_tileToMs(location, height);
MMouse(tilePoint.x, tilePoint.y, randomness, randomness);
wait(100);
if(IsUpTextMultiCustom(name) Or IsUpTextMultiCustom(action)) then
begin
ClickMouse2(True);
if DidRedClick then
result := True
else
result := False;
end else if(isUpText('options')) then
begin
clickMouse2(False);
if ChooseOptionMulti(action) then
result := True;
end;
end;
Procedure Fight;
Var
inFightWith : TNPC;
npcs : TNPCArray;
index : Integer;
begin
if(R_AreWeInteracting(InFightWith, False) and (getSystemTime - lastFightTime < 1000 * 60)) then
begin
lastInteractedTile := inFightWith.tile;
humanWait(1000);
exit;
end;
npcs := R_SortNPCs(R_GetNPCs(currentArea.targetName, false));
if(GetArrayLength(npcs) = 0) then
begin
humanwait(500);
Exit;
end;
for index := 0 to high(npcs) do
begin
if((npcs[index].Interacting = -1)
and not((npcs[index].Tile = lastInteractedTile))
and not (inIntArray(currentArea.DAnim, npcs[index].Animation))) then
begin
lastInteractedTile := npcs[index].tile;
if(not R_tileOnMS(npcs[index].Tile, 0)) then
exit;
if(atTile(npcs[index].Tile, [currentArea.targetName], ['Attack'], 300, 5)) then
begin
case (Random(4)) of
1: MakeCompass('Random');
end;
lastFightTime := GetSystemTime;
humanWait(2000);
end;
break;
end;
end;
end;
Function AreaCheck(Where: String): Boolean;
begin
Result := False;
Case LowerCase(Where) of
'castle' : Result := inArea(Areas[0].region);
'grave' : Result := inArea(Areas[1].region);
'room1' : Result := inArea(Areas[2].region);
'room2' : Result := inArea(Areas[3].region);
'room3' : Result := inArea(Areas[4].region);
'region' : Result := inArea(currentArea.region);
end;
end;
Procedure ToLocation(Where: String);
Var
T1,T2,T3,T4: Integer;
begin
Case LowerCase(Where) of
'grave':
begin
R_WindWalk_F(Point(3246,3198));
Wait(RandomRange(1215,1325));
While R_Moving do
Wait(1);
end;
'room1':
begin
if(Not R_TileOnMS(Stairs_Enter,100)) then
begin
R_WalkToTile(Point(3246,3198),1,1);
SetAngle(True);
While R_Moving do
Wait(1);
end;
if atTile(Stairs_Enter, ['Catacomb','entrance'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);
MarkTime(T1);
repeat
if (AreaCheck('Room1') Or (TimeFromMark(T1) > 5000)) then
Exit;
until (False)
end;
end;
'room2':
begin
if atTile(Stairs1_Down, ['Stairs'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);
MarkTime(T2);
repeat
if (AreaCheck('Room2') Or (TimeFromMark(T2) > 5000)) then
Exit;
until (False)
end;
end;
'room3':
begin
if atTile(Stairs2_Down, ['Stairs'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);
MarkTime(T3);
repeat
if (AreaCheck('Room3') Or (TimeFromMark(T3) > 5000)) then
Exit;
until (False)
end;
end;
'region':
begin
R_WindWalk_F(RTile);
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);
MarkTime(T4);
repeat
if (AreaCheck('Region') Or (TimeFromMark(T4) > 5000)) then
Exit;
until (False)
end;
end;
end;
Procedure CheckScreen;
Var
T,I: Integer;
S: TInterfaceChild;
Items,Items2: TInvItemArray;
begin
if DeathScreen then
begin
Inc(Deaths);
MarkTime(T);
Repeat
if(TimeFromMark(T) > 5000)then
Break;
S := R_GetInterfaceChild(18, 36);
R_ClickInterface(S, 1);
if Not DeathScreen then
Break;
Until(False)
end;
Wait(RandomRange(4375,5350));
Gametab(tab_Inv);
Wait(RandomRange(575,780));
if R_ItemExistsEx([
'scimitar','blade','sling','Sling','shortbow',
'helm','platebody','kiteshield','defender','hide',
'Amulet of','bracelet'],Items) then
begin
if(GetArrayLength(Items) = 0) then
begin
humanwait(500);
Exit;
end;
For I := 0 to high(Items) do
begin
R_ClickItem_F(Items[I].Slot,'Wear','Wield');
Wait(RandomRange(1150,1350));
end;
end;
Wait(RandomRange(575,780));
if R_ItemExistsEx([
'scimitar','blade','sling','Sling','shortbow',
'helm','platebody','kiteshield','defender','hide',
'Amulet of','bracelet'],Items2) then
begin
if(GetArrayLength(Items2) = 0) then
begin
humanwait(500);
Exit;
end;
For I := 0 to high(Items2) do
begin
R_ClickItem_F(Items2[I].Slot,'Wear','Wield');
Wait(RandomRange(1150,1350));
end;
end;
SetAngle(True);
ToLocation('Grave');
end;
Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
Var
w,x,y,z,h,m,s,
RealBTime,
CurrentBTime: integer;
NPC: TNPC;
begin
if not LoggedIn then Exit;
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-randBreakIn * 60000, randBreakIn * 60000);
z := RandomRange(-randBreakFor * 60000, randBreakFor * 60000);
if (HowManyPlayers = 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
if R_AreWeInteracting(NPC, False) then
Wait(RandomRange(4750,7535))
else
begin
Repeat
R_FindRandoms;
Logout;
Wait(RandomRange(435,675));
if Not LoggedIn then
break;
Until(False)
BreakScreen;
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
ClearDebug;
Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
until(TimeFromMark(CurrentBTime)>(x+z));
Writeln('Logging in.');
OnScreen;
if ChangeWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(Member, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
SetAngle(True);
R_FindRandoms;
IncEx(BreakRounds, (w) + (x));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
end;
end;
end;
end;
Function NoAmmo: Boolean;
begin
Result := FindBlackChatMessage('no ammo');
end;
Begin
ScriptSetup(86,True,True,True);
Repeat
if (TimeFromMark(CommitTime)>=30000) then
Commit;
if (TimeFromMark(ScreenTime)>=5000) then
OnScreen;
BreakHandler(BreakIn,BreakFor,Bir,Bfr);
if NoAmmo then
begin
Writeln('Ran out of ammo!');
Report;
Logout;
TerminateScript;
end;
if not LoggedIn then LoginPlayer;
if AreaCheck('Castle') then
begin
CheckScreen;
ToLocation('Grave');
end
else if AreaCheck('Grave') then
ToLocation('Room1')
else if AreaCheck('Room1') then
ToLocation('Room2')
else if AreaCheck('Room2') then
ToLocation('Room3')
else if AreaCheck('Room3') then
ToLocation('Region')
else if AreaCheck('Region') then
Fight
else if (Not AreaCheck('Castle') And Not AreaCheck('Grave')
And Not AreaCheck('Room1') And Not AreaCheck('Room2')
And Not AreaCheck('Room3') And Not AreaCheck('Region')) then
begin
R_FindRandoms;
CheckScreen;
end;
Until(False);
End.
Also, why is your entire script indented by two spaces? :P
Last edited by Nava2; 08-21-2011 at 05:43 PM.
Writing an SRL Member Application | [Updated] Pascal Scripting Statements
My GitHub
Progress Report:13:46 <@BenLand100> <SourceCode> @BenLand100: what you have just said shows you have serious physchological problems 13:46 <@BenLand100> HE GETS IT! 13:46 <@BenLand100> HE FINALLY GETS IT!!!!1
Double posting.. but I redid the walking. got it going:
Simba Code:{/////////////////////////////////////////
// ~Catacomber by Flight~ //
// //
// Version: 1.0 //
/////////////////////////////////////////}
program Catacomber;
{$define SMART}
{$i SRL/SRL.scar}
{$i SRL/SRL/skill/magic.scar}
{$i SRL/SRL/Misc/stats.simba}
{$i Reflection/Reflection.simba}
{$i SRL/SRL/misc/paintsmart.scar}
//////////////////////////////-Begin setup-/////////////////////////////////////
Const
//SRL Stats
SRLStats_Username = '';
SRLStats_Password = '';
//Script settings
FightRegion = 10;
ChangeWorlds = True;
Member = True;
//Break settings
BreakIn = 135; //How long before we take a break? (minutes)
BreakFor = 13; //How long will we break for? (minutes)
Bir = 12; //Random minutes to add/subtract from how long until we break
Bfr = 7; //Random minutes to add/subjtract from break duraction
//////////////////////////////-End of setup-////////////////////////////////////
Var
BreakImg: TMufasaBitmap;
targetName,Version: String;
lastFightTime: Integer;
lastInteractedTile,Stairs1_Down,Stairs2_Down,
Stairs_Enter,RTile: TTile;
Deaths,CommitTime,ScreenTime,NewImg: Integer;
//Break variables
BreakRounds,TotalBreaks: Integer;
//Exp variables
AttXP_Start,AttXP_Old,AttXP_New,StrXP_Start,
StrXP_Old,StrXP_New,DefXP_Start,DefXP_Old,
DefXP_New,HitXP_Start,HitXP_Old,HitXP_New,
RngXP_Start,RngXP_Old,RngXP_New: Integer;
Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := '';
Pass := '';
BoxRewards := ['XP','xp','lamp'];
LampSkill := 'hitpoints';
Active := True;
end;
end;
Procedure CheckStats;
begin
if ((SRLStats_Username = '') And (SRLStats_Password = '')) then
begin
case MessageBox('No Stats account entered, would you like to set one up?','SRL Stats',mbYesNoCancel) of
mrYes:
begin
OpenWebPage('http://stats.villavu.com/register');
TerminateScript;
end;
mrNo:
begin
SetupSRLStats(165,'Anonymous','anon1337');
Exit;
end;
mrCancel: TerminateScript;
end;
end else
SetupSRLStats(165,SRLStats_Username,SRLStats_Password);
end;
type
TArea = record
Region: TBox;
DAnim: TIntegerArray;
targetName: String;
RTile: TTile;
fightArea: Boolean;
end;
TAreaArray = array of TArea;
var
currentArea: TArea;
Areas: TAreaArray;
Procedure DefineAreas;
Var
Zone: Integer;
begin
Zone := FightRegion;
setLength(Areas, 15);
// lumbridge:
with Areas[0] do
begin
Region := IntToBox(3217,3210,3226,3228);
fightArea := False;
end;
// grave:
with Areas[1] do
begin
Region := intToBox(3238, 3191, 3251, 3203);
fightArea := False;
end;
// room 1:
with Areas[2] do
begin
Region := intToBox(3875,5526,3879,5529);
fightArea := False;
end;
with Areas[3] do
begin
Region := intToBox(3863,5522,3869,5526);
fightArea := False;
end;
with Areas[4] do
begin
Region := intToBox(3970,5560,3974,5565);
fightArea := False;
end;
// region 1:
with Areas[5] do
begin
DAnim := [8878, 8878];
targetName := 'Warped cockroach';
RTile := Point(3972,5553);
Region := intToBox(3969,5550,3977,5557);
fightArea := True;
end;
with Areas[6] do
begin
DAnim := [12896,12896]
targetName := 'Corpse Spider';
RTile := Point(3986,5553);
Region := intToBox(3978, 5550, 3994, 5556);
fightArea := True;
end;
with Areas[7] do
begin
DAnim := [7244, 7244];
targetName := 'Warped fly';
RTile := Point(3995,5543);
Region.X1 := 3987;
Region.Y1 := 5539;
Region.X2 := 4003;
Region.Y2 := 5547;
fightArea := True;
end;
with Areas[8] do
begin
DAnim := [12893, 12893];
targetName := 'Crawling corpse torso';
RTile := Point(4010,5544);
Region.X1 := 4004;
Region.Y1 := 5542;
Region.X2 := 4015;
Region.Y2 := 5546;
fightArea := True;
end;
with Areas[9] do
begin
DAnim := [14860, 14860];
targetName := 'Warped rat';
RTile := Point(4023,5544);
Region.X1 := 4016;
Region.Y1 := 5538;
Region.X2 := 4029;
Region.Y2 := 5548;
fightArea := True;
end;
with Areas[10] do
begin
DAnim := [12869, 12870];
targetName := 'Skeleton';
RTile := Point(4024,5530);
Region.X1 := 4019;
Region.Y1 := 5523;
Region.X2 := 4028;
Region.Y2 := 5537;
fightArea := True;
end;
with Areas[11] do
begin
DAnim := [4917, 4917];
targetName := 'Warped bat';
RTile := Point(4020,5515);
Region.X1 := 4011;
Region.Y1 := 5504;
Region.X2 := 4027;
Region.Y2 := 5520;
fightArea := True;
end;
with Areas[12] do
begin
DAnim := [12869, 12870];
targetName := 'Corpse archer';
RTile := Point(4017,5496);
Region.X1 := 4009;
Region.Y1 := 5489;
Region.X2 := 4021;
Region.Y2 := 5502;
fightArea := True;
end;
with Areas[13] do
begin
DAnim := [6182, 6282];
targetName := 'Skoblin';
RTile := Point(4000,5495);
Region.X1 := 3992;
Region.Y1 := 5492;
Region.X2 := 4009;
Region.Y2 := 5499;
fightArea := True;
end;
with Areas[14] do
begin
DAnim := [12869, 12870];
targetName := 'Corpse mage';
RTile := Point(3995,5481);
Region.X1 := 3988;
Region.Y1 := 5475;
Region.X2 := 4002;
Region.Y2 := 5489;
fightArea := True;
end;
currentArea := Areas[zone+4];
end;
{Skeleton by Brak, re-written with bitmaps, yay!}
Procedure TurnAidOff;
Var
x,y,BMP: Integer;
begin
BMP := BitmapFromString(9, 8, 'meJyTkqmSkWuUkqkSl8yWArORuRAR' +
'eaUeCBuCgFy4GknpYggbohLIBcoyMjDgQd0z5gNRdueS8Kwy7+Ri+' +
'9iK0JScv//+wRHDXk4g4pohCEQZx1GkgFxkWWQpNI0AjLpP/A==');
setbitmapname(BMP,'AidButton'); //Don't laugh
if TabExists(tab_Options) then
if GameTab(tab_Options) then
begin
if FindBitmapIn(BMP,x,y,570,410,605,450) then
begin
MMouse(x,y,5,5);
Wait(Random(100));
if WaitUpTextMulti(['oggle', 'ccep', 'cept', ' Aid'], 500) then
begin
GetMousePos(x,y);
Mouse(x,y,0,0,True);
Wait(RandomRange(150,250));
Exit;
end;
end;
end;
Gametab(tab_Inv);
FreeBitmap(BMP);
end;
Procedure LoadVars;
Var
tempPic: TMufasaBitmap;
begin
Retaliate(True);
TurnAidOff;
Version := '1.0';
MarkTime(CommitTime);
MarkTime(ScreenTime);
MouseSpeed := RandomRange(17,20);
AttXp_Start := R_GetSkillExp(SKILL_ATTACK);
StrXp_Start := R_GetSkillExp(SKILL_STRENGTH);
DefXp_Start := R_GetSkillExp(SKILL_DEFENCE);
HitXp_Start := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_Start := R_GetSkillExp(SKILL_RANGE);
AttXp_Old := R_GetSkillExp(SKILL_ATTACK);
StrXp_Old := R_GetSkillExp(SKILL_STRENGTH);
DefXp_Old := R_GetSkillExp(SKILL_DEFENCE);
HitXp_Old := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_Old := R_GetSkillExp(SKILL_RANGE);
Stairs_Enter := Point(3248,3198);
Stairs1_Down := Point(3874,5527);
Stairs2_Down := Point(3867,5524);
DefineAreas;
NewImg := BitmapFromString(311, 49, 'meJztnXdcFNf6/1M01auJ0Rg7X' +
'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' +
'19LSjL4WKie3+XHFTQvMzslJx96erKujYGVBAEilpTf20DdIWUVpZ' +
'LR3cOhJwAU7IHRktCsvL/P9cTMgFJxUl7JhSD9ZuRMqIiPNIyPDAx' +
'Gvu5sRK8tBAoEhM4WOTSaTUlJu5eTeSk0Nb2spe/y41MCA8vY2kPG' +
'hVCQUFSCcliqvyAAzJWmqMH4RgCy+/EHhi4XJZ/OjYKa9vfWrkK7l' +
'pMFxty+mp4drqMkBpyKiaz5+Ky4uhEJJQrlfmgTOC5yqoD7Yi18zM' +
'69ATlpYeEtVVRIgNaDrL/EJwSkpoeXlqWiMDE2OAi6e9j9vX1l5B4' +
'tDbBxSl6KirUGafY0KqbgojflyiorSOKwMDittZIgNDXHh5WXWZmx' +
'JMeg5AGZGRkJpaXLeveu93dVdnZVGRnobbeEHkclJvLkZnoCXzM27' +
'vTp2dOCng4xOitu5c4fnGffJycGJ8V7w0IrK7JmZ4ba2BppDZ4GXH' +
'KGQNZHNzaUQ6zIe7n6yesbk5UXlEHwS4pzNTSVqBBngFINRom8uEM' +
'UVFuXOTA8+fdrU2lI2Otr54tnE6Gj3+3PXhYR45eQE5GT5UtPCzUz' +
'wHBxHKBQ8I3Oqoaq6usrnz8YeN5fAmUTKCTrY6Tx+fH/1Rd40IAUb' +
'jQj3eFR1F4+T0dfHfPcdvSW18Th5DEZKVUX81at5cTFuSFQ/1FTSl' +
'NTQhITLV696B146vWqmHHAy19o4MtI7JsYvNSVURwdFc2zH0krXzl' +
'731ClDT08LQ6ONQer/BlKzTUKanb3qpIY4MVqQfvbZp2p4eQJeFnK' +
'Hof5GSE5Xc3z0ej2H6f79/IXnY2OjT3p7qqen+14uTU9NPmVnp3H7' +
'Q1lZoa+35cYNP309VWNDPI7WUkvKSgo93c1RV89qkxX09TDvL5vzy' +
'Wo42tFRHxbqSlKXpWgpo9G/j7pTdNEG+ioA6dTUIEAKRUUF8X4N7x' +
'37Z1gcpqyscHZmuK+vycBAtbAwEQhtb2tgZmaiuYu3t/kZTxMcVqK' +
'7u56L8wiUdb/lbe3atUseKSwrwwNBb0truZMjhYvzqLY2hoWVxiPG' +
'8BOYmBiPjvbNza2sof382fjTp43z8/Bh4qyXB836lZWl5OUFZWV4q' +
'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' +
'3wWJk5OX4rMzwoyNPIPmqrS15fxuUiqSsNJepEWpooBUCv6pHBW/+' +
'tGPHDikJbgtzQlJqeMadqMzMqMyMlf+mpkempEWkpV9JSYtMTAqLS' +
'wiNjb0cGubr7eNiamZAJ1lbS/BF0tIiFB1UatrV5KTYLS7gA0mxoB' +
'Avkajk4EDx9jIPD3NPSAzOyorOK7gNTNXXFzQ0luTmJlnbmG3iXfO' +
'QxSgryxro486eNQsJcUlJCS0qSayty2tvr+jqqEpOvo7FoXau8S4M' +
'+jp85BCZjEpODr9x4yrjhggWTySqXLjgWFCQ5uzs+EHeynfgwI8UC' +
'sHOlhIRcaa7pwo4jYujfdn89ttvtbXQGRk3zMxO/iMmu9IXHIKoqK' +
'CeHuGctxXERYkJl/LzYsvLkh89ygRIOzsednU9KinJsLe3PHyYobF' +
'Nbm4OElE++qpXSXFazLUQmtcKLi52Al46IsytID8x6mqQAD+NITJO' +
'TjYsWiI40Ole7u0rkYH8tLb5h2rHjs9ZWJgkJEVQaAUNEk6diFVBK' +
'YqKCa/1BocN6cCB/fCDKiohSJoEEokA+eAeuuOx/zgdPPSTvLyMtg' +
'5RW5v0Qc7YP0jgGmxszDIy4ni8iraOuiZZDYNRFpcQYWRhq79G/w+' +
'LKQil');
//Procedures taken from Iamadam's StrongHolder
tempPic := GetMufasaBitmap(NewImg);
BreakImg := TMufasaBitmap.create;
BreakImg.SetSize(tempPic.Width, tempPic.Height);
tempPic.FastDrawTransparent(0, 0, BreakImg);
end;
//Procedures taken from Iamadam's StrongHolder
Procedure BreakScreen;
Var
Canvas: TCanvas;
begin
Wait(500);
try
SmartSetDebug(True);
Canvas := TCanvas.Create;
Canvas.Handle := SmartGetDebugDC;
ClearRSCanvas(Canvas);
BreakImg.DrawToCanvas(235,200,Canvas);
except
writeln('error...');
end;
end;
Procedure Report;
Var
ExpA,ExpS,ExpD,ExpC,ExpR: Integer;
begin
ClearDebug;
ExpA := R_GetSkillExp(SKILL_ATTACK) - AttXp_Start;
ExpS := R_GetSkillExp(SKILL_STRENGTH) - StrXp_Start;
ExpD := R_GetSkillExp(SKILL_DEFENCE) - DefXp_Start;
ExpC := R_GetSkillExp(SKILL_HITPOINTS) - HitXp_Start;
ExpR := R_GetSkillExp(SKILL_RANGE) - RngXp_Start;
WriteLn('=-=-=-=-=-= Catacomber '+Version+' by Flight =-=-=-=-=-=');
WriteLn('Time Running: '+TimeRunning);
WriteLn('Attack XP: '+IntToStr(ExpA));
WriteLn('Strength XP: '+IntToStr(ExpS));
WriteLn('Defence XP: '+IntToStr(ExpD));
WriteLn('Constitution XP: '+IntToStr(ExpC));
WriteLn('Ranged XP: '+IntToStr(ExpR));
WriteLn('Deaths: '+IntToStr(Deaths));
//WriteLn('Breaks: '+IntToStr(TotalBreaks));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
end;
Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,131072);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
FreeBitmap(Pic);
end;
Procedure OnScreen;
Var
ExpA,ExpS,ExpD,
ExpH,ExpR,XPH_A,XPH_S,
XPH_D,XPH_H,XPH_R: Integer;
begin
ExpA := R_GetSkillExp(SKILL_ATTACK) - AttXp_Start;
ExpS := R_GetSkillExp(SKILL_STRENGTH) - StrXp_Start;
ExpD := R_GetSkillExp(SKILL_DEFENCE) - DefXp_Start;
ExpH := R_GetSkillExp(SKILL_HITPOINTS) - HitXp_Start;
ExpR := R_GetSkillExp(SKILL_RANGE) - RngXp_Start;
XPH_A := Round((ExpA * 3600) / (GetTimeRunning / 1000));
XPH_S := Round((ExpS * 3600) / (GetTimeRunning / 1000));
XPH_D := Round((ExpD * 3600) / (GetTimeRunning / 1000));
XPH_H := Round((ExpH * 3600) / (GetTimeRunning / 1000));
XPH_R := Round((ExpR * 3600) / (GetTimeRunning / 1000));
PrintOnSmart(['~Catacomber '+Version+' (by Flight)~'],Point(15,30),3716227);
PrintOnSmart([''+TimeRunning,'Attack XP: '+IntToStr(ExpA)+' ('+IntToStr(XPH_A)+' XP/Hour)',
'Strength XP: '+IntToStr(ExpS)+' ('+IntToStr(XPH_S)+' XP/Hour)',
'Defence XP: '+IntToStr(ExpD)+' ('+IntToStr(XPH_D)+' XP/Hour)',
'Hitpoints XP: '+IntToStr(ExpH)+' ('+IntToStr(XPH_H)+' XP/Hour)',
'Ranged XP: '+IntToStr(ExpR)+' ('+IntToStr(XPH_R)+' XP/Hour)',
'Deaths: '+IntToStr(Deaths)],Point(20,60),15856381);
MarkTime(ScreenTime);
end;
Procedure Commit;
begin
AttXp_New := R_GetSkillExp(SKILL_ATTACK);
StrXp_New := R_GetSkillExp(SKILL_STRENGTH);
DefXp_New := R_GetSkillExp(SKILL_DEFENCE);
HitXp_New := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_New := R_GetSkillExp(SKILL_RANGE);
stats_IncVariable('Attack EXP (Gained)',(AttXp_New-AttXp_Old));
stats_IncVariable('Strength EXP (Gained)',(StrXp_New-StrXp_Old));
stats_IncVariable('Defence EXP (Gained)',(DefXp_New-DefXp_Old));
stats_IncVariable('Hitpoints EXP (Gained)',(HitXp_New-HitXp_Old));
stats_IncVariable('Ranged EXP (Gained)',(RngXp_New-RngXp_Old));
Stats_Commit;
AttXp_Old := AttXp_New;
StrXp_Old := StrXp_New;
DefXp_Old := DefXp_New;
HitXp_Old := HitXp_New;
RngXp_Old := RngXp_New;
Report;
MarkTime(CommitTime);
end;
Procedure ScriptSetup(World:Integer;Signed,Clear,SetCam:Boolean);
Begin
AddOnTerminate('Report');
Smart_Server := World;
Smart_Members := Member;
Smart_Signed := Signed;
Smart_SuperDetail := False;
SetupSRL;
DeclarePlayers;
CheckStats;
R_UpdateHooks;
if Clear then
ClearDebug;
LogInPlayer;
if SetCam then
SetAngle(true);
LoadVars;
OnScreen;
End;
Procedure humanWait(time : Integer);
begin
wait(time + random(time) + random(random(time)));
end;
Function DeathScreen: Boolean;
begin
Result := R_ValidInterface(18);
end;
Function R_ClickItem_F(Slot: Integer; Action1, Action2: String): Boolean;
var
InterfaceID, X, Y: Integer;
Item: TInterfaceComponent;
begin
Result := False;
InterfaceID := R_GetInventoryInterfaceIndex;
if InterfaceID = NULL_INT then
begin
R_Debug('The Inventory interface doesn''t exist!', '');
Exit;
end;
if InterfaceID = INTERFACE_INVENTORY then
begin
R_GameTab(RTAB_INVENTORY);
end;
Item := R_GetInterfaceComponent(InterfaceID, 0, Slot-1);
if(Item.ID <= 0)then
Exit;
R_ClickInterface(Item, 3);
GetMousePos(X, Y);
wait(125+Random(55));
if(IsUpText(Action1) Or IsUpText(Action2))then
begin
Mouse(X, Y, 0, 0, True);
Result := True;
end;
end;
Function R_WindWalk_F(T: TTile): Boolean;
Var
I, Tries: Integer;
M, P: TPoint;
CTRLPoints: TPointArray;
begin
P := T;
repeat
M := R_GetMyPos;
CtrlPoints := R_WindPath(M.x, M.y, P.X, P.Y, 5.0, 2.5, 0.0, 0.0, 4.5, 2.5);
Inc(Tries);
if(Tries > 20)then
begin
R_Debug('Failed more than 20 times', 'R_WindWalk');
R_FindRandoms;
if Cast('lumbridge home teleport', False) then
Wait(RandomRange(9500,1175));
Exit;
end;
for I:= High(CtrlPoints) downto 0 do
if R_WalkToTile(CtrlPoints[i],0, 10) then
begin
Result := I = High(CtrlPoints);
Break;
end;
until(Result);
end;
Function inArea(Area : TBox) : boolean;
begin
result := PointInBox(R_GetMyPos, Area);
end;
function atTile(location: TTile; name, action : TStringArray; height, randomness : Integer) : boolean;
var
tilePoint : TPoint;
begin
result := False;
tilePoint := R_tileToMs(location, height);
MMouse(tilePoint.x, tilePoint.y, randomness, randomness);
wait(100);
if(IsUpTextMultiCustom(name) Or IsUpTextMultiCustom(action)) then
begin
ClickMouse2(True);
if DidRedClick then
result := True
else
result := False;
end else if(isUpText('options')) then
begin
clickMouse2(False);
if ChooseOptionMulti(action) then
result := True;
end;
end;
Procedure Fight;
Var
inFightWith : TNPC;
npcs : TNPCArray;
index : Integer;
begin
if(R_AreWeInteracting(InFightWith, False) and (getSystemTime - lastFightTime < 1000 * 60)) then
begin
lastInteractedTile := inFightWith.tile;
humanWait(1000);
exit;
end;
npcs := R_SortNPCs(R_GetNPCs(currentArea.targetName, false));
if(GetArrayLength(npcs) = 0) then
begin
humanwait(500);
Exit;
end;
for index := 0 to high(npcs) do
begin
if((npcs[index].Interacting = -1)
and not((npcs[index].Tile = lastInteractedTile))
and not (inIntArray(currentArea.DAnim, npcs[index].Animation))) then
begin
lastInteractedTile := npcs[index].tile;
if(not R_tileOnMS(npcs[index].Tile, 0)) then
exit;
if(atTile(npcs[index].Tile, [currentArea.targetName], ['Attack'], 300, 5)) then
begin
case (Random(4)) of
1: MakeCompass('Random');
end;
lastFightTime := GetSystemTime;
humanWait(2000);
end;
break;
end;
end;
end;
Function AreaCheck(Where: String): Boolean;
begin
Result := False;
Case LowerCase(Where) of
'castle' : Result := inArea(Areas[0].region);
'grave' : Result := inArea(Areas[1].region);
'room1' : Result := inArea(Areas[2].region);
'room2' : Result := inArea(Areas[3].region);
'room3' : Result := inArea(Areas[4].region);
'region' : Result := inArea(currentArea.region);
end;
end;
// nava2
function FindTileOnPath(var Index: integer; Path: TTileArray; P: TTile; MaxDist: Integer): Boolean;
var {Find the closest tile in a path within MaxDist}
I, H, DistC, DistS, T: integer;
begin
T := GetTimeRunning;
H := High(Path);
Index := -1;
if (H < 0) then Exit;
DistS := Distance(P.x, P.y, Path[0].x, Path[0].y); //Distance from Current Tile
for I := 0 to H do //Looks for the Closest Tile
begin
DistC := Distance(P.x, P.y, Path[I].x, Path[I].y);
if DistC <= DistS then
begin
DistS := DistC;
Index := I;
end;
end;
Result := DistS <= MaxDist;
if not Result then Index := -1;
WriteLn('FindTileOnPath: Index = ' + IntToStr(Index) + ' Time: ' + IntToStr(GetTimeRunning - T) + ' ms');
end;
// nava2
function WalkToRoom(zone: Integer): Boolean;
var
i, t: Integer;
p: TTileArray;
begin
setLength(p, zone);
for i := 1 to zone do
p[i-1] := Areas[4+i].RTile;
writeln('path: ' + toStr(p));
writeln('Area tile: ' + toStr(currentArea.RTile));
FindTileOnPath(t, p, R_getMyPos, 7);
for i := t+1 to zone-1 do
if (not R_WindWalk_F(p[i])) then
break;
result := AreaCheck('region');
end;
Procedure ToLocation(Where: String);
Var
T1,T2,T3,T4: Integer;
begin
RunEnergy(50);
Case LowerCase(Where) of
'grave':
begin
R_WindWalk_F(Point(3246,3198));
Wait(RandomRange(1215,1325));
While R_Moving do
Wait(1);
end;
'room1':
begin
if(Not R_TileOnMS(Stairs_Enter,100)) then
begin
R_WalkToTile(Point(3246,3198),1,1);
SetAngle(True);
While R_Moving do
Wait(1);
end;
if atTile(Stairs_Enter, ['Catacomb','entrance'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);
MarkTime(T1);
repeat
if (AreaCheck('Room1') Or (TimeFromMark(T1) > 5000)) then
Exit;
until (False)
end;
end;
'room2':
begin
if atTile(Stairs1_Down, ['Stairs'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);
MarkTime(T2);
repeat
if (AreaCheck('Room2') Or (TimeFromMark(T2) > 5000)) then
Exit;
until (False)
end;
end;
'room3':
begin
if atTile(Stairs2_Down, ['Stairs'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);
MarkTime(T3);
repeat
if (AreaCheck('Room3') Or (TimeFromMark(T3) > 5000)) then
Exit;
until (False)
end;
end;
'region':
begin
WalkToRoom(FightRegion);
Wait(RandomRange(355,525));
while R_Moving do
Wait(16);
MarkTime(T4);
repeat
if (AreaCheck('Region') Or (TimeFromMark(T4) > 5000)) then
Exit;
until (False);
end;
end;
end;
Procedure CheckScreen;
Var
T,I: Integer;
S: TInterfaceChild;
Items,Items2: TInvItemArray;
begin
if DeathScreen then
begin
Inc(Deaths);
MarkTime(T);
Repeat
if(TimeFromMark(T) > 5000)then
Break;
S := R_GetInterfaceChild(18, 36);
R_ClickInterface(S, 1);
if Not DeathScreen then
Break;
Until(False)
end;
Wait(RandomRange(4375,5350));
Gametab(tab_Inv);
Wait(RandomRange(575,780));
if R_ItemExistsEx([
'scimitar','blade','sling','Sling','shortbow',
'helm','platebody','kiteshield','defender','hide',
'Amulet of','bracelet'],Items) then
begin
if(GetArrayLength(Items) = 0) then
begin
humanwait(500);
Exit;
end;
For I := 0 to high(Items) do
begin
R_ClickItem_F(Items[I].Slot,'Wear','Wield');
Wait(RandomRange(1150,1350));
end;
end;
Wait(RandomRange(575,780));
if R_ItemExistsEx([
'scimitar','blade','sling','Sling','shortbow',
'helm','platebody','kiteshield','defender','hide',
'Amulet of','bracelet'],Items2) then
begin
if(GetArrayLength(Items2) = 0) then
begin
humanwait(500);
Exit;
end;
For I := 0 to high(Items2) do
begin
R_ClickItem_F(Items2[I].Slot,'Wear','Wield');
Wait(RandomRange(1150,1350));
end;
end;
SetAngle(True);
ToLocation('Grave');
end;
Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
Var
w,x,y,z,h,m,s,
RealBTime,
CurrentBTime: integer;
NPC: TNPC;
begin
if not LoggedIn then Exit;
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-randBreakIn * 60000, randBreakIn * 60000);
z := RandomRange(-randBreakFor * 60000, randBreakFor * 60000);
if (HowManyPlayers = 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
if R_AreWeInteracting(NPC, False) then
Wait(RandomRange(4750,7535))
else
begin
Repeat
R_FindRandoms;
Logout;
Wait(RandomRange(435,675));
if Not LoggedIn then
break;
Until(False)
BreakScreen;
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
ClearDebug;
Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
until(TimeFromMark(CurrentBTime)>(x+z));
Writeln('Logging in.');
OnScreen;
if ChangeWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(Member, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
SetAngle(True);
R_FindRandoms;
IncEx(BreakRounds, (w) + (x));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
end;
end;
end;
end;
Function NoAmmo: Boolean;
begin
Result := FindBlackChatMessage('no ammo');
end;
Begin
ScriptSetup(86,True,True,True);
Repeat
if (TimeFromMark(CommitTime)>=30000) then
Commit;
if (TimeFromMark(ScreenTime)>=5000) then
OnScreen;
BreakHandler(BreakIn,BreakFor,Bir,Bfr);
if NoAmmo then
begin
Writeln('Ran out of ammo!');
Report;
Logout;
TerminateScript;
end;
if not LoggedIn then LoginPlayer;
if AreaCheck('Castle') then
begin
CheckScreen;
ToLocation('Grave');
end
else if AreaCheck('Grave') then
ToLocation('Room1')
else if AreaCheck('Room1') then
ToLocation('Room2')
else if AreaCheck('Room2') then
ToLocation('Room3')
else if AreaCheck('Room3') then
ToLocation('Region')
else if AreaCheck('Region') then
Fight
else if (Not AreaCheck('Castle') And Not AreaCheck('Grave')
And Not AreaCheck('Room1') And Not AreaCheck('Room2')
And Not AreaCheck('Room3') And Not AreaCheck('Region')) then
begin
R_FindRandoms;
CheckScreen;
end;
Until(False);
End.
Writing an SRL Member Application | [Updated] Pascal Scripting Statements
My GitHub
Progress Report:13:46 <@BenLand100> <SourceCode> @BenLand100: what you have just said shows you have serious physchological problems 13:46 <@BenLand100> HE GETS IT! 13:46 <@BenLand100> HE FINALLY GETS IT!!!!1
[QUOTE=Flight;828180]That's really awesome of you to offer help. But I brainstormed a basic idea/skeleton mentally already and I'm gonna give it a shot and see how it turns out. But if I do happen to get stuck somewhere, you'll be the first to know.
@Bolshak25:
Thanks for the test dummies, I will warn you now though, the quest gives 100 xp to all combat skills (excluding constitution) so you might gain a couple levels, I hope this is okay. I should only need 1 account for coding, 1/2 accounts for testing.
Edit:
Well, I misunderstood you, Mormonman, as I thought you meant the tiles were dynamic to the quest <> finished quest, when actually they are, infact, dynamic to the player. I can do this but agh... it's gonna be tough and take a long time to do. I luffs, if you're still interested I can give you what I have and you could take over. I've done all the Quest-Starting and killing Kayle. But that last part will have to have slight edit, because I have it set to webwalk to a static tile (Kayle's tile) and do the fighting. Let me know if you're interested, because like I said, if people really want the quest done I can do it, but I'm reluctant to do so.[/QUOTE
If you're still having problems let me know, i like making questing scripts, they're quite challenging and fun, and i have some free time this week and next week.
Just search for Kayle and everyother object/npc.
Once you have a reference point (AKA Kayle's tile), everything else would be relative to it.
Its how PC was done all those times.
Writing an SRL Member Application | [Updated] Pascal Scripting Statements
My GitHub
Progress Report:13:46 <@BenLand100> <SourceCode> @BenLand100: what you have just said shows you have serious physchological problems 13:46 <@BenLand100> HE GETS IT! 13:46 <@BenLand100> HE FINALLY GETS IT!!!!1
Yup, I'm just giving suggestions for speed.
Also:
Progress Report:=-=-=-=-=-= Catacomber 1.0 by Flight =-=-=-=-=-= Time Running: 3 Hours, 29 Minutes and 8 Seconds Attack XP: 0 Strength XP: 61948 Defence XP: 0 Constitution XP: 21277 Ranged XP: 0 Deaths: 0 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
This was my version btw.
Writing an SRL Member Application | [Updated] Pascal Scripting Statements
My GitHub
Progress Report:13:46 <@BenLand100> <SourceCode> @BenLand100: what you have just said shows you have serious physchological problems 13:46 <@BenLand100> HE GETS IT! 13:46 <@BenLand100> HE FINALLY GETS IT!!!!1
Yes, but I could use local tiles instead, those will still remain static to every player. I always prefer searching for tiles as opposed to NPCs/Objects.
Very nice work Nava2, I'll definitely use your final revision and do a little editing here and there, as I think there's a couple things I could improve on my part. What you did with the regions and room walking looks top-notch.
"IntToBox".... Why didn't I think of that? It's embarrassing spending so much time to try and make things as neat as possible, then someone comes along and gets the same result for a fraction of the lines. Also, about the 2-line indention, that's just my signature style.
Current projects:
[ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]
"I won't fall in your gravity. Open your eyes,
you're the Earth and I'm the sky..."
Progress Report:=-=-=-=-=-= Catacomber 1.0 by Flight =-=-=-=-=-= Time Running: 15 Hours, 19 Minutes and 9 Seconds Attack XP: 0 Strength XP: 132469 Defence XP: 0 Constitution XP: 44156 Ranged XP: 0 Deaths: 14 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Do i win longest? Oh and its still going
Lol bolshak25, that's great! I think you'll like V1.1. The path-generating was re-done, and wonderfully I might add, by Nava2. He also cleaned up my sloppy box regions. On top of that, I threw in Home's AdjustTile, sped of fighting slightly (and I noticed an approx. increase of 21-25% in XP/Hour), and added what should prove to be a more stable way of lost detection and home teleporting. I think I'll just put the quest part of the script on hold and release V.1.1 as it is now.
Current projects:
[ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]
"I won't fall in your gravity. Open your eyes,
you're the Earth and I'm the sky..."
Speaking of lost detection, you should add a wait in the walking, because when it goes from dead to the catacombs, sometimes itll tele home when its right there because it failed to walk 20 times. small wait should fix it because itll be called 20 times. and maybe have it write your levels on smart? because tight now id love to know my str lvl and hp
Lol just disable smart, check your stats, and re-enable it. It shouldn't effect the script. You're bound to have some really high levels now.
Also, since I decided against finishing the quest portion, you can do whatever you want with those first 2 accounts of the list you sent me, I obviously won't be needing them. It's only the first 2 that I used, and they're both at the same stage of the script, go ahead and finish it on them if you'd like.
Current projects:
[ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]
"I won't fall in your gravity. Open your eyes,
you're the Earth and I'm the sky..."
i just hit 57 str and 49 hp. loving the script. ill probably finish with them then have them start abusing this script as well
plsplsplsplspls add those features I suggested so I can run this on my huge army
Send SMS messages using Simba
Please do not send me a PM asking for help; I will not be able to help you! Post in a relevant thread or make your own! And always remember to search first!
Yeah I think I'm gonna pass on the quest part. I'm taking a small break from scripting at the moment, and when that's over I have a bigger project on my hands, I'm sorry Harry.
Although in the newest version I did add the procedure to start the quest (all the talking, ect..), it's included in the script, so if you'd like to take it from there then by all means do so.
Current projects:
[ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]
"I won't fall in your gravity. Open your eyes,
you're the Earth and I'm the sky..."
You underestimate my laziness Oh well.
Send SMS messages using Simba
Please do not send me a PM asking for help; I will not be able to help you! Post in a relevant thread or make your own! And always remember to search first!
runes, bronze arrows, fishing bait, and feathers are about it
*"dieing" should be dying
Love the concept; I'd been using the fast fighter at the skoblins for a while. Good job Rep++.
---- Kanah ----
“If God did not exist then surely man would create him" - Voltiare
Hey nice script. I love the efficient combat system. But I noticed some minor problems that you could fix for the next update.
- If your character dies, when it respawns it can't re-equip the items because the uptext is not clearly visible sometimes due to adbots spamming websites. The mouse just keeps hovering on the equipment. This can be solved by equipping the items inside the catacomb.
- It randomly picks up items, probably due to misclicks. If it picks up weapons, it falls into an endless loop trying to equip them. For example, I was training with kayle's sling. It randomly picked up an oak shortbow. After I died, it equipped the shortbow and the sling went in the inventory. Then it re-equipped the sling and the shortbow went in the inventory, this went on in a endless loop. Luckily I was there to drop the shortbow. That's very bannable if someone stands in one place for hours equipping and re-equipping items. You should add a failsafe there. Maybe have it check inventory randomly and drop any items that might be there.
Again you have a very nice script. Wish there were higher level monsters though...
Edit: Also it will be fantastic if make the script pick up arrows and equip them (if they are the same as the equiped arrows).
Edit2: Two nice proggies
Code:=-=-=-=-=-= Catacomber 1.1 by Flight =-=-=-=-=-= Time Running: 5 Hours, 9 Minutes and 27 Seconds Attack XP: 0 Strength XP: 0 Defence XP: 0 Constitution XP: 22817 Ranged XP: 69087 Deaths: 0 Breaks: 2 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=Code:=-=-=-=-=-= Catacomber 1.1 by Flight =-=-=-=-=-= Time Running: 8 Hours, 1 Minutes and 45 Seconds Attack XP: 0 Strength XP: 127510 Defence XP: 0 Constitution XP: 42281 Ranged XP: 0 Deaths: 0 Breaks: 3 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Last edited by FEAR; 08-31-2011 at 08:49 AM.
Nice reports there, FEAR.
Yes about the misclicking and picking up items I noticed it as well. I made some proto-type junk-dropper for it. I made it right before I left a few days back so I don't remember if it was successful or not.
I think I could do a new version (if the junk-dropper works ok) with optional stackables collecting.
Current projects:
[ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]
"I won't fall in your gravity. Open your eyes,
you're the Earth and I'm the sky..."
And equipping the arrows which can be set by the user. That will make the scrip run longer for rangers. Also could you make the FightRegion selection for individual players? I have a lot of accounts with very different combat levels so it would be great if I could select which part of the catacomb each account will go to.
There are currently 1 users browsing this thread. (0 members and 1 guests)