Narcle
2007-10-28 07:37:44
Narcle - SRL Member Application Form
Narcle
What is the meaning to life?
Where you Referred to SRL? If yes, by whom?
yes
Precog
Programming Knowledge
Some Htlm, IRC scripting
Other Communitys
Does myspace count?
How Long have You Played Runescape
4-5 years
Are you affilated in anyway with Jagex LTD?
No
—————————————————–
Please write down a paragraph about Yourself.
I wasn't new to scripting when I joined this community and started to learn SCAR. I have scripted in the past in the IRC system which is a Delphi setup too (that I recall) so it wasn't hard to pick this one up. The hardest thing was learning all the new commands for Runescape that you guys have put in there!
Its not letting me upload so I'll post a link to my script that I'm applying with down below. Its a auto fighter that I have improved greatly over the month. From a basic one to something I'll actually use without hesitation. Only thing not sorta original is the way it attacks. I've tried countless ways to do it but keep coming back to HyperSecret's SecretFighter v0.50 way, I just can't figure out a better way (yet).
Links to my applying script, "Narcles Autofight"
Main Link: http://www.villavu.com/forum/showthread.php?t=18513
EDIT: Updated to v0.54 on Main Link :D
My favorite is the progress report, can't be much more detailed then that (example on main link). I don't want to stop at just a auto fighter, but all my attention is on it as I've been trying to get a high range level. While this is going I've been debating what to do next and have only started a couple others that I want to finish. Hopefully I can divert my attention long enough to finish another project :D.
If you have any more questions, please ask.
Thanks to all that read my application.
-Regards Narcle
——————————————————
Please Post a Sample of your Work. Only SCAR Scripts Accepted
//|
//| Script Name: Narcles Autofight
//| Category: Fighter / Hybrid
//| Author: Narcle
//| Version: 0.53
//| About: Kills any monster, Melee & Ranging, Pick up items/bones/ammo & bury bones
//| Extras: Advance progress report, 24/7 options (SleepnBreak)
//|
//----------------------------------------------------------------------------------------------------------------//
//-------------------------------Instructions, Credits & Help info------------------------------------------------\\
// -Every option can be toggled on or off, even attack.-
//
// Food eating: Put in 'food' for it to eat the first thing it finds in invy.
// Any custom food works, just put the first single word in (perfect spelling).
//
//Auto find colors: This isn't perfect, but it does work, tho I don't recommend it if you want to lvl fast.
// Make sure your in monster area and a couple are on screen. I suggest turning pickups off if used.
//
// Remote Control: I made a custom one for this. Include the code in each command, will only give 1 report every login
// Commands: Type these words in the msg u send for the corrisponding result
// Kill : will reply total kill count
// combat : will reply with current combat lvl
// doing : will tell either fighting or regening hp
//
//Credits:
//-Precog & Cruel100 for Testing and Suggestions
//-HyperSecret for posting his SecretFighter script
//-Rune Hacker for posting his bone pickup/burier
//
//Help / Tests Needed:
//-multiple players:
//-Ammo pickup
//-sleeping & taking breaks
//-anything else that doesn't work
//Report anything not working for you. In detail if possible so I can make it work ;)
//Any suggestions for improving or additionals post on forums. (plz read future versions first before suggesting additionals)
//___________________________________________________________________________________________________________\\
{.include srl/srl.scar}
{.include srl/srl/skill/fighting.scar}
{.include srl/srl/skill/ranging.scar}
{.include srl/srl/skill/magic.scar}
{.include SRL/SRL/misc/SCSS.scar}
var
ArrowStartAmount, StatRgiven, itemspicked, OverallArrowAmount, stopbant, //Counters
Buried, BonesPicked, foodate, arrowcount, Txp, TKilled, StartXP:integer;//Counters
TFoodate, TBonesPicked, TBuried, Tarrowcount, Titemspicked:integer;//total item counts
Getspectime, CharStartTime, rchecktime, reportgave, rct, RemoteStat:integer;//timers
headcolor1, tailcolor1:integer;//colors
Hoverskillis:string;
Outoffood: Boolean;
const
//SRL - Stats
MySRLID = '';
MySRLPassword = '';
//Fighting options:
usespec = 'off';//Use special? on/off
eatfood = 'on';//eat food?
hpcheck = 'on';//HP check, if so will regen and autologout, if hp>hpcheckat it will continue fighting
ExtraHpChecks = 'on';//Performs 2-4 times the HP checks [I got sick of dying... Shut up!]
Emergencyrun = 'on';//Emergency run? Runs away once below 15% HP
eatfoodat = 55;//eat food below ??HP
hpcheckat = 45;//stops attacking below ??hp and regens
EmergencyTele = 'on';//Emergency Teleport? [let me know if this works for you]
RunDir = 's';//run away direction [for Emergencytele and Emergecyrun]
KillMonsterFor = 9;//logout every ??mins
autofindcolors = 'off';//auto find monster colors? Not perfect, but works
//Ranging options:
ranging = 'off';//does a arrow used count & Arrows used/hour cool eh? :D
logoutLowAmmo = 'off';//Logs out and makes player inactive when arrows/bolts weild < 200
pickupammo = 'off';//pick up arrows? below this works only if this is on
AmmoType = 'bronze';//type of arrow, bronze-rune [for equiping arrows]
ArroworBolts = 'arrow';//arrow or bolts? what type of ammo using [will add Knives later]
customAmmoc = 'off';//put in custom colors, otherwise color is taken from weilded
ammoc0 = 857196;//1st color of arrows [857196 is tail color, I think its constant]
ammoc1 = 857196;//2nd color of arrows/bolts
//Magic options: (coming soon!)
//Bone pickup options:
pickupbones = 'off';//pick up bones? yes/off
bonec1 = 12369093;//1st color of bones
bonec2 = 11316663;//2nd color of bones
//Item pickup options: (Only runes atm, trying to get custom to work *sigh*)
pickupitems = 'off';
runec1 = 1385384;//fire/blood
runec2 = 14689051;//law/water
runec3 = 1412114;//nature
//Remote options: My custom one :D
doremote = 'off';//turn remote logout on? yes/no (this will automatically set private chat to friends)
remotename = 'doreme';//name it will only respond to
remotecode = 'nub';//password, or code to accept its you
Rlogouttime = 15;//logout for how long till logging back in (minutes +random(60s))
//Sleeping / Breaking options:
SleepOrBreak = 'off';//off, sleep, break or both -use all lowercase (look at SleepnBreak)
sleepat = 300;//goes by computer time -> 100 = 1:00am, 130 = 1:30am, 2200 = 10:00pm, etc. <
BreakAt = 310;//Break every ??? -> 100 = 1 hour, 330 = 3 hours 30 mins, etc. <
//Advance options:
AttackOff = 'off';//turn attacking off (for those that want to just collect items)
AntibansOff = 'off';//turn antiban procedures off
doSCSS = 'off';//SCSS login, unsigned java
SCSSworld = 59;//load which world
//version info:
Version = '0.53';
procedure FFoutfight; forward;
procedure LogoutSeq(i:integer); forward;
procedure PReport(t:integer); forward;
procedure FFhpcheck; forward;
procedure DeclarePlayers;
begin
ScriptID := '418';//Don't change this!
HowManyPlayers := 3;//change accordingly
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
SRLID := MySRLID;
SRLPassword := MySRLPassword;
//----------------------------------------Player setup-------------------------------------------------------//
Players[0].Name :=''; //Character Name
Players[0].Pass :=''; //Character Pass
Players[0].Nick :=''; //Nickname 3 - 4 Letter's of char name
Players[0].Active:=True; //True if you want this player to be ran in the script, false if not
Players[0].Skill := 'accurate'; //the skill you want to train > strength, attack, defence, whipdefence, even, accurate, rapid or longrange <
Players[0].Strings[0] := 'food' //'food' eats first thing it finds to Eat in invy. Read above on custom.
Players[0].Strings[1] := 'Hill Giant';//monster name
Players[0].Integers[20] := 35;//How many hitpoints do the monsters have? Required for accurate kill count
Players[0].Integers[0] := 11060960;//1st color of monster -If you want custom colors, enter here
Players[0].Integers[1] := 5468048;//2nd color of monster
Players[0].Integers[2] := 7181504;//3rd color of monster
Players[1].Name :=''; //Character Name
Players[1].Pass :=''; //Character Pass
Players[1].Nick :=''; //Nickname 3 - 4 Letter's of char name
Players[1].Active:=True; //True if you want this player to be ran in the script, false if not
Players[1].Skill := 'accurate'; //the skill you want to train > strength, attack, defence, whipdefence, even, accurate, rapid or longrange <
Players[1].Strings[0] := 'food' //'food' eats first thing it finds to Eat in invy. Read above on custom.
Players[1].Strings[1] := 'Hill Giant';//monster name
Players[1].Integers[20] := 35;//How many hitpoints do the monsters have? Required for accurate kill count
Players[1].Integers[0] := 11060960;//1st color of monster -If you want custom colors, enter here
Players[1].Integers[1] := 5468048;//2nd color of monster
Players[1].Integers[2] := 7181504;//3rd color of monster
Players[2].Name :=''; //Character Name
Players[2].Pass :=''; //Character Pass
Players[2].Nick :=''; //Nickname 3 - 4 Letter's of char name
Players[2].Active:=True; //True if you want this player to be ran in the script, false if not
Players[2].Skill := 'accurate'; //the skill you want to train > strength, attack, defence, whipdefence, even, accurate, rapid or longrange <
Players[2].Strings[0] := 'food' //'food' eats first thing it finds to Eat in invy. Read above on custom.
Players[2].Strings[1] := 'Hill Giant';//monster name
Players[2].Integers[20] := 35;//How many hitpoints do the monsters have? Required for accurate kill count
Players[2].Integers[0] := 11060960;//1st color of monster -If you want custom colors, enter here
Players[2].Integers[1] := 5468048;//2nd color of monster
Players[2].Integers[2] := 7181504;//3rd color of monster
//----------------------------------------Player setup end---------------------------------------------------//
Writeln(' _ _ _ ')
Writeln('| \ | | made by | | ')
Writeln('| \| | __ _ _ __ ___| | ___ Autofight')
Writeln('| . ` |/ _` | __/ __| |/ _ \ v'+Version)
Writeln('| |\ | (_| | | | (__| | __/')
Writeln('|_| \_|\__,_|_| \___|_|\___|')
writeln('')
if (MySRLID = '') then writeln('Please register at SRL-stats in the future. Regards -Narcle');
if (pickupammo = 'on') then writeln('If your a member I suggest doing Animal Magnetism for Ammo Pickup.')
end;
procedure SCSSyes(OutIn:integer);//1 to open, 2 to close, 3 to close then open
begin
if (outin = 3) or (outin = 2) then
begin
Logout;
SCSSClose;
end;
if (outin = 3) or (outin = 1) then
begin
OpenSCSS;
SCSSSetPlugin(false);
SCSSLoadWorld(SCSSworld, true);
wait(20000);
SCSSSetHandle;
begin
Loginplayer;
gametab(1);
wait(5000+random(1000));
gametab(2);
wait(5000+random(1000));
gametab(4);
wait(5000+random(1000));
gametab(11);
wait(5000+random(1000));
end;
Players[CurrentPlayer].Integers[11] := 0; //so findcolors looks again (future version)
end;
end;
function MouseInvText(istextup, option:string; leftclick: Boolean; inv1, inv2, waitfor, xtimes:integer): Boolean; //by Narcle
var
i,x,y, times:integer;
begin
gametab(4);
for i := inv1 to inv2 do
if (ExistsItem(i)) then
begin
MMouseItem(i);
GetMousePos(x, y);
wait(100+random(50));
if (pos(istextup, rs_GetUpText) > 0) then
begin
if (leftclick = true) then
begin
Mouse(x,y,5,5,true);
result := true;
times := times + 1;
end else
begin
Mouse(x,y,5,5,false);
if Chooseoption(option) then
begin
result := true;
times := times + 1;
end;
end;
end;
wait(waitfor+random(100));
if (times = xtimes) then exit;
end else
result := false;
exit;
end;
function InFightNotAttacking: Boolean;
var
x, y : Integer;
begin
Result := ( (FindColor(x, y, 65280, 230, 130, 280, 180) or FindColor(x, y, 255, 230, 130, 280, 180)) and
(not(FindColor(x, y, 65280, 12, 24, 212, 328) or FindColor(x, y, 255, 12, 24, 212, 328))) and
(not(FindColor(x, y, 65280, 290, 12, 509, 328) or FindColor(x, y, 255, 290, 12, 509, 328))) and
(not(FindColor(x, y, 65280, 197, 15, 303, 117) or FindColor(x, y, 255, 197, 15, 303, 117))) and
(not(FindColor(x, y, 65280, 179, 180, 330, 332) or FindColor(x, y, 255, 179, 180, 330, 332))) )
end;
function GetXp2(skill: string): Integer;//redone and works :D
var
textx, texty, XPboxedge, len, x, y, x1, y1, I, II, l, WaitT: Integer;
xp, Nums, text2, xpis : string;
t: TPoint;
begin
if (not(loggedin)) then exit;
XPboxedge := DTMFromString('78DA635CC2C8C0100CC458004C947131916A8' +
'250D5FCFFBF0055CD124C3558CD3121600E488D3101739610A9C6' +
'04BF1A00F7DF0C91');
GameTab(2);
t := skilltocoords(skill);
MMouse(t.x, t.y + 12, 5, 5);
repeat
WaitT := WaitT+1;
wait(10);
if WaitT >= 3000 then exit;
until findcolor(x, y, 10551295, 554, 205, 743, 465);
wait(300 + Random(100))
if FindDtm(XPboxedge, x1, y1, 554, 205, 743, 465) then
if (istextinareaex(554, 205, 743, 465, textx, texty, 'XP', 0, smallchars, False, True, 0, 2, 0))then;
begin
len := (x1 - textx - 22) div 7;
xp := Trim(gettextatex(textx+22, texty, 5, smallchars, False, False, 0, 3, 0, len, False, tr_AllChars))
try
begin
for l := 1 to Length(xp) do
begin //replace O's with 0's
if (xp[l] = 'O') then text2 := text2 + '0' else text2 := text2+ xp[l];
end;
Nums := '01234567890';//clear spaces
for I := 1 to Length(Text2) do
begin
for II := 1 to 10 do
begin
if (Copy(text2, I, 1) = Copy(Nums, II, 1)) then
xpis := xpis + Copy(Text2, I, 1);
end;
end;
end;
result := strtoint(xpis);
except
WriteLn('Failed to get XP');
result := 0;
end;
end;
freeDTM(XPboxedge);
end;
function FindObjColorByText(ObjName:string): integer;//made by me
var
xx,yy, MainTimeCount, TimeCount1, TimeCount2, MoP, coloris:integer;
begin
MMouse(258, 180, 1, 1);
MainTimeCount := 1;
GetMousePos(xx, yy);
repeat
repeat
If (MoP = 0) then MMouse(xx,yy-25, 1, 1) else MMouse(xx,yy+25, 1, 1);
GetMousePos(xx, yy);
if IsUpText(ObjName) then
begin
coloris := GetColor(xx,yy);
Writeln('Object color is: '+inttostr(coloris)+' at '+inttostr(xx)+', '+inttostr(yy));
result := coloris;
exit;
end;
TimeCount1 := TimeCount1+1;
until(TimeCount1 = MainTimeCount)
repeat
If (MoP = 0) then MMouse(xx+40,yy, 1, 1) else MMouse(xx-40,yy, 1, 1);
GetMousePos(xx, yy);
if IsUpText(ObjName) then
begin
coloris := GetColor(xx,yy);
Writeln('Object color is: '+inttostr(coloris)+' at '+inttostr(xx)+', '+inttostr(yy));
result := coloris;
exit;
end;
TimeCount2 := TimeCount2+1;
until(TimeCount2 = MainTimeCount)
MainTimeCount := MainTimeCount+1;
TimeCount1 := 0;
TimeCount2 := 0;
if (MoP = 0) then MoP := 1 else MoP := 0;
until(MainTimeCount >= 12)
Writeln('Couldnt find object color!');
result := 0;
end;
function GetArrowCount:integer;
var
ACtxt, text2: string;
l:integer;
begin
gametab(5);
wait(50);
ACtxt := Trim(GetTextAtEx(667, 249, 0, StatChars, False, False,
0, 2, -1, 5, True, tr_AlphaNumericChars));
for l := 1 to Length(ACtxt) do
begin
if (ACtxt[l] = 'K') then text2 := text2 + '000' else text2 := text2+ ACtxt[l];
end;
if (clearspaces(text2) = '') then result := 0 else result := strtoint(clearspaces(text2));
end;
procedure Findcolors;
begin
if (autofindcolors = 'on') and (Players[CurrentPlayer].Integers[11] = 0) then
begin
Players[CurrentPlayer].Integers[7] := FindObjColorByText(Players[Currentplayer].Strings[1]);
wait(2000+random(3000));
Players[CurrentPlayer].Integers[8] := FindObjColorByText(Players[Currentplayer].Strings[1]);
wait(2000+random(3000));
Players[CurrentPlayer].Integers[9] := FindObjColorByText(Players[Currentplayer].Strings[1]);
wait(2000+random(3000));
Players[CurrentPlayer].Integers[10] := FindObjColorByText(Players[Currentplayer].Strings[1]);
Players[CurrentPlayer].Integers[11] := 1;
end
if ((Players[CurrentPlayer].Integers[7] + Players[CurrentPlayer].Integers[8] + Players[CurrentPlayer].Integers[9] +
Players[CurrentPlayer].Integers[10]) = 0) and (autofindcolors = 'on') then
begin
Players[CurrentPlayer].Integers[11] := 0
Players[CurrentPlayer].Integers[12] := Players[CurrentPlayer].Integers[12] + 1;
Logout;
if (Players[CurrentPlayer].Integers[12] >= 3) then
begin
Writeln('Failed to get colors, '+Players[CurrentPlayer].Name+' is now inactive.');
nextplayer(false);
end else nextplayer(true);
end;
if (autofindcolors = 'off') then
begin
Players[CurrentPlayer].Integers[7] := Players[CurrentPlayer].Integers[0];
Players[CurrentPlayer].Integers[8] := Players[CurrentPlayer].Integers[1];
Players[CurrentPlayer].Integers[9] := Players[CurrentPlayer].Integers[2];
Players[CurrentPlayer].Integers[10] := Players[CurrentPlayer].Integers[0];
end;
end;
procedure FFset(t:integer);
Var
Deflvl, Attlvl, Strlvl:integer;
begin
if (t = 0) then PReport(0);
if (not(LoggedIn)) then LoginPlayer;
writeln('Setting up player: '+Players[CurrentPlayer].Name+'...')
case lowercase(Players[CurrentPlayer].Skill) of
'attack': begin
SetFightMode(1)
Hoverskillis := 'attack'
end;
'strength': begin
SetFightMode(2)
Hoverskillis := 'strength'
end;
'defence': begin
SetFightMode(4);
Hoverskillis := 'defence'
end;
'accurate' : begin
SetFightMode(1)
Hoverskillis := 'range'
end;
'whipdefence' : begin
Setfightmode(3)
Hoverskillis := 'defence'
end;
'rapid' : begin
Setfightmode(2)
Hoverskillis := 'range'
end;
'longrange': begin
Setfightmode(3)
Hoverskillis := 'range'
end;
'even': begin
Attlvl := GetSkillLevel('attack')
Deflvl := GetSkillLevel('defence')
Strlvl := GetSkillLevel('strength')
if (Deflvl <= attlvl) and (Deflvl <= strlvl) then
begin
SetFightMode(4)
Hoverskillis := 'defence'
end
if (Attlvl <= deflvl) and (Attlvl <= strlvl) then
begin
SetfightMode(1)
Hoverskillis := 'attack'
end
if (Strlvl <= attlvl) and (Strlvl <= deflvl) then
begin
SetFightMode(2)
Hoverskillis := 'strength'
end
end;
end;
Retaliate(True);
SetChat('off', 1);
If (doremote = 'on') then SetChat('friends', 2) else SetChat('off', 2);
SetChat('off', 3);
SetChat('off', 4);
SetRun(True);
if (doremote = 'on') then
begin//turns split chat off
if (GetColor(695, 385) = 1974404) then
Mouse(695, 375, 15, 10, True);
end;
if (ranging = 'on') then
begin
ArrowStartAmount:=GetArrowCount;
If (logoutLowAmmo = 'on') and (ArrowStartAmount <= 200) then LogoutSeq(0);
end;
if (pickupammo = 'on') then
begin
if (GetArrowCount > 0) then
begin
headcolor1 := GetColor(700, 257);
tailcolor1 := GetColor(688, 271);
end;
if (lowercase(ArrowOrBolts) = 'arrow') then MouseInvText(AmmoType+' arrow', 'Weild', false, 1, 28, 200, 1) else
MouseInvText(AmmoType+' bolt', 'Weild', false, 1, 28, 200, 1);
end;
Startxp := GetXp2(Hoverskillis);
HighestAngle;
outoffood := false;
reportgave := 0;
rct := 0;
CharStartTime := Getsystemtime+random(30000);
Getspectime := Getsystemtime;
Findcolors;
end;
procedure PReport(t:integer);
Var
CurXP, CurAU, XPn, TLm, Killed, H,M,S:integer;
begin
begin
ConvertTime(gettimerunning, H, M, S);
If (AttackOff = 'off') then CurXP := GetXp2(lowercase(Hoverskillis));
if (AttackOff = 'off') and (CurXP > Startxp) and (CurXP > 0) and (Startxp > 0) then XPn := CurXP-Startxp else XPn := 0;
If (AttackOff = 'off') and (XPn > 0) then Killed := ((CurXP-Startxp)/(4*Players[currentplayer].Integers[20])) else Killed := 1;
TKilled := TKilled+killed;
Txp := (Txp+XPn);
if (NextLevelAt(hoverskillis)>0) then TLm := (NextLevelAt(hoverskillis)-curxp)/(Txp/(H*60+m)) else TLm := 1;
if (ranging = 'on') and (ArrowStartAmount > GetArrowCount) and (GetArrowCount > 0) then CurAU := ArrowStartAmount - GetArrowCount else CurAU := 0;
if (ranging = 'on') then OverallArrowAmount := OverallArrowAmount+CurAU;
TFoodate := TFoodate + foodate;
TBonesPicked := TBonesPicked + BonesPicked;
TBuried := TBuried + Buried;
Tarrowcount := Tarrowcount + arrowcount;
Titemspicked := Titemspicked + itemspicked;
if (t = 1) then
begin
writeln('')
Writeln('< Ran: ' + inttostr(H) + 'h:' + inttostr(M) + 'm:' + inttostr(S)+'s >--AutoFight Report v'+Version+'--< '+TheTime+' >');
If (AttackOff = 'off') then WriteLn('Total Kills: '+ inttostr(TKilled)+', Total XP Gained: '+ inttostr(Txp)+', Kills this Round: '+ inttostr(Killed)+', XP this Round: '+ inttostr(XPn));
If (AttackOff = 'off') then WriteLn('XP/hour: '+inttostr((Txp*60)/(H*60+m))+ ', Estimated time to '+Capitalize(hoverskillis)+' level: '+inttostr((Tlm/60))+' Hours & '+inttostr(tlm-(((Tlm/60)*60)))+' Minutes');
If (ranging = 'on') then writeln('Ammo remaining: '+inttostr(GetArrowCount)+', Total Ammo used: '+inttostr(OverallArrowAmount)+', Ammo Used/hour: '+inttostr((OverallArrowAmount*60)/(H*60+m))+', XP/ammo:'+inttostr(Txp/OverallArrowAmount));
If (pickupbones = 'on') then WriteLn('Bones picked: '+ inttostr(TBonesPicked) +' Buried: '+inttostr(TBuried));
If (pickupitems = 'on') then writeln('Pick ups: ' + inttostr(Titemspicked));
If (pickupammo = 'on')then writeln('Ammo Pickups: '+inttostr(Tarrowcount));
If (eatfood = 'on') then Writeln((Players[CurrentPlayer].Strings[0]) +'s ate: '+inttostr(TFoodate));
If (doremote = 'on') then writeln('Reports given: ' + inttostr(StatRgiven));
writeln('');
end;
end;
begin
if (not(MySRLID = '')) then
begin//stat updates
ReportVars[0] := Killed;
ReportVars[1] := XPn;
ReportVars[2] := foodate;
ReportVars[3] := BonesPicked;
ReportVars[4] := Buried;
ReportVars[5] := arrowcount
ReportVars[6] := itemspicked
ReportVars[7] := CurAU;
SendSRLReport;
end;
foodate := 0;
BonesPicked := 0;
Buried := 0;
arrowcount := 0;
itemspicked := 0;
end;
end;
procedure LogoutSeq(i:integer);
begin
FFoutfight;
PReport(1);
Logout;
Wait(10000+random(10000));
if (i = 1) then nextplayer(true);
if (i = 0) then nextplayer(false);
FFset(1);
end;
procedure RemoteReport;
var
X1, Y2, x, y:integer;
reportmsgis:string;
begin
If (reportgave=0) and (doremote = 'on') then
begin
if (FindChatText('From') and FindChatText(remotename) and FindChatText(remotecode)) and
FindColor(X1, Y2, 128, MCX1, MCY1, MCX1 + 30, MCY2) then
Begin
reportmsgis := '';
//RemoteLogout
if FindChatText('logout') then
begin
GameTab(8);
if FindText(x, y, remotename, SmallChars, 520, 200, 750, 470) then
begin
MMouse(x, y, 1, 1);
GetMousePos(x, y);
if IsUpText('Message')then
begin
Mouse(x, y, 3, 3, True);
wait(800+random(500));
Sendtext('aight');
Wait(200 + Random(500));
TypeByte(13);
PReport(1);
logout;
wait((Rlogouttime*60000)+random(60000));
exit;
end;
end;
end;
//RemoteLogout END
if FindChatText('Kill') then reportmsgis := (inttostr(TKilled)+' '+ Players[CurrentPlayer].Strings[1] +'s killed');
if FindChatText('Combat') then reportmsgis := ('lvl ' + inttostr(GetCombatLevel));
if FindChatText('doing') and (RemoteStat = 1) then reportmsgis := ('fighting still');
if FindChatText('doing') and (RemoteStat = 0) then reportmsgis := ('waiting for hp to regen... sigh');
if not(reportmsgis = '') then
begin
GameTab(8);
if FindText(x, y, remotename, SmallChars, 520, 200, 750, 470) then
begin
MMouse(x, y, 1, 1);
GetMousePos(x, y);
if IsUpText('Message') then
begin
Mouse(x, y, 3, 3, True);
wait(800+random(500));
Sendtext(reportmsgis);
Wait(100 + Random(500));
TypeByte(13);
StatRgiven := StatRgiven + 1
reportgave:=1;
end else
exit;
end;
end;
end;
end;
end;
procedure SleepnBreak;
var
Hour, Mins, Sec, MSec: Word;
Curtime, BreakMark, StartBreak, Tcount:integer;
begin
if (SleepOrBreak = 'both') or (SleepOrBreak = 'break') or (SleepOrBreak = 'sleep') then
begin
DecodeTime(Now, Hour, Mins, Sec, MSec);
Curtime := (Hour*100)+mins;
if (SleepOrBreak = 'both') or (SleepOrBreak = 'break') then
begin//break start
if Curtime = 0 then StartBreak:=0;
if Breakmark = 0 then
begin
StartBreak := Curtime;
Breakmark := 1;
end;
if (Curtime >= (StartBreak+BreakAt)) then
begin
PReport(1);
Logout;
writeln(TheTime+': Taking 7-12 minute break');
wait(210000+random(150000));
PickUpMouse;//stops power save
wait(210000+random(150000));
writeln(TheTime+': Break End');
Breakmark := 0;
nextplayer(true);
FFset(1);
end;
end;//break end
if (SleepOrBreak = 'both') or (SleepOrBreak = 'sleep') then
begin//sleep start
if (Curtime = sleepat) then //600 = 6am
begin
PReport(1);
Logout;
writeln(TheTime+': Now going to "sleep" for 6 hours');
Repeat
wait(580000+random(19900));
PickUpMouse; //stops power save
wait(580000+random(19900));
PickUpMouse;
wait(580000+random(19900));
PickUpMouse;
Tcount := Tcount+1;
writeln(TheTime+': ~30min check');
until(Tcount >= 12);
writeln(TheTime+': Wakeup time! Fighting will continue...');
nextplayer(true);
FFset(1);
end;
end;//sleep end
end;
end;
procedure Itempickup;
var
x, y, runetxt:integer;
begin
runetxt := BitmapFromString(29, 7, 'beNpjYPg/wQGOYkPcgQg/G' +
'00xphSaCAMYwEVwsSFcTBMg2uHiaGYSNBZZOx41yIJEGovLF7jspc' +
'RYBiSApgBrFBAMc1yxiRywcIRmO6ZKrFJQAAAj/90I'); {rune txt}
if (FindcolorTolerance(x, y, runec1, MSX1, MSY1, MSX2, MSY2, 2)) or
(FindcolorTolerance(x, y, runec3, MSX1, MSY1, MSX2, MSY2, 2)) or
(FindcolorTolerance(x, y, runec2, MSX1, MSY1, MSX2, MSY2, 2)) then
MMouse(x, y, 3, 3);
begin
GetMousePos(x, y);
if (IsUpText('Take')) or (IsUpText('rune'))then
Mouse(x, y, 1, 1, False);
GetMousePos(x, y);
if (FindBitmap(runetxt, x, y)) then
begin
Mouse(x, y, 1, 1, true);
itemspicked := itemspicked+1;
wait(800+random(100));
end else
ChooseOption('move damn mouse away please'); //Lawl
wait(400+random(200));
end;
Freebitmap(runetxt);
end;
procedure Bonepickup; //Thanks to Rune Hackers bitmaps
var
x, y, i, Takebonewhite, Takeboneyellow, keBigb:integer;
begin
If (pickupbones = 'on') then
begin
if (ExtraHpChecks = 'on') then FFhpcheck;
If (not(infight)) then if (invcount = 28) then//bone bury
begin
gametab(4);
for i := 1 to 28 do
begin
MMouseItem(i);
GetMousePos(x, y);
if IsUpText('Bury') then
begin
Mouse(x,y,1,1,true);
FTwait(4);
Buried:=Buried+1;
end;
end;
end;//bone bury end
begin
keBigb := BitmapFromString(49, 11, 'beNrNlEsKgDAMRHM0d17A' +
'rXfyxhFaCNP8+lHE0EWqYfrojBJxqfPYZxdfG64FBdRpnpQiojUpK' +
'vWESnReRHJlf4U0e2MJkgoVQ41kqTpYX2HfzZsdwKNFCrcRVZQl2+' +
'd5kxkZsDzKzcjZ3Li8z3Vcg7gtpP0MSRmEJC7PN0hC4l7UeLzV0Xa' +
'sq6M+ENsnFxUNuNvk39Wo3K9ph5c='); {ke Big b txt}
Takebonewhite := BitmapFromString(59, 1, 'z78DA737343000324' +
'E086216EEA626A6262EE86034064914937BC00D92E4CBDA8E6581' +
'A9818404854970CBC382689E92F00146F4FAE');
Takeboneyellow := BitmapFromString(59, 1, 'z78DA73737373333' +
'0700393C8C00D43DCD4C5D4C4C41C591C9984C82293B85462DA85' +
'A917D51C4B0313030889EA928117C72431FD050090804D72');
if (FindcolorTolerance(x, y, bonec1, 150, 90, 360, 270, 5)) or
(FindcolorTolerance(x, y, bonec2, 150, 90, 360, 270, 5)) then
MMouse(x, y, 3, 3);
begin
GetMousePos(x, y);
if (IsUpText('ake')) or (IsUpText('Tak')) or (IsUpText('Bone')) or (IsUpText('ones'))then
Mouse(x, y, 1, 1, False);
GetMousePos(x, y);
if(FindBitmap(Takebonewhite, x, y)) or (FindBitmap(Takeboneyellow, x, y))or (FindBitmap(keBigb, x, y))then
begin
Mouse(x, y, 1, 1, true);
wait(800+random(100));
BonesPicked:=BonesPicked+1;
end;
end;
Freebitmap(Takebonewhite);
Freebitmap(Takeboneyellow);
Freebitmap(keBigb);
end;
end;
end;
procedure Ammopickup;
var
x, y, c0, c1, arrowtxt, boltstxt:integer;
begin
If (pickupammo = 'on') then
begin
if (ExtraHpChecks = 'on') and ((hpcheck = 'on') or (eatfood = 'on')) then FFhpcheck;
If customAmmoc = 'off' then
begin
c0 := headcolor1;
c1 := tailcolor1;
end else
begin
c0 := ammoc0;
c1 := ammoc1;
end;
arrowtxt := BitmapFromString(36, 7, 'beNoLcY8Ncf8/wQGOgFwI' +
'whQkUhlcEJMLYTCAAVaTIVJ4RHDphahB4yK7DU0Qbix+EVxsNO9gu' +
'g1TL1bXErQL0wsE3UaJXXDziQxDPHah6UULXuRoRZZiQAXIgsgmY4' +
'qg6UUTR2EDAPmZFbw='); {arrow txt}
boltstxt := BitmapFromString(33, 11, 'beNoLcf8/wQGIYkPciUS' +
'kqodrYWBgIEM9kdZRbgVBvXSzAquXsUphWoFVAbI4XAsuo9CksPoC' +
'AjBFkLVjRh+uACEYUJheI9UoYuICze+0sALN8WixAw9VNC9jhjaaG' +
'qxxDdeFFjuYXkYTx8qFi6CbBgDGuIHq'); {bolts txt}
if (FindcolorTolerance(x, y, c0, 125, 75, 385, 285, 2)) or
(FindcolorTolerance(x, y, c1, 125, 75, 385, 285, 2)) then
MMouse(x, y, 3, 3);
begin
GetMousePos(x, y);
if (IsUpText('Take')) or (IsUpText('arrow'))then
Mouse(x, y, 1, 1, False);
GetMousePos(x, y);
if (FindBitmap(arrowtxt, x, y)) or (FindBitmap(boltstxt, x, y))then
begin
Mouse(x, y, 1, 1, true);
arrowcount := arrowcount+1;
wait(800+random(100));
end else
Chooseoption('Cancel');
end;
Freebitmap(arrowtxt);
Freebitmap(boltstxt);
end;
end;
procedure UseSpecial;
var
SpecialWasUsed, ust:integer;
begin
If (usespec = 'on') then
begin
if ((Getsystemtime-SpecialWasUsed)>=108000) then ust := 0;
if ((Getsystemtime-Getspectime)>=110000+random(30000)) and (ust=0) then
begin
SpecialWasUsed := getsystemtime;
Getspectime := Getsystemtime;
gametab(1);
wait(100+random(50));
Mouse(640,421,4,4,true);
ust := 1;
end;
end;
end;
procedure FFhpcheck;
begin
If (hpcheck = 'on') or (eatfood = 'on') then
begin
RemoteStat := 0;
if (eatfood = 'off') then outoffood := true;
if (eatfood = 'on') and (outoffood = false) and (gethp < eatfoodat) then
begin
gametab(4);
if (lowercase(Players[CurrentPlayer].Strings[0]) = 'food') then
begin
if MouseInvText('Eat', 'Eat', true, 1, 28, 300, 1) then
foodate := foodate+1 else outoffood := true;
end else
if MouseInvText(Capitalize(lowercase(Players[CurrentPlayer].Strings[0])), 'Eat', true, 1, 28, 300, 1) then
foodate := foodate+1 else outoffood := true;
exit;
end;
if (hpcheck = 'on') and (gethp < hpcheckat) and (outoffood = true) then
begin
writeln(TheTime+': HP low, waiting for regen');
repeat
wait(30000+random(20000));
If (((Getsystemtime-CharStartTime)/1000)>(KillMonsterFor * 60)) then
begin
logoutSeq(1);
exit;
end;
if infight then
begin
wait(22000+random(8000));
if infight then
begin
Repeat
wait(5000+random(2000));
if (hppercent < 10) and (EmergencyTele = 'on') then
begin
RunAwayDirection(RunDir);
RunAwayDirection(RunDir);
wait(10000+random(500));
if infight then
repeat
RunAwayDirection(RunDir);
wait(10000+random(500));
until(not(infight))
writeln('Emergency Teleport! '+Players[currentplayer].Name+' is now inactive');
CastSpell(1);
LogoutSeq(0);
exit;
end
until(not(loggedin))
writeln(TheTime+': HP regen END');
PReport(0);
nextplayer(true);
FFset(1);
exit;
end;
end;
if (not(loggedin)) then
begin
writeln(TheTime+': HP regen END');
PReport(0);
nextplayer(true);
FFset(1);
exit;
end;
RandomMovement;
until(gethp >(hpcheckat));
writeln(TheTime+': HP regen END');
HighestAngle;
end;
if (HpPercent < 15) and (Emergencyrun = 'on') then
begin
RunAwayDirection(RunDir);
wait(50000+random(20000));
if (lowercase(rundir) = 'e') then RunAwayDirection('w'); //i know "runback"... but it doesn't work good imo
if (lowercase(rundir) = 'w') then RunAwayDirection('e');
if (lowercase(rundir) = 'n') then RunAwayDirection('s');
if (lowercase(rundir) = 's') then RunAwayDirection('n');
end;
end;
end;
procedure Stopban;
begin
If (AntibansOff = 'off') then
begin
stopbant := stopbant+random(2);
if (LoggedIn) and (stopbant >= 42) then
begin
WriteLN(thetime+': AntiBan Start');
case Random(6) of
0: wait(500+random(10000));
1: RandomMovement;
2: HoverSkill(Hoverskillis ,false);
3: PickUpMouse;
4: HoverSkill(Hoverskillis ,false);
5: HoverSkill(Hoverskillis ,false);
end;
Writeln(thetime+': AntiBan End');
HighestAngle;
stopbant:=0;
end;
end;
end;
procedure RandomsCheck;
begin
FindNonInventoryRandoms;
if Findtalk then FindInventoryRandoms;
if (rct = 0) then
begin
rchecktime := getsystemtime;
rct := 1;
end;
if (rct = 1) and ((getsystemtime - rchecktime) >= (70000+random(10000))) then
begin
outfight;
FindInventoryRandoms;
rct := 0;
end;
end;
function FFfight(Nname: string; color, maxtol: integer): boolean;//by Hypersecret, edited
var
x, y, tolerance: integer;
begin
result := false;
if (FindObjCustom(x, y, [Nname], [color], tolerance)) then
begin
MMouse(x, y, 3, 3);
if IsFightAt(x, y) then exit;
if (pos(Nname, rs_GetUpText) > 0) then
begin
result := true;
GetMousePos(x, y);
case Random(2) of
0: begin
Mouse(x, y, 0, 0, false);
ChooseOption('ttack');
end;
1: Mouse(x, y, 0, 0, true);
end;
wait(600+random(200));
exit;
end else
if tolerance >= maxtol then exit;
tolerance := tolerance + 1;
wait(50);
end;
end;
procedure FFattack;//Derived from Hypersecrets
var
MobColors: array[0..3] of integer;
i: Integer;
begin
RemoteStat := 1;
if (not (LoggedIn)) or (infight and (not(infightnotattacking))) then Exit;
MobColors[0] := Players[CurrentPlayer].Integers[7]
MobColors[1] := Players[CurrentPlayer].Integers[8]
MobColors[2] := Players[CurrentPlayer].Integers[9]
MobColors[3] := Players[CurrentPlayer].Integers[10]
begin
for i := 0 to 3 do
begin
if FFfight(Players[Currentplayer].Strings[1], MobColors[i], 5) then
begin
FTwait(2);
FFOutFight;
end else
case Random(4) of
0: MakeCompass('n')
1: MakeCompass('e')
2: MakeCompass('w')
3: MakeCompass('s')
end;
end;
end;
end;
procedure FFOutFight;
var x, y: Integer;
begin
if (ranging = 'on') and (FindColor(x, y, 255, MMX1, MMY1, MMX2, MMY2)) then
wait(3000+random(500)) else flag;
if (InFight) then
begin
repeat
if (not (LoggedIn)) then exit;
Wait(100);
if infightnotattacking then
begin
wait(1800+random(500));
if infightnotattacking then exit;
end;
RandomsCheck;
FFhpcheck;
until (not(InFight))
Exit;
end else
Wait(300);
end;
//=============================================Main Execution============================================\\
begin
SetupSRL;
DeclarePlayers;
if (doSCSS = 'on') then SCSSyes(1);
FFset(1);
repeat
If (not(loggedin))then FFset(0);
RemoteReport;
FFhpcheck;
USEspecial;
If (AttackOff = 'off') then FFattack;
Bonepickup;
Itempickup;
Ammopickup;
Stopban;
sleepnbreak;
RandomsCheck;
If (((Getsystemtime-CharStartTime)/1000)>(KillMonsterFor * 60)) then logoutSeq(1);
until(false);
end.
——————————————————
<!– END TEMPLATE: formanswers –>