Simba/Tests/PS/Neopets_old.mufa

149 lines
3.2 KiB
Plaintext

program BankProblems;
// http://www.neopets.com/games/play.phtml?game_id=371
Const
KeyDownUpSpeed = 1; // The Higher the "KeyDownUpSpeed", the slower the script is.
Type
Door = record
X: Integer;
Y: Integer;
DoorChar: Byte;
IsOpen: Boolean;
IsMonster: Boolean;
WhatMonster: String;
End;
Var
Doors: Array [0..5] Of Door;
Procedure DeclareStuff;
Var
I: Integer;
Begin
For I := 0 To 5 Do
Begin
Doors[I].X := 45 + I * 96;
Doors[I].Y := 210;
End;
Doors[0].DoorChar := 83;
Doors[1].DoorChar := 68;
Doors[2].DoorChar := 70;
Doors[3].DoorChar := 74;
Doors[4].DoorChar := 75;
Doors[5].DoorChar := 76;
End;
Function IsBadGuy(DN: Integer): Boolean;
Var
TempColor: Array [0..11] Of Integer;
I, x, y: Integer;
H, S, L: Extended;
Begin
TempColor[0] := GetColor(Doors[DN].X, Doors[DN].Y);
TempColor[1] := GetColor(Doors[DN].X, Doors[DN].Y-1);
TempColor[2] := GetColor(Doors[DN].X-1, Doors[DN].Y);
TempColor[3] := GetColor(Doors[DN].X, Doors[DN].Y+1);
TempColor[4] := GetColor(Doors[DN].X+1, Doors[DN].Y);
TempColor[5] := GetColor(Doors[DN].X, Doors[DN].Y-2);
TempColor[5] := GetColor(Doors[DN].X-2, Doors[DN].Y);
TempColor[6] := GetColor(Doors[DN].X+1, Doors[DN].Y+2);
TempColor[7] := GetColor(Doors[DN].X+2, Doors[DN].Y);
TempColor[8] := GetColor(Doors[DN].X, Doors[DN].Y-3);
TempColor[9] := GetColor(Doors[DN].X-3, Doors[DN].Y);
TempColor[10] := GetColor(Doors[DN].X+1, Doors[DN].Y+3);
TempColor[11] := GetColor(Doors[DN].X+3, Doors[DN].Y);
For I := 0 To 11 Do
Begin
If SimilarColors(TempColor[I], 3055, 30) Then // Red Devil
Begin
Result := True;
Doors[DN].WhatMonster := 'Devil';
Exit;
End;
End;
For I := 0 To 11 Do
Begin
If SimilarColors(TempColor[I], 12841714, 40) Then // Squirrle
Begin
ColorToHSL(TempColor[I], H, S, L);
If (L > 60) And (L < 95) Then
If (H > 5 ) And (H < 30) Then
If FindColorTolerance(x, y, 4092580, Doors[DN].X, Doors[DN].Y-1,
Doors[DN].X + 20, Doors[DN].Y + 1, 40)
Then
Begin
Result := True;
Doors[DN].WhatMonster := 'Squirrle';
Exit;
End;
End;
End;
For I := 0 To 11 Do
Begin
If SimilarColors(TempColor[I], 28756, 30) Then // Green Monster
Begin
Result := True;
Doors[DN].WhatMonster := 'Green Monster';
Exit;
End;
End;
For I := 0 To 11 Do
Begin
If SimilarColors(TempColor[I], 794793, 30) Then // Mysterious Man
Begin
Result := True;
Doors[DN].WhatMonster := 'Mysterious Man';
Exit;
End;
End;
End;
Procedure HandleMonsters;
Var
I, iX, iY, Time: Integer;
Begin
For I := 0 To 5 Do
Begin
If IsBadGuy(I) Then
Begin
KeyDown(Doors[I].DoorChar);
Wait(10 * KeyDownUpSpeed);
KeyUp(Doors[I].DoorChar);
End;
End;
End;
Procedure AddToGold;
Begin
If GetColor(388, 25) = 0 Then
Begin
Wait(100);
KeyDown(32);
Wait(10 * KeyDownUpSpeed);
KeyUp(32);
End;
End;
begin
//ClearDebug;
DeclareStuff;
Repeat
AddToGold;
HandleMonsters;
Wait(10);
Until False;
end.