faster789
2008-08-19 13:13:32
Hey I was looking for a script if anyone made, but apparently not, a mage curser where it curses a monster over and over again as this is a very cheap and efficient way of leveling :)
2008-08-19 13:13:32
2008-08-19 16:39:48
{---------------------------------------------------------}
{ ________ }
{ ____ ____ / _____/ }
{ / \ / __ \/ \ ___ }
{ | | \| ___/\ \_\ \ }
{ |___| / \___ >\______ / _ }
{ \/ \/ \/ |_| }
{ EDITED FOR SRL4 by KAVE }
{---------------------------------------------------------}
{---------------------------------------------------------}
{ DUMMY CURSER + UNDEAD CRUMBLER }
{---------------------------------------------------------}
program SpellDummy;
{.include SRL\SRL.scar}
{.include SRL\SRL\skill\magic.scar}
var
NumOfCurses: Integer;
AntiBann: Integer;
zx, zy: Integer;
{---------------------------------------------------------}
{ SETUP }
{---------------------------------------------------------}
const
Spell = 'Curse'; // 'Confuse', 'Weaken', 'Curse', or 'Crumble Undead'
RunAwayDir = 'Z'; // Direction to run away. N,S,E or W (Choose Well)
CursesToDo = 1000; // Set this properly,
DummyName = 'onk'; // Dummys name eg. 'Chicken'
Colour1 = 3422607; // Colour of your dummy
Colour2 = 1974868;
Colour3 = 3554709;
MouseSpeeed = 14; // Lower is Faster, (idea from fours)
{---------------------------------------------------------}
{ Declare Players }
{---------------------------------------------------------}
procedure DeclarePlayers;
begin
Status('Loading Players')
HowManyPlayers := 3;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := ''; // 3-4 letters of username
Players[0].Active := True;
Players[0].Integers[1] := 3;
Players[1].Name := '';
Players[1].Pass := '';
Players[1].Nick := ''; // 3-4 letters of username
Players[1].Active := True;
Players[1].Integers[1] := 10;
Players[2].Name := '';
Players[2].Pass := '';
Players[2].Nick := ''; // 3-4 letters of username
Players[2].Active := True;
Players[2].Integers[1] := 10;
end;
{---------------------------------------------------------}
{ Find Talk + Fights }
{---------------------------------------------------------}
//WT-Fakawi
function FindFastRandoms: Boolean;
var
i: Integer;
begin
for i := 1 to 6 do
begin
case I of
1: if FindDead then
Result := True;
2: if FindMod then
Result := True;
3: if FindMime then
Result := True;
4: if FindMaze then
Result := True;
5: if FindQuiz then
Result := True;
6: if FindDemon then
Result := True;
end;
wait(1);
end;
end;
{---------------------------------------------------------}
{ Find Talk + Fights }
{---------------------------------------------------------}
procedure TalkingRandoms;
begin
FindTalk;
wait(10)
FindFastRandoms;
wait(10);
if (FindFight = true) then
begin
RunAwayDirection(RunAwayDir);
Wait(10000 + random(2000));
RunBack;
end;
FindTalk;
end;
{---------------------------------------------------------}
{ Random Case Randoms }
{---------------------------------------------------------}
procedure NormalRandoms;
begin
if (not (LoggedIn)) then Exit;
AntiBann := 1 + Random(5)
case AntiBann of
1: FindNormalRandoms;
end;
FindTalk;
end;
{---------------------------------------------------------}
{ PROGRESS REPORT }
{---------------------------------------------------------}
procedure Report;
begin
ClearDebug;
SRLRandomsReport;
WriteLn('>--------------------<>--------------------<')
WriteLn('> neGs Dummy Curser - Progress Report ')
WriteLn('> ')
WriteLn('> Running Time: ' + (TimeRunning) + '')
WriteLn('> Curses Cast: ' + IntToStr(NumOfCurses) + '')
WriteLn('>--------------------<>--------------------<')
end;
{---------------------------------------------------------}
{ CURSING PROCEDURE }
{---------------------------------------------------------}
var t, Tries: integer;
procedure CurseDummy;
begin
if (not (LoggedIn)) then Exit;
GameTab(7);
Case Lowercase(Spell) of
'confuse':
begin
if (not ((GetColor(618, 238) = 15533737))) then
begin
WriteLn('Not enough runes for cast.'); Wait(500);
WriteLn('Logging out.');
Players[CurrentPlayer].Active := False;
Logout;
wait(2000)
NextPlayer(True);
NumOfCurses := 0;
Exit
end;
if (GetColor(618, 238) = 15533737) then
begin
TalkingRandoms;
Cast('Confuse')
FindObjCustom(zx, zy, [DummyName], [Colour1, Colour2, Colour3], 10);
if (IsUpText(DummyName)) then
begin
Mouse(zx, zy, 0, 0, true);
wait(1200 + random(300));
TalkingRandoms;
NumOfCurses := NumOfCurses + 1
T := T + 1;
Tries := 0;
end else
begin
TalkingRandoms;
Tries := Tries + 1
wait(10);
WriteLn('' + IntToStr(Tries) + '');
CurseDummy;
end;
end;
end;
'weaken':
begin
if (not ((GetColor(570, 268) = 15533737))) then
begin
WriteLn('Not enough runes for cast.'); Wait(500);
WriteLn('Logging out.');
Players[CurrentPlayer].Active := False;
Logout;
wait(2000)
NextPlayer(True);
NumOfCurses := 0;
Exit
end;
if (GetColor(570, 268) = 15533737) then
begin
TalkingRandoms;
Cast('Weaken')
FindObjCustom(zx, zy, [DummyName], [Colour1, Colour2, Colour3], 10);
GetMousePos(zx, zy);
if (IsUpText(DummyName)) then
begin
Mouse(zx, zy, 0, 0, true);
TalkingRandoms;
wait(1200 + random(300));
NumOfCurses := NumOfCurses + 1
T := T + 1;
Tries := 0;
end else
begin
TalkingRandoms;
Tries := Tries + 1
wait(10);
WriteLn('' + IntToStr(Tries) + '');
CurseDummy;
end;
end;
end;
/////////////////////////////////Curse Casting Procedure
'curse':
begin
if (not ((GetColor(665, 267) = 15533737))) then
begin
WriteLn('Not enough runes for cast.'); Wait(500);
WriteLn('Logging out.');
Players[CurrentPlayer].Active := False;
Logout;
wait(2000)
NextPlayer(True);
NumOfCurses := 0;
Exit
end;
if (GetColor(665, 267) = 15533737) then
begin
TalkingRandoms;
Cast('Curse')
FindObjCustom(zx, zy, [DummyName], [Colour1, Colour2, Colour3], 10);
GetMousePos(zx, zy);
if (IsUpText(DummyName)) then
begin
Mouse(zx, zy, 0, 0, true);
TalkingRandoms;
wait(1200 + random(300));
NumOfCurses := NumOfCurses + 1
T := T + 1;
Tries := 0;
end else
begin
TalkingRandoms;
Tries := Tries + 1
wait(10);
WriteLn('' + IntToStr(Tries) + '');
CurseDummy;
end;
end;
end;
/////////////////////////////////Crumble Undead Casting Procedure
'crumble undead':
begin
if (not (GetColor(595, 306) = 15533737)) then
begin
WriteLn('Not enough runes for cast.'); Wait(500);
WriteLn('Logging out.');
Players[CurrentPlayer].Active := False;
Logout;
wait(2000)
NextPlayer(True);
NumOfCurses := 0;
Exit
end;
if (GetColor(595, 306) = 15533737) then
begin
TalkingRandoms;
Cast('Crumble Undead')
FindObjCustom(zx, zy, [DummyName], [Colour1, Colour2, Colour3], 10);
GetMousePos(zx, zy);
if (IsUpText(DummyName)) then
begin
Mouse(zx, zy, 0, 0, true);
wait(1200 + random(300));
NumOfCurses := NumOfCurses + 1
T := T + 1;
Tries := 0;
TalkingRandoms;
end else
begin
TalkingRandoms;
Tries := Tries + 1
wait(10);
WriteLn('' + IntToStr(Tries) + '')
CurseDummy;
end;
end;
end;
end;
/////////////////////////////////Cant Find Monster Failsafe
if (Tries > 10) then
begin
WriteLn('Couldnt Find Dummy')
WriteLn('Did you set the colour/dummyname right?')
wait(500)
WriteLn('Logging Out')
Players[CurrentPlayer].Active := False;
Logout;
wait(2000)
NextPlayer(True);
NumOfCurses := 0;
Exit
end;
end;
{---------------------------------------------------------}
{ MAIN LOOP }
{---------------------------------------------------------}
begin
SetupSRL;
ActivateClient;
DeclarePlayers;
MouseSpeed := MouseSpeeed + Random(2);
begin
if (not (LoggedIn)) then
begin
Loginplayer;
HighestAngle;
end;
end;
repeat
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
MouseSpeed := MouseSpeeed + Random(2);
repeat
CurseDummy;
NormalRandoms;
TalkingRandoms;
Report;
until (NumOfCurses = CursesToDo);
if (NumOfCurses = CursesToDo) then
begin
WriteLn('Done all curses, woo!');
Players[CurrentPlayer].Active := False;
LogOut;
wait(2000)
NextPlayer(True);
NumOfCurses := 0;
HighestAngle;
end;
until (false);
end.
2008-08-19 18:47:30
2008-08-21 10:54:39
From: HayHay89
wow thats really old i continued on one in jr mems but no1 used so i didnt update it any more