Naum
2010-02-19 13:11:35
Re-writing it
This is my mime solver which I'm still working on at the moment. For the time being it looks like it's on the home straight. The main reason behind why I made this is because the current Mime Solver doesn't seem to work, I think its predominantly to do with the plugin, but it could be the SCAR side also.
I've chosen to release it so that members can be generous enough to test it. Furthermore, it's not released to the masses because the code is messy (its got my comments all over it) and there may be a few bugs, which I may be unaware about, that have to be fixed. Through your testing I hope to accomplish, indeed that :).
As for how the solver works - I'll give you a textual breakdown.
After extensive testing I think that the solver has 100% chance of getting out the random, however time is the critical issue here. So, 5-7/8 emotes are covered, a good 4 of them work perfectly. This places its precision of detecting an emote properly at around 70 - 85%. The main nuisances are the Laugh and Think :redface:. I hope to boost this to around 80%, as to keep it consistent. :)
However, I realised that the method of 'shifts' are pretty unstable as it all depends on the right timing. So I'm pretty sure after I've exhausted this method I'll probably use another one (hand detection sounds good ;)), hoping that it will carry much more reliability.
Thanks for bearing through my blunder with words. But it's not over yet, oh no, on the contrary it has just begun..:surprised:
How To Test
[INDENT]1. Specify the client
2. Press run, it might fail for the first emote detection as the light might be over the mime, etc.
3. Record what emotes it works at and what emotes it fails at, and what that emote was meant to be :D.
4. The solver is DELIBERATELY tweaked not to click on the emote, but rather to move the mouse over it. As through your gracious generosity you *might* be lovely enough to let me borrow the account :).
5. Paste all the debug stuff if the need arises :)[/INDENT]
Without further adieu, the solver.
This is an example of debug:
Credits:
Ferment, IceFire, HacknCrack1 for accounts
Marpis for PixelShift
Anyone else who gave hints or pointers :)
Thanks in advance to anyone who tests <3.
P.S due to :fiery:exams:fiery: approaching, progress and reply times might be painstakingly slow. However, there is not much (within legal boundaries) which I can do to prevent this.
Those interested in the progress on the maze solver can check here:
http://mazesolverthing.googlecode.com/svn/trunk/
This is my mime solver which I'm still working on at the moment. For the time being it looks like it's on the home straight. The main reason behind why I made this is because the current Mime Solver doesn't seem to work, I think its predominantly to do with the plugin, but it could be the SCAR side also.
I've chosen to release it so that members can be generous enough to test it. Furthermore, it's not released to the masses because the code is messy (its got my comments all over it) and there may be a few bugs, which I may be unaware about, that have to be fixed. Through your testing I hope to accomplish, indeed that :).
As for how the solver works - I'll give you a textual breakdown.
- Solver detects the light (Mime_GetAnimations)
- The solver gets the pixel shifts every 4 shifts along 100msec time frames.
- This info is then put through length and range testing (so certain emotes can be found).
- It is then put through a second filter, this analyses the sequences and filters off the array
- Lastly it's put through the last filter (F_Refine), this uses past trends from data to get the best emote. If there's only one emote then it outputs that, if there are no results for past trends then it outputs a random one (not really groovy, I know :cartman:)
- This is then outputted and the solver moves the mouse over the suspected emote.
After extensive testing I think that the solver has 100% chance of getting out the random, however time is the critical issue here. So, 5-7/8 emotes are covered, a good 4 of them work perfectly. This places its precision of detecting an emote properly at around 70 - 85%. The main nuisances are the Laugh and Think :redface:. I hope to boost this to around 80%, as to keep it consistent. :)
However, I realised that the method of 'shifts' are pretty unstable as it all depends on the right timing. So I'm pretty sure after I've exhausted this method I'll probably use another one (hand detection sounds good ;)), hoping that it will carry much more reliability.
Thanks for bearing through my blunder with words. But it's not over yet, oh no, on the contrary it has just begun..:surprised:
How To Test
[INDENT]1. Specify the client
2. Press run, it might fail for the first emote detection as the light might be over the mime, etc.
3. Record what emotes it works at and what emotes it fails at, and what that emote was meant to be :D.
4. The solver is DELIBERATELY tweaked not to click on the emote, but rather to move the mouse over it. As through your gracious generosity you *might* be lovely enough to let me borrow the account :).
5. Paste all the debug stuff if the need arises :)[/INDENT]
Without further adieu, the solver.
program New;
{.Include SRL/SRL.Scar}
{.Include SRL/SRL/Misc/Debug.Scar}
{.Include SRL/SRL/Misc/Users.Scar}
CONST FORCEDEBUG = True; //Allow True for huge blocks of text.
Const
Glass_Wall = 0;
Laugh = 1;
Dance = 2;
Cry = 3;
Think = 4;
Glass_Box = 5;
Lean_On_Air = 6;
Climb_Rope = 7;
M_Length = (Climb_Rope +1);
Type TEmote = Record
LowerBound : Integer;
UpperBound : Integer;
Text : String;
Name : String;
End;
Type TEmoteArray = Array Of TEmote;
Var M_Emotes : TEmoteArray;
M_Array : TIntegerArray;
M_Interrogation : TEmoteArray;
Procedure LoadEmotes;
Begin
SetLength(M_Emotes, M_Length);
With M_Emotes[Glass_Wall] Do
Begin
LowerBound := 30; {130}
UpperBound := 351;
Text := 'all';
Name := 'Glass Wall';
End;
With M_Emotes[Laugh] Do
Begin
LowerBound := 360 {450};
UpperBound := 800;
Text := 'augh';
Name := 'Laugh';
End;
With M_Emotes[Dance] Do
Begin
LowerBound := 1124; {1424}
UpperBound := 9999; {1938}
Text := 'ance';
Name := 'Dance';
End;
With M_Emotes[Cry] Do
Begin
LowerBound := 340; {419}
UpperBound := 753;
Text := 'ry';
Name := 'Cry';
End;
With M_Emotes[Think] Do
Begin
LowerBound := 410; {499}
UpperBound := 771;
Text := 'hink';
Name := 'Think';
End;
With M_Emotes[Glass_Box] Do
Begin
LowerBound := 360; {360}
UpperBound := 1100;{787}
Text := 'ox';
Name := 'Glass Box';
End;
With M_Emotes[Lean_On_Air] Do
Begin
LowerBound := 355; {385}
UpperBound := 990; {912}
Text := 'ean';
Name := 'Lean On Air';
End;
With M_Emotes[Climb_Rope] Do
Begin
LowerBound := 485; {529}
UpperBound := 1098;
Text := 'limb';
Name := 'Climb Rope';
End;
End;
Const
F_Basic = 0;
F_Rough = 1;
F_Refine = 2;
Function InEmoteArr(Emotionn : TEmote; EmoteArr : TEmoteArray) : Boolean;
Var I : Integer;
Begin
For I := 0 To High(EmoteArr) Do
If (Emotionn.Name = EmoteArr[I].Name) Then
Begin
Result := True;
WriteLn(Emotionn.Name+' IS IN ARRY!');
Exit;
End;
End;
Function Mime_GetAnimations : Array [0..4] Of Integer;
Var TB : TBox;
TPA : TPointArray;
I : Integer;
Begin
ColorToleranceSpeed(0);
If FORCEDEBUG Then WriteLn('Detecting Spot light on mime');
Disguise('Detecting Spot light on mime');
TB := IntToBox(310, 96, 496, 292);
Repeat
Wait(15);
FindColorsTolerance(TPA, 4941189, TB.x1, TB.y1, TB.x2, TB.y2, 16);
Until(GetArrayLength(TPA) > 1500);
Wait(400); (*Wait(200)*)
If FORCEDEBUG Then WriteLn('Found spot light, starting animation detector');
Disguise('Found spot light, starting animation detector');
For I := 0 To 3 Do
Begin
Result[I] := PixelShift(TB, 100);
{If FORCEDEBUG Then} WriteLn(IntToStr(I)+' Shift = '+IntToStr(Result[I])+' px');
End;
Result[4] := SumIntegerArray(Result);
If FORCEDEBUG Then WriteLn('Animation Shift = '+IntToStr(Result[4]));
Disguise('Done');
End;
Procedure Mime_FilterAnimation(Var OutPut : TEmoteArray; FType : Integer; Sequence : TIntegerArray);
Var Len : Integer;
I, II : Integer;
TempArray : TEmoteArray;
TempTIA : TIntegerArray;
BLoop : Boolean;
Begin
Case FType Of
F_Basic : Begin
Len := 0;
For I := Glass_Wall To Climb_Rope Do
If InRange(Sequence[4], M_Emotes[I].LowerBound, M_Emotes[I].UpperBound) Then
Begin
Inc(Len);
SetLength(OutPut, Len);
Output[Len-1] := M_Emotes[I];
End;
End;
F_Rough : Begin
TempArray := OutPut;
OutPut := [];
Len := 0;
SetLength(TempTIA, 5);
For I := 0 To High(TempArray) Do
Begin
BLoop := False;
//If FORCEDEBUG Then WriteLn(TempArray[I].Name);
If FORCEDEBUG Then WriteLn('At GW');
If (TempArray[I].Name = 'Glass Wall') Then
If InRange(Sequence[4], M_Emotes[Glass_Wall].LowerBound,
M_Emotes[Glass_Wall].UpperBound) Then
Begin
TempTIA := Sequence;
QuickSort(Sequence);
If (Sequence[0] < 10) Or (Sequence[1] < 10) Then
For II := 0 To 3 Do
If TempTIA[II] < 53 Then
Begin
BLoop := True;
Break;
End;
If BLoop Then
Begin
Inc(Len);
SetLength(OutPut, Len);
OutPut[Len-1] := TempArray[I];
WriteLn(OutPut[Len-1].Name+' GW');
Sequence := TempTIA
If FORCEDEBUG Then WriteLn('GW Added');
End;
Sequence := TempTIA;
End; {}
If FORCEDEBUG Then WriteLn('AT Laugh');
If InRange(Sequence[4], M_Emotes[Laugh].LowerBound, M_Emotes[Laugh].UpperBound) Then //Laugh
If (Sequence[1] + Sequence[2]) > 270 {353} Then {0 , 1}
If Not InEmoteArr(M_Emotes[Laugh], OutPut) Then
If TempArray[I].Name = 'Laugh' Then
Begin
Inc(Len);
SetLength(OutPut, Len);
OutPut[Len-1] := TempArray[I];
WriteLn(OutPut[Len-1].Name+' Laugh');
If FORCEDEBUG Then WriteLn('Laugh Added');
End;
{}
If FORCEDEBUG Then WriteLn('AT Cry');
If InRange(Sequence[4], M_Emotes[Cry].LowerBound, M_Emotes[Cry].UpperBound) Then //Cry
Begin
If SumIntegerArray([Sequence[0], Sequence[1]{, Sequence[3]}]) < Sequence[2] Then
If Sequence[2] > 150 {220} Then
If Not InEmoteArr(M_Emotes[Cry], OutPut) Then
If TempArray[I].Name = 'Cry' Then
Begin
Inc(Len);
SetLength(OutPut, Len);
OutPut[Len-1] := TempArray[I];
WriteLn(OutPut[Len-1].Name+' Cry');
If FORCEDEBUG Then WriteLn('Cry Added');
End;
End; {}
If FORCEDEBUG Then WriteLn('AT Dance');
BLoop := False; //Dance
If InRange(Sequence[4], M_Emotes[Dance].LowerBound,
M_Emotes[Dance].UpperBound) Then
For II := 1 To 3 Do
Begin
BLoop := Sequence[II] > 0;
If Not BLoop Then Break;
End;
If BLoop Then
If Not InEmoteArr(M_Emotes[Dance], OutPut) Then
If TempArray[I].Name = 'Dance' Then
Begin
Inc(Len);
SetLength(OutPut, Len);
OutPut[Len-1] := TempArray[I];
WriteLn(OutPut[Len-1].Name+' Dance');
If FORCEDEBUG Then WriteLn('Dance Added');
End; {}
If FORCEDEBUG Then WriteLn('AT Think');
If InRange(Sequence[4], M_Emotes[Think].LowerBound, M_Emotes[Think].UpperBound) Then //Think
If InRange(Sequence[3], 65, 130 {105}) Then
If InRange(Sequence[0], 35, 140{100}) Then
If Not InEmoteArr(M_Emotes[Think], OutPut) Then
If TempArray[I].Name = 'Think' Then
Begin
Inc(Len);
SetLength(OutPut, Len);
OutPut[Len-1] := TempArray[I];
WriteLn(OutPut[Len-1].Name+' Think');
If FORCEDEBUG Then WriteLn('Think Added');
End;
{}
If FORCEDEBUG Then WriteLn('AT GB');
If InRange(Sequence[4], M_Emotes[Glass_Box].LowerBound, M_Emotes[Glass_Box].UpperBound) Then //Glass Box
If (Sequence[1] < 20) Or (Sequence[1] > 350 {400}) Then
If Not InEmoteArr(M_Emotes[Glass_Box], OutPut) Then
If TempArray[I].Text = 'ox' Then
Begin
Inc(Len);
SetLength(OutPut, Len);
OutPut[Len-1] := TempArray[I];
WriteLn(OutPut[Len-1].Name+' GB');
If FORCEDEBUG Then WriteLn('Glass Box Added');
End; {}
If FORCEDEBUG Then WriteLn('AT LON');
If (TempArray[I].Name = 'Lean On Air') Then
If InRange(Sequence[4], M_Emotes[Lean_On_Air].LowerBound,
M_Emotes[Lean_On_Air].UpperBound) Then //Lean on Air
Begin
TempTIA := Sequence;
QuickSort(Sequence);
If ((Sequence[0] < 130) And InRange(Sequence[1], 9, 130)) Then
If ((Sequence[2] + Sequence[3]) > 300) Or (TempTIA[3] > 70) Then
If Not InEmoteArr(M_Emotes[Lean_On_Air], OutPut) Then
Begin
Inc(Len);
SetLength(OutPut, Len);
OutPut[Len-1] := TempArray[I];
WriteLn(OutPut[Len-1].Name+' LON');
Sequence := TempTIA;
If FORCEDEBUG Then WriteLn('LON Added');
End;
Sequence := TempTIA;
End; {}
If FORCEDEBUG Then WriteLn('At CR');
If InRange(Sequence[4], M_Emotes[Climb_Rope].LowerBound,
M_Emotes[Climb_Rope].UpperBound) Then //Climb Rope
If (Sequence[0] + 15) < Sequence[1] Then
If Sequence[3] > 100 Then
If Not InEmoteArr(M_Emotes[Climb_Rope], OutPut) Then
If TempArray[I].Name = 'Climb Rope' Then
Begin
Inc(Len);
SetLength(OutPut, Len);
OutPut[Len-1] := TempArray[I];
WriteLn(OutPut[Len-1].Name+' CR');
If FORCEDEBUG Then WriteLn('CR Added'); {}
End;
End;
End;
F_Refine : Begin
TempArray := OutPut;
OutPut := [];
If InEmoteArr(M_Emotes[Cry], TempArray) And
InEmoteArr(M_Emotes[Think], TempArray) And
InEmoteArr(M_Emotes[Lean_On_Air], TempArray) Then
Begin
Output := [M_Emotes[Cry]];
Exit;
End;
If InEmoteArr(M_Emotes[Laugh], TempArray) And
InEmoteArr(M_Emotes[Lean_On_Air], TempArray) Then
Begin
Output := [M_Emotes[Laugh]];
Exit;
End;
If InEmoteArr(M_Emotes[Glass_Box], TempArray) And
InEmoteArr(M_Emotes[Lean_On_Air], TempArray) Then
Begin
Output := [M_Emotes[Glass_Box]];
Exit;
End;
If Length(TempArray) = 1 Then
OutPut := [TempArray[0]];
If Length(TempArray) > 1 Then
Begin
OutPut := [TempArray[Random(High(TempArray))]];
WriteLn('More than 1 element in the array, picking random one :(');
End;
End;
End;
End;
Var M_F, M_I : Integer;
Begin
SetupSRL;
ActivateClient;
Wait(500);
MakeCompass('N');
FindNPCChatText('lick here to continue', ClickLeft);
{ If Not InRange(Trunc(Rs_GetCompassAngleDegrees), 355, 5) Then
ClickNorth(True); }
LoadEmotes;
Repeat
M_Array := Mime_GetAnimations;
For M_F := F_Basic To F_Refine Do
Begin
Mime_FilterAnimation(M_Interrogation, M_F, M_Array);
If FORCEDEBUG Then WriteLn('Output for filter: ' +IntToStr(M_F)+ ' =');
For M_I := 0 To High(M_Interrogation) Do
If FORCEDEBUG Then WriteLn(M_Interrogation[M_I].Name);
If FORCEDEBUG Then WriteLn('{------------}');
End;
Wait(2000 + Random(1000));
Try
FindNPCChatText(M_Interrogation[0].Text, Move);
Except WriteLn('Could NOT Identify'); End;
Until(False);
If (High(M_Interrogation) <> -1) Then
If FORCEDEBUG Then WriteLn(M_Interrogation[0].Name);
End.
SetColorSpeed2Modifiers(2.92, 1.09); // gloves
FindColorsTolerance(TPA, 12046517, 261, 77, 496, 292, 11);
{[
Cry if
Output for filter: 1 =
Cry
Think
Lean On Air
or
Output for filter: 1 =
Cry
Think
Lean On Air
Climb Rope ]
[
GlassBox if
Output for filter: 1 =
Cry
Glass Box (v)
Lean On Air (v)
or
Output for filter: 1 =
Glass Box (v)
Lean On Air (v)]
[
Laugh if
Output for filter: 1 =
Laugh (v)
Lean On Air (v)
Climb Rope (v)
or
Output for filter: 1 =
Laugh (v)
Think
Lean On Air (v) ]
[
LON if
Output for filter: 1 =
Cry
Lean On Air
Climb Rope
or
Output for filter: 1 =
Lean On Air
Climb Rope ]
Climb Rope if
Output for filter: 1 =
Laugh
Climb Rope
Think if
Output for filter: 1 =
Laugh (v)
Think (v)
Glass Wall Range = 137(91) - 351
Trend = 3s Shift is 0, less than 53 for one (but 2s or 3s shift is always 0)
Laugh Range = 468 - 781
Trend = 1s shift is rarely 0, 3s shift is 47 - 111,
Dance Range = 1524 - 1838
Trend = 0s shift is 39 - 131, 1s, 2s, 3s are always more than 0s
Cry Range = 419 - 653
Trend = 0s+1s+3s < 2s, 2s is always highest,
Think Range = 499 - 671
Trend = 3s is 65 - 105 (0s shift 35-100)
GlassBox Range = 443 - 687
Trend = 1s Shift is < 20, 2s Shift is the biggest
Lean On Air Range = 385 - 807
Trend = lowest two shifts are under 130,
Climb Rope Range = 529 - 1068
Trend = 0s shift < 1s shift, 3s Shift > 100
Glass Wall =
0s Shift is: 68
1s Shift is: 133
2s Shift is: 116
3s Shift is: 0
Total Shift is: 317
0s Shift is: 84
1s Shift is: 135
2s Shift is: 0
3s Shift is: 0
Total Shift is: 219
0s Shift is: 99
1s Shift is: 38
2s Shift is: 0
3s Shift is: 53
Total Shift is: 190
0s Shift is: 85
1s Shift is: 135
2s Shift is: 67
3s Shift is: 0
Total Shift is: 287
0s Shift is: 82
1s Shift is: 151
2s Shift is: 118
3s Shift is: 0
Total Shift is: 351
0s Shift is: 99
1s Shift is: 117
2s Shift is: 64
3s Shift is: 0
Total Shift is: 280
0s Shift is: 68
1s Shift is: 161
2s Shift is: 105
3s Shift is: 0
Total Shift is: 334
0s Shift is: 81
1s Shift is: 148
2s Shift is: 106
3s Shift is: 0
Total Shift is: 335
Laugh =
0s Shift is: 100
1s Shift is: 0
2s Shift is: 456
3s Shift is: 81
Total Shift is: 637
0s Shift is: 59
1s Shift is: 347
2s Shift is: 96
3s Shift is: 90
Total Shift is: 592
0s Shift is: 113
1s Shift is: 96
2s Shift is: 291
3s Shift is: 47
Total Shift is: 547
0s Shift is: 71
1s Shift is: 338
2s Shift is: 61
3s Shift is: 84
Total Shift is: 554
0s Shift is: 65
1s Shift is: 0
2s Shift is: 430
3s Shift is: 52
Total Shift is: 547
0s Shift is: 78
1s Shift is: 86
2s Shift is: 410
3s Shift is: 90
Total Shift is: 664
0s Shift is: 61
1s Shift is: 76
2s Shift is: 443
3s Shift is: 96
Total Shift is: 676
0s Shift is: 81
1s Shift is: 56
2s Shift is: 107
3s Shift is: 224
Total Shift is: 468
0s Shift is: 88
1s Shift is: 26
2s Shift is: 553
3s Shift is: 97
Total Shift is: 764
Dance =
0s Shift is: 89
1s Shift is: 437
2s Shift is: 513
3s Shift is: 631
Total Shift is: 1670
0s Shift is: 107
1s Shift is: 600
2s Shift is: 573
3s Shift is: 451
Total Shift is: 1731
0s Shift is: 65
1s Shift is: 561
2s Shift is: 534
3s Shift is: 526
Total Shift is: 1686
0s Shift is: 61
1s Shift is: 561
2s Shift is: 542
3s Shift is: 529
Total Shift is: 1693
0s Shift is: 84
1s Shift is: 535
2s Shift is: 637
3s Shift is: 342
Total Shift is: 1598
0s Shift is: 86
1s Shift is: 361
2s Shift is: 633
3s Shift is: 483
Total Shift is: 1563
0s Shift is: 113
1s Shift is: 354
2s Shift is: 684
3s Shift is: 373
Total Shift is: 1524
0s Shift is: 68
1s Shift is: 554
2s Shift is: 570
3s Shift is: 504
Total Shift is: 1696
0s Shift is: 131
1s Shift is: 609
2s Shift is: 497
3s Shift is: 532
Total Shift is: 1769
0s Shift is: 89
1s Shift is: 571
2s Shift is: 489
3s Shift is: 651
Total Shift is: 1800
0s Shift is: 85
1s Shift is: 570
2s Shift is: 505
3s Shift is: 654
Total Shift is: 1814
0s Shift is: 39
1s Shift is: 595
2s Shift is: 522
3s Shift is: 525
Total Shift is: 1681
0s Shift is: 82
1s Shift is: 551
2s Shift is: 556
3s Shift is: 530
Total Shift is: 1719
0s Shift is: 68
1s Shift is: 470
2s Shift is: 524
3s Shift is: 635
Total Shift is: 1697
Cry =
0s Shift is: 50
1s Shift is: 52
2s Shift is: 276
3s Shift is: 90
Total Shift is: 468
0s Shift is: 68
1s Shift is: 62
2s Shift is: 228
3s Shift is: 61
Total Shift is: 419
0s Shift is: 58
1s Shift is: 40
2s Shift is: 267
3s Shift is: 116
Total Shift is: 481
0s Shift is: 123
1s Shift is: 69
2s Shift is: 354
3s Shift is: 107
Total Shift is: 653
0s Shift is: 66
1s Shift is: 65
2s Shift is: 341
3s Shift is: 104
Total Shift is: 576
0s Shift is: 75
1s Shift is: 72
2s Shift is: 258
3s Shift is: 46
Total Shift is: 451
0s Shift is: 61
1s Shift is: 74
2s Shift is: 261
3s Shift is: 74
Total Shift is: 470
0s Shift is: 261
1s Shift is: 43
2s Shift is: 75
3s Shift is: 87
Total Shift is: 466
0s Shift is: 90
1s Shift is: 41
2s Shift is: 339
3s Shift is: 96
Total Shift is: 566
Think =
0s Shift is: 100
1s Shift is: 249
2s Shift is: 116
3s Shift is: 65
Total Shift is: 530
0s Shift is: 100
1s Shift is: 0
2s Shift is: 303
3s Shift is: 96
Total Shift is: 499
0s Shift is: 36
1s Shift is: 116
2s Shift is: 373
3s Shift is: 94
Total Shift is: 619
0s Shift is: 82
1s Shift is: 128
2s Shift is: 356
3s Shift is: 105
Total Shift is: 671
0s Shift is: 104
1s Shift is: 244
2s Shift is: 104
3s Shift is: 77
Total Shift is: 529
Glass Box =
0s Shift is: 43
1s Shift is: 468
2s Shift is: 55
3s Shift is: 121
Total Shift is: 687
0s Shift is: 76
1s Shift is: 0
2s Shift is: 305
3s Shift is: 101
Total Shift is: 482
0s Shift is: 135
1s Shift is: 0
2s Shift is: 285
3s Shift is: 81
Total Shift is: 501
0s Shift is: 76
1s Shift is: 0
2s Shift is: 325
3s Shift is: 68
Total Shift is: 469
0s Shift is: 78
1s Shift is: 17
2s Shift is: 331
3s Shift is: 115
Total Shift is: 541
0s Shift is: 113
1s Shift is: 0
2s Shift is: 259
3s Shift is: 97
Total Shift is: 469
0s Shift is: 55
1s Shift is: 0
2s Shift is: 314
3s Shift is: 74
Total Shift is: 443
0s Shift is: 69
1s Shift is: 0
2s Shift is: 292
3s Shift is: 95
Total Shift is: 456
0 Shift = 49 px
1 Shift = 480 px
2 Shift = 72 px
3 Shift = 85 px
Animation Shift = 686
Lean On Air =
0s Shift is: 62
1s Shift is: 65
2s Shift is: 106
3s Shift is: 574
Total Shift is: 807
0s Shift is: 103
1s Shift is: 129
2s Shift is: 69
3s Shift is: 235
Total Shift is: 536
0s Shift is: 98
1s Shift is: 115
2s Shift is: 231
3s Shift is: 335
Total Shift is: 779
0s Shift is: 70
1s Shift is: 109
2s Shift is: 146
3s Shift is: 60
Total Shift is: 385
0s Shift is: 53
1s Shift is: 67
2s Shift is: 115
3s Shift is: 215
Total Shift is: 450
0s Shift is: 79
1s Shift is: 94
2s Shift is: 219
3s Shift is: 338
Total Shift is: 730
0s Shift is: 90
1s Shift is: 65
2s Shift is: 247
3s Shift is: 356
Total Shift is: 758
0s Shift is: 234
1s Shift is: 153
2s Shift is: 124
3s Shift is: 69
Total Shift is: 580
Climb Rope =
0s Shift is: 73
1s Shift is: 389
2s Shift is: 166
3s Shift is: 170
Total Shift is: 798
0s Shift is: 92
1s Shift is: 83
2s Shift is: 173
3s Shift is: 181
Total Shift is: 529
0s Shift is: 81
1s Shift is: 211
2s Shift is: 211
3s Shift is: 111
Total Shift is: 614
0s Shift is: 48
1s Shift is: 213
2s Shift is: 211
3s Shift is: 460
Total Shift is: 932
0s Shift is: 50
1s Shift is: 91
2s Shift is: 126
3s Shift is: 105
Total Shift is: 372
0s Shift is: 91
1s Shift is: 336
2s Shift is: 153
3s Shift is: 214
Total Shift is: 794
0s Shift is: 172
1s Shift is: 193
2s Shift is: 161
3s Shift is: 112
Total Shift is: 638
0s Shift is: 84
1s Shift is: 191
2s Shift is: 203
3s Shift is: 475
Total Shift is: 953
}This is an example of debug:
Successfully compiled (3815 ms)
New client targeted
Successfully compiled (3567 ms)
SRL Compiled in 16 msec
Detecting Spot light on mime
Found spot light, starting animation detector
0 Shift = 129 px
1 Shift = 59 px
2 Shift = 114 px
3 Shift = 93 px
Animation Shift = 395
Output for filter: 0 =
Laugh
Cry
Glass Box
Lean On Air
{------------}
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
Lean On Air LON
LON Added
At CR
Output for filter: 1 =
Lean On Air
{------------}
Output for filter: 2 =
Lean On Air
{------------}
Detecting Spot light on mime
Found spot light, starting animation detector
0 Shift = 77 px
1 Shift = 227 px
2 Shift = 83 px
3 Shift = 105 px
Animation Shift = 492
Output for filter: 0 =
Laugh
Cry
Think
Glass Box
Lean On Air
Climb Rope
{------------}
At GW
AT Laugh
Laugh Laugh
Laugh Added
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
Think Think
Think Added
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
Lean On Air LON
LON Added
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
Output for filter: 1 =
Laugh
Think
Lean On Air
{------------}
Output for filter: 2 =
Laugh
{------------}
Detecting Spot light on mime
Found spot light, starting animation detector
0 Shift = 58 px
1 Shift = 66 px
2 Shift = 241 px
3 Shift = 101 px
Animation Shift = 466
Output for filter: 0 =
Laugh
Cry
Think
Glass Box
Lean On Air
{------------}
At GW
AT Laugh
Laugh Laugh
Laugh Added
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
Cry Cry
Cry Added
AT Dance
AT Think
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
Think Think
Think Added
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
Lean On Air LON
LON Added
At CR
Output for filter: 1 =
Laugh
Cry
Think
Lean On Air
{------------}
Output for filter: 2 =
Laugh
{------------}
Detecting Spot light on mime
Successfully executed
New client targeted
New client targeted
New client targeted
Successfully compiled (4024 ms)
SRL Compiled in 16 msec
Detecting Spot light on mime
Found spot light, starting animation detector
0 Shift = 106 px
1 Shift = 312 px
2 Shift = 180 px
3 Shift = 221 px
Animation Shift = 819
Output for filter: 0 =
Glass Box
Lean On Air
Climb Rope
{------------}
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
Climb Rope CR
CR Added
Output for filter: 1 =
Climb Rope
{------------}
Output for filter: 2 =
Climb Rope
{------------}
Detecting Spot light on mime
Successfully executed
New client targeted
Successfully compiled (3546 ms)
SRL Compiled in 15 msec
Detecting Spot light on mime
Found spot light, starting animation detector
0 Shift = 610 px
1 Shift = 2785 px
2 Shift = 60 px
3 Shift = 91 px
Animation Shift = 3546
Output for filter: 0 =
Dance
{------------}
At GW
AT Laugh
AT Cry
AT Dance
Dance Dance
Dance Added
AT Think
AT GB
AT LON
At CR
Output for filter: 1 =
Dance
{------------}
Output for filter: 2 =
Dance
{------------}
Detecting Spot light on mime
Found spot light, starting animation detector
0 Shift = 98 px
1 Shift = 95 px
2 Shift = 240 px
3 Shift = 67 px
Animation Shift = 500
Output for filter: 0 =
Laugh
Cry
Think
Glass Box
Lean On Air
Climb Rope
{------------}
At GW
AT Laugh
Laugh Laugh
Laugh Added
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
Cry Cry
Cry Added
AT Dance
AT Think
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
Think Think
Think Added
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
Lean On Air LON
LON Added
At CR
At GW
AT Laugh
AT Cry
AT Dance
AT Think
AT GB
AT LON
At CR
Climb Rope CR
CR Added
Output for filter: 1 =
Laugh
Cry
Think
Lean On Air
Climb Rope
{------------}
Output for filter: 2 =
Cry
{------------}
Detecting Spot light on mime
Successfully executed
Credits:
Ferment, IceFire, HacknCrack1 for accounts
Marpis for PixelShift
Anyone else who gave hints or pointers :)
Thanks in advance to anyone who tests <3.
P.S due to :fiery:exams:fiery: approaching, progress and reply times might be painstakingly slow. However, there is not much (within legal boundaries) which I can do to prevent this.
Those interested in the progress on the maze solver can check here:
http://mazesolverthing.googlecode.com/svn/trunk/