Nice stuff man! I should have some free time soon (and learning to script) so if I get stuck in one of those randoms I'll let you know!). Thanks a bunch
Nice stuff man! I should have some free time soon (and learning to script) so if I get stuck in one of those randoms I'll let you know!). Thanks a bunch
Progress Report:SRL Compiled in 15 msec Attempting to pair to a smart client.. Found 2 free client(s), attempting to pair to one... Failed to pair to SMART[4080] Set SMART[5140] as Simba's target Succesfully paired to a existing client, SMART[5140] Welcome to Runescape. ****** Screenshot of: IP Log 9 Seconds Found a box, solving... Question is: What number is the Star ShapeScan: Square, with a score of 12 NumberScan: 8, with a score of 7 ShapeScan: Star, with a score of 6 NumberScan: 1, with a score of 5 Answer is 1 ******** SOLVED BOX RANDOM ******** Found a box, solving... Question is: Which shape has number 3 ShapeScan: Circle, with a score of 12 NumberScan: 7, with a score of 12 ShapeScan: Circle, with a score of 7 NumberScan: 1, with a score of 5 ShapeScan: Circle, with a score of 7 NumberScan: 1, with a score of 5 ShapeScan: Star, with a score of 8 NumberScan: 1, with a score of 5 ShapeScan: Star, with a score of 5 NumberScan: 1, with a score of 5 ShapeScan: Pentagon, with a score of 15 NumberScan: 1, with a score of 5 ShapeScan: Circle, with a score of 10 NumberScan: 1, with a score of 5 Found a box, solving... Question is: Which shape has number 9 ShapeScan: Square, with a score of 12 NumberScan: 1, with a score of 5 ShapeScan: Square, with a score of 14 NumberScan: 2, with a score of 14 ShapeScan: Pentagon, with a score of 12 NumberScan: 2, with a score of 12 ShapeScan: Triangle, with a score of 7 NumberScan: 2, with a score of 12 ShapeScan: Square, with a score of 12 NumberScan: 2, with a score of 14 ShapeScan: Square, with a score of 14 NumberScan: 1, with a score of 5 ShapeScan: Square, with a score of 14 NumberScan: 1, with a score of 5 ShapeScan: Pentagon, with a score of 12 NumberScan: 2, with a score of 12 ShapeScan: Square, with a score of 12 NumberScan: 2, with a score of 14 Found a box, solving... Question is: What number is the Square ShapeScan: Pentagon, with a score of 12 NumberScan: 4, with a score of 14 ShapeScan: Circle, with a score of 9 NumberScan: 1, with a score of 5 ShapeScan: Star, with a score of 8 NumberScan: 1, with a score of 5 ShapeScan: Circle, with a score of 7 NumberScan: 1, with a score of 5 ShapeScan: Circle, with a score of 8 NumberScan: 4, with a score of 12 ShapeScan: Circle, with a score of 9 NumberScan: 1, with a score of 5 ShapeScan: Pentagon, with a score of 12 NumberScan: 1, with a score of 5 Found a box, solving... Question is: What number is the Square ShapeScan: Triangle, with a score of 6 NumberScan: 1, with a score of 5 ShapeScan: Triangle, with a score of 7 NumberScan: 5, with a score of 14 ShapeScan: Triangle, with a score of 6 NumberScan: 1, with a score of 5 ShapeScan: Triangle, with a score of 6 NumberScan: 5, with a score of 14 ShapeScan: Star, with a score of 5 NumberScan: 1, with a score of 5 ShapeScan: Triangle, with a score of 7 NumberScan: 5, with a score of 14 ShapeScan: Pentagon, with a score of 14 NumberScan: 2, with a score of 12 Found a box, solving... Question is: Which shape has number 2 ShapeScan: Circle, with a score of 7 NumberScan: 2, with a score of 12 Answer is Circle ******** SOLVED BOX RANDOM ******** Found a box, solving... Question is: What number is the Circle ShapeScan: Star, with a score of 6 NumberScan: 0, with a score of 5 ShapeScan: Pentagon, with a score of 14 NumberScan: 1, with a score of 5 ShapeScan: Circle, with a score of 8 NumberScan: 1, with a score of 5 Answer is 1 ******** SOLVED BOX RANDOM ******** Found a box, solving... Question is: What number is the Star ShapeScan: Star, with a score of 8 NumberScan: 7, with a score of 14 Answer is 7 ******** SOLVED BOX RANDOM ******** Found a box, solving... Question is: What number is the Circle ShapeScan: Pentagon, with a score of 14 NumberScan: 1, with a score of 5 ShapeScan: Pentagon, with a score of 12 NumberScan: 1, with a score of 5 ShapeScan: Square, with a score of 14 NumberScan: 1, with a score of 5 ShapeScan: Pentagon, with a score of 12 NumberScan: 2, with a score of 12 ShapeScan: Triangle, with a score of 6 NumberScan: 2, with a score of 14 ShapeScan: Square, with a score of 14 NumberScan: 1, with a score of 5 ShapeScan: Circle, with a score of 10 NumberScan: 1, with a score of 5 Answer is 1 ******** SOLVED BOX RANDOM ******** Found a box, solving... Question is: Which shape has number 2 ShapeScan: Circle, with a score of 10 NumberScan: 1, with a score of 5 ShapeScan: Circle, with a score of 12 NumberScan: 1, with a score of 5 Succesfully freed SMART[5140] Successfully executed. The following DTMs were not freed: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Stopped and solved them myself since I started with 3 and ended with about 10 before taking over.
Solar from RiD.
Sorry guys for offtopic, I haven't played Runescape for like 1,5 year, but in the past I was working on graveyard random solver and I want to continue working on it. Is there any way to play OSR without member account?
Tuts: Run script from another script || [Lape] Exceeding limits of VariantInvoke()
Plugins: Fast multi-layer objects finding || Multithreading in tabs || Optimised motion detection || ETL - paint on any window||Magic Keyboard (Simba's DirectX input + input in background to any normal window)
Snippets: [RS] Ultimate Loot Grabber || ShowPalette() || APPA JS Interface
My Outdated ScriptsEdgeville Log Cutter | Edgeville AIO Jewelry | AIO Pickpocketer | Urn Activator | Slayer Tower | Slaying KuradalMy Working Scripts: Tutorials:Function Pointers and Why You Should Care! | Forms and Saving Settings | The Magic Behind Programming Tutorial | Recursive Recursion
I had finished work on the strangebox, getting the shapes via the tesseract, but the numbers have proven to be very similar in the tesseract's eyes, I had tried TPASkeleton, TPAExtractShape and MatrixGetCorners with almost no distinction between numbers. I'll finish the other half of this later..
Important Note
I am going to continue my work on AntiRandom Solvers, but from now onwards they will only be available to the OSR Reflection include (being actively developed by Elfyyy, NKN, Sirenia and myself) which is available here: http://villavu.com/forum/showthread.php?t=107479
This is for several reasons, the most important of which is that there has been rapid development within the OSR Reflection include allowing better detection and solving methods than SRL's antirandoms are capable of.
I was not confident using reflection before because when the hooks are updated in OSR, it can take many days for people to update the pastebin with new hooks (relying solely on JavaHacking update logs). I have been developing the updater for the reflection include, and we are able to update hooks and post to the gc within 10 minutes of an OSR update. This is thanks to some incredible work by Justin, Elfyyy and even Brandon. NKN and Sirenia are leading the development of our own updater (this is different to the include updater), I'd like to call it a hook-nabber, but it's much more complex than that. Atm, we only use the JH logs to compare our hooks and multipliers. Soon we will have 2 methods to get hooks which don't rely on JavaHacking.com (which is rumoured to be posting less information on hooks anyway due to leechers)
I have also seen other members speak of creating their own OSR includes. While we don't have a development team for OSR, we have a lot of very skilled members who are very passionate about it. There is no reason we can't unite and combine our efforts into one include.
After some testing with the new reflection functions, I made the following:
- Flawless Mime random detection & solver.
- Flawless Drill Demon detection.
- Flawless Prison Pete detection.
- Flawless Maze detection.
I'm confident we can detect nearly all randoms using reflection and by using it, we get completely accurate information in order to solve each random (compared to SRL's guess-work using colour techniques).
Last edited by Krazy_Meerkat; 01-22-2014 at 01:31 PM.
Very excited to hear all of that.
Thanks to you and everyone else working on everything to do with OSR. Perhaps you could talk to Flight about what he has done, maybe he'll be willing to help, even if he is working (what seems to be on his own) on Lape stuff.
Solar from RiD.
Went ahead and added these randoms updates to OSR
https://github.com/SRL/SRL-OSR/commi...0e5a95fe66c1de
Red & Green Salamander Hunter // Construction // Gilded Altar // Major help w/ Kyles Runespan // VWB Smither // PhoenixFeathers // GemCutter // Bonfire // LRC Miner // Spell Tab Maker // ApeAtollAgility // IvyWC // RoguesCooker // Herblore // AshamanButterfly // AshamanPowerMiner // Fletcher // LividFarm
@Krazy_Meerkat I'm going to use your Drill Demon modifications with the extra bitmaps as I'm working on that solver at the moment. If I get around to the others today (Pillory & Pinball) I'd like to use those as well. I just got my account into the Drill Demon event so I'll use some of your modifications and give you feedback on how it performs.
Edit:
The sign detection in the Drill Demon solver worked fine, nice job.
Last edited by Flight; 02-06-2014 at 03:03 AM.
Current projects:
[ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]
"I won't fall in your gravity. Open your eyes,
you're the Earth and I'm the sky..."
Red & Green Salamander Hunter // Construction // Gilded Altar // Major help w/ Kyles Runespan // VWB Smither // PhoenixFeathers // GemCutter // Bonfire // LRC Miner // Spell Tab Maker // ApeAtollAgility // IvyWC // RoguesCooker // Herblore // AshamanButterfly // AshamanPowerMiner // Fletcher // LividFarm
I also have this Mime solver for srl which I haven't had the chance to test, but I recorded all new info for each emote, and increased the emotearray size from 8 to 64 (8 different comparisons for each emote during scoring).. Theoretically it should do a lot better to solve, but didn't get the chance to test it sorry:
Simba Code:(*
Mime
====
The Mime file stores the routines to solve the mime random event.
This solver uses pixel shifting to determine which emote the mime is performing.
To compensate for the spotlight, it will get the total pixel shift in a large
box around the mime, and the pixel shift in a small box around the mime. It
then calculates the percentage of the small shift in the big shift. Lastly,
it compares the stored emotes (Mime_GetEmotes) with the scanned emote, resulting
a certain score. If the score is high enough, it's found the right emote.
*)
const
MIME_EMOTE_COUNT = 64;
MIME_EMOTE_THINK = 0;
MIME_EMOTE_BOX = 1;
MIME_EMOTE_WALL = 2;
MIME_EMOTE_DANCE = 3;
MIME_EMOTE_CRY = 4;
MIME_EMOTE_CLIMB = 5;
MIME_EMOTE_LEAN = 6;
MIME_EMOTE_LAUGH = 7;
MIME_EMOTE_THINK2 = 8;
MIME_EMOTE_BOX2 = 9;
MIME_EMOTE_WALL2 = 10;
MIME_EMOTE_DANCE2 = 11;
MIME_EMOTE_CRY2 = 12;
MIME_EMOTE_CLIMB2 = 13;
MIME_EMOTE_LEAN2 = 14;
MIME_EMOTE_LAUGH2 = 15;
MIME_EMOTE_THINK3 = 16;
MIME_EMOTE_BOX3 = 17;
MIME_EMOTE_WALL3 = 18;
MIME_EMOTE_DANCE3 = 19;
MIME_EMOTE_CRY3 = 20;
MIME_EMOTE_CLIMB3 = 21;
MIME_EMOTE_LEAN3 = 22;
MIME_EMOTE_LAUGH3 = 23;
MIME_EMOTE_THINK4 = 24;
MIME_EMOTE_BOX4 = 25;
MIME_EMOTE_WALL4 = 26;
MIME_EMOTE_DANCE4 = 27;
MIME_EMOTE_CRY4 = 28;
MIME_EMOTE_CLIMB4 = 29;
MIME_EMOTE_LEAN4 = 30;
MIME_EMOTE_LAUGH4 = 31;
MIME_EMOTE_THINK5 = 32;
MIME_EMOTE_BOX5 = 33;
MIME_EMOTE_WALL5 = 34;
MIME_EMOTE_DANCE5 = 35;
MIME_EMOTE_CRY5 = 36;
MIME_EMOTE_CLIMB5 = 37;
MIME_EMOTE_LEAN5 = 38;
MIME_EMOTE_LAUGH5 = 39;
MIME_EMOTE_THINK6 = 40;
MIME_EMOTE_BOX6 = 41;
MIME_EMOTE_WALL6 = 42;
MIME_EMOTE_DANCE6 = 43;
MIME_EMOTE_CRY6 = 44;
MIME_EMOTE_CLIMB6 = 45;
MIME_EMOTE_LEAN6 = 46;
MIME_EMOTE_LAUGH6 = 47;
MIME_EMOTE_THINK7 = 48;
MIME_EMOTE_BOX7 = 49;
MIME_EMOTE_WALL7 = 50;
MIME_EMOTE_DANCE7 = 51;
MIME_EMOTE_CRY7 = 52;
MIME_EMOTE_CLIMB7 = 53;
MIME_EMOTE_LEAN7 = 54;
MIME_EMOTE_LAUGH7 = 55;
MIME_EMOTE_THINK8 = 56;
MIME_EMOTE_BOX8 = 57;
MIME_EMOTE_WALL8 = 58;
MIME_EMOTE_DANCE8 = 59;
MIME_EMOTE_CRY8 = 60;
MIME_EMOTE_CLIMB8 = 61;
MIME_EMOTE_LEAN8 = 62;
MIME_EMOTE_LAUGH8 = 63;
(**
* Stores a Mime emote's properties. See Mime_ScanMime for more details.
*)
type
TMimeEmote = record
name: string;
shiftSmall: integer; // total pixel shift in a small box around Mime
shiftBig: integer; // total pixel shift in a big box around Mime
shiftPercent: extended; // percent of small shift in large
textTPACount: integer;
end;
TMimeEmoteArray = array of TMimeEmote;
(**
* Author: Coh3n & NCDS
* Updated 09/03/2013 - Justin
* Description: Returns true if player is in the random.
*)
function Mime_Detect(): boolean;
var
i: integer;
begin
if (not loggedIn()) then
exit;
for i := TAB_COMBAT to TAB_MAGIC do
if (tabExists(i)) then
exit;
Result := (CountDots('npc') = 1) and (not tabExists(TAB_EMOTES)) and (GetMusic = 'Artistry');
end;
(**
* Author: Coh3n
* Description: Returns a TMimeEmoteArray of all the Mime's emotes.
*)
function Mime_GetEmotes(): TMimeEmoteArray;
begin
setLength(result, MIME_EMOTE_COUNT);
with result[MIME_EMOTE_THINK] do
begin
name := 'Think';
shiftSmall := 3238;
shiftBig := 3950;
shiftPercent := 81.9;
textTPACount := 87;
end;
with result[MIME_EMOTE_BOX] do
begin
name := 'Glass Box';
shiftSmall := 6250;
shiftBig := 7975;
shiftPercent := 78.3;
textTPACount := 139;
end;
with result[MIME_EMOTE_WALL] do
begin
name := 'Glass Wall';
shiftSmall := 3062;
shiftBig := 5142;
shiftPercent := 59.5;
textTPACount := 155;
end;
with result[MIME_EMOTE_DANCE] do
begin
name := 'Dance';
shiftSmall := 19717;
shiftBig := 30229;
shiftPercent := 65.2;
textTPACount := 96;
end;
with result[MIME_EMOTE_CRY] do
begin
name := 'Cry';
shiftSmall := 5444;
shiftBig := 5841;
shiftPercent := 93.2;
textTPACount := 54;
end;
with result[MIME_EMOTE_CLIMB] do
begin
name := 'Climb Rope';
shiftSmall := 10701;
shiftBig := 11239;
shiftPercent := 95.2;
textTPACount := 168;
end;
with result[MIME_EMOTE_LEAN] do
begin
name := 'Lean on Air';
shiftSmall := 8819;
shiftBig := 15776;
shiftPercent := 77.9;
textTPACount := 148;
end;
with result[MIME_EMOTE_LAUGH] do
begin
name := 'Laugh';
shiftSmall := 7990;
shiftBig := 8861;
shiftPercent := 90.1;
textTPACount := 101;
end;
with result[MIME_EMOTE_THINK2] do
begin
name := 'Think';
shiftSmall := 2134;
shiftBig := 7367;
shiftPercent := 28.9;
textTPACount := 87;
end;
with result[MIME_EMOTE_BOX2] do
begin
name := 'Glass Box';
shiftSmall := 8302;
shiftBig := 9998;
shiftPercent := 83.0;
textTPACount := 139;
end;
with result[MIME_EMOTE_WALL2] do
begin
name := 'Glass Wall';
shiftSmall := 2128;
shiftBig := 4791;
shiftPercent := 44.4;
textTPACount := 155;
end;
with result[MIME_EMOTE_DANCE2] do
begin
name := 'Dance';
shiftSmall := 11954;
shiftBig := 28850;
shiftPercent := 41.4;
textTPACount := 96;
end;
with result[MIME_EMOTE_CRY2] do
begin
name := 'Cry';
shiftSmall := 4598;
shiftBig := 6113;
shiftPercent := 75.2;
textTPACount := 54;
end;
with result[MIME_EMOTE_CLIMB2] do
begin
name := 'Climb Rope';
shiftSmall := 3174;
shiftBig := 3586;
shiftPercent := 88.5;
textTPACount := 168;
end;
with result[MIME_EMOTE_LEAN2] do
begin
name := 'Lean on Air';
shiftSmall := 16420;
shiftBig := 46284;
shiftPercent := 35.4;
textTPACount := 148;
end;
with result[MIME_EMOTE_LAUGH2] do
begin
name := 'Laugh';
shiftSmall := 6677;
shiftBig := 7422;
shiftPercent := 89.9;
textTPACount := 101;
end;
with result[MIME_EMOTE_THINK3] do
begin
name := 'Think';
shiftSmall := 4564;
shiftBig := 7699;
shiftPercent := 59.2;
textTPACount := 87;
end;
with result[MIME_EMOTE_BOX3] do
begin
name := 'Glass Box';
shiftSmall := 7455;
shiftBig := 8668;
shiftPercent := 86.0;
textTPACount := 139;
end;
with result[MIME_EMOTE_WALL3] do
begin
name := 'Glass Wall';
shiftSmall := 2840;
shiftBig := 4150;
shiftPercent := 68.4;
textTPACount := 155;
end;
with result[MIME_EMOTE_DANCE3] do
begin
name := 'Dance';
shiftSmall := 21034;
shiftBig := 29377;
shiftPercent := 71.6;
textTPACount := 96;
end;
with result[MIME_EMOTE_CRY3] do
begin
name := 'Cry';
shiftSmall := 7075;
shiftBig := 8281;
shiftPercent := 85.4;
textTPACount := 54;
end;
with result[MIME_EMOTE_CLIMB3] do
begin
name := 'Climb Rope';
shiftSmall := 11039;
shiftBig := 13360;
shiftPercent := 82.6;
textTPACount := 168;
end;
with result[MIME_EMOTE_LEAN3] do
begin
name := 'Lean on Air';
shiftSmall := 10045;
shiftBig := 18729;
shiftPercent := 53.6;
textTPACount := 148;
end;
with result[MIME_EMOTE_LAUGH3] do
begin
name := 'Laugh';
shiftSmall := 8006;
shiftBig := 11207;
shiftPercent := 71.4;
textTPACount := 101;
end;
with result[MIME_EMOTE_THINK4] do
begin
name := 'Think';
shiftSmall := 4005;
shiftBig := 4543;
shiftPercent := 88.1;
textTPACount := 87;
end;
with result[MIME_EMOTE_BOX4] do
begin
name := 'Glass Box';
shiftSmall := 8346;
shiftBig := 9198;
shiftPercent := 90.7;
textTPACount := 139;
end;
with result[MIME_EMOTE_WALL4] do
begin
name := 'Glass Wall';
shiftSmall := 3815;
shiftBig := 5149;
shiftPercent := 74.0;
textTPACount := 155;
end;
with result[MIME_EMOTE_DANCE4] do
begin
name := 'Dance';
shiftSmall := 19245;
shiftBig := 26194;
shiftPercent := 73.4;
textTPACount := 96;
end;
with result[MIME_EMOTE_CRY4] do
begin
name := 'Cry';
shiftSmall := 17197;
shiftBig := 30179;
shiftPercent := 56.9;
textTPACount := 54;
end;
with result[MIME_EMOTE_CLIMB4] do
begin
name := 'Climb Rope';
shiftSmall := 11078;
shiftBig := 12655;
shiftPercent := 87.5;
textTPACount := 168;
end;
with result[MIME_EMOTE_LEAN4] do
begin
name := 'Lean on Air';
ShiftSmall:= 10157;
ShiftBig:= 18784;
ShiftPercent:= 54.1;
textTPACount := 148;
end;
with result[MIME_EMOTE_LAUGH4] do
begin
name := 'Laugh';
shiftSmall := 8411;
shiftBig := 8911;
shiftPercent := 94.3;
textTPACount := 101;
end;
with result[MIME_EMOTE_THINK5] do
begin
name := 'Think';
ShiftSmall:= 3031;
ShiftBig:= 7149;
ShiftPercent:= 42.4;
textTPACount := 87;
end;
with result[MIME_EMOTE_BOX5] do
begin
name := 'Glass Box';
ShiftSmall:= 7297;
ShiftBig:= 9936;
ShiftPercent:= 73.4;
textTPACount := 139;
end;
with result[MIME_EMOTE_WALL5] do
begin
name := 'Glass Wall';
ShiftSmall:= 3674;
ShiftBig:= 6021;
ShiftPercent:= 61;
textTPACount := 155;
end;
with result[MIME_EMOTE_DANCE5] do
begin
name := 'Dance';
ShiftSmall:= 18353;
ShiftBig:= 32313;
ShiftPercent:= 56.8;
textTPACount := 96;
end;
with result[MIME_EMOTE_CRY5] do
begin
name := 'Cry';
ShiftSmall:= 5673;
ShiftBig:= 7110;
ShiftPercent:= 79.8;
textTPACount := 54;
end;
with result[MIME_EMOTE_CLIMB5] do
begin
name := 'Climb Rope';
ShiftSmall:= 9791;
ShiftBig:= 12676;
ShiftPercent:= 77.2;
textTPACount := 168;
end;
with result[MIME_EMOTE_LEAN5] do
begin
name := 'Lean on Air';
ShiftSmall:= 10363;
ShiftBig:= 18123;
ShiftPercent:= 57.2;
textTPACount := 148;
end;
with result[MIME_EMOTE_LAUGH5] do
begin
name := 'Laugh';
ShiftSmall:= 6820;
ShiftBig:= 12102;
ShiftPercent:= 56.4;
textTPACount := 101;
end;
with result[MIME_EMOTE_THINK6] do
begin
name := 'Think';
ShiftSmall:= 1797;
ShiftBig:= 2649;
ShiftPercent:= 67.8;
textTPACount := 87;
end;
with result[MIME_EMOTE_BOX6] do
begin
name := 'Glass Box';
ShiftSmall:= 7805;
ShiftBig:= 10047;
ShiftPercent:= 77.7;
textTPACount := 139;
end;
with result[MIME_EMOTE_WALL6] do
begin
name := 'Glass Wall';
ShiftSmall:= 5127;
ShiftBig:= 12233;
ShiftPercent:= 41.9;
textTPACount := 155;
end;
with result[MIME_EMOTE_DANCE6] do
begin
name := 'Dance';
ShiftSmall:= 22654;
ShiftBig:= 37948;
ShiftPercent:= 59.7;
textTPACount := 96;
end;
with result[MIME_EMOTE_CRY6] do
begin
name := 'Cry';
ShiftSmall:= 1636;
ShiftBig:= 2651;
ShiftPercent:= 61.7;
textTPACount := 54;
end;
with result[MIME_EMOTE_CLIMB6] do
begin
name := 'Climb Rope';
ShiftSmall:= 9744;
ShiftBig:= 16798;
ShiftPercent:= 58;
textTPACount := 168;
end;
with result[MIME_EMOTE_LEAN6] do
begin
name := 'Lean on Air';
ShiftSmall:= 10218;
ShiftBig:= 24222;
ShiftPercent:= 42.2;
textTPACount := 148;
end;
with result[MIME_EMOTE_LAUGH6] do
begin
name := 'Laugh';
ShiftSmall:= 7144;
ShiftBig:= 9590;
ShiftPercent:= 74.5;
textTPACount := 101;
end;
with result[MIME_EMOTE_THINK7] do
begin
name := 'Think';
ShiftSmall:= 3933;
ShiftBig:= 6903;
ShiftPercent:= 57;
textTPACount := 87;
end;
with result[MIME_EMOTE_BOX7] do
begin
name := 'Glass Box';
ShiftSmall:= 7592;
ShiftBig:= 8759;
ShiftPercent:= 86.7;
textTPACount := 139;
end;
with result[MIME_EMOTE_WALL7] do
begin
name := 'Glass Wall';
ShiftSmall:= 3802;
ShiftBig:= 5193;
ShiftPercent:= 73.2;
textTPACount := 155;
end;
with result[MIME_EMOTE_DANCE7] do
begin
name := 'Dance';
ShiftSmall:= 23755;
ShiftBig:= 41345;
ShiftPercent:= 57.5;
textTPACount := 96;
end;
with result[MIME_EMOTE_CRY7] do
begin
name := 'Cry';
ShiftSmall:= 7428;
ShiftBig:= 8349;
ShiftPercent:= 89;
textTPACount := 54;
end;
with result[MIME_EMOTE_CLIMB7] do
begin
name := 'Climb Rope';
ShiftSmall:= 8086;
ShiftBig:= 13567;
ShiftPercent:= 59.6;
textTPACount := 168;
end;
with result[MIME_EMOTE_LEAN7] do
begin
name := 'Lean on Air';
ShiftSmall:= 6891;
ShiftBig:= 15115;
ShiftPercent:= 45.6;
textTPACount := 148;
end;
with result[MIME_EMOTE_LAUGH7] do
begin
name := 'Laugh';
ShiftSmall:= 5580;
ShiftBig:= 8655;
ShiftPercent:= 64.5;
textTPACount := 101;
end;
with result[MIME_EMOTE_THINK8] do
begin
name := 'Think';
ShiftSmall:= 3786;
ShiftBig:= 9136;
ShiftPercent:= 41.4;
textTPACount := 87;
end;
with result[MIME_EMOTE_BOX8] do
begin
name := 'Glass Box';
ShiftSmall:= 7930;
ShiftBig:= 10392;
ShiftPercent:= 76.3;
textTPACount := 139;
end;
with result[MIME_EMOTE_WALL8] do
begin
name := 'Glass Wall';
ShiftSmall:= 4014;
ShiftBig:= 5591;
ShiftPercent:= 71.8;
textTPACount := 155;
end;
with result[MIME_EMOTE_DANCE8] do
begin
name := 'Dance';
ShiftSmall:= 21668;
ShiftBig:= 31993;
ShiftPercent:= 67.7;
textTPACount := 96;
end;
with result[MIME_EMOTE_CRY8] do
begin
name := 'Cry';
ShiftSmall:= 1790;
ShiftBig:= 2563;
ShiftPercent:= 69.8;
textTPACount := 54;
end;
with result[MIME_EMOTE_CLIMB8] do
begin
name := 'Climb Rope';
ShiftSmall:= 9407;
ShiftBig:= 14423;
ShiftPercent:= 65.2;
textTPACount := 168;
end;
with result[MIME_EMOTE_LEAN8] do
begin
name := 'Lean on Air';
ShiftSmall:= 8733;
ShiftBig:= 14064;
ShiftPercent:= 62.1;
textTPACount := 148;
end;
with result[MIME_EMOTE_LAUGH8] do
begin
name := 'Laugh';
ShiftSmall:= 7396;
ShiftBig:= 8614;
ShiftPercent:= 85.9;
textTPACount := 101;
end;
end;
(**
* Author: Coh3n
* Description: Prints the 'emote' to the debug box.
*)
procedure Mime_DebugEmote(emote: TMimeEmote);
begin
addToSRLLog('Name:= '''';');
addToSRLLog(' ShiftSmall:= '+toStr(emote.shiftSmall)+';');
addToSRLLog(' ShiftBig:= '+toStr(emote.shiftBig)+';');
emote.shiftPercent:= (emote.shiftPercent * 10);
emote.shiftPercent:= round(emote.shiftPercent);
emote.shiftPercent:= (emote.shiftPercent / 10); //shorten remainers
addToSRLLog(' ShiftPercent:= '+toStr(emote.shiftPercent)+';');
end;
(**
* Author: Coh3n
* Description: Sets up the screen to solve the random.
*)
procedure Mime_Setup();
begin
if (not loggedIn()) then
exit;
doConversation('', false); // get past GE messages
// click front of stage & move the mouse away from chat box so text can be recognized
mouse(250, 300, 10, 10, mouse_Left);
mouse(MCX2 + 30 + random(100), 170, 100, 100, mouse_Move);
end;
(**
* Author: Coh3n
* Description: Returns true if the Mime is performing an Emote. While the
* Mime is performing, there's always the same black text in the chat box.
*)
function Mime_IsPerforming(): boolean;
var lk, kl: Integer;
begin
result := (findcolortolerance(lk,kl,11503238, MCX1, MCY1, MCX2, MCY2, 19));
if (result = true) then
begin
result:= false;
end else
begin
result:= true;
end;
end;
(**
* Author: Coh3n
* Description: Returns the total pixel shifting over the specified scanning
* time. The results from this are in Mime_GetEmotes, so if scanning constants
* change, the records may need to change as well.
*)
const
_MIME_SCAN_TIME = 3000; // time to scan for pixel shifting
_MIME_SCAN_AFTER = 1500; // wait time AFTER perfomance starts (i.e. Mime_IsPerforming returns true); lessens the affect of the spotlight
_MIME_SCAN_DIV = 15; // determines pixel shift interval
function Mime_ScanMime(): TMimeEmote;
var
t: integer;
shiftBoxes: TBoxArray;
tmpShifts: TIntegerArray;
begin
wait(_MIME_SCAN_AFTER); // wait until after the spotlight appears
t := (getSystemTime + _MIME_SCAN_TIME);
shiftBoxes := [ intToBox(400, 80, 510, 230), // box around the entire Mime
intToBox(440, 82, 510, 145) ]; // box around the upper body of the mime
// get the total pixel shift over the total scanning time
while (getSystemTime < t) do
begin
tmpShifts := pixelShiftMulti(shiftBoxes, _MIME_SCAN_TIME div _MIME_SCAN_DIV);
result.shiftBig := result.shiftBig + tmpShifts[0];
result.shiftSmall := result.shiftSmall + tmpShifts[1];
end;
result.shiftPercent := (result.shiftSmall / extended(result.shiftBig)) * 100;
// waits for performance to be over
t := (getSystemTime + 5000);
while (Mime_IsPerforming() and (getSystemTime < t)) do
wait(50 + random(25));
end;
(**
* Author: Coh3n
* Description: Returns the corresponding Mime's emote constant (see top). Uses
* Wizzup?'s scoring system to decide which emote was found.
*)
function Mime_IdentifyEmote(emotes: TMimeEmoteArray): integer;
var
i, maxScore, maxIndex: integer;
tmpEmote: TMimeEmote;
scores: TIntegerArray;
begin
if (not loggedIn()) then
exit;
result := -1;
setLength(scores, length(emotes));
// wait for the performance to start before scanning
if (waitFunc(@Mime_IsPerforming, 50, 10000)) then
begin
addToSRLLog('Mime_IdentifyEmote: Identifying emote');
tmpEmote := Mime_ScanMime();
{$IFDEF DEBUG_MIME}
tmpEmote.name := 'Scanned Emote';
Mime_DebugEmote(tmpEmote);
{$ENDIF}
end;
// loop through emotes to see which fits
for i := 0 to high(emotes) do
begin
// checks if big/small shifts are in range of emotes[i]
if (inRange(tmpEmote.shiftSmall, emotes[i].shiftSmall - 1500, emotes[i].shiftSmall + 1500)) then
scores[i] := scores[i] + 6;
if (inRange(tmpEmote.shiftBig, emotes[i].shiftBig - 1500, emotes[i].shiftBig + 1500)) then
scores[i] := scores[i] + 6;
// check if pixel shifting is in range of min/max
if (inRange(tmpEmote.shiftBig + tmpEmote.shiftSmall div 2, emotes[i].shiftSmall, emotes[i].shiftBig)) then
scores[i] := scores[i] + 4;
// in range of emote's shiftPercet +/- 3%
if (scores[i] <> 0) then
if (tmpEmote.shiftPercent = emotes[i].shiftPercent) then
scores[i] := scores[i] + 15
else
if ((tmpEmote.shiftPercent > (emotes[i].shiftPercent - 3)) and (tmpEmote.shiftPercent < (emotes[i].shiftPercent + 3))) then
scores[i] := scores[i] + 9;
end;
// get the highest score, set result
maxScore := -1;
maxIndex := -1;
for i := 0 to high(scores) do
if (scores[i] > maxScore) then
begin
maxScore := scores[i];
maxIndex := i;
end;
// didn't ID if score is too low
if (maxScore > 0) then
result := maxIndex;
if (result <> -1) then
addToSRLLog('Mime_IdentifyEmote: Found emote '+emotes[result].name+' with a score of '+toStr(maxScore))
else
addToSRLLog('Mime_IdentifyEmote: Didn''t identify emote');
end;
(**
* Author: Coh3n
* Description: Returns a TBox of the 'Text' slot. Starts at 1 and goes across
* the chat box.
*)
function Mime_TextBox(slot: integer): TBox;
begin
result := gridBox(slot, 4, 2, 90, 20, 90, 40, point(100, 397));
end;
(**
* Author: Coh3n
* Description: Returns the tpa length of the text color for 'text'. See
* Mime_TextBox.
*)
function Mime_GetTextTPA(text: integer): integer;
var
tpa: TPointArray;
b: TBox;
begin
if (not loggedIn()) then
exit;
b := Mime_TextBox(text);
// the colour of the main text (not shadow)
if (findColorsTolerance(tpa, 11174789, b.x1, b.y1, b.x2, b.y2, 10)) then
result := length(tpa);
//addToSRLLog('slot: '+toStr(text)+' length: '+toStr(result));
end;
(**
* Author: Coh3n
* Description: Clicks the text in the chat box for the 'Emote'.
*)
function Mime_ClickText(emote: TMimeEmote): boolean;
var
i, len: integer;
p: TPoint;
begin
if (not loggedIn()) then
exit;
// loop through each "text box" in the chat box to find the correct text
for i := 1 to 8 do
begin
len := Mime_GetTextTPA(i);
// +/- tolerance on TPA count just in case
if (inRange(len, emote.textTPACount - 3, emote.textTPACount + 3)) then
begin
addToSRLLog('Mime_ClickText: Clicked text '+emote.name);
p := middleBox(Mime_TextBox(i));
mouse(p.x, p.y, 10, 3, mouse_Left);
wait(1500 + random(500));
// move the mouse away from text so text color can be found later
mmouse(MCX2 + 30 + random(30), 170, 50, 50);
result := true;
break;
end;
end;
if (not result) then
addToSRLLog('Mime_ClickText: Unable to click text - '+emote.name);
end;
(**
* Author: Coh3n
* Description: Identifies and performs the Mime's emote.
*)
function Mime_DoEmote(emotes: TMimeEmoteArray): boolean;
var
i, t: integer;
begin
if (not loggedIn()) then
exit;
i := Mime_IdentifyEmote(emotes);
if (i <> -1) then
begin
t := (getSystemTime + 5000);
while (getSystemTime < t) do
if (Mime_ClickText(emotes[i])) then
begin
result := true;
break;
end;
end;
end;
(**
* Author: Coh3n
* Description: Solves the random.
*)
function Mime_Solve(): boolean;
var
t: integer;
emotes: TMimeEmoteArray;
begin
if (not loggedIn()) then
exit;
Mime_Setup();
emotes := Mime_GetEmotes();
// perform emotes until finished or tries is exceeded
repeat
Inc(t);
Mime_DoEmote(emotes);
result := (not Mime_Detect() and (loggedIn()));
until(result or (t > 30));
if (not result) then
addToSRLLog('Mime_Solve: Mime solver exceeded maximum tries');
end;
(**
* Author: Coh3n
* Description: Used to gather data for the emote records.
*)
procedure Mime_GatherData(times: integer);
var
i: integer;
tmpEmote: TMimeEmote;
Emote: TMimeEmoteArray;
begin
for i := 1 to times do
begin
// need to reset so properties are accurate
tmpEmote.shiftSmall := 0;
tmpEmote.shiftBig := 0;
tmpEmote.shiftPercent := 0;
if (waitFunc(@Mime_IsPerforming, 50, 10000)) then
begin
//Emote := Mime_GetEmotes();
// Mime_IdentifyEmote(Emote);
tmpEmote.name := toStr(i);
tmpEmote := Mime_ScanMime();
Mime_DebugEmote(tmpEmote);
end;
end;
end;
I saw a few posts back of trouble with the box solver; have you made progress with that recently? That's one I've yet to work on and it's a very common random event.
If there's any updates to OSRS that have an effect on SRL-OSR I'll probably whip something up for them, but everything else is going into AL.
Last edited by Flight; 02-06-2014 at 05:52 AM.
Current projects:
[ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]
"I won't fall in your gravity. Open your eyes,
you're the Earth and I'm the sky..."
Red & Green Salamander Hunter // Construction // Gilded Altar // Major help w/ Kyles Runespan // VWB Smither // PhoenixFeathers // GemCutter // Bonfire // LRC Miner // Spell Tab Maker // ApeAtollAgility // IvyWC // RoguesCooker // Herblore // AshamanButterfly // AshamanPowerMiner // Fletcher // LividFarm
I can't do any testing anymore but the updates look great. Good work guys.
Solar from RiD.
The box solver remains unreleased because it's not safe to use..
I know you'll enjoy solving it just as much as I have, flight
Shouldn't you be posting all your antirandom work to SRL-OSR btw?
Thanks Ashaman for pushing these to the official include <3
Last edited by Krazy_Meerkat; 02-06-2014 at 10:11 AM.
Current projects:
[ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]
"I won't fall in your gravity. Open your eyes,
you're the Earth and I'm the sky..."
Hey there. Reporting in with a Pinball bug.
Basically, it solves the puzzle perfectly, but ironically enough, it can't seem to find the exit out of the cave. It tries to find a route, goes to one of the orbs, and just clicks on the tile where the player is standing.
Originally Posted by The log of one of the events today
Screenshots of another event today, by the time it solved it and was staggering around the cave:
http://i.imgur.com/oQtyL0q.png
http://i.imgur.com/giUbrQI.png
Yeah you have to manually update your osr
I'm confused as to why you don't just work on/change the OSR include, as a dev they would let you on there to change things + other people could help. Or are you making the same kind of huge changes like there were from srl5-6?
From what I understand the osr include should be able to do everything you need it to (apart from randoms) ie I think I fixed all of the broken stuff.
Last edited by Ashaman88; 02-07-2014 at 02:00 PM.
Red & Green Salamander Hunter // Construction // Gilded Altar // Major help w/ Kyles Runespan // VWB Smither // PhoenixFeathers // GemCutter // Bonfire // LRC Miner // Spell Tab Maker // ApeAtollAgility // IvyWC // RoguesCooker // Herblore // AshamanButterfly // AshamanPowerMiner // Fletcher // LividFarm
!No priv. messages please
Well, I actually fully reinstalled Simba yesterday (When reflection broke and I didn't read the thread about it having a new update -.-). So I downloaded all the recent versions of Simba, OSR-SRL, etc... Did run any possible updates, too, including SRL.
That being said, I'll try to see if this can be replicated in the same event. It might take some time though, it's not THAT common.
EDIT
Got the event again, and let the Antirandom solve it. After tagging the posts, it made a few attempts to exit the cave, and eventually (after 3 failed tries) managed to get out. Whatever method it uses, while sometimes it can solve the problem, seems very inconsistent.
I honestly think turning the camera South, walking til you hit the wall, and walking right/left til you find the entrance would find the way 100% of the time. Just my opinion though.
Last edited by lollol012; 02-07-2014 at 09:38 PM.
There are currently 1 users browsing this thread. (0 members and 1 guests)