Sir Ducksworthy
2012-06-26 12:11:42
Just a teaser <3
[YOUTUBE]G2I5dWGZn4g[/YOUTUBE]
Making a Database
[YOUTUBE]G2I5dWGZn4g[/YOUTUBE]
Making a Database
2012-06-26 12:11:42
2012-06-26 12:12:50
2012-06-26 12:26:16
From: leetsxc
Just a teaser <3
[YOUTUBE]G2I5dWGZn4g[/YOUTUBE]
Making a Database
2012-06-26 12:30:52
2012-06-26 12:53:18
2012-06-26 12:56:55
2012-06-26 13:01:45
From: leetsxc
Lol ^ Sorry about that, I just wanted it to go Ninja 4 while.
Yeh so what it will do is filter it all out around the lines anything remaining, will just be flood filled.
The Bot will read the Up text and also create 3 Different Dtm's, just by Finding the black out line in each direction and then Finding the 3 Highest Color Counts and middle Tpa'ing them and adding different points in different parts to avoid the Jagex graphic failingness.
All of the Info will be stored into a .txt, I'll run it through the G.E when I have it working better the .txt can be read by the bot and used to Load the string bitmaps of your choice even from online.
2012-06-26 13:05:23
2012-06-26 15:15:34
2012-06-26 15:34:05
2012-06-26 18:52:46
2012-06-29 16:34:37
2012-06-29 17:02:44
From: LordJashin
Well the OUTLINE is like always black, and the same color. So you could just get the bounds of the outline (TPA it). Then do like TPAInTPA inside of the black outline, and compare. This looks pretty cool nice video u ninja'd it lol.
function FillOutline(TPA: TPointArray; Vertical: Boolean): TPointArray;
var
Fill: T2DPointArray;
Bound, Temp: TPointArray;
P1, P2: TPoint;
lTemp, hBound, Res, Points, i: Integer;
Inside: Boolean;
begin
SetLength(Result, 0);
Points := 0;
Res := 0;
if (Length(TPA) > 0) then
begin
Bound := TPAFromBox(GetTPABounds(TPA));
if Vertical then
SortTPAByX(Bound, True)
else
SortTPAByY(Bound, True);
hBound := High(Bound);
for i := 0 to hBound do
begin
if Vertical then
begin
if Inside and (Bound[i].x > P1.x) then
Points := 0;
end else
begin
if Inside and (Bound[i].y > P1.y) then
Points := 0;
end;
Inside := (Points = 1);
if PointInTPA(Bound[i], TPA) then
begin
if (i + 1 < hBound) and PointInTPA(Bound[i + 1], TPA) then
Continue;
if Inside then
P2 := Bound[i]
else
P1 := Bound[i];
Inc(Points);
end;
if (Points > 1) then
begin
SetLength(Fill, Res + 1);
Fill[Res] := TPABetweenPoints(P1, P2, 1, 0);
Inc(Res);
Points := 0;
Continue;
end;
end;
Temp := MergeATPA(Fill);
lTemp := Length(Temp);
SetLength(Result, lTemp);
Result := Temp;
end;
end;
2012-06-29 17:28:20
2012-06-29 21:15:12
2012-06-29 22:29:42
From: Runaway
Easier said than done :p There is no function for the "TPAInTPA" you're thinking of, and filling the area inside an outline is a lot harder than it sounds. I know cause I has proof!
^ And it still has issues on quite a few items :(
2012-06-29 22:52:25
From: LordJashin
Mm, what about the TPA functions inside of here. I think most are ported from SRL/SIMBA, but I could be wrong. There is some TPAinTPA things in there.
I was thinking get all the black pixels that form the edge line into a TPA. I mean they are always the same color, and I don't think RS has any items with that color. Then you could use that TPA as the shape of the item (cuz you only got the border).
2012-06-29 23:02:51
2012-06-29 23:09:28
From: LordJashin
The idea of exporting it, or using the outline as the shape? Or what? lols
2012-06-29 23:43:49
From: Runaway
Posting that list of functions :p I had totally forgotten about ReturnPointsNotInTPA… could possibly be the solution to all of my problems!