Wizkid
2011-07-24 13:16:25
How Long have You Played Runescape?
2 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
A guy at RSBuddy posted about this place!
What is your general programming knowledge?
Some Delphi, long time ago!
Are you a member of any other communities?
RsBuddy, RsBot
Tell us about yourself…
Please show us one (or multiple) of your scripts.
2 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
A guy at RSBuddy posted about this place!
What is your general programming knowledge?
Some Delphi, long time ago!
Are you a member of any other communities?
RsBuddy, RsBot
Tell us about yourself…
From: Wizkid
I'm Wizkid, I play chess and fool around with computer most of my spare time. For the last 4-6 months I've been around different runescape botting sites looking for scripts!
Got sick of RsBot when I was banned for asking questions, so I left to RsBuddy. Over at RsBuddy it feels like a sinking ship, it's all about $. Then I saw more and more posts about villavu, one user called Overtime(I think?).
So I started look into your include, as I figured your code looks somewhat like delphi I thought I give it a try.
From here I started to read up on your tutorials, which amazed me a bit, big amounts of tutorials compared to other communities!! and fast answers here on the forums.
I made two reflection scripts using reflection 2 and SRL. One is a ogre killer and the other is a stun alcher. I've been reading through both includes.
I would use multiplayer in my scripts, but I only have one account :(
However, I added a simple template which uses multiplayer!
Please show us one (or multiple) of your scripts.
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.
program Stunalcher;
{$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..3] of TEdit;
List: TComboBox;
CBoxs: Array [0..1] of TCheckBox;
SArr: TStringArray;
BArr: TBooleanArray;
Terminate: Boolean;
NPCName: String;
Const
i_StartExp = 0;
i_CurExp = 1;
i_xpHour = 2;
i_xpToLvl = 3;
i_CurLvl = 5;
i_StartLvl = 6;
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')or(Edits[3].Text = '')or
(Edits[3].Text = 'NPC Name')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, Edits[3].Text];
BArr := [CBoxs[0].Checked, CBoxs[1].Checked];
NPCName := SArr[4];
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('otherinfo', 'npcname', SArr[4], 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 := 290;
MyForm.BorderStyle := bsSingle;
MyForm.Color := clWhite;
MyForm.Position := poDesktopCenter;
For I:=0 to 3 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[3].SetBounds(20, 130+(3*35), 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), 263, 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';
Edits[3].Caption := 'NPC Name';
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');
Edits[3].Caption := ReadINI('otherinfo', 'npcname', 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;
Procedure SetSpellbook;
begin
SetSpellMode(True, False, True, False);
end;
Procedure AntiBan;
begin
If Not LoggedIn then
Exit;
Case Random(100)of
0: SleepAndMoveMouse(1000+Random(4000));
6..11: MakeCompass(Random(360));
12:
begin
GameTab(tab_Inv);
Wait(200+Random(1000));
GameTab(tab_Magic);
end;
13..16:
begin
GameTab(tab_Stats);
Wait(200+Random(1000));
GameTab(tab_Magic);
end;
end;
end;
Function SelectStun: Boolean;
var
iTime: Integer;
begin
MarkTime(iTime);
Result := GetCurrentTab = tab_Magic;
If Not Result then
Repeat
Wait(100+Random(150));
If (TimeFromMark(iTime) > 7000)then
begin
Result := GameTab(tab_Magic);
Break;
end;
until(GetCurrentTab = tab_Magic);
If Result then
MouseBox(589, 341, 603, 354, 1);
end;
Function CastStun: Boolean;
var
NPC: TNPC;
P: TPoint;
begin
If Not LoggedIn then
Exit;
If R_FindNPC(NPCName, False, NPC)then
begin
While Not GetCurrentTab = Tab_Magic do
Wait(100+Random(100));
If Not SelectStun then
begin
R_FindRandoms;
Exit;
end;
P := R_TileToMS(NPC.Tile, Round(NPC.Height div 2));
MMouse(P.X, P.Y, 2, 2);
If R_WaitUpText(NPCName, 200+Random(100))then
begin
GetMousePos(P.X, P.Y);
Mouse(P.X, P.Y, 0, 0, True);
Result := True;
end;
end;
end;
Function StunAlch: Boolean;
var
P: TPoint;
begin
If Not LoggedIn then
Exit;
Result := CastStun;
If Result then
begin
MouseBox(610, 292, 629, 307, 1);
Wait(20+Random(200));
GetMousePos(P.X, P.Y);
Mouse(P.X, P.Y, 0, 0, True);
Wait(250+Random(200));
end;
end;
Procedure SetupPlayer;
begin
SetAngle(True);
SetSpellbook;
GameTab(tab_Inv);
If Not Players[0].Booleans[0] then
begin
Players[0].Booleans[0] := True;
Players[0].Integers[i_StartExp] := R_GetSkillExp(SKILL_Magic);
Players[0].Integers[i_StartLvl] := R_GetSkillLevel(SKILL_Magic);
end;
end;
Procedure Report;
var
I: Integer;
begin
ClearDebug;
Players[0].Integers[i_CurLvl] := R_GetSkillLevel(SKILL_Magic);
Players[0].Integers[i_CurExp] := R_GetSkillExp(SKILL_Magic);
Players[0].Integers[i_xpToLvl] := R_GetSkillExpToLevel(SKILL_Magic);
Players[0].Integers[i_XpHour] := Round(((Players[CurrentPlayer].Integers[i_CurExp] - Players[CurrentPlayer].Integers[i_StartExp]) * 3600) div (GetTimeRunning div 1000));
SRLProgressReport(ResultDebugBox, 'StunAlcher', 'Wizkid', '0.1 BETA',
['Time running',
'Start level',
'Start XP',
'Gained level(s)',
'Gained XP',
'XP To level',
'XP/h'],
[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]]);
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
begin
Writeln('Please start loggedin and interacting with a NPC');
While Not LoggedIn do
Wait(1000);
end;
SetupPlayer;
Repeat
If Not LoggedIn then
begin
Writeln('Not LoggedIn');
NextPlayer(False);
SetupPlayer;
end;
Report;
StunAlch;
AntiBan;
R_FindRandoms;
Until(AllPlayersInactive);
end.
{
This script will go into the mainloop and if it random(10) = 0 then it'll
change player and leave the player inactive using NextPlayer(False).
the players type contain a lot more, but can easily be viewed in players.scar!
}
program Multiplayer;
{$DEFINE SMART}
{$i srl\srl.scar}
{$i reflection\reflection.simba}
procedure DeclarePlayers;
begin
HowManyPlayers:= 2;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active := True;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active := True;
end;
Procedure SetupNewPlayer;
begin
end;
begin
Smart_Members := True;
Smart_Server := 121;
Smart_Signed := True;
SetupSRL;
DeclarePlayers;
If Not LoggedIn then
LoginPlayer;
SetupNewPlayer;
Repeat
If (Not LoggedIn)or(Players[CurrentPlayer].Booleans[0]) then {If Not LoggedIn then}
begin
NextPlayer(False); {Switch player, make his active set to False}
SetupNewPlayer; {Setup our new fresh player}
end;
If (Random(11) = 0)then
Players[CurrentPlayer].Booleans[0] := True;
Until(AllPlayersInactive); {Until all the players are not functional, active = false}
end.