PDA

View Full Version : Solarwind's Monk Terminator



solarwind
01-04-2007, 12:58 AM
Solarwind's Monk Terminator

--> Instant Download <-- (http://www.mediafire.com/?9ndntyq3hky)



Description:

Solarwind's Monk Terminator kills monks, auto checks hp and auto heals from the monks. It is useful to level up your combat 10+ characters.

Next release:

The next release is coming right after I fix a small issue with player time and antiban.

The next release will have the following features:

- Better monster finding.
- Random mouse speed.
- Anti randoms
- Makes sure not to attack monsters while in a fight or target is in a fight.
- Check for random events more often.
- Rotate screen if monster not found.
- Skill training selection.
- Multi player.
- Progress report.
- Check hit points while in a fight.




To do:

- Fix player time issue...
- Auto chat/auto responding.
- Trade handling.
- Anti ban.
- Option for bone burying.
- Runs from fight if hit points gets too low during a fight.

Done: (available in next release)

- Better monster finding
- Anti randoms
- Check for random events more often.
- Rotate screen if monster not found.
- Skill training selection.
- Multi player.
- Progress report.
- Check hit points while in a fight.
- Runs from fight if hit points gets too low during a fight.


Notes:

This is my first alpha release of my Monk Terminator. There is no progress reports yet but please test and leave feedback.

Also, if you have more ideas that can be added to the todo list, please post.

petrock6
01-04-2007, 01:00 AM
Sounds good. I will test it after i get Stressminer!

solarwind
01-04-2007, 01:11 AM
Cool. I'll be updating this and posting newer versions.

Sparrows
01-04-2007, 02:30 AM
Sounds good! Nice work!

Edit: I went through your script and it looks like you have a lot of writeln(' ') in your script which will cause alot of lines to be written in your debug log which could get crowded. I also don't see a place to declare players at so there's no place to log in. I think that was it... other than that it looks pretty good and I'm gonna test it out.

Edit2: What was the empty fightmode function for?

WhiteShadow
01-04-2007, 03:50 AM
Looks pretty good at the moment good job.

solarwind
01-04-2007, 04:20 AM
Sounds good! Nice work!
Edit2: What was the empty fightmode function for?

The fightmode function was put there to select a mode to train (attack, strength, defence). Yeah, I was wondering if there was an SRL function that would let me chose a fight mode. Is there? And thanks for testing this out guys. I'll add in a player array and more in the next version.

Also, I'm working on my tutorial island runner at the same time. I'm having trouble with this: http://www.villu-reborn.com/showthread.php?p=49634#post49634

Sparrows
01-04-2007, 06:58 AM
Hey, just getting back to you on the fightmode function. First off you need to declare players and then have them do all the setup for the players and whatnot and that's easy. You want to make it so your character's map is pointing perfectly north at the highest angle possible. I kind of edited your script a little... okay i guess it's a lot but take a look at it. I tested it out for a while and it let my character die. I think the healing process is way to slow. It should be sped up a bit (I didn't speed it up in the script below). Another good add would be a progress report. Oh and I really think that it should have more than one colour because it's getting very confused or you can just change the tolerance?


Program MonkTerminator;
{.include srl/srl.scar}
{.include srl/srl/skill/Fighting.scar}

Const
MonkColour = 8562644; //Color of the Monks head. This is important. If monks are not found, change this colour.
MSpeed = 8; //Mouse motion speed.
HealHealth = 50; //Minimum HP percentage to heal at.


Procedure DeclarePlayers;
Begin
HowManyPlayers := 2;
NumberOfPlayers (HowManyPlayers);
CurrentPlayer := 0;

Players[0].Name :=''; //user name
Players[0].Pass :=''; //password
Players[0].Nick :=''; //3 consecutive letters of username
Players[0].Active := True; //don't touch
Players[0].Skill := 'strength';

Players[1].Name :='';
Players[1].Pass :='';
Players[1].Nick :='';
Players[1].Active := True;
Players[1].Skill := 'strength';

End;

Procedure SetPlayerParams;
Begin
if ( not ( LoggedIn )) then Exit;

GameTab(1);
begin
if Players[CurrentPlayer].Skill = 'attack' then SetFightMode(1);
if Players[CurrentPlayer].Skill = 'strength'then SetFightMode(2);
if Players[CurrentPlayer].Skill = 'defence' then SetFightMode(4);
LampSkill := LowerCase ( Players[CurrentPlayer].Skill );
end;
SetChat('on', 1);
SetChat('friends', 2);
SetChat('off', 3);
SetChat('on', 1);
FindTalk;
end;

Function FindMonk: Boolean;
Begin
x := MSCX;
y := MSCY;
if (FindObj(x, y, 'onk', MonkColour, 15)) then
begin
Result:= True;
end else
begin
Wait(500 + Random(1000));
Result:= False;
end;
End;

Procedure RClickMonk;
Begin
Case Random(2) of
0: begin
Mouse(x, y, 0, 0, True);
end;
1: begin
Mouse(x, y, 0, 0, False);
wait(50 + Random(100));
ClickOption('ttac', 1);
end;
end;
End;

Procedure AttackMonk;
Begin
if(FindMonk) then
begin
if(not (InFight) or not(IsFightAt(x, y))) then
begin
RClickMonk;
wait(200);
FFlag(0);
MouseSpeed := MSpeed;
wait(2000);
repeat
wait(2500 + Random(2000));
MMouse(Random(750), Random(450), 10, 10);
until(not (InFight));
end;
if(InFight) then
begin
FTWait(2);
OutFight;
end;
end;
End;


Procedure MonkHeal;
Begin
if (HpPercent <= HealHealth) then
begin
if(FindMonk) then
begin
if(not (infight) or not(IsFightAt(x, y))) then
begin
Wait(50);
FFlag(0);
MouseSpeed := MSpeed;

//Start actual healing code...
Mouse(x, y, 0, 0, False);
Sleep(50 + Random(100));
ClickOption('alk-to', 1);
Sleep(1000 + Random(200));
ClickToContinue;
Sleep(1000 + Random(200));
Mouse(Random(201) + 156, Random(12) + 383, 0, 0, True);
ClickToContinue;
Sleep(500 + Random(200));
ClickToContinue;
Sleep(500 + Random(200));
ClickToContinue;
Sleep(2000 + Random(1000));
end;

if(InFight) then
begin
FTWait(2);
OutFight;
end;
end;
end;
End;

Procedure Setup;
Begin
WriteLn('->[ Initializing...');
SetRun(True);
MouseSpeed := MSpeed;
ActivateClient;
ClearDebug;
End;

Begin
SetUpSRL;
DisguiseScar('RuneScape - the massive online adventure game by Jagex Ltd');
Repeat
DeclarePlayers;
LoginPlayer;
SetPlayerParams;
HighestAngle;
PerfectNorth;
Setup;
begin
repeat
AntiBan;
Wait(50 + Random(100));
MonkHeal;
AttackMonk;
until(not(LoggedIn))
end;
if(not(Loggedin)) then NextPlayer(false);
Until(false)
End.



Edit:
Spent the last hour or however long it was going through and adding a whole bunch of new crap in there. Can somebody scroll through it to see if it looks right? Thanks!

Oh by the way can someone get some good colours for the monks? I made it so you can put in 8 different colours if you scroll down a bit in the script you'll see where it goes.


Program MonkTerminator;
{.include srl/srl.scar}
{.include srl/srl/skill/Fighting.scar}

Const
MSpeed = 8; //Mouse motion speed.
HealHealth = 50; //Minimum HP percentage to heal at.
PlayerTime = 300; // Time for each player in minutes.

Var
MonkColours: array[1..8] of integer;
MCIndex: integer;
StartTime, PlayTime, RunningTime : LongInt;
Monks : integer;

Procedure DeclarePlayers;
Begin
HowManyPlayers := 2;
NumberOfPlayers (HowManyPlayers);
CurrentPlayer := 0;

Players[0].Name :=''; //user name
Players[0].Pass :=''; //password
Players[0].Nick :=''; //3 consecutive letters of username
Players[0].Active := True; //don't touch
Players[0].Skill := 'strength';

Players[1].Name :='';
Players[1].Pass :='';
Players[1].Nick :='';
Players[1].Active := True;
Players[1].Skill := 'strength';

End;

Procedure SetPlayerParams;
Begin
if ( not ( LoggedIn )) then Exit;

GameTab(1);
begin
if Players[CurrentPlayer].Skill = 'attack' then SetFightMode(1);
if Players[CurrentPlayer].Skill = 'strength'then SetFightMode(2);
if Players[CurrentPlayer].Skill = 'defence' then SetFightMode(4);
LampSkill := LowerCase ( Players[CurrentPlayer].Skill );
end;
SetChat('on', 1);
SetChat('friends', 2);
SetChat('off', 3);
SetChat('on', 1);
FindTalk;
end;

Procedure PlayerStats;

Var
Active: string;
i, temp: Integer;
Begin
if Players[CurrentPlayer].Active=True then
Active:='True'
else
Active:='False';
WriteLn ('');
WriteLn ('');
Writeln (' Name : '+ Players[CurrentPlayer].Name);
Writeln (' Number : '+inttostr(CurrentPlayer));
Writeln (' Autoing : '+ Active);
if ( Players[CurrentPlayer].Worked > 0 ) then
Writeln (' Worked : '+ inttostr(Players[CurrentPlayer].Worked));
Writeln (' Location : '+ Players[CurrentPlayer].loc);
Temp:=(GetSystemTime div 1000);
Temp := Temp - StartTime;
if ( Playtime < temp ) then
Writeln (' Time Left : '+ IntToStr ( Temp - PlayTime / 60 ) + ' Minutes');
WriteLn ('');
WriteLn ('');

for I := 0 to HowManyPlayers - 1 do
begin
if Players[i].Active=True then Active:='T' else Active:='F';
WriteLn ( ' ' + Inttostr ( I) + ' : ' + Players[i].Name + ' = ' + Active
+' . - Lvl : '
+' '+inttostr(Players[i].level[1])
+' '+inttostr(Players[i].level[2])
+' '+inttostr(Players[i].level[3])+
+' '+inttostr(Players[i].level[5])+
+' '+inttostr(Players[i].level[8])+'. '
+' W : '+IntToStr(Players[i].Worked)+' min. '
+' K : '+ IntToStr(Players[i].Killed)+' Monks. '
+' L : '+Players[i].loc);
end
WriteLn ('');
WriteLn ('');
end;

Procedure ProgressReport;

begin
writeln('');
WriteLn('');
WriteLn(' Monk Trainer and Healer');
Writeln('');
Writeln(' Worked for '+ TimeRunning);
Writeln(' Attacked '+inttostr(Monks)+' Monks.');
PlayerStats;
SRLRandomsReport;
end;

Procedure SetupMonkColors;
Begin
MonkColours[1] := 8562644;
MonkColours[2] := 8562644;
MonkColours[3] := 8562644;
MonkColours[4] := 8562644;
MonkColours[5] := 8562644;
MonkColours[6] := 8562644;
MonkColours[7] := 8562644;
MonkColours[8] := 8562644;
End;

Function FindMonk: Boolean;

Var CBx, CBy : Integer;

Begin
for MCIndex := 1 to 8 do
begin
if FindColorSpiralTolerance(CBx, CBy, MonkColours[MCIndex], MSX1, MSY1, MSX2, MSY2, 12) then
begin
Result:= True;
end else
begin
Wait(500 + Random(1000));
Result:= False;
end;
end;
End;

Procedure RClickMonk;
Begin
Case Random(2) of
0: begin
Mouse(x, y, 0, 0, True);
end;
1: begin
Mouse(x, y, 0, 0, False);
wait(50 + Random(100));
ClickOption('ttac', 1);
end;
end;
End;

Procedure AttackMonk;
Begin
if(FindMonk) then
begin
if(not (InFight) or not(IsFightAt(x, y))) then
begin
RClickMonk;
wait(200);
FFlag(0);
MouseSpeed := MSpeed;
wait(2000);
repeat
wait(2500 + Random(2000));
MMouse(Random(750), Random(450), 10, 10);
until(not (InFight));
end;
if(InFight) then
begin
FTWait(2);
OutFight;
end;
end;
Monks := Monks + 1;
Players[CurrentPlayer].Killed := Players[CurrentPlayer].Killed+1;
End;


Procedure MonkHeal;
Begin
if (HpPercent <= HealHealth) then
begin
if(FindMonk) then
begin
if(not (infight) or not(IsFightAt(x, y))) then
begin
Wait(50);
FFlag(0);
MouseSpeed := MSpeed;
Mouse(x, y, 0, 0, False);
Sleep(50 + Random(100));
ClickOption('alk-to', 1);
Sleep(1000 + Random(200));
ClickToContinue;
Sleep(1000 + Random(200));
Mouse(Random(201) + 156, Random(12) + 383, 0, 0, True);
ClickToContinue;
Sleep(500 + Random(200));
ClickToContinue;
Sleep(500 + Random(200));
ClickToContinue;
Sleep(2000 + Random(1000));
end;

if(InFight) then
begin
FTWait(2);
OutFight;
end;
end;
end;
End;

Procedure SetUpScript;
Begin
WriteLn('->[ Initializing...');
SetupMonkColors;
MCIndex := 1;
SetUpSRL;
DeclarePlayers;
MouseSpeed := MSpeed;
LoginPlayer;
End;

Begin
SetUpScript;
DisguiseScar('RuneScape - the massive online adventure game by Jagex Ltd');
Repeat
SetPlayerParams;
HighestAngle;
PerfectNorth;
MakeCompass('N');

ProgressReport;

begin
repeat
AntiBan;
Wait(50 + Random(100));
MonkHeal;
AttackMonk;

RunningTime := GetSystemTime;

if(not(LoggedIn))
or(RunningTime - StartTime >((PlayerTime * 60000)+ Random (Playertime * 100)))then Break;

Until WeAreDead or (not(LoggedIn))
if LoggedIn then
begin
SetChat('off', 1);
repeat
Wait(1000);
until(not(LoggedIn));
Writeln('Switching User Now');
NextPlayer(True);
Wait(1000 + Random(2000));
end;
end;
if(not(Loggedin)) then NextPlayer(False);
Until(false)
End.

Buckleyindahouse
01-04-2007, 07:20 AM
I was wondering is there a specific place I would use this script at?

Edit: Well, I used this at that place above Falador and next to Barbarian Village and the Mining place and it works pretty good. I like how when you start the script and it does that intro. Very nice.

solarwind
01-04-2007, 06:01 PM
I was wondering is there a specific place I would use this script at?

Edit: Well, I used this at that place above Falador and next to Barbarian Village and the Mining place and it works pretty good. I like how when you start the script and it does that intro. Very nice.

At the place above Falador and next to Barbarian village.

Also, sparrows, thanks for editing my script. I won't use the stuff you posted exactly, but the concepts are there. I'm going to do it a bit differently. But thanks for all your help guys. Next version coming soon!

Also, putting in too many monk colours is inefficient for this script. In WT's goblin scheduler, it is good, since there are many different looking goblins. But for this script, monks mostly look exactly the same. I agree, maybe two or three monk colours would be good, but not too many. As for the player array and thre report, it is a must, but I'm going to try to do it a better looking way.

Ahh, and yes, SetFightMode was the function that I was looking for. Thanks for that. Much improved release coming up for sure!

Another point, the nickname of the player does not have to be three consecutive letters in the usename. It could be even four or five.

Once more, another point, I see you've pulled a lot of stuff directly from other scripts. You shouldn't do that. Thanks for helping though!

DaWu
01-04-2007, 06:25 PM
Its not bad, tho you should 2x the randomchecking, also add multiple colors, to make the training more effective, also add something to rotate the screen if monster not found, it makes it easier to find the monster.

xMichael
01-04-2007, 06:36 PM
I'm going to test this script and give back my feedback:D

solarwind
01-05-2007, 12:25 AM
Its not bad, tho you should 2x the randomchecking, also add multiple colors, to make the training more effective, also add something to rotate the screen if monster not found, it makes it easier to find the monster.

Excellent suggstions, I'll add that on my todo list on my first post as first priority. Thanks!

jared123456
01-05-2007, 02:47 AM
ima go test it :)

solarwind
01-05-2007, 03:38 AM
Sure, but a new version is almost out, probably even a few hours close to being released. =)

syberium
01-05-2007, 03:45 AM
thanks for this contribution! im overlooking your script and learning alot from it. =] thanks.

jared123456
01-05-2007, 03:54 AM
sweet a new version by the way i added you to msn from my yahoo!, Jaredclinton@yahoo.com

solarwind
01-05-2007, 04:29 AM
No problem. Don't look at this one right now, bad example. The next release is a better example.

jared123456
01-05-2007, 05:31 AM
anyway to make this work for a Guard? i killed monks in like 1 hit and they low xp

solarwind
01-05-2007, 07:40 AM
anyway to make this work for a Guard? i killed monks in like 1 hit and they low xp

Not as of yet, but I'll add support for other monsters in the coming releases. Right now, I have to focus on perfecting killing monks and healing. Once that is done, I'll add support for other monsters and walkback support. This script is mainly for leveling up noobs or for training attack/strengh pures.

I Karma I
01-05-2007, 10:19 PM
Solarwind, you can't be serious?

Mjordan
01-05-2007, 10:30 PM
Solarwind, you can't be serious?

serious about what?

solarwind
01-05-2007, 11:18 PM
serious about what?

Inside stuff...

fakov
01-26-2007, 05:31 AM
well tested it few hours it worked fine but was a little slow on finding the monks.