SRL Archive - Reflection

[Reflection 2] Ogre Killer


Wizkid

2011-07-23 21:37:37

Ogre killer v0.2

Uses reflection 2 + SRL

Made it as human as possible.
Runs flawless from my testing :)
Please test, and give feedback!

Some features are
- Telegrabbing for seeds
- Fast switching between ogres(hovers a new ogre waiting for the current one to die)
- Form(saves all info to an .ini file)
- Single player only
- Switches world if one gets too crowded
- Detailed progress report

Inspired from the Ogre script used at RsBuddy :o

~ Wizkid

Progress report looks like this

[===========================]
[ OgreKiller 0.2 ]
[ by Wizkid ]
[===========================]
[ Time Running : 16M 36S ]
[ Start Level : 85 ]
[ Start XP : 3384902 ]
[ Gained Level(S) : 0 ]
[ Gained XP : 8602 ]
[ XP To Level : 204288 ]
[ XP/H : 31091 ]
[ World Switches : 0 ]
[===========================]
[ OgreKiller 0.2 ]
[===========================]


program OgreKiller;
{$DEFINE SMART}
{$i srl\srl.scar}
{$i reflection\reflection.simba}
{$i srl\srl\skill\magic.scar}
{$i srl\srl\misc\reports.scar}

var
Form: TVariantArray;
MyForm : TForm;
Edits: Array [0..2] of TEdit;
List: TComboBox;
CBoxs: Array [0..1] of TCheckBox;
SArr: TStringArray;
BArr: TBooleanArray;
Terminate: Boolean;

Const
i_StartExp = 0;
i_CurExp = 1;
i_xpHour = 2;
i_xpToLvl = 3;
i_CurLvl = 5;
i_StartLvl = 6;
i_WorldSwitches = 7;

procedure OnStart(Sender : TObject);
var
Run: Boolean;
begin;
Run := True;

If Lowercase(List.Text) = 'lampskill' then
begin
Run := False;
Writeln('Choose a lampskill!');
end;

If (Edits[0].Text = '')or(Edits[1].Text = '')or(Edits[0].Text = 'Username')or(Edits[1].Text = 'Password')or(Edits[2].Text = 'World') then
begin
Run := False;
Writeln('Please fill in the form correctly!');
end;

If Run then
begin
SArr := [Edits[0].Text, Edits[1].Text, Edits[2].Text, List.Text];
BArr := [CBoxs[0].Checked, CBoxs[1].Checked];

WriteINI('userinfo', 'user', SArr[0], ScriptPath + 'wizform.ini');
WriteINI('userinfo', 'pass', SArr[1], ScriptPath + 'wizform.ini');

WriteINI('otherinfo', 'lampskill', SArr[3], ScriptPath + 'wizform.ini');

WriteINI('smartinfo', 'world', SArr[2], ScriptPath + 'wizform.ini');
WriteINI('smartinfo', 'member', BoolToStr(CBoxs[0].Checked), ScriptPath + 'wizform.ini');
WriteINI('smartinfo', 'signed', BoolToStr(CBoxs[1].Checked), ScriptPath + 'wizform.ini');

MyForm.ModalResult:= mrOk;
end;
end;

procedure OnExit(Sender : TObject);
begin;
MyForm.ModalResult:= mrOk;
Terminate := True;
end;

function FormInit: Boolean;
var
Button: Array [0..1] of TButton;
I: Integer;
tSArr: TStringArray;
begin;
Result := false;
MyForm := TForm.Create(nil);
MyForm.Width := 150;
MyForm.Height := 240;
MyForm.BorderStyle := bsSingle;
MyForm.Color := clWhite;
MyForm.Position := poDesktopCenter;

For I:=0 to 2 do
begin
Edits[I] := TEdit.Create(MyForm);
Edits[I].Parent := MyForm;
end;

For I:=0 to 1 do
Edits[I].SetBounds(20, 10+(I*35), 105, 30);

Edits[2].SetBounds(20, 90, 105, 30);
Edits[1].PasswordChar := '*';

List := TComboBox.Create(MyForm);
List.Parent := MyForm;
List.SetBounds(20, 180, 105, 25);
tSArr := ['Lampskill', 'Attack', 'Strength', 'Defence', 'Range', 'Magic', 'Hitpoints',
'Prayer', 'runecrafting', 'Agility', 'Herblore', 'Theiving', 'Crafting',
'Fletching', 'Slayer', 'Mining', 'Smithing', 'Fishing', 'Cooking',
'Firemaking', 'Woodcutting', 'Farming', 'Construction', 'Hunter', 'Summoning'];
For I:=0 to High(tSArr)do
List.ITEMS.Add(tSArr[I]);

For I:=0 to 1 do
begin
CBoxs[I] := TCheckBox.Create(MyForm);
CBoxs[I].Parent := MyForm;
CBoxs[I].SetBounds(32, 115+(22*I), 25, 25);
end;
CBoxs[0].Caption := 'Members';
CBoxs[1].Caption := 'Signed';

For I:=0 to 1 do
begin
Button[I] := TButton.Create(MyForm);
Button[I].Parent := MyForm;
Button[I].SetBounds(25+(I*50), 213, 50, 25);
end;

Button[0].OnClick := @OnStart;
Button[0].Caption := 'Start';
Button[1].OnClick := @OnExit;
Button[1].Caption := 'Exit';

If ReadINI('userinfo', 'user', ScriptPath + 'wizform.ini') = '' then
begin
Edits[0].Caption := 'Username';
Edits[1].Caption := 'Password';
Edits[2].Caption := 'World';
List.Caption := 'Lampskill';
end else
begin
Edits[0].Caption := ReadINI('userinfo', 'user', ScriptPath + 'wizform.ini');
Edits[1].Caption := ReadINI('userinfo', 'pass', ScriptPath + 'wizform.ini');
Edits[2].Caption := ReadINI('smartinfo', 'world', ScriptPath + 'wizform.ini');
List.Caption := ReadINI('otherinfo', 'lampskill', ScriptPath + 'wizform.ini');

CBoxs[0].Checked := (ReadINI('smartinfo', 'member', ScriptPath + 'wizform.ini') = 'True');
CBoxs[1].Checked := (ReadINI('smartinfo', 'signed', ScriptPath + 'wizform.ini') = 'True');
end;

MyForm.ShowModal;
MyForm.Free;
end;

Procedure ShowForm;
begin
ThreadSafeCall('FormInit', Form);
end;

Procedure Setup;
begin
HowManyPlayers:= 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

Players[0].Name := SArr[0];
Players[0].Pass := SArr[1];
Players[0].Active := True;

LampSkill := SArr[3];
end;

Function InArea: Boolean;
begin
Result := R_SelfInBox(IntToBox(2521, 3374, 2533, 3369));
end;

Procedure SwitchOgreWorld;
begin
ChangeWorld(RandomWorld(True, False));
Inc(Players[0].Integers[i_WorldSwitches]);
end;

Function IsCannonUp: Boolean;
var
Obj: TRSObject;
begin
Result := R_FindObject(6, OBJ_INTERACTABLE, 9, Obj);
end;

Procedure DealWithCannon;
begin
If IsCannonUp then
SwitchOgreWorld;
end;

Procedure Telegrab;
var
gItems: TGroundItemArray;
ItemIDs: TIntegerArray;
ItemNames: TStringArray;
I, H, Index: Integer;
P: TPoint;
begin
gItems := R_GetAllGroundItems(7);

If GetArrayLength(gItems) = 0 then
Exit;

ItemIDs := [987, 985, 5304, 5300, 5303, 5302, 5295];
ItemNames := ['Loop half', 'Tooth half', 'Torstol seed', 'Snapdragon seed', 'Dwarf weed seed', 'Lantadyme seed', 'Ranarr seed'];

H := High(gItems);
For I:=0 to H do
If InIntArrayEx(ItemIDs, Index, gItems[I].ID)then
begin
P := R_TileToMS(gItems[I].Tile, 0);

If Not Cast('telekinetic grab', False)then
Continue;

Mouse(P.X, P.Y, 2, 2, False);
WaitOption('-> ' + ItemNames[Index], 150+Random(140));
Wait(900+Random(1400));
end;

end;

Function Ranging: Boolean;
var
NPC: TNPC;
P: TPoint;
T: Integer;
begin
T := GetSystemTime + 2567;
repeat
wait(66)
if (R_GetAnimation > -1)then
Result := true;

until Result or (GetSystemTime > T);

end;

Function FindOgre(Hover: Boolean): Boolean;
var
NPCs: TNPCArray;
NPC: TNPC;
I: Integer;
P: TPoint;
begin
If Not LoggedIn then
Exit;

NPCs := R_GetNPCs('Ogre', False);
If (GetArrayLength(NPCs) = 0) then
Exit;

If (R_AreWeInteracting(NPC, False)and(Not Hover))then
P := R_TileToMSEx(NPC.Tile, 0, 0, 100+Random(400))
else
For I:=0 to High(NPCs)do
If (NPCs[I].HPRatio = 0)And(NPCs[I].Animation = -1) then
begin
P := R_TileToMSEx(NPCs[I].Tile, 0, 0, 100+Random(400));

Break;
end;

If (InRange(P.X, -5, 5))then
begin
MakeCompass(Random(361));
Exit;
end;

Mouse(P.X, P.Y, 7, 7, False);

If Not Hover then
Result := ChooseOption('ttack')
else
Result := R_MMouseMenu(['ttack']);

If Result then
Exit;
end;

Procedure AntiBan;
begin
If Not LoggedIn then
Exit;

Case Random(100)of
0: SleepAndMoveMouse(1000+Random(4000));
6..11: MakeCompass(Random(360));
12: GameTab(tab_Inv);
13..16: GameTab(tab_Stats);
end;
end;

Procedure FindFight;
var
I, iTime: Integer;
begin
Repeat
Inc(I);
Wait(100+Random(100));
Until(Not LoggedIn)or(I > 9)or(FindOgre(False));

iTime := GetSystemTime;
Repeat
Wait(100+Random(100));
If TimeFromMark(iTime) > 2800 then
Break;
Until(Ranging);
end;

Procedure WaitRanging;
var
Hover, ShouldHover: Boolean;
HPForHover, iTime: Integer;
NPC: TNPC;
begin
If Random(3) = 0 then
begin
HPForHover := 4+Random(8);
ShouldHover := True;
end;

Repeat
If ShouldHover then
If Not Hover then
If R_AreWeInteracting(NPC, False)then
If (NPC.HPRatio < 4+Random(20)) then
Hover := FindOgre(True);

If (Hover) then
begin
R_AreWeInteracting(NPC, False)
If NPC.HPRatio = 0 then
If WaitOption('ttack', 200+Random(50))then
begin
Hover := False;
HPForHover := 0;
If Random(3) = 0 then
begin
HPForHover := 4+Random(8);
ShouldHover := True;
end;

iTime := GetSystemTime;
Wait(4000+Random(2000));
end;
end;

Telegrab;

If Not Hover then
AntiBan;

If Not InArea then
R_FindRandoms;

ClickToContinue;
Until(Not Ranging);

If Hover then
If WaitOption('ttack', 200+Random(50))then
begin
Wait(2000+Random(1000));
WaitRanging;
end;


end;

Procedure PlayersAround;
var
OtherPlayers: array of TPlayer;
begin
OtherPlayers := R_GetAllPlayers;
If (Length(OtherPlayers) > 3)then
SwitchOgreWorld;
end;

Procedure SetupPlayer;
begin
SetAngle(True);
GameTab(tab_Inv);
If Not Players[0].Booleans[0] then
begin
Players[0].Booleans[0] := True;

Players[0].Integers[i_StartExp] := R_GetSkillExp(SKILL_Range);
Players[0].Integers[i_StartLvl] := R_GetSkillLevel(SKILL_Range);
end;
end;

Procedure Report;
var
I: Integer;
begin
Players[0].Integers[i_CurLvl] := R_GetSkillLevel(SKILL_Range);
Players[0].Integers[i_CurExp] := R_GetSkillExp(SKILL_Range);
Players[0].Integers[i_xpToLvl] := R_GetSkillExpToLevel(SKILL_Range);
Players[0].Integers[i_XpHour] := Round(((Players[CurrentPlayer].Integers[i_CurExp] - Players[CurrentPlayer].Integers[i_StartExp]) * 3600) div (GetTimeRunning div 1000));

SRLProgressReport(ResultDebugBox, 'OgreKiller', 'Wizkid', '0.2',
['Time running',
'Start level',
'Start XP',
'Gained level(s)',
'Gained XP',
'XP To level',
'XP/h',
'World switches'],
[MsToTime(GetTimeRunning, Time_Short),
Players[0].Integers[i_StartLvl],
Players[0].Integers[i_StartExp],
Players[0].Integers[i_CurLvl] - Players[0].Integers[i_StartLvl],
Players[0].Integers[i_CurExp] - Players[0].Integers[i_StartExp],
Players[0].Integers[i_xpToLvl],
Players[0].Integers[i_xpHour],
Players[0].Integers[i_WorldSwitches]]);
end;

begin
ShowForm;
If Terminate then
TerminateScript;

SMART_Members := BArr[0];
SMART_Server := StrToIntDef(SArr[2], -1);
SMART_Signed := BArr[1];

{Setup}
SetupSRL;
Setup;

If Not LoggedIn then {Make sure we login}
begin
LoginPlayerToLob;
ChangeWorld(RandomWorld(True, False));
end;



SetupPlayer;
Repeat
ClearDebug;
Report;

If Not LoggedIn then
begin
Writeln('Not LoggedIn');
NextPlayer(False);
SetupPlayer;
end;

PlayersAround;
DealWithCannon;
Telegrab;

If Not InArea then
begin
Writeln('Not in area!');
If Not R_TileOnMM(Point(2527, 3371))then
If Not r_FindRandoms then
LogOut;

end else
begin
FindFight;

If Ranging then
WaitRanging;
end;

Until(AllPlayersInactive);
end.

Flight

2011-07-23 21:53:53

Looks pretty cool I think. :) I can see lately from your activity you're pretty familiar with TForms. Way to go.

bgxsaer

2011-07-23 22:14:20

This looks like sex, will test it out and give you feedback when i get the chance!

Smarter Child

2011-07-23 23:49:58

Looking good, try color next?

Wizkid

2011-07-24 06:56:57

I don't see the use of color in this particular script.

Both NPC + Object(Cannon finding part) + Grounditems is better with reflection? That's how I've been told :(
If it's incorrect then please correct me!

~ Wizkid

BraK

2011-07-24 07:02:07

Color is harder to program the logic but it'll last through all the updates to runescape. Reflection Easy to use but you have to wait for Hooks to be updated after each update. Congrats on your first script release. Keep up the good work.

*Want some free money? Check my Sig for the Chance to Enter and Win up to 30M Million RSGP

~BraK

onilika

2011-07-24 07:16:34

Here is the future SRL member! Keep going mate!
ps: hope next time it's me :p

Flight

2011-07-24 08:54:49

From: Wizkid
I don't see the use of color in this particular script.

Both NPC + Object(Cannon finding part) + Grounditems is better with reflection? That's how I've been told :(
If it's incorrect then please correct me!

~ Wizkid


I agree with you in this. For this particular script, you're right, reflection or nothing. But when they request something done in color, I don't think they're referring to just this script, rather than the next project/script you work on has an extensive use of color. ;)

Color is in no way required for scripts, but having even a basic knowledge widens all that you can do while using both SRL and Reflection to the fullest.

Wizkid

2011-07-24 09:28:41

Updated!

A LOT faster, progress report and a new hover features!

v0.2 edited in, test it and see :)

~ Wizkid

Gu3st...

2011-07-24 12:56:02

Very nice Wizkid :)
I'm liking what I've seen from you laterly ;)

Home

2011-07-25 17:06:58

Looking good mate :)
I like your scripting style.. Simple but yet effective. Keep it up!

~Home

Simtoon

2011-07-25 18:30:08

I'm just saying this looks a bit like N1kes Ogre ranger he sent me this a while ago.

I know somethings are different but i just wanted to know if you got part of it from him.


program Template;
{$DEFINE SMART}
{$i srl\srl.scar}
{$i reflection\reflection.simba}
{$i srl\srl\misc\paintsmart.scar}
{$i srl\srl\misc\findxp.scar}

Const
WORLD = 32;
MEMBERS = False;
SIGNED = True;
ANTIBAN_Rate = 100;

procedure DeclarePlayers;
begin
HowManyPlayers:= 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active := True;

end;

Const
ScriptV = '0.2';
ScriptName = 'Ogre Ranger';

{Script array declarifications}
{info: b_ = boolean i_ = integer s_ = string}
b_VarsSet = 0;

i_StartExp = 0;
i_CurExp = 1;
i_xpHour = 2;
i_xpToLvl = 3;
i_CurLvl = 5;
i_StartLvl = 6;
i_WorldSwitches = 7;


var
d_LineIs, CurPlayerTime: Integer;
BreakRounds, TotalBreaks: Integer;

Const
d_More = 2;
d_Less = -2;
d_None = 0;

Procedure Debug(Text, Subject: String; SpaceIs: Integer);
var
S: String;
I: Integer;
begin
d_LineIs := (d_LineIs + SpaceIs);

For I:=1 to d_LineIs do
S := S + ' ';

S := S + '[' + MSToTime(GetTimeRunning, Time_Short) + '] Func ' + Subject + ' / ' + Text;
Writeln(S);
end;

Procedure UpdateExpCanvas;
var
I: Integer;
SArr: TStringArray;
begin
Players[CurrentPlayer].Integers[i_CurExp] := SmartGetFieldArrayInt(0, hook_static_GetSkillExperiences, 4);
Players[CurrentPlayer].Integers[i_CurLvl] := ConvertXpToLvl(Players[CurrentPlayer].Integers[i_CurExp]);

I := Players[CurrentPlayer].Integers[i_CurExp] - Players[CurrentPlayer].Integers[i_StartExp];
Players[CurrentPlayer].Integers[i_XpHour] := Round((I * 3600) div ((GetTimeRunning-PlayerCurTime) div 1000));

Players[CurrentPlayer].Integers[i_xpToLvl] := (ConvertLvlToXP(Players[CurrentPlayer].Integers[i_CurLvl]) - Players[CurrentPlayer].Integers[i_CurExp]);

SArr := ['Start EXP: ' + ToStr(Players[CurrentPlayer].Integers[i_StartExp]) + ' (Level: ' + ToStr(Players[CurrentPlayer].Integers[i_StartLvl]) + ')',
'Current Exp: ' + ToStr(Players[CurrentPlayer].Integers[i_CurExp]) + ' (Level: ' + ToStr(Players[CurrentPlayer].Integers[i_CurLvl]) + ')',
'Gained EXP: ' + ToStr(I),
'XP to lvl: ' + ToStr(Players[CurrentPlayer].Integers[i_xpToLvl]),
'XP/H: ' + ToStr(Players[CurrentPlayer].Integers[i_XpHour])];

SMART_DrawTextEx(True, 0, 0, SmallChars, '', 0);
For I:=0 to High(SArr)do
SMART_DrawTextEx(False, 11, 45+(I*12), SmallChars, SArr[I], clYellow);
end;

Procedure Report;
var
I, t: Integer;
begin
ClearDebug;


t := SmartGetFieldArrayInt(0, hook_static_GetSkillExperiences, 4);
If (t > 0)then
Players[CurrentPlayer].Integers[i_CurExp] := t;

Writeln('Time: ' + TimeRunning);
Writeln('');
For I:=0 to HowManyPlayers-1 do
Writeln(' #' + ToStr(I) +
' - ' + Players[I].Nick +
' - Active: ' + ToStr(Players[I].Active) +
' - Range Exp: ' + ToStr(Players[I].Integers[i_CurExp] - Players[I].Integers[i_StartExp]) +
' - Exp/h: ' + ToStr(Players[CurrentPlayer].Integers[i_XpHour]) +
' - XP to lvl: ' + ToStr(Players[CurrentPlayer].Integers[i_xpToLvl]) +
' - World hops: ' + ToStr(Players[CurrentPlayer].Integers[i_WorldSwitches]));

end;

Function InArea: Boolean;
begin
Result := PointInBox(TileToPoint(GetMyPos), IntToBox(2521, 3369, 2533, 3374));
end;

Function IsCannonUp: Boolean;
var
Obj: TRSObject;
begin
Obj := GetObjectByID(6, OBJECT_TYPE_INTERACTABLE, 9);
Result := (Obj.ID = 6);
end;

Procedure DealWithCannon;
begin
If IsCannonUp then
begin
Debug('Cannon found', 'IsCannonUp', d_More);
Debug('Changing world', 'ChangeWorld', d_Less);
ChangeWorld(RandomWorld(True, False));
Inc(Players[CurrentPlayer].Integers[i_WorldSwitches]);
end;
end;

Function Ranging: Boolean;
var
NPC: TNPC;
begin
If AreWeInteracting(NPC) then
Result := (NPC.Name = 'Ogre');
end;

Function FindOgre: Boolean;
var
NPCs: TNPCArray;
I: Integer;
P: TPoint;
begin
If Not LoggedIn then
Exit;

NPCs := GetNPCs('Ogre');
If (GetArrayLength(NPCs) = 0) then
Exit;

For I:=0 to High(NPCs)do
If (NPCs[I].HPRatio = 0)And(NPCs[I].Animation = -1) then
begin
P := TileToMSEx(NPCs[I].Tile, 0, 0, 100+Random(400));

If (InRange(P.X, -5, 5))then
Continue;

Mouse(P.X, P.Y, 7, 7, False);

Result := ChooseOption('ttack');
If Result then
Exit;
end;
end;

Procedure AntiBan;
begin
If Not LoggedIn then
Exit;

Case Random(ANTIBAN_Rate)of
0: SleepAndMoveMouse(1000+Random(4000));
6..11: MakeCompass(Random(360));
12: GameTab(tab_Inv);
13..16: GameTab(tab_Stats);
end;
end;

Procedure FindFight;
var
I, iTime: Integer;
begin
Repeat
Inc(I);
Wait(400+Random(400));
Until(Not LoggedIn)or(I > 9)or(FindOgre);

iTime := GetSystemTime;
Repeat
Wait(100+Random(100));
If TimeFromMark(iTime) > 5000 then
Break;
Until(Ranging);
end;

Procedure WaitRanging;
begin
Repeat
Wait(250+Random(200));
AntiBan;

If Not InArea then
R_FindRandoms;
ClickToContinue;
Until(Not Ranging)or(Not LoggedIn);
UpdateExpCanvas;

If (Random(10) = 0)then
Wait(1000+Random(2000));
end;

{*******************************************************************************
function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
By: Echo_
Description: Takes brakes according to the minute values entered
*******************************************************************************}
function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
var
w, x, y, z: Integer;
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
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then
Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
Debug('Taking a break for about ' + IntToStr(BreakFor) + ' minutes.', 'BreakHandler', d_None);
Logout;
Wait((x) + (z));

LoginPlayerToLob;
ChangeWorld(RandomWorld(True, False));
Inc(Players[CurrentPlayer].Integers[i_WorldSwitches]);

Result := LoggedIn;
FindNormalRandoms;
IncEx(BreakRounds, (w) + (x));
IncEx(TotalBreaks, 1);
Debug('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.', 'BreakHandler', d_None);
end;

if (HowManyPlayers > 1) then
if (GetTimeRunning < ((w) + (y) + BreakRounds))then
Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
Debug('Switching players', 'BreakHandler', d_None);
Logout;
IncEx(BreakRounds, (w));
IncEx(TotalBreaks, 1);
NextPlayer(True);
Exit;
end;

end;

Procedure NewPlayer;
begin
d_LineIs := 0;
Debug('New player is ' + Players[CurrentPlayer].Name, 'NewPlayer', d_None);

Debug('Setting the Z Angle to highest', 'SetAngle(True);', d_None);
SetAngle(True);

Debug('Switching tab to inventory', 'GameTab(tab_Inv);', d_None);
GameTab(tab_Inv);

CurPlayerTime := GetTimeRunning;

If Not Players[CurrentPlayer].Booleans[b_VarsSet] then
begin
Debug('Variables are not set for this player(' + Players[CurrentPlayer].Name + ')', 'Variables', d_More);

Debug('Fetching start ranging EXP', 'SmartGetFieldArrayInt', d_None);
Players[CurrentPlayer].Integers[i_StartExp] := SmartGetFieldArrayInt(0, hook_static_GetSkillExperiences, 4);
Players[CurrentPlayer].Integers[i_StartLvl] := ConvertXpToLvl(Players[CurrentPlayer].Integers[i_StartExp]);
Debug('Start xp: ' + IntToStr(Players[CurrentPlayer].Integers[i_StartExp]) + ' / Lvl: ' + IntToStr(Players[CurrentPlayer].Integers[i_StartLvl]), 'NewPlayer', d_None);

Debug('set!', 'Variables', d_Less);
end;

end;

begin
{Sets the SMART vars using the given constants}
Smart_Members := MEMBERS;
Smart_Server := WORLD;
Smart_Signed := SIGNED;

{Setup SRL/Reflection}
SetupSRL;
SetupReflectionEx(False);

{Declare the players and clear the debug}
DeclarePlayers;
ClearDebug;

If Not LoggedIn then {Make sure we login}
begin
LoginPlayerToLob;
ChangeWorld(RandomWorld(True, False));
Inc(Players[CurrentPlayer].Integers[i_WorldSwitches]);
end;

NewPlayer; {Setup our new fresh player}
Repeat
If Not LoggedIn then
begin
Debug('P: ' + Players[CurrentPlayer].Name, 'Not LoggedIn', d_More);
Debug('Player is now inactive', 'Not LoggedIn', d_None);
Debug('NextPlayer(False);', 'Not LoggedIn', d_None);
NextPlayer(False);
Debug('Solved', 'Not LoggedIn', d_Less);
NewPlayer;
end;

If PlayersActive = 1 then
BreakHandler(440, 200, 200, 200)
else
BreakHandler(100, 0, 100, 0);

DealWithCannon;

If Not InArea then
begin

If Not TileOnMM(Tile(2527, 3371))then
begin
Debug('Not in area', 'InArea', d_None);

If Not r_FindRandoms then
begin
Debug('Lost', 'InArea', d_None);
LogOut;
end;
end;

end else
begin
FindFight;

If LoggedIn then
WaitRanging;
end;

Report;
Until(AllPlayersInactive);
Debug('All players are inactive', 'Until(AllPlayersInactive);', d_More);

Writeln('');
Writeln('');
Writeln('');
Writeln('');
Report;
Writeln('');
Writeln('');
Writeln('Thanks for using ' + ScriptName + ' ' + ScriptV);
end.

BraK

2011-07-26 09:54:40

Here's the comparison :(

http://paste.villavu.com/compare/892/891/

~BraK

Simtoon

2011-07-26 10:09:29

From: BraK
Here's the comparison :(

http://paste.villavu.com/compare/892/891/

~BraK


We already did that on IRC :P

Wizkid

2011-07-26 10:58:34

I bought his scripts for an account, therefor I used one of them for inspiration for my own!
Sorry if that's not allowed :(

~ Wizkid

Flight

2011-07-26 11:20:00

N1ke sold scripts to you? This is forbidden to begin with. I'm losing respect for him quite rapidly.

Simtoon

2011-07-26 11:21:41

From: Flight
N1ke sold scripts to you? This is forbidden to begin with. I'm losing respect for him quite rapidly.


It's not FORBIDDEN

Coh3n

2011-07-26 11:56:26

It's against the rules of SRL forums. If he did it outside the forums, there's not a whole lot we can do. He's banned anyway and always will be.

Home

2011-07-26 13:04:36

From: Wizkid
I bought his scripts for an account, therefor I used one of them for inspiration for my own!
Sorry if that's not allowed :(

~ Wizkid


I hope that you didn't pay much..

~Home

Wizkid

2011-07-26 15:23:44

From: Home
I hope that you didn't pay much..

~Home


I gave him an old account for it nothing of value of me!

~ Wizkid

litoris

2011-07-26 15:36:20

From: Wizkid
I gave him an old account for it nothing of value of me!

~ Wizkid


Still, you "bought" something that everyone already had access to?

josh81193

2011-07-28 01:31:44

I'm assuming the script is outdated since it hasn't been updated since Runescape updated? Would be nice to try this. :p

Bebe

2011-07-28 01:34:08

It shouldn't bee out of date as long as drags(?) updated the hooks for Reflection 2

Flight

2011-07-28 01:59:15

The animation was all re-done and pyroryan has already adjusted with this update and modified R2 to correctly handle the new animation. Get the newest R2 and try it, because I haven't tried it since then either.

Coh3n

2011-07-28 10:17:55

From: Bebe
It shouldn't bee out of date as long as drags(?) updated the hooks for Reflection 2
*pyroryan ;)

Bebe

2011-07-28 10:22:39

I knew it was one of those two :p

Wizkid

2011-07-28 19:44:48

It should work when the hooks is up again! :)

Thinking about adding potion drinking and aura activation!

~ Wizkid

pyroryan

2011-07-28 19:47:38

From: Wizkid
It should work when the hooks is up again! :)

Thinking about adding potion drinking and aura activation!

~ Wizkid


http://villavu.com/forum/showthread.php?p=822749#post822749
They have been up.