//Script name: CursedYOU v1.5
//Author: Cheetahnub
//Thanks to: The Scar Noob (helped me a lot with the first versions)
// Spaztaz666
//Description: ¤Casts Confuse, Weaken, Curse and Crumble Undead.
// ¤Has VERY good Anti-ban features
// ¤Does Anti-randoms
// ¤Has good failsafes
// ¤Has SRL-stats
// ¤Prints proggies
//Instructions: Wear items with the lowest possible mage attack bonus(Full iron, d vambs, no ammy)
// and take your account(s) to a place where you can farshoot monsters such as the
// prison in port sarim.
// If the script doesn't cast any spells, try re-picking the pink color from the spell button.
//Changes from the last version:
// ¤Made the script compatible with scar 3.14 and srl rev 14
// ¤Added DisguiseSCAR
// ¤Added waits to some antibans
program CursedYOU;
{.include srl/srl/misc/smart.scar}
{.include srl/srl.scar}
{.include srl/srl/skill/magic.scar}
var
//--Booleans--//
MonsterFound :boolean;
CameraAnglee :boolean;
//--Integers--//
xx, xy :integer;
z :integer;
w :integer;
i :integer;
Casted :integer;
TotalCasted :integer;
MonsterCount :integer;
MageLevel :integer;
Active :integer;
AntiRandomTime :integer;
AntiBanTime :integer;
ReportTime :integer;
SearchTries :integer;
Waited :integer;
//--Strings--//
Bar :string;
//---------EDIT THESE-------------//
const
MySRLId = 'Jamiee'; //Fill in your SRL-stats Id And Pass
MySRLPassword = '';
MonsterColor1 = 1386115; //Fill in the monster colors
MonsterColor2 = 1398196; //Fill in the monster colors
MonsterColor3 = 2043277; //Fill in the monster colors
MonsterName1 = 'tz'; //Fill in 3 parts of the monsters name(For example, now we´re shooting monks of zamorak)
MonsterName2 = '-k';
Monstername3 = 'ih';
Compass = 'W'; //Where do you want the compass to point? N=North, E=East, W=West, S=South
RunDirection = 'S'; //Where to run if atatcked? N=North, E=East, W=West, S=South
CameraAngle = 'up'; //What camera angle do you want to use? up or down
TimeToLook = 15; //How many seconds to look for a monster before stopping?
TimeToWait = 60; //How long breaks between each player in seconds? 180-360 RECOMMENDED if you use multiplayer. Use 0-60 if you're using 1 account.
SpeedOfMouse = 9; //The speed of the mouse
FightCaves = True; //Are we in the fight caves?(No randoms in fightcave = no need to look for them)
ShowMageLev = False; //Do you want to show your mage lev in the proggy? False = Less time spent to changing tabs to get the level
Spell = 'Curse'; //What spell do you want to use? Curse, Weaken, Confuse or Crumble Undead
CursePink = 15533737; //Re-pick this pink color from the spell buttons if the script doesn't work(The color is same in all of the f2p-curse spells and crumble)
DoAntiBan = 11000; //How many curses between antibans? 100-200 recommended
//--------------------------------//
//----------SETUP PLAYERS-------------//
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := ''; // 3-4 letters of username
Players[0].Active := True; // Is the player active?
Players[0].Integers[0] := 11000; //How many curses to do? (DO NOT run the script 24/7 in the fight caves even though it's possible!)
{Players[1].Name := '';
Players[1].Pass := '';
Players[1].Nick := ''; // 3-4 letters of username
Players[1].Active := True; // Is the player active?
Players[1].Integers[0] := 1000; //How many curses to do?
Players[2].Name := '';
Players[2].Pass := '';
Players[2].Nick := ''; // 3-4 letters of username
Players[2].Active := True; // Is the player active?
Players[2].Integers[0] := 1000; //How many curses to do? }
end;
//-------------- END OF SETUP ----------------//
//---------DOES IT RIGHTCLICK THE MONSTER?(ANTI-BAN)--------//
Function RightClick :boolean;
begin
z := Random(25)
if z >= 23 then Result := True else Result := False
end;
//------------------------------------------------//
//------------GETTING THE LEVEL----------------//
procedure GetLevel;
begin
GameTab(2);
MageLevel:=GetSkillInfo('Magic', false);
Wait(2345+random(3000))
end;
//------------------------------------------------//
//------------PROGRESS REPORT-------------------//
procedure Proggy;
begin
if ReportTime > 20+random(5+random(10)) then
begin
if (ShowMageLev) then GetLevel;
WriteLn(' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤');
WriteLn(' ¤ CursedYOU BY CHEETAHNUB ¤');
WriteLn(' ¤ REMEMBER TO POST THE PROGGIE ¤');
WriteLn(' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤');
WriteLn(' ¤ Current player: ' + (Players[CurrentPlayer].name) + '');
WriteLn(' ¤ Ran for ' + (timerunning) + '');
WriteLn(' ¤ Spell: ' + (Spell) + '');
WriteLn(' ¤ Casted ' +IntToStr(TotalCasted)+ ' times');
WriteLn(' ¤ Casted ' +IntToStr(Casted)+ ' times on this character');
WriteLn(' ¤ ' +IntToStr(Players[CurrentPlayer].integers[0] - Casted)+ ' casts left on this character');
if (ShowMageLev) then WriteLn(' ¤ Your magic level is: ' +IntToStr(MageLevel)+ '');
WriteLn(' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤');
if MySRLId = '' then Writeln('OMG LEECHER GO GET SRL STATS OMG!!!!!!!!!1111oneone+shift');
ReportTime := 0;
end;
end;
//---------------------------------------------------------//
//----------------------MY SIG----------------------------//
procedure MySignature;
begin
Writeln(' _____ _ _ ___ ___ _______ _____ _ _ ___ _ _ _ _____ ')
Writeln(' | ___| | | | | | __| | __| |__ __| | _ | | | | | | \ | | | | | | | _ |')
Writeln(' | | | |_| | | |_ | |_ | | | |_| | | |_| | | |\ \ | | | | | | | |_| |')
Writeln(' | | | _ | | _| | _| | | | _ | | _ | | | \ \ | | | | | | | _ < ')
Writeln(' | |___ | | | | | |_ | |_ | | | | | | | | | | | | \ \| | | |__| | | |_| |')
Writeln(' |_____| |_| |_| |___| |___| |_| |_| |_| |_| |_| |_| \___| |______| |_____|')
Writeln('-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._')
Writeln('- CursedYOU _')
Writeln('-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._')
if MySRLId = '' then
begin
Writeln('OMG LEECHER GO GET SRL STATS OMG!!!!!!!!!1111oneone+shift')
TerminateScript;
end;
end;
//---------------------------------------------------//
//------------------------ANTIRANDOMZ--------------//
procedure AntiRandomz;
begin
if AntiRandomTime > 20+random(15) then
begin
AntiRandomTime := 0
if not(FightCaves) then FindInventoryRandoms;
end;
If FindFight then
begin
Writeln('Argh, darn fighting randoms, let´s hope we can run back :/')
RunAway(RunDirection,False,1,2500+random(3500));
FFlag(10);
wait(1000+random(2234));
end;
end;
//-------------------------------------------------//
//-------------------------ANTIBANZ-----------------//
procedure AntiBanz;
begin
if Antibantime > DoAntiBan+random(25) then
begin
Writeln('Doing some antiban :)');
AntiBanTime := 0
case(random(16)) of
0: begin
HoverSkill('Magic',false); //Hovers magic and changes gametab
GameTab(random(14)+1);
Wait(666+random(1666));
end;
1: begin
case(random(3)) of
0: Bar := 'volume'; //Changes the sound settings randomly,
1: Bar := 'effect'; //this is something new I think lol
2: Bar := 'area';
end;
SetBar(Bar, random(5));
Wait(random(500))
end;
2: HoverSkill('Magic', False); //Hovers magic
3: begin
HoverSkill('Magic', False); //Hovers magic and changes gametab
GameTab(random(14)+1);
Wait(666+random(1666));
end;
4: HoverSkill('Magic', False); //Hovers magic
5: RandomRClick; //boring
6: PickUpMouse; //boring
7: AlmostLogout; //boring
8: RandomMovement; //boring
9: begin
BoredHuman; //Normal BoredHuman + compass to the original setting
Wait(1000+random(500));
MakeCompass(Compass);
end;
10: begin
HoverSkill('Random', False);
case(random(2)) of //Hovers 2 or 3 skills,
0:HoverSkill('Random', False); //can´t get more random than this :D
end;
HoverSkill('Random', False);
end;
11: begin
HoverSkill('Strength', False);
case(random(2)) of //Hovers Melee skills
0:HoverSkill('Attack', False);
end;
HoverSkill('Hitpoints', False);
end;
12: begin
GameTab(1); //"Checks the cb level"
wait(1500+random(1564));
end;
13: begin
HoverSkill('Magic', False); //Hovers magic and Almost logs out
AlmostLogout;
end;
14: begin
HoverSkill('Random', False); //Hovers hovers a random skill + magic
HoverSkill('Magic', False);
end;
15: begin
GameTab(1); //"Checks the cb level" and hovers a random combat skill
case(random(7)) of
0:HoverSkill('Strength', False);
1:HoverSkill('Attack', False);
2:HoverSkill('Defence', False);
3:HoverSkill('Prayer', False);
4:HoverSkill('Hitpoints', False);
5:HoverSkill('Ranged', False);
7:HoverSkill('Magic', False);
end;
end;
16: begin
GameTab(Random(14)+1);
Wait(2000+random(2342));
end;
end;
Writeln('Stopped anti-banning');
end;
end;
//-----------------------------------------------//
//--------------COUNTS SPELLS FOR SRL STATS---------//
procedure CountSpells;
begin
case(Spell) of
'Curse': inc(ReportVars[3]);
'Weaken': inc(ReportVars[2]);
'Confuse': inc(ReportVars[1]);
'Crumble Undead': inc(ReportVars[4]);
end;
inc(ReportVars[0]);
end;
//------------------------------------------------------//
//------------CHECKS IF THERE ARE ENOUGH RUNES----------//
function GotRunes :boolean;
begin
GameTab(7);
case(Spell) of
'Curse': if (GetColor(666, 269) = CursePink) then Result := True;
'Weaken': if (GetColor(570, 258) = CursePink) then Result := True;
'Confuse': if (GetColor(618, 238) = CursePink) then Result := True;
'Crumble Undead': if (GetColor(594, 306) = CursePink) then Result := True;
end;
end;
//--------------------------------------------------//
procedure FindAndShoot;
begin
if SearchTries <= 4 then
begin
GameTab(7);
cast(Spell)
if FindObjCustom(xx, xy,[MonsterName1, MonsterName2, MonsterName3], [MonsterColor1, MonsterColor2, MonsterColor3], 15) then
begin
GetMousePos(xx, xy);
MMouse(xx+random(3)-random(5), xy+random(3)-random(5), 2, 2);
Wait(100+random(100))
case(RightClick) of
True: begin
if IsUptext(MonsterName1) or IsUptext(MonsterName2) or IsUptext(MonsterName3) then
begin
GetMousePos(xx, xy);
Mouse(xx, xy, 1, 1, False);
ChooseOption('ast');
Wait(100+random(250))
MonsterFound := True;
Inc(Casted)
Inc(TotalCasted)
Inc(AntiRandomTime)
Inc(AntiBanTime)
Inc(ReportTime)
if not(FightCaves) then FindNonInventoryRandoms;
wait(200+random(200));
AntiRandomz;
CountSpells;
SearchTries := 0
end;
end;
False: begin
if IsUptext(MonsterName1) or IsUptext(MonsterName2) or IsUptext(MonsterName3) then
begin
GetMousePos(xx, xy);
Mouse(xx, xy, 1, 1, True);
Wait(250+random(250))
MonsterFound := True;
Inc(Casted)
Inc(TotalCasted)
Inc(AntiRandomTime)
Inc(AntiBanTime)
Inc(ReportTime)
if not(FightCaves) then FindNonInventoryRandoms;
Wait(200+random(200));
AntiRandomz;
CountSpells;
SearchTries := 0
end;
end;
end;
end;
end;
end;
//-----------THE CURSE PROCEDURE-----------------//
procedure Curse;
begin
if (not(LoggedIn)) then Exit;
repeat
if (not(LoggedIn)) then Exit;
MarkTime(MonsterCount)
MonsterFound := False;
GotRunes;
if (not(GotRunes)) then
begin
Writeln('You do´nt have enough runes...')
Writeln('Logging out :(')
Break;
end;
repeat
FindAndShoot;
until(MonsterFound) or (TimeFromMark(MonsterCount) >= (TimeToLook*1000))
if TimeFromMark(MonsterCount) >= TimeToLook*1000 then
begin
if SearchTries >= 4 then
begin
Writeln('Didn´t find any monsters! Did you set the colors right?')
Writeln('Logging out :(')
Break;
end else
begin
SearchTries := SearchTries + 1
Writeln('Didn´t find any monsters! The Monster might be respawning.')
Writeln('Waiting for 8-12 seconds, then looking again')
Writeln('Failed finding the monster '+IntToStr(SearchTries)+' times in a row')
repeat
Inc(w)
Wait(1000+random(500))
if not(FightCaves) then FindNonInventoryRandoms;
until(w >= 8)
w := 0
end;
end;
if not(FightCaves) then FindNonInventoryRandoms;
AntiRandomz;
AntiBanz;
SendSRLReport;
Proggy;
until(Casted >= Players[CurrentPlayer].Integers[0] + random(40));
end;
//--------------------------------------------//
//---------CHECKS FOR ACTIVE PLAYERS------------//
procedure ActiveLeft; // Thanks to Spaztaz666 for the idea
begin
for I := 0 To HowManyPlayers - 1 do
begin
if (Players[i].active = True) then inc(Active);
end;
If (Active = 0) then
begin
WriteLn('All Players done :)');
exit;
end;
WriteLn('' + IntToStr(Active) + ' Players Remaining.');
end;
//-------------------------------------------//
//--------PLAYER CHANGING----------------//
procedure ChangePlayer;
begin
Proggy;
Logout;
//BREAK STUFF?
Waited := 0
Writeln('Taking a short antiban break(5-'+IntToStr(TimeToWait+5)+' seconds)')
Wait(random(5000))
Repeat
Wait(5000)
Waited := Waited + 5
Writeln('Waited for '+IntToStr(Waited)+' seconds')
Until(Waited >= TimeToWait)
Writeln('Waited enough, let´s get back to cursing!')
//-----------
NextPlayer(False);
ActiveLeft;
if Active = 0 then Exit;
Wait(3000+random(1234));
MakeCompass(Compass);
SetAngle(CameraAnglee);
end;
//---------------------------------------------//
procedure DisguiseSCAR; //I stole this from HY's caverunner... Hope he won't be mad cos this is a state of the art procedure xD
begin
case Random(11) of
0: Disguise('Windows Live Messenger');
1: Disguise('AVG Free Edition - Control Center');
2: Disguise('RuneScape - the massive online adventure game by Jagex Ltd - Mozilla Firefox');
3: Disguise('Cannot find server - Microsoft Internet Explorer');
4: Disguise('Windows Live Messenger');
5: Disguise('Windows Media Player');
6: Disguise('mIRC');
7: Disguise('iTunes');
8: Disguise('Windows Live Messenger');
9: Disguise('untitled - Paint');
10: Disguise('Windows Live Messenger');
end;
end;
//-------------SETTING IT UP-------------//
procedure SetUpSmart;
var
startColor: Integer;
begin
SmartSetupEx(RandWorld(2), False, False);
Wait(10000 + Random(5000));
Writeln('Checking if SMART is still loading (black screen)')
SetTargetDC(SmartGetDC);
while SmartGetColor(5,5) = 0 do
Wait(500);
Writeln('Screen semi-loaded - set the checking colour');
startColor := SmartGetColor(250,230);
while SmartGetColor(250, 230) = startColor do
Wait(250);
SetTargetDC(SmartGetDC);
Writeln('And SMART is ready');
end;
procedure SetUp;
begin
ClearDebug;
MySignature;
ScriptID := '468';
SRLid := MySRLId;
SRLpassword := MySRLPassword;
MouseSpeed := SpeedOfMouse + random(2);
DisguiseSCAR;
DeclarePlayers;
ActivateClient;
Wait(5000);
LoginPlayer;
Wait(1000+random(3000));
case(CameraAngle) of
'up', 'Up', 'UP': CameraAnglee := True;
'down', 'Down', 'DOWN': CameraAnglee := False;
end;
SetAngle(CameraAnglee)
MakeCompass(Compass)
end;
//----------------------------------------//
//-------------MAIN LOOP-----------//
begin
SetUpSmart;
SetUpSrl;
SetUp;
repeat
Casted := 0
Proggy;
Curse;
ChangePlayer;
Until(Active = 0)
end.
//----------------------------------//
I've got my SmartSetup method there (I even added it into my Smart.scar for easy access), so it should work and it spits out a bit of info while SMART loads so you know it's still doing something. Also, when running, make sure you wait for a bit (sometimes up to a minute) for SMART to start up as it times can vary a lot - I've gotten after a second to after half a minute.