SRL Archive - SRL Archives

ScapeRune.scar - The First Color PrisonPete Solver!


Naum

2008-12-26 16:33:28

SEE NAIRI


Prison Pete Solver!

by Naum and manfromczech

Note : Bugs are fixed, but needed to be tested :)

Hello everyone, after long hours of hard work on this project which me and manfromczech put in, we have finished it!! And believe it or not - that little .rar file contains the first ever ScapeRune/Prison Pete solver.


What it includes

The main finding procedures in this script are from manfromczech's Pete Plugin. They are included along with ScapeRune.scar, and there are instructions on how to run it.
The Main Procedures:
//-----------------------------------------------------------------//
//-- Scar Standard Resource Library --//
//-- ยป ScapeRune Routines --//
//-----------------------------------------------------------------//
// * function InScapeRune : Boolean // * by NaumanAkhlaQ
// * procedure TalkToPeteOption(Option: integer) // * by NaumanAkhlaQ and manfromczech
// * procedure TalkToPete; // * by NaumanAkhlaQ and manfromczech
// * procedure PullLever; // * by NaumanAkhlaQ
// * procedure GetAnimal; // * by manfromczech and NaumanAkhlaQ
// * procedure PopAnimal; // * by manfromczech
// * procedure SolvePete; // * by NaumanAkhlaQ + manfromczech
{--------------------------Plugin Routines-----------------------------}
// * function Pete_AnalyzeAnimal(var AnimalName: string; ClientHDC: HDC): Boolean; // * by manfromczech
// * function Pete_FindAnimal(var px, py: Integer; AnimalName: String; ClientHDC: HDC): Boolean; // * by manfromczech


Credits
I'd like to say a big thanks to Tarajunky as without his accounts we couldn't have started making it.
I would also like to say a further thanks to: Hamgoof and Quickmarch and Death-Magnet.
Special thanks goes to SKy_Scripter as his function ScanFill is used in here. Sorry to anyone I may have missed out on.


Change Log

Version:
0.1 Basic members release
0.2 Better animal finding
0.3 Revamped solver
0.4 SCAR part made
0.5 - 0.9 Improved solving
1.0 - Full release to jr. Members
1.1 BETA Current Version (fixed all bugs and updated solver!!) [Working!!]
1.2 BETA A Bug was fixed



Thanks, and Enjoy!!

Note: If any errors are found please PM me or manfromczech, thanks :)

Attached the sauce! - this is the source from version 0.7 and lower

People who it worked for:
NaumanAkhlaQ
Jesus (no, its not a joke- really)
QuickMarch
Tickyy
Manfromczech

Iroki

2008-12-26 16:36:46

Yeah Nauman, we spent a very long time. Very good work. I'm very happy that we made this solver :)

Magiic

2008-12-26 17:32:10

yeah hopefully this'll be included soon, maybe next rev unless login changes again. good job.

Kasi

2008-12-26 17:56:32

has this been tested

Harry

2008-12-26 18:09:24

Post PetePlugin.dll source! ;)

MylesMadness

2008-12-26 18:45:03

sauce?

kingarabian

2008-12-26 22:39:15

From: Mylesmadness
sauce?


Do you like sauce?

@naum habibi: nicceee solver. About time it got solved :)

Naum

2008-12-27 05:10:58

Okay, attached the source ! Enjoy :)

Iroki

2008-12-27 10:33:26

From: pur3b100d
has this been tested


Yes, this has been tested :P

JaMe$

2008-12-27 11:26:32

You shouldn't have posted the source. Jagex can download it and do something to prevent it.

Harry

2008-12-27 12:12:38

From: JaMe$
You shouldn't have posted the source. Jagex can download it and do something to prevent it.

No source posted makes most people not use it. If Jagex really wanted to mess up the solver, they easily could with the .dll by working on decrypting it. So it makes no difference if the source is posted or not.. as far as I know :p

Markus

2008-12-27 12:31:12

From: JaMe$
You shouldn't have posted the source. Jagex can download it and do something to prevent it.

Jagex can also download SRL source and do something so it doesn't work. Jagex can also download box solver source, quiz source, certer source and all other kind of random solver sources to do something to 'prevent them'.

Anyways, great job!

Few suggestions:
In TalkToPete:

Case Random(2) Of
0 : FindNPCChatText('hat is', ClickLeft);
Else
FindNPCChatText('et out', ClickLeft);
That's just ugly as fuck imo? Why not

if (random(2) = 0) then
FindNPCChatText('hat is', ClickLeft)
else
FindNPCChatText('et out', ClickLeft);

In PullLever, why the FindColorsSpiralTolerance? As far as I can see you don't use the spiral function at all.
Maybe remove the global vars and make all of the procedures functions, remove the sx/sy var, and a couple of other things I will look into later.

But overal, as I said, great job! Don't have a char in Pete atm to try it out myself, but once I got one rest assure I will :)

Naum

2008-12-27 14:02:59

Ahh yes sorry, In FindColorsSpiral the first two params were meant to be MSCX, MSCY but I forgot to change it, my bad :). I'll change it now.
Also I guess im just used to using Cases :(.
But really thank-you for your comments :)

EDIT : Upped new version.
Download again.

Magiic

2008-12-27 14:42:21

just got a pete, i'll test it now.
failed :( i thought it was done this time an all.
Successfully compiled (2166 ms)
SRL Compiled in 0 msec
We need to catch: dog
Popped one
We caught correct animals
We need to get 2 more animals :)!
We need to catch: cat
Popped one
We caught correct animals
We need to get 1 more animals :)!
We need to catch: cat
Popped one
We caught incorrect animal
We need to get 2 more animals :)!
We need to catch: goat
Popped one
We caught correct animals
We need to get 1 more animals :)!
We need to catch: sheep
[Runtime Error] : Exception: Out of system resources in line 193 in script C:\Program Files\SCAR 3.15\includes\srl/srl/core/AntiRandoms/ScapeRune.scar

Naum

2008-12-27 15:17:24

Hmm, thats a wierd error. We'll check it out ;).

EDIT : Ohh yes, I've uploaded a better version now sorry. The Captcha was renaming it RS Screenshot (random(99999)) and saving it - by a freak accident it had already chosen a number which was saved, that was making it bug up. Fixed it.

Heavenzeyez1

2008-12-27 15:25:29

I hope that this is gonna be added to SRL soon,
Good job!
~Eerik~

Iroki

2008-12-27 15:49:28

I hope too :)

noidea

2008-12-27 16:17:43

How long have you been working on this?

Iroki

2008-12-27 16:22:52

2 mounths, maybe shorter :)

kingstun

2008-12-27 22:34:52

mY bad wrong topic!
Great job guys.

[-jesus-]

2008-12-28 00:13:49

Successfully compiled (1909 ms)
SRL Compiled in 0 msec
Couldn't analyze animal
NextPlayer(Active: False);

:(

Iroki

2008-12-28 04:08:46

What animal it was??



SRL Compiled in 0 msec
We need to catch: sheep
Popped one
We caught correct animals
We need to get 2 more animals :)!
We need to catch: goat
Popped one
We caught incorrect animal
We need to get 3 more animals :)!
We need to catch: goat
Popped one
We caught incorrect animal
We need to get 3 more animals :)!
We need to catch: dog
Popped one
We caught correct animals
We need to get 2 more animals :)!
We need to catch: dog
Popped one
We caught incorrect animal
We need to get 3 more animals :)!
We need to catch: sheep
Popped one
We caught incorrect animal
We need to get 3 more animals :)!
We need to catch: dog
Popped one
We caught incorrect animal
We need to get 3 more animals :)!
We need to catch: goat
Popped one
We caught correct animals
We need to get 2 more animals :)!
We need to catch: goat
Popped one
We caught correct animals
We need to get 1 more animals :)!
We need to catch: dog
Popped one
PrisonPete random solved.

Solved by:
- ManFromCzech
- NaumanAkhlaQ

Successfully compiled (1751 ms)
SRL Compiled in 15 msec
We need to catch: dog
Popped one
We caught correct animals
We need to get 2 more animals :)!
We need to catch: goat
Popped one
We caught correct animals
We need to get 1 more animals :)!
We need to catch: dog
Popped one
PrisonPete random solved.

Solved by:
- ManFromCzech
- NaumanAkhlaQ


New client targeted
Successfully compiled (1725 ms)
SRL Compiled in 0 msec
We need to catch: cat
Popped one
We caught correct animals
We need to get 2 more animals :)!
We need to catch: sheep
Popped one
We caught correct animals
We need to get 1 more animals :)!
We need to catch: cat
Popped one
PrisonPete random solved.

Solved by:
- ManFromCzech
- NaumanAkhlaQ

Gu3st...

2008-12-28 06:07:17

Is this going to be added to SRL??? It should *NUDGE (to the the developers)*

bullzeye95

2008-12-28 12:12:16

From: Zytex!
Is this going to be added to SRL??? It should *NUDGE (to the the developers)*


It seems to be failing for a lot of people.

Iroki

2008-12-28 12:35:59

From: bullzeye95
It seems to be failing for a lot of people.


lot?? Only 2 people post proggies

-first bug with capching pictures is eliminated and second, hmm, i need more details.

bullzeye95

2008-12-28 15:09:01

I meant a lot as the majority of people that tried it.

[-jesus-]

2008-12-28 16:15:41

Ignore my previous post, this worked beautifully:
I can't add it into my script tho, gives an error in globals.scar

New client targeted
Successfully compiled (1788 ms)
SRL Compiled in 16 msec
We need to catch: cat
Popped one
We caught correct animals
We need to get 2 more animals :)!
We need to catch: cat
Popped one
We caught correct animals
We need to get 1 more animals :)!
We need to catch: sheep
Popped one
PrisonPete random solved.

Solved by:
- ManFromCzech
- NaumanAkhlaQ

Prison Pete Solved in 126844 msec
Successfully executed

Iroki

2008-12-28 16:53:33

Nice to hear that solver is working :P

Naum

2008-12-29 05:54:09

Very nice :) Jesus. Just would like to add, if any of your have an account please could you PM me because I found a better way of finding the middle of the room. Thanks :).

Claymore

2009-01-03 16:04:04

What do you know, SRL is getting stronger. Well guys, i've been scripting in RSBot for a while, but i gotta say. I miss SRL. And here i see a big accomplishment. Good job uh…. Naruman

Tickyy

2009-01-03 17:24:55

We need to catch: cat
Popped one
We caught incorrect animal
We need to get 3 more animals :)!
We need to catch: dog
Popped one
We caught incorrect animal
We need to get 3 more animals :)!
We need to catch: goat
Popped one
We caught correct animals
We need to get 2 more animals :)!
We need to catch: dog
Popped one
We caught correct animals
We need to get 1 more animals :)!
We need to catch: dog
Popped one
We caught incorrect animal
We need to get 2 more animals :)!
We need to catch: cat
Popped one
We caught correct animals
We need to get 1 more animals :)!
We need to catch: sheep
Popped one
PrisonPete random solved.

Solved by:
- ManFromCzech
- NaumanAkhlaQ

It works good, Well done. :)

Naum

2009-01-03 18:07:25

Very good, With a few tweaks, Me and Manfromczech will be working on the final solver.

At current we're working on a mordaut solver. So any random accounts in ScapeRune or Mordaut would be most helpful :).

Thank-you my friends, and a happy 2009 to all of you :)!!!

Tickyy

2009-01-04 09:11:52

so will this be a part of Scar soon, like all the other Anti randoms? :)

ZephyrsFury

2009-01-04 09:22:26

Wow this seems really good. If it works as well as it looks then I would definately vote for it to be added to SRL. :D

randy marsh

2009-01-04 15:00:28

well these be added to srl revsion?

Iroki

2009-01-04 16:56:57

it should be :)

Pyro

2009-01-04 19:04:21

Can someone post just the scar bit here? :( My girlfriends laptop doesnt have a rar unpacker. And my laptop crapped itself.

I want to take a look. I tried working on this random but i have a short attention span. Most definitely the animals were insanely hard to tell apart. I solved this random manually a few times and i could barely tell them apart myself.

Nice work guys :)

Cazax

2009-01-04 19:08:50

From: Pyro
Can someone post just the scar bit here? :( My girlfriends laptop doesnt have a rar unpacker. And my laptop crapped itself.

I want to take a look. I tried working on this random but i have a short attention span. Most definitely the animals were insanely hard to tell apart. I solved this random manually a few times and i could barely tell them apart myself.

Nice work guys :)


library PetePlugin;


uses
FastShareMem,
SysUtils,
Classes,
Windows,
Math,
Graphics;

{$R *.res}


const
ax : array[0..7] of ShortInt = (1, 0,-1, 0, 1, 1,-1,-1);
ay : array[0..7] of ShortInt = (0, 1, 0,-1,-1, 1, 1,-1);


type
TSCARPlugFunc = record
Name: string;
Ptr: Pointer;
end;


TOneStrProc = procedure(s: string);
TSCARWindowHandle = function(): Integer;

type
TRGB32 = packed record
B, G, R, A: Byte;
end;
TRGB32Array = packed array[0..MaxInt div SizeOf(TRGB32) - 1] of TRGB32;
PRGB32Array = ^TRGB32Array;

TPointArray = array of TPoint;

TFill = record
Width, Height, Area,
MidX, MidY, x1, y1, groups,
x2, y2: Integer;
end;

var
Writeln: TOneStrProc;
GetClientWindowHandle: TSCARWindowHandle;

var
c: array of array of Integer;
b: array of array of Boolean;
area, bitsize, bgcolor, fillcolor,
w, h, x1, y1, x2, y2, xx, yy: Integer;
animx1, animy1, animx2, animy2: integer;
FillInfo: Boolean;



procedure ScanFill(x, y: Integer); stdcall;
var
i: integer;
begin
if (c[x][y] <> bgcolor) then exit;
c[x][y] := fillcolor;
b[x][y] := True;
area := area + 1;
xx := 0;
yy := 0;

xx := x + 1;
while (xx < W) and (C[xx][y] = bgColor)and
(not(B[xx][y])) do
begin
c[xx][y] := fillcolor;
b[xx][y] := True;
Area := area + 1;
xx := xx + 1;
// if (animx1 < xx) then animx1 := xx;
end;
if (xx - x > 1) then ScanFill(xx, y);

xx := x - 1;
while (xx > 1) and (C[xx][y] = bgColor) and
(not(B[xx][y])) do
begin
c[xx][y] := fillcolor;
b[xx][y] := True;
Area := area + 1;
xx := xx - 1;
// if (animx1 > xx) then animx1 := xx;
end;
if (x - xx > 1) then ScanFill(xx, y);

yy := y + 1;
while (yy < H) and (C[x][yy] = bgColor) and
(not(B[x][yy])) do
begin
c[x][yy] := fillcolor;
b[x][yy] := True;
Area := area + 1;
yy := yy + 1;
// if (animy1 < yy) then animy1 := yy;
end;
if (yy - y > 1) then ScanFill(x, yy);

yy := y - 1;
while (yy > 1) and (C[x][yy] = bgColor) and
(not(B[x][yy])) do
begin
c[x][yy] := fillcolor;
b[x][yy] := True;
Area := area + 1;
yy := yy - 1;
// if (animy2 > yy) then animy2 := yy;
end;
if (y - yy > 1) then ScanFill(x, yy);

for i:= 0 to bitsize do
if (x + ax[i] > 0) and (x + ax[i] < w) and
(y + ay[i] > 0) and (y + ay[i] < h) then
if (not(B[x + ax[i]][y + ay[i]])) and
(c[x + ax[i]][y + ay[i]] = bgcolor) then
ScanFill(x + ax[i], y + ay[i]);
end;


procedure FFillBg(x, y: Integer); stdcall;
var
i: integer;
begin
c[x][y] := fillcolor;
area := area + 1;

for i:= 0 to bitsize do
if (x + ax[i] > 0) and (x + ax[i] < w) and
(y + ay[i] > 0) and (y + ay[i] < h) then
if (c[x + ax[i]][y + ay[i]] = bgcolor) then
begin
FFillBg(x + ax[i], y + ay[i]);
end

end;


{

Prison-Pete solver
By: ManFromCzech

}

var
a: array [1..9] of record
x1, y1, x2, y2, Parts,
Area, Parm, mx, my, Holes,
MinDist:Integer;
end;





function Pete_AnalyzeAnimal( var AnimalName: string; ClientHDC: HDC): Boolean; stdcall;
var
BMP2: TBitmap;
x, y, MaxArea, Pixels, i,
fx, fy, Holes, MinDist,
mx, my, Dist, HistoArea: Integer;
HG: array [0..1000] of Integer;
Done: Boolean;
st, lum1, lum2: Extended;
Line: PRGB32Array;
label Lab1;
begin
Result := False;
AnimalName := 'unknow';
w := 460; h := 330;
Bmp2 := TBitmap.Create;
Bmp2.Width := w;
Bmp2.Height:= h;
Bmp2.PixelFormat := pf32bit;
SetLength(c, w + 1, h + 1);
SetLength(b, w + 1, h + 1);
bitsize := 7;
st := Now;
Done := false;
fx := 0; fy := 0;
dec(w); dec(h);
repeat
BitBlt(Bmp2.Canvas.Handle, 0, 0, w, h, ClientHDC, 60, 20, SRCCOPY);
fillchar(HG, sizeof(HG), 0);

for y := 0 to h do
begin
Line := bmp2.ScanLine[y];

for x := 0 to w do
begin
c[x][y] := RGB(Line[x].R, Line[x].G, Line[x].B);
b[x][y] := false;
if (Line[x].G <> 0) then
begin
Lum1 := (Line[x].G * 3);
Lum2 := (Line[x].R + Line[x].B);
end else c[x][y] := 0;
if ((lum2 / lum1) < 1.2) then c[x][y] := 0;

with Line[x] do
inc(HG[round(Sqrt(R*R + G*G + B*B))]);

end;
end;

try
for y := 0 to h do
for x := 0 to w do
if (not(b[x][y])) and (c[x][y] <> 0) then
begin
bgcolor := c[x][y];
fillcolor := c[x][y];
Area := 0;
ScanFill(x, y);
if (Area > 180) then
begin
fillcolor := 0;
FFillBg(x, y);
end;
end;
except end;

x1 := w;
y1 := h;
x2 := 0;
y2 := 0;

for y := 5 to h-5 do
for x := 5 to w-5 do
if (c[x][y] <> 0) then
begin
if (x < x1) then x1 := x - 5;
if (y < y1) then y1 := y;
if (x > x2) then x2 := x + 5;
if (y > y2) then y2 := y;
end;
if ((x2 - x1) >= 50) and ((y2 - y1) >= 30) then Done := True;
Sleep(100);
until (((Now - st) * 86400000) > 15000) or (Done);
if (not(done)) then goto lab1;


for y := y1 to y2 do
for x := x1 to x2 do
if (c[x][y] > 0) then
begin
b[x][y] := false;
c[x][y] := clwhite;
end;

bgcolor := clwhite;
fillcolor := clblue;
MaxArea := 0;
fx := 0;
fy := 0;

for y := y1 to y2 do
for x := x1 to x2 do
if (c[x][y] = clwhite) then
begin
Area := 0;
FFillBg(x, y);
if (MaxArea < Area) then
begin
MaxArea := Area;
fx := x;
fy := y;
end;
end;


Area := 0;
bgcolor := clblue;
fillcolor := clred;
FFillBg(fx, fy);
Pixels := Area;
if (Pixels < 4000) then goto lab1;

bmp2.canvas.brush.color := 0;
bmp2.Canvas.Brush.Style := bsSolid;
bmp2.Canvas.Rectangle(0, 0, w, h);

for y := 0 to h do
for x := 0 to w do
begin
if (C[x][y] = clblue) then c[x][y] := 0;
if (c[x][y] = 255) then bmp2.Canvas.Pixels[x, y] := c[x][y];
end;

bmp2.Canvas.Brush.Color := 10;
bmp2.Canvas.FloodFill(3, 3, 0, fsSurface);
bmp2.Canvas.FloodFill(w - 3, h - 3, 0, fsSurface);

for y := 0 to h do
for x := 0 to w do
c[x][y] := bmp2.Canvas.Pixels[x, y];


Holes := 0;
BgColor := 0;
FillColor := clpurple;
for y := y1 to y2 do
for x := x1 to x2 do
if (c[x][y] = 0) then
begin
Area := 0;
FFillBg(x, y);
if (Area > 100) then
Holes := Holes + 1;
end;

x := 0;
HistoArea := 0;

for i:= 1000 downto 0 do
if (HG[i] > 0) then
begin
HistoArea := HistoArea + HG[i];
inc(x);
if x > 20 then
break;
end;

HistoArea := round(HistoArea / 10);

for y := y1 to y2 do
for x := x1 to x2 do
if (c[x][y] = clred) and (not(b[x][y])) then
for i := 0 to 7 do
begin
c[x + ax[i]][y + ay[i]] := clred;
b[x + ax[i]][y + ay[i]] := true;
end;

mx := 0;
my := 0;
area := 0;


for y := y1 to y2 do
for x := x1 to x2 do
if (c[x][y] = clred) then
begin
for i := 0 to 7 do
if (c[x + ax[i]][y + ay[i]] = 10) then
c[x + ax[i]][y + ay[i]] := clwhite;

mx := mx + x;
my := my + y;
area := area + 1;
end;

mx := round(mx / area);
my := round(my / area);

c[mx][my] := clgreen;
for i := 0 to 7 do
c[mx + ax[i]][my + ay[i]] := clgreen;

MinDist := 500;
for y := y1 to y2 do
for x := x1 to x2 do
if (c[x][y] = clwhite) then
begin
Dist := Round(Sqrt(Sqr(x - mx) + Sqr(y - my)));
if (MinDist > Dist) then
begin
MinDist := Dist;
fx := x;
fy := y;
end;
end;

c[fx][fy] := clpurple;
for i := 0 to 7 do
if (c[fx + ax[i]][fy + ay[i]] <> 0) then
c[fx + ax[i]][fy + ay[i]] := clpurple;


x := 0;
HistoArea := 0;

for i:= 1000 downto 0 do
if (HG[i] > 0) then
begin
HistoArea := HistoArea + HG[i];
inc(x);
if x > 15 then
break;
end;


if (Pixels > 22500) then AnimalName := 'goat';
if ((Pixels > 16000) and (Pixels < 22000)) then AnimalName := 'cat';
if ((Pixels > 15000) and (Pixels < 22000)) and (MinDist > 35) then AnimalName := 'sheep';
if ((Pixels > 12500) and (Pixels <= 16000)) and (MinDist > 10) then AnimalName := 'dog';


if (not(AnimalName = 'unknow')) then
begin
Result := True;
goto Lab1;
end;

Lab1:

bmp2.free;
end;







function Pete_FindAnimal(var px, py: Integer; AnimalName: String; ClientHDC: HDC): Boolean; stdcall;
var
BMP: TBitmap;
Line: PRGB32Array;
x, y, BRPixels, BPixels, RPixels, minKol, maxKol, minArea, maxArea, kol, Xa, Ya, AB, BRRPP: Integer;
Lum1, Lum2: extended;
Found, FoundAnim, FoundAnimal: Boolean;



procedure CountBRPixels(var x1, y1, x2, y2: integer);
var
a, b: integer;
begin
BRPixels := 0;
RPixels := 0;
BPixels := 0;
for b := (y1 + 1) to (y2 - 1) do
begin
for a := (x1 + 1) to (x2 - 1) do
begin
if (c[a][b] = clred) then inc(RPixels);
if (c[a][b] = clred) and (c[a + 1][b] = 0) then inc(BRPixels);
if (c[a][b] = clred) and (c[a - 1][b] = 0) then inc(BRPixels);
if (c[a][b] = clred) and (c[a][b + 1] = 0) then inc(BRPixels);
if (c[a][b] = clred) and (c[a][b - 1] = 0) then inc(BRPixels);
end;
end;
end;


////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

//Finding cat
procedure FindCat(var x1, y1, x2, y2: integer);
var
x, y, z, v, how, value, rownr, lastrowvalue, tvalue, countvalue, testvalue, ones, twoes: integer;
IsLongTail: boolean;
begin
x := x1; y := y1; z := x2; v := y2;
if ((z - x) >= ((v - y) + 15)) then how := 1 else if (((z - x) + 15) <= (v - y)) then how := 2 else how := 3;
IsLongTail := False;

if (how = 1)then
begin
rownr := 0;
lastrowvalue := 1;
countvalue := 0;
ones := 0;
twoes := 0;
FoundAnimal := False;
for x := x1 to z do
begin
value := 0;
for y := y1 to v do
begin
if (c[x][y] = clred) then inc(value);
b[x][y] := True;
end;
inc(rownr);
tvalue := 0;
if (value <= 5) and (value > 0) then tvalue := 1;
if (value > 5) and (value < 20) then tvalue := 2;
if not(tvalue <> 1) or not(tvalue <> 2) or not(tvalue <> 0) then
begin
if (lastrowvalue = tvalue) then
begin
inc(countvalue);
end else
begin
if (countvalue <> 0) and (lastrowvalue <> 0) then
begin
if (countvalue > 2) or (lastrowvalue = 2) then
begin
// WriteLn(inttostr(lastrowvalue) + ' [' + inttostr(countvalue) + ']');
if (lastrowvalue = 1) then inc(ones);
if (lastrowvalue = 1) and (countvalue > 11) then IsLongTail := True;
if (lastrowvalue = 2) then inc(twoes);
end;
countvalue := 1;
testvalue := 0;
lastrowvalue := tvalue;
end;
end;
end;
end;
if (((ones < 3) and (ones > 0) and (twoes = 2)) or ((ones = 3) and (twoes = 2)) or ((ones = 3) and (twoes = 3)) or ((ones = 2) and (twoes = 3)) or ((ones = 1) and (twoes = 4))) and (IsLongTail) then
begin
px := x1 + Round((x2 - x1)/2);
py := y1 + Round((y2 - y1)/2);
end;
end;

if (how = 2) then
begin
rownr := 0;
lastrowvalue := 1;
countvalue := 0;
ones := 0;
twoes := 0;
FoundAnimal := False;
for y := y1 to v do
begin
value := 0;
for x := x1 to z do
begin
if (c[x][y] = clred) then inc(value);
b[x][y] := True;
end;
inc(rownr);
tvalue := 0;
if (value <= 5) and (value > 0) then tvalue := 1;
if (value > 5) and (value < 20) then tvalue := 2;
if not(tvalue <> 1) or not(tvalue <> 2) or not(tvalue <> 0) then
begin
if (lastrowvalue = tvalue) then
begin
inc(countvalue);
end else
begin
if (countvalue <> 0) and (lastrowvalue <> 0) then
begin
if (countvalue > 2) or (lastrowvalue = 2) then
begin
// WriteLn(inttostr(lastrowvalue) + ' [' + inttostr(countvalue) + ']');
if (lastrowvalue = 1) then inc(ones);
if (lastrowvalue = 1) and (countvalue > 11) then IsLongTail := True;
if (lastrowvalue = 2) then inc(twoes);
end;
countvalue := 1;
testvalue := 0;
lastrowvalue := tvalue;
end;
end;
end;
end;
if (((ones < 3) and (ones > 0) and (twoes = 2)) or ((ones = 3) and (twoes = 2)) or ((ones = 3) and (twoes = 3)) or ((ones = 2) and (twoes = 3)) or ((ones = 1) and (twoes = 4))) and (IsLongTail) then
begin
px := x1 + Round((x2 - x1)/2);
py := y1 + Round((y2 - y1)/2);
end;
end;

if (how = 3) then
for y := y1 to v do
for x := x1 to z do b[x][y] := True;

// WriteLn('how: ' + inttostr(how));
end;


////////////////////////////////////////////////////////////////////////////////

//Finding dog
procedure FindDog(var x1, y1, x2, y2: integer);
var
x, y, z, v, how, value, rownr, lastrowvalue, tvalue, countvalue, testvalue, ones, twoes: integer;
animal: array of integer;
IsDog1, IsDog2: boolean;
begin
x := x1; y := y1; z := x2; v := y2;
if ((z - x) >= ((v - y) + 15)) then how := 1 else if (((z - x) + 15) <= (v - y)) then how := 2 else how := 3;
IsDog1 := False;
IsDog2 := False;

if (how = 1)then
begin
rownr := 0;
lastrowvalue := 1;
countvalue := 0;
ones := 0;
twoes := 0;
FoundAnimal := False;
for x := x1 to z do
begin
value := 0;
for y := y1 to v do
begin
if (c[x][y] = clred) then inc(value);
b[x][y] := True;
end;
inc(rownr);
tvalue := 0;
if (value <= 5) and (value > 0) then tvalue := 1;
if (value > 5) and (value < 20) then tvalue := 2;
if not(tvalue <> 1) or not(tvalue <> 2) or not(tvalue <> 0) then
begin
if (lastrowvalue = tvalue) then
begin
inc(countvalue);
end else
begin
if (countvalue <> 0) and (lastrowvalue <> 0) then
begin
if (countvalue > 2) or (lastrowvalue = 2) then
begin
// WriteLn(inttostr(lastrowvalue) + ' [' + inttostr(countvalue) + ']');
if (lastrowvalue = 1) then inc(ones);
if (lastrowvalue = 1) and (countvalue > 10) then IsDog1 := True;
if (lastrowvalue = 2) and (countvalue > 8) then IsDog2 := True;
if (lastrowvalue = 2) then inc(twoes);
end;
countvalue := 1;
testvalue := 0;
lastrowvalue := tvalue;
end;
end;
end;
end;
if (((ones = 4) and (twoes = 3)) or ((ones = 3) and (twoes = 3)) or ((ones = 3) and (twoes = 2)) or ((ones = 2) and (twoes = 3))) and (not(IsDog1)) and (not(Isdog2)) then
begin
px := x1 + Round((x2 - x1)/2);
py := y1 + Round((y2 - y1)/2);
end;
end;

if (how = 2) then
begin
rownr := 0;
lastrowvalue := 1;
countvalue := 0;
ones := 0;
twoes := 0;
FoundAnimal := False;
for y := y1 to v do
begin
value := 0;
for x := x1 to z do
begin
if (c[x][y] = clred) then inc(value);
b[x][y] := True;
end;
inc(rownr);
tvalue := 0;
if (value <= 5) and (value > 0) then tvalue := 1;
if (value > 5) and (value < 20) then tvalue := 2;
if not(tvalue <> 1) or not(tvalue <> 2) or not(tvalue <> 0) then
begin
if (lastrowvalue = tvalue) then
begin
inc(countvalue);
end else
begin
if (countvalue <> 0) and (lastrowvalue <> 0) then
begin
if (countvalue > 2) or (lastrowvalue = 2) then
begin
// WriteLn(inttostr(lastrowvalue) + ' [' + inttostr(countvalue) + ']');
if (lastrowvalue = 1) then inc(ones);
if (lastrowvalue = 1) and (countvalue > 10) then IsDog1 := True;
if (lastrowvalue = 2) and (countvalue > 8) then IsDog2 := True;
if (lastrowvalue = 2) then inc(twoes);
end;
countvalue := 1;
testvalue := 0;
lastrowvalue := tvalue;
end;
end;
end;
end;
if (((ones = 4) and (twoes = 3)) or ((ones = 3) and (twoes = 3)) or ((ones = 3) and (twoes = 2)) or ((ones = 2) and (twoes = 3))) and (not(IsDog1)) and (not(Isdog2)) then
begin
px := x1 + Round((x2 - x1)/2);
py := y1 + Round((y2 - y1)/2);
end;
end;

end;

////////////////////////////////////////////////////////////////////////////////

//Finding goat
procedure FindGoat(var x1, y1, x2, y2: integer);
begin
Area := 0;
ScanFill(x, y);
if (Area > 200) then
begin
px := x1 + Round((x2 - x1)/2);
py := y1 + Round((y2 - y1)/2);
end;
end;

////////////////////////////////////////////////////////////////////////////////

//Finding sheep
procedure FindSheep(var x1, y1, x2, y2: integer);
var
x, y, z, v, how, value, rownr, lastrowvalue, tvalue, countvalue, testvalue,
ones, twoes, xxis, yyis: integer;
IsBigBody, IsHorn: boolean;
begin
x := x1; y := y1; z := x2; v := y2;
if ((z - x) >= ((v - y) + 13)) then how := 1 else if (((z - x) + 13) <= (v - y)) then how := 2 else how := 3;
IsBigBody := False;
IsHorn := False;
xxis := z - x;
yyis := v - y;

if (how = 1)then
begin
rownr := 0;
lastrowvalue := 1;
countvalue := 0;
ones := 0;
twoes := 0;
FoundAnimal := False;
for x := x1 to z do
begin
value := 0;
for y := y1 to v do
begin
if (c[x][y] = clred) then inc(value);
b[x][y] := True;
end;
inc(rownr);
tvalue := 0;
if (value <= 5) and (value > 0) then tvalue := 1;
if (value > 5) and (value < 15) then tvalue := 2;
if (value > 15) and (value < 45) then tvalue := 3;
if not(tvalue <> 1) or not(tvalue <> 2) or not(tvalue <> 0) or not(tvalue <> 3) then
begin
if (lastrowvalue = tvalue) then
begin
inc(countvalue);
end else
begin
if (countvalue <> 0) and (lastrowvalue <> 0) then
begin
if (countvalue > 2) or (lastrowvalue = 2) then
begin
// WriteLn(inttostr(lastrowvalue) + ' [' + inttostr(countvalue) + ']');
if (lastrowvalue = 1) then inc(ones);
if (lastrowvalue = 2) and (countvalue > 11) then IsBigBody := True;
if (lastrowvalue = 2) and (countvalue > 27) then IsBigBody := False;
if (lastrowvalue = 2) then inc(twoes);
end;
countvalue := 1;
testvalue := 0;
lastrowvalue := tvalue;
end;
end;
end;
end;
if (((ones < 4) and (ones > 0)) and ((twoes > 0) and(twoes < 3))) and (IsBigBody) and (yyis < 27) then
// if (((ones = 2) and (twoes = 1)) or ((ones = 0) and (twoes = 1)) or ((ones = 2) and (twoes = 2)) or ((ones = 3) and (twoes = 2)) or ((ones = 1) and (twoes = 2)) or ((ones = 0) and (twoes = 2)) or ((ones = 1) and (twoes = 1))) and (IsBigBody) then
begin
px := x1 + Round((x2 - x1)/2);
py := y1 + Round((y2 - y1)/2);
end;
end;

if (how = 2) then
begin
rownr := 0;
lastrowvalue := 1;
countvalue := 0;
ones := 0;
twoes := 0;
FoundAnimal := False;
for y := y1 to v do
begin
value := 0;
for x := x1 to z do
begin
if (c[x][y] = clred) then inc(value);
b[x][y] := True;
end;
inc(rownr);
tvalue := 0;
if (value <= 5) and (value > 0) then tvalue := 1;
if (value > 5) and (value < 15) then tvalue := 2;
if (value > 15) and (value < 45) then tvalue := 3;
if not(tvalue <> 1) or not(tvalue <> 2) or not(tvalue <> 0) or not(tvalue <> 3) then
begin
if (lastrowvalue = tvalue) then
begin
inc(countvalue);
end else
begin
if (countvalue <> 0) and (lastrowvalue <> 0) then
begin
if (countvalue > 2) or (lastrowvalue = 2) then
begin
// WriteLn(inttostr(lastrowvalue) + ' [' + inttostr(countvalue) + ']');
if (lastrowvalue = 1) then inc(ones);
if (lastrowvalue = 2) and (countvalue > 11) then IsBigBody := True;
if (lastrowvalue = 2) and (countvalue > 27) then IsBigBody := False;
if (lastrowvalue = 2) then inc(twoes);
end;
countvalue := 1;
testvalue := 0;
lastrowvalue := tvalue;
end;
end;
end;
end;
if (((ones < 4) and (ones > 0)) and ((twoes > 0) and(twoes < 3))) and (IsBigBody) and (xxis < 27)then
// if (((ones = 2) and (twoes = 1)) or ((ones = 0) and (twoes = 1)) or ((ones = 2) and (twoes = 2)) or ((ones = 3) and (twoes = 2)) or ((ones = 1) and (twoes = 2)) or ((ones = 0) and (twoes = 2)) or ((ones = 1) and (twoes = 1))) and (IsBigBody) then
begin
px := x1 + Round((x2 - x1)/2);
py := y1 + Round((y2 - y1)/2);
end;
end;

end;

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////


Procedure AnimalCorners(var x, y: integer);
var
sx, sy: Integer;
Found: Boolean;
begin
//animy1
animy1 := y - 5;

//animx1
Found := False;
for sx := x - 25 to x do
for sy := y + 35 downto y do
if (x - 25 > 0) then
if (y + 35 < w) then
begin
if (c[sx][sy] = clred) and not (Found) then
begin
animx1 := sx - 5;
Found := True;
end;
end;// else AnimalCoords(x, y);

//animy2
Found := False;
for sy := y + 35 downto y do
for sx := x + 25 downto animx1 do
if (x + 25 < h) then
if (y + 25 < w) then
begin
if (c[sx][sy] = clred) and not (Found) then
begin
animy2 := sy + 5;
Found := True;
end;
end;// else AnimalCoords(x, y);

//animx2
Found := False;
for sx := x + 25 downto x do
for sy := animy1 to animy2 do
if(x + 25 < h) then
begin
if (c[sx][sy] = clred) and not (Found) then
begin
animx2 := sx + 5;
Found := True;
end;
end;// else AnimalCoords(x, y);

end;



begin
w := 530; h := 350;
Bmp := TBitmap.Create;
Bmp.Width := w;
Bmp.Height:= h;
Bmp.PixelFormat := pf32bit;
SetLength(c, w + 1, h + 1);
SetLength(b, w + 1, h + 1);
bitsize := 7;
BitBlt(Bmp.Canvas.Handle, 0, 0, w, h, ClientHDC, 1, 1, SRCCOPY);
Result := False;


// for y := 0 to h do c[0][y] := 0;
// for y := 0 to w do c[x][0] := 0;
// for y := 0 to h do c[530][y] := 0;
//finding background and coloring 0
for y := 20 to h - 10 do
begin
Line := bmp.ScanLine[y];
for x := 20 to w - 10 do
begin
c[x][y] := RGB(Line[x].R, Line[x].G, Line[x].B);
if (Line[x].G <> 0) then
begin
Lum1 := (Line[x].G * 3);
Lum2 := (Line[x].R + Line[x].B);
end else c[x][y] := 0;
if ((lum2 / lum1) < 1.2) then c[x][y] := 0;
end;
end;



// finding animals and coloring red
for y := 20 to h - 20 do
for x := 20 to w - 20 do
if (c[x][y] <> 0) then
begin
c[x][y] := clred;
b[x][y] := False;
end;


FoundAnim := False;
for y := 20 to h - 10 do
for x := 20 to w - 10 do
if (c[x][y] = clred) and not(b[x][y]) and not(FoundAnim)then
begin
BgColor := c[x][y];
FillColor := c[x][y];
b[x][y] := True;
Area := 0;
ScanFill(x, y);
if (Area > 20) then
begin
AnimalCorners(x, y);
CountBRPixels(animx1, animy1, animx2, animy2);
// WriteLN(Inttostr(animx1 + Round((animx2 - animx1)/2)) + ' ' + IntToStr(animy1 + Round((animy2 - animy1)/2)));


if (AnimalName = 'cat') then FindCat(animx1, animy1, animx2, animy2); //working!!
if (AnimalName = 'dog') then FindDog(animx1, animy1, animx2, animy2); //working!!
if (AnimalName = 'goat') then
begin
if (RPixels > 210) and (RPixels < 1000) then
begin
px := (animx1 + round((animx2 - animx1) / 2));
py := (animy1 + round((animy2 - animy1) / 2));
end;
end;
if (AnimalName = 'sheep') and (RPixels < 180) then FindSheep(animx1, animy1, animx2, animy2); // working??
end;
end;



Bmp.Free;

end;




function GetFunctionCount(): Integer; stdcall; export;
begin
Result := 2;
end;


function GetFunctionInfo(x: Integer; var ProcAddr: Pointer; var ProcDef: PChar): Integer; stdcall;
begin
case x of
0:
begin
ProcAddr := @Pete_AnalyzeAnimal;
StrPCopy(ProcDef, 'function Pete_AnalyzeAnimal( var AnimalName: string; ClientHDC: HDC): Boolean;');
end;
1:
begin
ProcAddr := @Pete_FindAnimal;
StrPCopy(ProcDef, 'function Pete_FindAnimal(var px, py: Integer; AnimalName: String; ClientHDC: HDC): Boolean;');
end;
else
x := -1;
end;
Result := x;
end;


procedure SetFunctions(Funcs: array of TSCARPlugFunc); stdcall;
var
i: Integer;
begin
for i := 0 to Length(Funcs) - 1 do
begin
if Funcs[i].Name = 'Writeln' then
Writeln := Funcs[i].Ptr;
if Funcs[i].Name = 'GetClientWindowHandle' then
GetClientWindowHandle := Funcs[i].Ptr;
end;
FillInfo := false;
end;


exports GetFunctionCount;
exports GetFunctionInfo;
exports SetFunctions;

end.

There you go.

Pyro

2009-01-04 19:16:40

Thanks. Well it isnt what i hoped for but none the less good. I was thinking of doing it a different way. I guess the issue you have with yours is that its more or less dependent on which way they are facing?

Well thats what i got from a quick read. None the less good work :)

gerauchert

2009-01-04 22:20:53

Meh. Idk what the deal is for me… but it isnt working.

1. The InScapeRune boolean, doesnt seem to be recognizing that it is in the random, because it just instantly runs through saying "prison pete random solved in 0 ms". I took that part out.

2. After removing the boolean it would try to attempt to find the lever. It never found it once. I tried to change the map angles to see if it would help what way I was facing. Still nothing.

3. Sometimes it will try to analyze the animal even after it doesnt click the lever.

Like I said, I have no idea what the deal is for me since many people have gotten it to work, but its not doing it for me :/

EDIT:

I had another go at it, and this time at the lowest angle. It worked much better, and the InScapeRune boolean was working too. Musta been SMART fucking up…

It didnt solve it either time this go around, but it made much more progress. It was able to find the lever and everything. When it clicked the animal, my char wasnt able to quite get it making rs say "you cant reach that". There was no failsafe for this so it messed up the whole thing.

Next time it got all three animals beautifully… but it didnt realize that it had done all three. It kept trying to get more, and ended up failing even though it caught the goat and the sheep.


we need to catch: dog
Popped one
We caught correct animals
We need to get 2 more animals :)!
We need to catch: goat
We need to catch: sheep
Couldn't analyze animal

EDIT 2:

Still not one successful run. Looks like you may want to beef up your failsafes, because any little thing seems to be throwing the script off.

1. If someone is also pulling the lever, there is a good chance the uptext will fail… making the lever finding procedure fail.

2. The compass angle changes sometimes keeps the lever out of view, maybe a failsafe for this as well?

I am very impressed with your animal analyzing and locating, it only messes up every once in a while with the goat and the sheep, because their bodies are so similar. You guys have done a great job with this, just need to tweak it up and it should be AMAZING

EDIT 3:
Okay so i tried it again today several times. It was having major issues clicking the correct animal. It also failed pulling the lever several times, because the uptext wasnt fast enough… throw in a Wait(300 + random(200)) before the uptext check and it works like a charm.

On a good note though I had my first success with this solver. It took 4 attempts but it finally got the job done :)


We need to catch: cat
We need to catch: sheep
We need to catch: cat
Popped one
PrisonPete random solved.

Solved by:
- ManFromCzech
- NaumanAkhlaQ

Prison Pete Solved in 254547 msec

Rhipz

2009-01-05 20:34:19

Wow great work! Hope to see it in next SRL build!

Shady?

2009-01-05 22:18:38

From: [-jesus-]
Ignore my previous post, this worked beautifully:
I can't add it into my script tho, gives an error in globals.scar


I think it's because ScapeRune.scar includes srl.scar itself:
line 16:{.include SRL/SRL.scar}
and also, SolvePete calls SetupSrl; at line 235.
So try commenting those out, and then include the script after you include Srl.scar?

randy marsh

2009-01-05 23:11:17

what part of scar folder dos this go in?
good job guys!

Naum

2009-01-06 03:00:49

AntiRandoms :).

@Geurachet(sp?). We've been trying to fix it, we only need accounts.

The_Shermanator

2009-01-08 13:00:32

Hmm this looks very good, hows Mordaut coming along?

-The_Shermanator :garfield:

Iroki

2009-01-08 13:26:36

From: The_Shermanator
Hmm this looks very good, hows Mordaut coming along?

-The_Shermanator :garfield:


I'm working at it :rolleyes:

Wizzup?

2009-01-08 17:53:50

Manfromczech, how well is this tested? (What are the results…?)
If it works, I'll put it in SRL. :)

Iroki

2009-01-09 04:51:47

it's tested very well :) results are very good :P, maybe Nauman should add some flesafes and it can be added to SRL.

Wizzup?

2009-01-09 05:31:32

Let's start off with a scripters cup. :)

If the solver works fine, I might upgrade it to master. ;)

EDIT: Made it a randoms cup. Forgot we had that one. :)

Naum

2009-01-09 11:47:12

:). Thanks. All I need are 2 more accounts, nothing more. Once I got it ready we'll release it :). But meanwhile if you do have an account, please let us use it.

As for the mordaut solver: We're stuck on one part, finding where the boxes in which the objs are loacated, are. It could be done easily in scar, but manfromczech wants to use it in a plugin :).

Iroki

2009-01-09 12:13:01

Its done :), btw i have small break, and i'm makeing mime solver xD i started today and i have 50 - 60% done :)

Magiic

2009-01-09 15:35:43

you've finished it? the mordaut or the failsafes?

Naum

2009-01-09 16:20:58

We paused the mordaut solver, and are currently in the making of the mime solver.

Magiic

2009-01-09 17:46:21

meh, mime is less impotant than mordaut imo we've got a reflection one ;p

Simtoon

2009-01-09 23:07:19

NaumanAkhlaQ you can keep my acc's

Naum

2009-01-10 05:17:59

From: SandoS
meh, mime is less impotant than mordaut imo we've got a reflection one ;p


@AFAIK - Reflection makes it too easy. We want to do it by Color and plugin methods.

From: simtoon
NaumanAkhlaQ you can keep my acc's


@Ahh, thanks, I really don't need them, i'll give them back as soon as I can be stuffed to go on them ;)

Magiic

2009-01-10 08:13:10

yeah i guess ;) but this'll be huge for srl if you manage it

lordsaturn

2009-01-10 15:43:40

Nauman do you have any accounts in Prison Pete still? If you could lend me just 1 account, it would be a great help.

Naum

2009-01-10 15:45:44

Yes after I'm done, I would 100% lend it to you :). I have recieved no accounts though, sorry :(

almost

2009-01-11 19:12:42

Is there no way to put the functions inside a script and have it do SolvePete?
I know for sure that I have the plugin in the plugins folder but when I run my script it gives me unknown identifier errors on any functions that are inside the plugin.
Does it have to be put inside the include folder and then have that folder included in your script?
Because I don't want to have to do that.

Edit:
I just did it the right way like in the instructions and got the same errors.
And I have checked that the plugin is there.
I also deleted it and re-downloaded it.

NCDS

2009-01-11 19:21:54

[Runtime Error] : Exception: Access violation at address 020CAA0C in module 'PetePlugin.dll'. Read of address 01684014 in line 190 in script C:\Program Files\SCAR 3.15\includes\srl/srl/core/AntiRandoms/ScapeRune.scar

Worked great till it went to actually pop the animal, then got this error.

NiCbaZ

2009-01-11 19:50:27

Reboot Scar? Cause plugins are loaded when scar starts up.

NCDS

2009-01-11 20:14:03

From: NiCbaZ
Reboot Scar? Cause plugins are loaded when scar starts up.


Next time I get PrisonPete random I will do just that,
Thanks :)

Naum

2009-01-12 11:39:01

Lol, If you want this to be added to SRL then I'd appreciate that you could forward the account to me so then you can test a better version, Instead of an older one ;)

Iroki

2009-01-12 13:05:38

From: N C D S
[Runtime Error] : Exception: Access violation at address 020CAA0C in module 'PetePlugin.dll'. Read of address 01684014 in line 190 in script C:\Program Files\SCAR 3.15\includes\srl/srl/core/AntiRandoms/ScapeRune.scar

Worked great till it went to actually pop the animal, then got this error.


Thanks, i think that fixed :) this was a bug in AnimalCorners(..); procedure in my plugin.

btw, i fixed bugs when compiling :) and i added "Result := True;" when animal is found :)

almost

2009-01-14 20:51:05

Great script I finally got it compiling. (Still not sure what my problem was)
It can't find the lever at all though.
It goes straight from talking to pete to trying to analyze what animal to find.
The good news though is that it does find the right animal every time (when I cheat and pull the lever for it :))
I still have my account in there if you would like to try to fix this.
But if I don't get a pm from anyone by later tonight I'm going to get out so I can auto over night.

Edit:
I found out the problem(s)
The PullLever procedure is… a mess, sorry.
I had to up the tolerance and up the minimum array length.
Then it would spiral the mouse around the screen like crazy (there was no wait procedure)
After wait was added it could find the lever but the else statement was put in the wrong spot so it logged me out.
I put the else statement at the end so I didn't log but the for loop didn't have begin and end in the right place so it didn't try finding the lever right.
But once I fixed that it was the last error.
It worked perfect from there and started solving it.

Edit 2:
I have found several more errors in it.
There are a couple endless loops in the script, and I got stuck in them a few times. (Very bad)
You can get stuck after finding the key and clicking continue to walk to pete behind the random items scattered around the corners. (one of the ways to get stuck in an endless loop)
Another way was if it tried talking to pete and messed up it would just wait forever.

Iroki

2009-01-16 08:31:28

I'm sure that Nauman'll fix all bugs in scar version, but he needs acc in pete :)

btw, only You have this problems :/ I dont know why.

Naum

2009-01-27 11:57:40

Haha, at last we have fixed most of the bugs in this solver, Please test the new BETA version, once we have 2 or 3 tests complete we will be thinking of putting it off BETA :). Thanks goes to sirlaughsalot for the lend'ation' of his account :)

Iroki

2009-01-27 15:33:35

Nice Nauman :P

infested999

2009-01-27 17:05:24

Amazing:O !!!

Now we just need to figure out how to put this and an other script together so that when you are autoing and you get sent there it will automaticly solve it :D

Iroki

2009-01-27 17:15:49

btw, mime is solved too but Nauman needs acc in it to make better scar part, and i'm working at mordaut random

infested999

2009-01-27 19:22:53

When i get an account in ScapeRune ill take a video of it solving the random :)

Ultra

2009-01-27 21:41:31

Wow, great solver, rly hope this gets into the next srl update.

Naum

2009-01-28 15:20:51

Yes, all we need is for people to test it :)

Quickmarch

2009-01-30 15:13:43

I got an error from the plugin:
[Runtime Error] : Exception: Access violation at address 0436AA0C in module 'PetePlugin.dll'. Read of address 071B8018 in line 239 in script

Iroki

2009-01-30 16:11:13

Thanks. Try now.

Naum

2009-01-30 16:20:48

Updated first post!

Quickmarch

2009-01-31 11:48:52

Awww i'm still getting the error. It comes up when it search's for an animal while it's moving. :(

Iroki

2009-01-31 13:27:21

I must rewrite my plugin - it can takes severel days.

Iroki

2009-02-01 04:04:46

It was not as hard to solve problem as i was thinking. All should works now perfectly.

Enjoy!! :)

Naum

2009-02-04 11:44:43

Okay, Updated first post +1 :p

Added one small improvement with lever finding.

REDOWNLOAD!!

tarajunky

2009-02-04 16:06:47

Used it and it worked. It took 7 tries to get 3 right in a row. Sometimes it detected the wrong animal at the lever, and sometimes it popped the wrong animal. Overall it's great. Well done!

Iroki

2009-02-04 16:16:57

From: tarajunky
Used it and it worked. It took 7 tries to get 3 right in a row. Sometimes it detected the wrong animal at the lever, and sometimes it popped the wrong animal. Overall it's great. Well done!


I'll rewrite animal detecting function after i solve mr.mordaut.

Tickyy

2009-02-17 03:03:30

I tested it once again… but it just keep'd me logging out after it pressed run, take another look on it :)

Naum

2009-02-17 04:12:07

Please look at NAIRI now thanks.

cause

2009-03-10 16:01:17

So, is this still applicable with the new random update?