Roh123red
02-26-2008, 08:54 AM
Do you mean go to Tools>options SRl download then click move plugins or? because i clicked that button nothing happens.
and also i will show you the script see what u think
MySRLID = '';//example: '7899'
MySRLPassword = '';//example: 'blahblah'
UseForm = true;//Use form? [true/false]
HaveReport = false;//Puts some information in Report box
PublicChat = 'off';//Public chat on or off?
procedure DeclarePlayers;
begin
if not(UseForm) then
begin
HowManyPlayers := 1;//Change this accordinly
NumberOfPlayers(HowManyPlayers);1
CurrentPlayer := 1;
Players[0].Name :=roh123reed; //Character Name
Players[0].Pass :=blahblah; //Character Pass
Players[0].Nick :=oh1; //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].Booleans[0] := false;//Ranging? true/false
Players[0].Booleans[1] := false;//Eat food?
Players[0].Integers[0] := 6975090;//1st color of monster
Players[0].Integers[1] := 4737870;//2nd color of monster
Players[0].Integers[2] := 7830657;//3rd color of monster
Players[0].Integers[3] := 0;//hitpoints
Players[0].Integers[4] := 20;//Kill monster for? in minutes.
Players[0].Strings[0] := Giant Bat;//monster name
Players[0].Strings[1] := 'even'; //the skill you want to train > strength, attack, defence, whipdefence, pure, even, accurate, rapid or longrange <
Players[0].Strings[2] := 's';//Player run direction > n, e, s, w <
{
Players[1].Name :=roh123red; //Character Name
Players[1].Pass :=cadsd; //Character Pass
Players[1].Nick :=oh1; //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].Booleans[0] := false;//Ranging? true/false
Players[1].Booleans[1] := false;//Eat food?
Players[1].Integers[0] := 6975090;//1st color of monster
Players[1].Integers[1] := 4737870;//2nd color of monster
Players[1].Integers[2] := 7830657;//3rd color of monster
Players[1].Integers[3] := 0;//hitpoints
Players[1].Integers[4] := 9;//Kill monster for? in minutes.
Players[1].Strings[0] := Giant Bat;//monster name
Players[1].Strings[1] := 'even'; //the skill you want to train > strength, attack, defence, whipdefence, pure, even, accurate, rapid or longrange <
Players[1].Strings[2] := 's';//Player run direction > n, e, s, w <
}
{
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].Booleans[0] := false;//Ranging? true/false
Players[2].Booleans[1] := false;//Eat food?
Players[2].Integers[0] := 0;//1st color of monster
Players[2].Integers[1] := 0;//2nd color of monster
Players[2].Integers[2] := 0;//3rd color of monster
Players[2].Integers[3] := 0;//hitpoints
Players[2].Integers[4] := 9;//Kill monster for? in minutes.
Players[2].Strings[0] := '';//monster name
Players[2].Strings[1] := 'even'; //the skill you want to train > strength, attack, defence, whipdefence, pure, even, accurate, rapid or longrange <
Players[2].Strings[2] := 's';//Player run direction > n, e, s, w <
}
{
Players[3].Name :=''; //Character Name
Players[3].Pass :=''; //Character Pass
Players[3].Nick :=''; //Nickname 3 - 4 Letter's of char name
Players[3].Active:=True; //True if you want this player to be ran in the script, false if not
Players[3].Booleans[0] := false;//Ranging? true/false
Players[3].Booleans[1] := false;//Eat food?
Players[3].Integers[0] := 0;//1st color of monster
Players[3].Integers[1] := 0;//2nd color of monster
Players[3].Integers[2] := 0;//3rd color of monster
Players[3].Integers[3] := 0;//hitpoints
Players[3].Integers[4] := 9;//Kill monster for? in minutes.
Players[3].Strings[0] := '';//monster name
Players[3].Strings[1] := 'even'; //the skill you want to train > strength, attack, defence, whipdefence, pure, even, accurate, rapid or longrange <
Players[3].Strings[2] := 's';//Player run direction > n, e, s, w <
}
{
Players[4].Name :=''; //Character Name
Players[4].Pass :=''; //Character Pass
Players[4].Nick :=''; //Nickname 3 - 4 Letter's of char name
Players[4].Active:=True; //True if you want this player to be ran in the script, false if not
Players[4].Booleans[0] := false;//Ranging? true/false
Players[4].Booleans[1] := false;//Eat food?
Players[4].Integers[0] := 0;//1st color of monster
Players[4].Integers[1] := 0;//2nd color of monster
Players[4].Integers[2] := 0;//3rd color of monster
Players[4].Integers[3] := 0;//hitpoints
Players[4].Integers[4] := 9;//Kill monster for? in minutes.
Players[4].Strings[0] := '';//monster name
Players[4].Strings[1] := 'even'; //the skill you want to train > strength, attack, defence, whipdefence, pure, even, accurate, rapid or longrange <
Players[4].Strings[2] := 's';//Player run direction > n, e, s, w <
}
{------------------------------------------------------------------------------}
{========================Don't edit below this!===============================}
{------------------------------------------------------------------------------}
Writeln('No-form setup');
end else
begin
Writeln('Form setup');
SRLPlayerForm(True, ['Ranging', 'Eat Food'], ['Color 1','Color 2','Color 3','Monster Hitpoints','Logout Time (9)'], ['Monster Name', 'Skill to train (even)','Run Direction (s)'], []);
end;
CheckUserNicks;
SRLid:= MySRLId;
SRLpassword:= MySRLPassword;
ScriptID := '424';
If (HowManyPlayers = 1) then Writeln('Single-Player Mode') else Writeln('Multi-Player mode; '+IntToStr(HowManyPlayers)+' Players');
end;
const
Version = '2.51';
ScriptName = 'Fast Fighter';
var
CharStartTime, TKilled, Txp, Startxp, foodate, RoundTimer, FailTimer, TFoodate,
ArrowStartAmount, TArrowAmount, FindMonsterFail, CurrentMonsterHP,CurrentKillTime:integer;
Hoverskillis,CurrentMonsterName,CurrentRunDir,Curr entStyle,StartTime:string;
CurrentColors: array of integer;
procedure LogoutSeq(reason:string); forward;
function ActiveCount:integer;
var i:integer;
begin
for i := 0 to HowManyPlayers-1 do
begin
if Players[i].Active = true then
result := result+1;
end;
end;
Function MyHpPercent:integer;
var s:string;
begin
result:=(GetMMLevels('hp',s)*100)/Players[CurrentPlayer].level[8];
end;
procedure SigEffect(ln:string);
var
I:integer;
begin
clearreport;
for I := 0 to 5 do
Addtoreport(ln+'||');
wait(30);
end;
procedure NarcSig;
var
I:integer;
s, Sig1, Sig2, Sig3, Sig4, Sig5, Sig6:string;
begin
Disguise('Sig Call');
ChangeReportWidth(255);
Status('Signature call; Watch the report box!');
Writeln('Signature call; in report box');
for I := 0 to 28 do
begin
SigEffect(s);
s := s + ' ';
end;
for I := 0 to 29 do
begin
SigEffect(s);
delete(s, Length(s), 1)
end;
Sig1 := ' _ _ _ ';
Sig2 := '| \ | | made by | | ';
Sig3 := '| \| | __ _ _ __ ___| | ___ ';
Sig4 := '| . ` |/ _` | __/ __| |/ _ \';
Sig5 := '| |\ | (_| | | | (__| | __/';
Sig6 := '|_| \_|\__,_|_| \___|_|\___|';
for I := 0 to Length(Sig1)-1 do
begin
ClearReport;
AddtoReport(Left(Sig1, I+1));
AddtoReport(Left(Sig2, I+1));
AddtoReport(Left(Sig3, I+1));
AddtoReport(Left(Sig4, I+1));
AddtoReport(Left(Sig5, I+1));
AddtoReport(Left(Sig6, I+1));
wait(50);
end;
AddtoReport(ScriptName+' v'+Version);
end;
procedure FFStart;
var
n, I,len:integer;
rname, Cha:string;
begin
if (MySRLID = '') then
begin
Writeln('Please register at SRL-stats in the future');
Writeln('to remove this message and the time delay.');
Writeln(' -Regards Narcle');
n := 15;
repeat
n := n-1;
wait(999);
Status(inttostr(n)+' Seconds to start.');
until (n=0)
end;
Status('Start Fast Fighter');
Cha := 'abcdefghijklmnopqrstvuwxyz0123456789';
Len := 4+random(15);
for I := 1 to len do
rname := rname + Cha[random(Length(cha))+1];
Disguise(rname);
StartTime := TheTime;
AddtoReport('Start time: '+StartTime);
end;
procedure HighestBrightness;
var
x,y,SlideButton:integer;
begin
GameTab(11);
SlideButton := DTMFromString('78DA633CC6C4C0F0920105083ACE673002D 28' +
'C40FC1F08180F01D5BC4155A3A0610957030260358FD1D468 3BA0' +
'AA398DA9465CC516530D9A5D920A3A286A003116104C');
x:= 707;
y:= 228;
If (not FindDTM(SlideButton,x,y,x-25,y-25,x+25,y+25)) then
begin
Mouse(711,233,2,2,true);
writeln('You brightness wasn''t set to highest, check your colors.');
end;
FreeDTM(SlideButton);
end;
Function RandomsCheck(Time: Integer): Boolean;
var
ti,t: Integer;
begin
if not(loggedin) then exit;
if time = 0 then Ti := 1 else Ti := time;
begin
for T := 1 to Ti do
begin
if FindNormalRandoms then
begin
FindInventoryRandoms;
result := true;
end;
if FindTalk then
Result := True;
if time = 0 then exit else Wait(200 + Random(50));
end;
end;
end;
procedure Stopban;
begin
if(not(LoggedIn))then Exit;
begin
case Random(60) of
0,1,2,3,4,5: Status('Antiban...');
0: wait(500+random(10000));
1: begin
RandomMovement;
SetAngle(true);
end;
2: HoverSkill(Hoverskillis ,false);
3: PickUpMouse;
4: gametab(4);
5: begin
RandomMovement;
SetAngle(true);
end;
end;
end;
end;
function InFightNotAttacking: Boolean;//made for my fighters :D very effective
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 GetArrowCount:integer;
//creds to masquerader | Freddy1990 | Boreas | Mr. Freeweed
//for the "GetAmount" parts I used
var
amountstr: string;
begin
gametab(5);
wait(50);
amountstr := TrimOthers(GetTextAtEx(667, 249, 0, StatChars, False, False, 0, 2, -1, 5, True, tr_AlphaNumericChars));
if (Length(amountstr) > 0) then
begin
if (Pos('K', amountstr) > 0) then
begin
Delete(amountstr, Length(amountstr), Length(amountstr));
Result := StrToInt(amountstr) * 1000;
end else
if (Pos('M', amountstr) > 0) then
begin
Delete(amountstr, Length(amountstr), Length(amountstr));
Result := StrToInt(amountstr) * 1000000;
end else
Result := StrToInt(amountstr);
end else
Result := 0;
end;
function GetXPof(skill: string; t:integer): integer;
var
p: TPoint;
i, tx, ty, x, y, l, II, WaitT: Integer;
xp, Nums, text2, xpis, typeis : string;
begin
Result := -1;
case t of
1: typeis := 'urrent';
2: typeis := 'level';
3: typeis := 'ainder';
end;
if (not LoggedIn) or (not TabExists(2)) then Exit;
GameTab(2);
if (GetCurrentTab <> 2) then Exit;
p := SkillToCoords(True, Skill);
if (p.x < 1) then Exit;
MMouse(p.x, p.y+7, 12, 4);
repeat
WaitT := WaitT+1;
wait(100);
if WaitT >= 300 then exit;
until findcolor(x, y, 10551295, 554, 205, 743, 465);
wait(300 + Random(100))
if (not FindColor(x, y, 10551295, MIX1, MIY1, MIX2, MIY2)) then Exit;
if IsTextInAreaEx(x, y, x + 60, y + 60, tx, ty, typeis, 0, SmallChars, False, False, 0, 1, 0) then
xp := GetTextAtEx(tx, ty, 0, SmallChars, False, True, 0, 1, 0, 50, False, tr_AllChars);
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;
result := strtoint(xpis);
Status(skill+' T:'+inttostr(t)+' = ' +xpis);
end;
procedure OptionsAre;
begin
if Players[CurrentPlayer].Integers[4] < 1 then CurrentKillTime := 9 else CurrentKillTime := Players[CurrentPlayer].Integers[4];
if Players[CurrentPlayer].Strings[2] = '' then CurrentRunDir := 's' else CurrentRunDir := lowercase(Players[CurrentPlayer].Strings[2]);
if Players[CurrentPlayer].Strings[1] = '' then CurrentStyle := 'even' else CurrentStyle := lowercase(Players[CurrentPlayer].Strings[1]);
CurrentColors := [Players[CurrentPlayer].Integers[0], Players[CurrentPlayer].Integers[1], Players[CurrentPlayer].Integers[2]];
if (Players[CurrentPlayer].Integers[3]<3) then CurrentMonsterHP := 3 else CurrentMonsterHP := Players[CurrentPlayer].Integers[3];
CurrentMonsterName := Players[CurrentPlayer].Strings[0];
If (CurrentPlayer > 0) and (Players[CurrentPlayer].Integers[0]=0) then
begin
CurrentColors := [Players[0].Integers[0], Players[0].Integers[1], Players[0].Integers[2]];
CurrentMonsterName := Players[0].Strings[0];
CurrentMonsterHP := Players[0].Integers[3];
end;
end;
Procedure HPNameColorCheck;
var
i:integer;
begin
if (CurrentColors[0] = 0) or (CurrentColors[1] = 0) or (CurrentColors[2] = 0) then
begin
Logout;
Writeln('Error: Please enter 3 monster colors for player(s).');
terminatescript;
end;
if CurrentMonsterName = '' then
begin
Logout;
Writeln('Error: Please enter monster name(s) for player(s).');
terminatescript;
end;
if CurrentMonsterHP = 0 then
begin
Logout;
Writeln('Error: Please enter monster HP(s) for player(s).');
terminatescript;
end;
for i := 0 to HowManyPlayers-1 do
Players[i].Booleans[10] := false;//Out of food = false;
end;
procedure FFOutFight;
begin
flag;
if (Players[CurrentPlayer].Booleans[0]) then RandomsCheck(8)
else RandomsCheck(5);
if (InFight) then
begin
Status('Killing Monster...');
repeat
if (not (LoggedIn)) then exit;
Wait(100);
RandomsCheck(0);
if infightnotattacking then
begin
if (Players[CurrentPlayer].Booleans[0]) then RandomsCheck(8) else RandomsCheck(4);
if infightnotattacking then exit;
end;
until (not(InFight))
end else
Wait(300);
end;
procedure PReport;
Var
CurRemXP, XPpH, Tlm, CurXP, CurAU, XPn, Killed, I,H,M,S:integer;
Active:string;
begin
if not(loggedin) then loginplayer;
FFoutfight;
ConvertTime(gettimerunning, H, M, S);
GetAllLevels;
CurXP := GetXPof(Hoverskillis,1);
if (HowManyPlayers = 1) then CurRemXP := GetXPof(Hoverskillis,3);
if (CurXP > Startxp) and (CurXP > 0) and (Startxp > 0) then XPn := CurXP-Startxp else XPn := 0;
If (XPn > 0) and (CurrentMonsterHP > 0) then Killed := (XPn/(4*CurrentMonsterHP)) else Killed := 0;
TKilled := TKilled+killed;
Txp := (Txp+XPn);
TFoodate := TFoodate + foodate;
if (HowManyPlayers = 1) and (CurRemXP>0) and (Txp > 0) then TLm := (CurRemXP)/(Txp/(H*60+m)) else TLm := 1;
if (HowManyPlayers = 1) and (txp>0) then XPpH := (Txp*60)/(H*60+m) else XPpH := 0;
if (Players[CurrentPlayer].Booleans[0]) then if (ArrowStartAmount > GetArrowCount) and (GetArrowCount > 0) then CurAU := ArrowStartAmount - GetArrowCount else CurAU := 0;
if (Players[CurrentPlayer].Booleans[0]) then TArrowAmount := TArrowAmount+CurAU;
if (HowManyPlayers = 1) then
begin
Cleardebug;
Writeln('|_Single Player__Narcle''s Fast Fighter v'+Version+' by Narcle___|');
Writeln('| Ran: ' + inttostr(H) + 'h:' + inttostr(M) + 'm:' + inttostr(S)+'s Current Time: '+TheTime+' Start Time: '+StartTime+' |');
WriteLn('| A:'+IntToStr(Players[currentplayer].level[1])+', S:'+IntToStr(Players[currentplayer].level[2])+', D:'+
+IntToStr(Players[currentplayer].level[3])+', R:'+IntToStr(Players[currentplayer].level[4])+
+' Total Kills: '+ inttostr(TKilled)+', Total XP Gained: '+ inttostr(Txp)+', Kills Round: '+ inttostr(Killed)+', XP Round: '+ inttostr(XPn));
WriteLn('| XP/hour: '+inttostr(XPpH)+ ', Estimated time to '+Capitalize(hoverskillis)+' level: '+inttostr((Tlm/60))+' Hour(s) & '+inttostr(tlm-(((Tlm/60)*60)))+' Minutes |');
If (Players[CurrentPlayer].Booleans[0]) then writeln('| Ammo remaining: '+inttostr(GetArrowCount)+', Total Ammo used: '+inttostr(TArrowAmount)+', Ammo Used/hour: '+inttostr((TArrowAmount*60)/(H*60+m))+' |');
If (Players[CurrentPlayer].Booleans[0]) and (txp>0) then writeln('| XP/ammo:'+inttostr(Txp/TArrowAmount)+', Estimated Ammo Time Remaining: '+ inttostr(GetArrowCount/((TArrowAmount*60)/(H*60+m)))+' Hour(s) & '+
+inttostr( ((GetArrowCount*60)/((TArrowAmount*60)/(H*60+m)))-((GetArrowCount/((TArrowAmount*60)/(H*60+m)))*60) )+' Minutes |'); //Think I could make this equation bigger? lol
end;
if (HowManyPlayers > 1) then
begin
Players[currentplayer].Integers[11] := Players[currentplayer].Integers[11] + XPn;
Players[currentplayer].Integers[12] := Players[currentplayer].Integers[12] + killed;
Players[currentplayer].Integers[13] := Players[currentplayer].Integers[13] + CurAU;
Players[currentplayer].Integers[15] := Players[currentplayer].Integers[15] + foodate;
Players[currentplayer].Integers[31] := Players[currentplayer].Integers[31] + TimeFromMark(RoundTimer);
if (Players[currentplayer].Integers[11]>0) and (Players[currentplayer].Integers[31]>0) then
Players[currentplayer].Integers[32] := ((Players[currentplayer].Integers[11]*3600)/(Players[currentplayer].Integers[31]/1000)) else Players[currentplayer].Integers[32] := 0;
ClearDebug;
Writeln('|_Multi-Player__Fast Fighter v'+Version+' by Narcle___|');
Writeln('| Ran: ' + inttostr(H) + 'h:' + inttostr(M) + 'm:' + inttostr(S)+'s Current Time: '+TheTime+' Start Time: '+StartTime+' |');
WriteLn('| Totals: XP Gained; '+ inttostr(Txp)+', Kills; '+ inttostr(TKilled)+', Food ate; '+inttostr(TFoodate)+', Ammo used; '+inttostr(TArrowAmount)+' |');
writeln(' __________________________________________________ ___________________________________');
Writeln('| # | Nick | Active | A S D R | XP gained | Kills | XP/hour | Food ate | Ammo Used |');
For I := 0 to HowManyPlayers - 1 do
begin
if Players[i].Active=True then Active := 'True' else Active := 'False';
Writeln('| '+IntToStr(I)+' | '+Players[i].Nick+' | '+Active+' | '+IntToStr(Players[i].level[1])+' '+IntToStr(Players[i].level[2])+' '+
+IntToStr(Players[i].level[3])+' '+IntToStr(Players[i].level[4])+' | XP: '+IntToStr(Players[i].Integers[11])+' | K: '+
+IntToStr(Players[i].Integers[12])+' | XP/h: '+IntToStr(Players[i].Integers[32])+' | Ate: '+IntToStr(Players[i].Integers[15])+
+' | AU: '+IntToStr(Players[i].Integers[13])+' |');
end;
end;
begin//stat updates
ReportVars[0] := Killed;
ReportVars[1] := XPn;
ReportVars[2] := FoodAte;
SendSRLReport;
end;
foodate := 0;
Killed := 0;
end;
procedure FFset;
Var
Mode:integer;
begin
if (not(LoggedIn)) then Exit;
Status('Setting up player: '+Players[CurrentPlayer].Name+'...');
MouseSpeed := 14+random(5);
OptionsAre;
HPNameColorCheck;
GetAllLevels;
GameTab(1);
mode := 0;
case CurrentStyle of
'attack': mode := 1;
'strength': mode := 2;
'defence': mode := 3;
'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
if (Players[CurrentPlayer].level[3] <= Players[CurrentPlayer].level[1]) and
(Players[CurrentPlayer].level[3] <= Players[CurrentPlayer].level[2]) then mode := 3;
if (Players[CurrentPlayer].level[1] <= Players[CurrentPlayer].level[3]) and
(Players[CurrentPlayer].level[1] <= Players[CurrentPlayer].level[2]) then mode := 1;
if (Players[CurrentPlayer].level[2] <= Players[CurrentPlayer].level[1]) and
(Players[CurrentPlayer].level[2] <= Players[CurrentPlayer].level[3]) then mode := 2;
end;
'pure': begin
if Players[CurrentPlayer].level[2]<15 then mode := 2 else
if Players[CurrentPlayer].level[1]<30 then mode := 1 else
if Players[CurrentPlayer].level[2]<25 then mode := 2 else
if Players[CurrentPlayer].level[1]<40 then mode := 1 else
mode := 2;
end;
end;
Case mode of
1: begin SetfightMode(1); Hoverskillis := 'attack'; end;
2: begin SetfightMode(2); Hoverskillis := 'strength'; end;
3: begin SetfightMode(4); Hoverskillis := 'defence'; end;
end;
Retaliate(True);
SetChat(PublicChat, 1);
SetChat('off', 2);
SetChat('off', 3);
SetChat('off', 4);
SetChat('off', 5);
gametab(11);
SetRun(True);
HighestBrightness;
if (Players[CurrentPlayer].Booleans[0]) then
begin
ArrowStartAmount:=GetArrowCount;
If (ArrowStartAmount < 200) then
LogoutSeq('Low ammo count! (below 200)');
end;
SetAngle(true);
Startxp := GetXPof(Hoverskillis,1);
CharStartTime := Getsystemtime+random(20000);
MarkTime(RoundTimer);
MarkTime(FailTimer);
If HaveReport then
begin
ClearReport;
ChangeReportWidth(284);
AddtoReport('/~~~~~~ Fast Fighter v'+Version+' ~~~~~~\');
AddtoReport('|________Made by Narcle_________|');
AddtoReport('| Active Players: '+inttostr(ActiveCount)+' False: '+inttostr(HowManyPlayers-ActiveCount)+' |');
AddtoReport('Current Player: '+Players[Currentplayer].Name);
end;
end;
procedure LogoutSeq(reason:string);
begin
if(not(loggedin))then exit;
FFoutfight;
Status('Logout sequence...');
PReport;
Stopban;
if (reason = '') then nextplayer(true) else
begin
Writeln(reason+' '+Players[Currentplayer].Name+' is now inactive.');
nextplayer(false);
end;
FFset;
end;
procedure FFhpcheck;
var
n,i,x,y,tcts:integer;
begin
if (not(loggedin)) or (MyHpPercent > 65) then exit;
tcts:= GetColorToleranceSpeed;
ColorToleranceSpeed(1);
if not Players[CurrentPlayer].Booleans[1] then Players[CurrentPlayer].Booleans[10] := true;
begin
if (not(Players[CurrentPlayer].Booleans[10])) and (MyHpPercent < 65) then
begin
gametab(4);
Status('Looking for food to eat...');
for i := 0 to 27 do
if ExistsItem(i+1) then
begin
MMouseItem(i+1);
GetMousePos(x, y);
wait(300+random(50));
if (pos('Eat', rs_GetUpText) > 0) then
begin
Mouse(x,y,0,0,true);
foodate := foodate+1;
if (MyHpPercent > 65) then exit;
end;
end else Players[CurrentPlayer].Booleans[10] := true;
end;
if (MyHpPercent < 30) then
begin
Status('Running away HP% < 30...');
RunAway(CurrentRunDir, true, 1, 5000+random(5000) );
end;
if (MyHpPercent < 65) and (Players[CurrentPlayer].Booleans[10]) then
begin
Status('HP low, waiting for regen... ');
repeat
RandomsCheck(4);
if ((Getsystemtime-CharStartTime)>(CurrentKillTime * 60000)) then
begin
logoutSeq('');
Break;
end;
if infight then
begin
RunAway(CurrentRunDir, true, 1, 10000+random(2000) );
if (MyHpPercent < 50) and infight then
begin
Status('Waiting to auto-logout...');
Repeat
wait(5000);
until(not(loggedin))
LogoutSeq('');
Break;
end;
end;
Case random(20) of
0: RandomMovement;
end;
n:=n+1;
if not LoggedIn then exit;
until( MyHpPercent > 65 );
SetAngle(true);
end;
end;
ColorToleranceSpeed(tcts);
end;
var
MobColorFail:integer;
function FFfight(option, Mname: string; Ranging:boolean; Colors:TintegerArray; tol: integer): boolean;//Derived from Hypersecrets
var
c, i, x, y: integer;
dir:string;
begin
result := false;
for c := 0 to High(Colors) do
begin
x:=MSCX;
y:=MSCY;
if FindColorSpiralTolerance(x, y, Colors[c], MSX1, MSY1, MSX2, MSY2, Tol) then
begin
MMouse(x, y, 3, 3);
if IsFightAt(x, y) then exit;
wait(150+random(50));
if (pos(Mname, rs_GetUpText) > 0) then
begin
result := true;
MarkTime(FailTimer);
MobColorFail := 0;
Status('Attacking...');
GetMousePos(x, y);
case Random(2) of
0: begin
Mouse(x, y, 0, 0, false);
if not(ChooseOption(option)) then
result := false;
end;
1: Mouse(x, y, 0, 0, true);
end;
Flag;
if ranging then FTwait(8) else FTwait(5);
exit;//key to color fail
end;
if not result then MobColorFail := MobColorFail+1;
end;
end;
if (MobColorFail >= 5) then
begin
case Random(4) of
0: dir := 'nswe';
1: dir := 'wens';
2: dir := 'sewn';
3: dir := 'ewns';
end;
for i := 0 to 3 do
for c := 0 to High(Colors) do
begin
if not (FindColorSpiralTolerance(x, y, Colors[c], MSX1, MSY1, MSX2, MSY2, Tol+3)) then
begin
if infight then exit;
Status('Rotating camera...');
MakeCompass(StrGet(dir, i+1));
end else break;
end;
end;
end;
function FFattack:boolean;
begin
if (not (LoggedIn)) or (infight and (not(infightnotattacking))) then Exit;
if FFfight('ttack', CurrentMonsterName, Players[CurrentPlayer].Booleans[0], CurrentColors, 3) then
begin
FFOutFight;
result:=true;
end;
end;
//=============================================Main Execution========================================= ===\\
begin
SetupSRL;
ClearDebug;
NarcSig;
FFStart;
DeclarePlayers;
OptionsAre;
HPNameColorCheck;
if(not(loggedin))then loginplayer;
FFset;
repeat
if(not(loggedin))then loginplayer;
FFattack;
FFhpcheck;
RandomsCheck(0);
if infightnotattacking then FFattack;
if (infight and (not(infightnotattacking))) then FFOutFight;
Stopban;
if (TimeFromMark(FailTimer) > 240000) then LogoutSeq('Finding mob failed');
if ((Getsystemtime-CharStartTime)>(CurrentKillTime * 60000)) then logoutSeq('');
until(false);
end.
Powered by vBulletin® Version 4.2.1 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.