SRL Archive - Unofficial Development

Appa - SCAR Minimizeable WebClient


nielsie95

2009-05-19 18:08:36

Hey,

This is Appa, a WebClient plugin for SCAR. It has a lot of features and potential. It can help automate tasks on the internet using SCAR. For example, you can fill in forms or play flash games (minimized).

A few features:
  • Browse the web
  • Simulate mouse and keyboard events
  • Get page source
  • Adjust page source
  • Get screen contents when minimized
  • Block input (kind of useless, but fun :p)
  • Get/Set target in page (useful for flash applets)
  • Submit forms
  • Cookie support
  • Proxy support
  • Frame support

NOTE: the mouse and keyboard simulations do not work for JAVA applets.

Here are a few examples on how to use:


//Searches through all forms for "form1"
//and sets the value of the third element
//of the form to ''
var
f: TAppaFormArray;
begin
f := appa_GetForms;
for i := 0 to High(f) do
if (f[i].Name = 'form1') then
begin
appa_FormElementAction(i, 3, appa_SetValue, '');
Break;
end;
end;

//Searches through all elements for an element
//with tag "A" (link), then it gets the href attribute
//to check if it is the proper link I'm looking for.
//If it is, it clicks the link.
var
e: TAppaElementArray;
begin
e := appa_GetElements;
for i := 0 to High(e) do
begin
if (e[i].Tag <> 'A') then
Continue;
s := LowerCase(Trim(e[i].innerText));
t := appa_ElementAction(i, appa_GetAttribute, 'href');
if ((s = q) and (q <> '')) or (s = a[4]) then
if (Pos('javascript: submitForm', t) > 0) then
begin
appa_ElementAction(i, appa_Click, '');
Break;
end;
end;
end;
  
//This is a general function to navigate to a page
function appa_NavigateTo(URL: string; TimeOut: Integer): Boolean;
var
t: Integer;
begin
Result := False;
if (not appa_Showing) then
Exit;

if (URL <> '') then
appa_Navigate(URL);
t := GetSystemTime + TimeOut;
while (not appa_PageLoaded) and appa_Showing and (GetSystemTime < t) do
Wait(250);

Result := appa_PageState >= 3;
end;

begin
appa_ShowForm; //Show the form
appa_NavigateTo('', 10000); //Wait until it's fully loaded
appa_NavigateTo('http://www.freerice.com/index.php', 10000); //Navigate to freerice.com
end.

As you might have guessed, these snippets are from a FreeRice script which I'll release later today. It demonstrates how to and what for Appa can be used.

If you have any further questions, please ask :)

~Nielsie95


Here's a list with available functions:


procedure SaveBitmapAsJPEG(const Bitmap, w, h, Compression: Integer; const FileName: string);
function PostHTTPFormData(const URL: string; const fieldNames, fieldValues, fileFieldNames, fileNames, fileContentType: TStringArray): string;

function appa_SetProxy(IP: string; Port: Integer; ByPass: string): Boolean;
procedure appa_ShowForm;
function appa_Showing: Boolean;
procedure appa_CloseForm;
function appa_CurrentPage: string;
function appa_PageState: Integer;
function appa_PageLoaded: Boolean;
procedure appa_Navigate(const URL: string);
function appa_GetTargets: TStringArray;
procedure appa_SetTargetHandle(const h: HWND);
procedure appa_SetTargetFromPoint(const p: TPoint);
function appa_SetTargetName(const Name: string): Boolean;

procedure appa_KeyDown(const Key: Byte);
procedure appa_KeyUp(const Key: Byte);
procedure appa_MoveMouse(const x, y:Integer);
procedure appa_HoldMouse(const x, y: Integer; const Left: Boolean);
procedure appa_ReleaseMouse(const x, y: Integer; const Left: Boolean);

function appa_GetSize: TPoint;
procedure appa_SetSize(Width, Height: Integer);
procedure appa_CopyContentToBitmap(const bIndex: Integer);
function appa_GetElements: THTMLElementArray;
function appa_GetForms: THTMLFormArray;
function appa_ElementAction(const elIndex: Integer; const act: THTMLElementAction; const Param: string): string;
function appa_FormElementAction(const FormIndex, elIndex: Integer; const act: THTMLElementAction; const Param: string): string;
procedure appa_SubmitForm(const Index: Integer);

procedure appa_ScrollTo(const x, y: Integer);
function appa_GetHTML: string;
function appa_GetCookies: string;
procedure appa_SetCookies(const Cookies: string);
procedure appa_Caption(const s: string);

function appa_GetFrameCount: Integer;
procedure appa_SetCurrentFrame(Frame: Integer; Nest: Boolean);
procedure appa_ResetFrameNest;

type
TAppaElement = record
Box: TBox;
innerText, innerHTML, outerHTML, ID, ClassName, Tag: string;
end;
TAppaElementArray = array of TAppaElement;
TAppaFormElement = record
outerHTML, ID, ClassName, Tag, Name, Value: string;
end;
TAppaFormElementArray = array of TAppaFormElement;
TAppaForm = record
Name, Action, Method: string;
Elements: TAppaFormElementArray;
end;
TAppaFormArray = array of TAppaForm;
TAppaElementAction = (appa_ScrollIntoView, appa_Click, appa_SetInnerHTML, appa_SetOuterHTML, appa_GetAttribute, appa_SetAttribute, appa_RemoveAttribute, appa_SetValue);

If you're having some annoying Just-in-time errors go to Internet Explorer and enable "Disable script debugging (other)".

Bobarkinator

2009-05-19 18:15:59

Mmmmm, sweet. I'll look at the code when I get home but from what you said, great job.

I love utilities made in SCAR :)

Naum

2009-05-19 18:16:53

Amazing 2nd post ftw!

Will try this out :)

Dynamite

2009-05-19 18:22:54

Looks SIIIICKK!
Cheers Niels ;)

T|M

footballjds

2009-05-19 18:22:58

Nice!!!@

nielsie95

2009-05-19 18:25:39

From: Bobarkinator
Mmmmm, sweet. I'll look at the code when I get home but from what you said, great job.

I love utilities made in SCAR :)


It's a plugin :p

Markus

2009-05-19 18:30:50

Deja-vu? :p
http://www.villavu.com/forum/showthread.php?t=23704
Anyways, nice work :)

nielsie95

2009-05-19 18:34:09

From: Markus
Deja-vu? :p
http://www.villavu.com/forum/showthread.php?t=23704
Anyways, nice work :)


Wow, it is. I didn't know he actually made it this far :p

mixster

2009-05-19 19:20:53

Disabled input, yet normal left clicking isn't working :(
Otherwise, glad there's something to further macroing on Linux since it ran (does this mean I have IE installed through Wine? eww), but if Raymond has sauce, then he wins :)

ShowerThoughts

2009-05-19 19:28:01

ZOMG!

Checking it out.

Dutchies FTW!

lordsaturn

2009-05-19 20:51:20

Niels, we want your sauce! ;)

Btw why
TAppaElementArray = array of THTMLElement;
instead of
TAppaElementArray = array of TAppaElement;

ShowerThoughts

2009-05-19 20:54:23

So it it is a kind of smart for all flash games?
all browser applets?

nielsie95

2009-05-19 20:57:31

From: lordsaturn
Niels, we want your sauce! ;)

Btw why
TAppaElementArray = array of THTMLElement;
instead of
TAppaElementArray = array of TAppaElement;


Oh you're right :) It's called THTMLElement in the plugin ;)
I might post the source later.

From: Hermen
So it it is a kind of smart for all flash games?
all browser applets?


Could be used for that yes, JAVA applets don't work though.

senrath

2009-05-19 21:02:17

Any idea why Java applets don't work?

Frt

2009-05-19 21:05:42

Shit, this is cool! :D

Laur€ns

2009-05-19 21:13:41

Interesting fact: 'Appa' means 'drunk' in Dutch (NL: in straattaal dan)

Janilabo

2009-05-19 22:01:34

Wow… Awesome job, Niels!! This plugin is pretty damn cool.

Thanks. :spot:

Home

2009-05-19 22:05:44

Woah this is really sweet (: Great job man (: Much cookies A LOADS OF COOKIES FOR YOU Niels =)

~Home

ShowerThoughts

2009-05-19 22:07:13

From: Home
Woah this is really sweet (: Great job man (: Much cookies A LOADS OF COOKIES FOR YOU Niels =)

~Home


If he isn't getting fat from scripting all the time, he will get it from your loads and LOADS of cookies.

Who pays the cookies after all? ;)

Dynamite

2009-05-19 22:12:24

Wait so can Appa be used to script in?
Like smart?
Sorry if im wrong

T~M

ShowerThoughts

2009-05-19 22:14:57

Yes only for applets without java, I am actually copying Nielsie's sentence.

Home

2009-05-19 22:26:14

Sorry this mya look like double posting ? But should this be included in SRL or even fro Scar as a default plugin :O And should for this make a seperate include because i really love this stuff!

~Home

ShowerThoughts

2009-05-19 22:29:37

The plugin folder.(appa)
Then just run the script, AFAIK.

Frt

2009-05-19 22:52:57

Found a bug: Popups.

nielsie95

2009-05-20 01:38:07

From: Frt
Found a bug: Popups.


What about them?

Anyway, here's a small script that demonstrates how to work with flash applets:

program New;

const
ScrollIntoView = True;

var
Client: TBox;
Target: Integer;
TargetSize: TPoint;

procedure appa_UpdateBitmap;
var
p: TPoint;
begin
if (not appa_Showing) then
Exit;
p := appa_GetSize; //Get the size of the browser
if (p.x <> TargetSize.x) or (p.y <> TargetSize.y) then //If it has changed -> New bitmap
begin
try FreeBitmap(Target); except end;
Target := BitmapFromString(p.x, p.y, '');
TargetSize := p;
SetTargetBitmap(Target);
end;
appa_CopyContentToBitmap(Target); //Update the bitmap

//DisplayDebugImgWindow(p.x, p.y);
//SafeDrawBitmap(Target, GetDebugCanvas, 0, 0);
end;

function appa_NavigateTo(URL: string; TimeOut: Integer): Boolean;
var
t: Integer;
begin
Result := False;
if (not appa_Showing) then
Exit;

if (URL <> '') then
appa_Navigate(URL);
t := GetSystemTime + TimeOut;
while (not appa_PageLoaded) and appa_Showing and (GetSystemTime < t) do
Wait(250);

Result := appa_PageState >= 3;
end;

procedure GetClientBox; //Because you can only get the bitmap of the whole page, you need to know where the client is
var
e: TAppaElementArray;
i: Integer;
begin
if (not appa_Showing) then
Exit;
e := appa_GetElements; //Get all elements
for i := 0 to High(e) do
if (e[i].Tag = 'OBJECT') then //Search for the applet
begin
Client := e[i].Box;
if ScrollIntoView then
begin
appa_ScrollTo(0, Client.y1);
Client.y2 := Client.y2 - Client.y1;
Client.y1 := 0;
end;
Break;
end;
end;

procedure ScriptTerminate;
begin
try FreeBitmap(Target); except end;
end;

procedure ClickSquare(x, y: Integer);
begin
//No offset here, because it is sent directly to the applet
x := 285 + (100 * x);
y := 67 + (100 * y);
appa_MoveMouse(x, y);
appa_HoldMouse(x, y, True);
Wait(40);
appa_ReleaseMouse(x, y, True);
end;

procedure HandleScreen;
begin
GetClientBox;
appa_UpdateBitmap; //Update the target bitmap

while (GetColor(Client.x1 + 160, Client.y1 + 285) = clWhite) do //Relative coordinates
begin
Wait(500);
appa_UpdateBitmap; //Update the target bitmap
end;
if (GetColor(Client.x1 + 190, Client.y1 + 223) = 1776513) then //All colorchecking is relative
begin
appa_MoveMouse(180, 225); //Not relative here -- Directly sent to applet
appa_HoldMouse(180, 225, True);
Wait(40);
appa_ReleaseMouse(180, 225, True);
Wait(2000);
appa_MoveMouse(300, 355);
appa_HoldMouse(300, 355, True);
Wait(40);
appa_ReleaseMouse(300, 355, True);
Wait(2000);
appa_UpdateBitmap;
end;
if (CountColor(39423, Client.x1 + 475, Client.y1 + 358, Client.x1 + 510, Client.y1 + 380) > 0) then
begin
appa_MoveMouse(490, 375);
appa_HoldMouse(490, 375, True);
Wait(40);
appa_ReleaseMouse(490, 375, True);
Wait(2000);
appa_UpdateBitmap;
end;
while (GetColor(Client.x1 + 246, Client.y1 + 368) = 13421568) do
begin
Wait(100);
appa_UpdateBitmap;
end;
end;

procedure NextMove;
var
PlayField: array[0..2] of array[0..2] of Integer;
x, y, c: Integer;
begin
GetClientBox;
appa_UpdateBitmap; //Update the target bitmap

c := 0;
for x := 0 to 2 do
for y := 0 to 2 do
begin
PlayField[x][y] := CountColor(10092543, 240 + (100 * x) + Client.x1, 30 + (100 * y) + Client.y1, 320 + (100 * x) + Client.x1, 110 + (100 * y) + Client.y1);
//FindColors/CountColors always with offset (Client.x1)
case PlayField[x][y] of
4144: PlayField[x][y] := 2; //Computer
4160: PlayField[x][y] := 5; //You
else PlayField[x][y] := 0; //Empty
end;
if (PlayField[x][y] = 0) then
c := 1;
end;
if (c <> 1) then
Exit;

for y := 0 to 2 do
begin
c := 0;
for x := 0 to 2 do
c := c + PlayField[x][y];
if (c = 4) or (c = 10) then
for x := 0 to 2 do
if (PlayField[x][y] = 0) then
begin
ClickSquare(x, y);
Exit;
end;
end;
for x := 0 to 2 do
begin
c := 0;
for y := 0 to 2 do
c := c + PlayField[x][y];
if (c = 4) or (c = 10) then
for y := 0 to 2 do
if (PlayField[x][y] = 0) then
begin
ClickSquare(x, y);
Exit;
end;
end;
c := PlayField[0][0] + PlayField[1][1] + PlayField[2][2];
if (c = 4) or (c = 10) then
begin
if (PlayField[0][0] = 0) then
ClickSquare(0, 0)
else if (PlayField[1][1] = 0) then
ClickSquare(1, 1)
else if (PlayField[2][2] = 0) then
ClickSquare(2, 2);
Exit;
end;
c := PlayField[0][2] + PlayField[1][1] + PlayField[2][0];
if (c = 4) or (c = 10) then
begin
if (PlayField[0][2] = 0) then
ClickSquare(0, 2)
else if (PlayField[1][1] = 0) then
ClickSquare(1, 1)
else if (PlayField[2][0] = 0) then
ClickSquare(2, 0);
Exit;
end;

while True do
begin
x := Random(3);
y := Random(3);

if (PlayField[x][y] = 0) then
Break;
end;
ClickSquare(x, y);
end;

begin
appa_ShowForm;
appa_NavigateTo('', 10000);
appa_NavigateTo('http://www.novelgames.com/flashgames/game.php?id=30', 10000);

appa_SetTargetName('MacromediaFlashPlayerActiveX'); //Set target to first flash applet

repeat
HandleScreen;
NextMove;
Wait(50);
until IsFKeyDown(3) or (not appa_Showing);
end.

I understand it might be a bit complicated at first, so feel free to ask. It should play a game of TicTacToe btw :p

Smartzkid

2009-05-20 06:19:07

Wow, that's pretty neat! Delphi, I assume?

How hard would it be to use the firefox rendering engine (gecko) rather than ie?

nielsie95

2009-05-20 10:59:11

Yes, Delphi :)

I have no idea how hard it would be. I just haven't found an up-to-date interface for Delphi yet.

mastaraymond

2009-05-21 17:41:17

I tried to use the firefox engine as plugin, but it epicly failed.

mrpickle

2009-05-22 04:07:40

The scipt detects the right answer for me, but while using appa, it doesn't seem to click the answer in any way shape or form. It just keeps spamming my debug with the answer .

Smartzkid

2009-06-03 06:17:53

I smell an amazing club live bot on the way :)

nielsie95

2009-06-03 11:07:00

Guess what I'm running right now :p

l33t_h4x0r

2009-07-11 16:51:40

is the userAgent same as that of my IE installed on MY pc?
P.S[1] : I check the user agent of appa using http://salij.org/useragent
it reported as IE 7.0

Also… The application is great…
Already started botting on a text based rpg… :)
Will give out some common functions i made soon…

P.S.[2] : BUG : The appa_PageState returns 4 way before the page is even loaded…
If you are trying to test this… Do it on a page with is filled with images…

nielsie95

2009-07-12 02:58:50

From: l33t_h4x0r
is the userAgent same as that of my IE installed on MY pc?
P.S[1] : I check the user agent of appa using http://salij.org/useragent
it reported as IE 7.0

Also… The application is great…
Already started botting on a text based rpg… :)
Will give out some common functions i made soon…

P.S.[2] : BUG : The appa_PageState returns 4 way before the page is even loaded…
If you are trying to test this… Do it on a page with is filled with images…


Thanks :)

Appa basically wraps a TWebBrowser control from Delphi into a dll. So your UserAgent should be the same as your Internet Explorer. The PageState function returns the ReadyState from the browser, so there's not much I can change there.



const READYSTATE_UNINITIALIZED = 0;
Default initialisation state.
const READYSTATE_LOADING = 1;
Object is currently loading data.
const READYSTATE_LOADED = 2;
Object has been initialised.
const READYSTATE_INTERACTIVE = 3;
User can interact with the object but loading has not yet finished.
const READYSTATE_COMPLETE = 4;
All of the object's data has been loaded.

tarajunky

2009-07-12 03:02:32

Nice. I never realized that Appa was your creation, Nielsie.

rawsilk

2009-10-19 17:08:23

Notice the client dosen't switch to Appa. this means we can't use DTMs or any other wide range of functions that SCAR has built in that require a client. Plz correct me if I'm worng. How would we go about looking for DTMs and text recognition?

nielsie95

2009-10-19 17:14:25

You'll have to use appa_CopyContentToBitmap and search on the bitmap.

EDIT: See post #25 from this thread for an example.

uncfan1119

2009-10-19 17:37:49

Anyway you can post .zip?. I don't want winrar.. :(

Bionicle

2009-10-19 19:20:21

From: uncfan1119
Anyway you can post .zip?. I don't want winrar.. :(


dont need winrar, download 7zip. better imo

rawsilk

2009-10-19 22:29:26

I think this deserves a seperate thread designed that posts allt eh functions and controls of Appa. The function list in 1st post is ok but its helpful to have a list of all controls that can be used by appa. for instance, to set a form value we would use appa_SetValue as the action but I only know that from one of the examples posted.

EDIT:
Also I tried logging into a site using Appa and it said "unable to retrieve session cookie. please relogin."

nielsie95

2009-10-20 14:37:52

I don't think there's a need for that. If you don't understand something, you can ask me :)
I'm not sure about the cookies, I believe they should work.

Infantry001

2009-10-20 15:30:19

This is pretty awesome, nielsie =) Great job, I love it!

rawsilk

2009-10-20 16:50:33

From: nielsie95
I don't think there's a need for that. If you don't understand something, you can ask me :)
I'm not sure about the cookies, I believe they should work.


Fair enough. About the cookies, I talked to my roommate in CS and apparently some login forms (especially secure sites) have an algorithm that they use to retrieve data and if it isn't matched then it wont work properly. It's designed to prevent exactly what I'm doing actually. ;)

Oh well. I working on some functions that make it possible to do DTMs and such things to make navigating these sort of sites easier. Also, does anyone have a good bitmap set for verdana font maybe size 11px? Its a bummer when it crashes cus it wont access window's fonts. "Access violation".

EDIT:
Also, I get
[Runtime Error] : Exception: Access violation at address 00781150 in module 'scar.exe'. Read of address 00000000 in line 45 in script
When I try appa_CopyContentToBitmap©; Any ideas?

nielsie95

2009-10-21 10:11:18

Did you enter a valid bitmap with proper size?

rawsilk

2009-10-21 13:51:13

Is there a way to return the bitmap of the whole page? Not just the section that Appa is viewing? You were right about bitmap too haha, forgot size params.

nielsie95

2009-10-21 17:04:51

No, sorry :(

rawsilk

2009-10-21 18:37:54

Found a bug. When using
appa_ElementAction(i, appa_GetAttribute, 'onclick');
if there is no attribute 'onclick' then it returns a Null which f***s Scar up. It doesn't return an exception. Even if I try:

a := appa_GetElements;
for i := 0 to high(a) do
begin
try writeln(appa_ElementAction(i, appa_GetAttribute, 'onclick'));
finally end;
end;

It would be better if it returned a var string and a result boolean. Boolean whether attribute exists.

YoHoJo

2009-10-21 19:24:06

Thats not APPA, this is Appa

rawsilk

2009-10-22 19:06:21

It would be nice if Appa could emulate a physical Click better. Sites still detect it as a digitally sent click where they don't detect normal ClickMouse.

XRaye

2009-10-22 19:27:54

Mouse & MMouse possible?

caused

2009-10-22 20:08:49

TWebbrowser ftw =). Good Job Nielsi!.

rawsilk

2009-10-22 20:18:44

From: XRaye
Mouse & MMouse possible?


They don't work because Appa isn't an active client in SCAR's eyes. And Mouse and MMouse would actually physically move the mouse thereby negating the purpose of Appa being a minimized resource. However, SMART does use a method that Appa can/should borrow. Notice the Red dot on SMART. It somehow mimics the mouse cursor and I think would fool these sites that detect Appa.

YoHoJo

2009-10-22 20:29:45

From: rawsilk
They don't work because Appa isn't an active client in SCAR's eyes. And Mouse and MMouse would actually physically move the mouse thereby negating the purpose of Appa being a minimized resource. However, SMART does use a method that Appa can/should borrow. Notice the Red dot on SMART. It somehow mimics the mouse cursor and I think would fool these sites that detect Appa.

What…? That makes no sense…?
SMARTs 'red dot' is just a feature because people didn't like that they couldn't see what SMART was doing so ben added a 'cursor'.

How would mouse and mmouse negate the purpose of appa being minimized?
He means a Mouse and MMouse that WORKs on APPA ONLY when its MINIMIZED, just like SMART does for runescape.

:D

Freddy1990

2009-10-25 05:19:47

From: caused
TWebbrowser ftw =).


You might want to rethink that phrase, lol, TWebbrowser is an IE control :duh:

Bionicle

2009-10-25 15:36:18

From: Freddy1990
You might want to rethink that phrase, lol, TWebbrowser is an IE control :duh:


IE! Ahh! *runs*

rawsilk

2009-10-25 16:47:59

From: YoHoJo
What…? That makes no sense…?
SMARTs 'red dot' is just a feature because people didn't like that they couldn't see what SMART was doing so ben added a 'cursor'.

How would mouse and mmouse negate the purpose of appa being minimized?
He means a Mouse and MMouse that WORKs on APPA ONLY when its MINIMIZED, just like SMART does for runescape.

:D


Normally MMouse and Mouse require that you have a Client specified. For example I could make this page a client then say Mouse (10,10,True) and it would make my cursor move to (10,10) and click. The problem I have is that the website I want to use Appa with has a receive algorithm on server side that detects programmatically sent signals as many secure sites also have. In Appa the Mouse functions just send a virtual click. However the website will notice that this is not a real click from a mouse because of the way the signal was sent and the button I'm trying to click (a submit button for login form) will not work properly. And yes SubmitForm also does not work.

I made a version of the script that does not use Appa. It just opens in broswer and ClickMouse works just fine because the way it sends the signal is acceptable to the secure site.

I tried reverse engineering Appa to modify the procedures to work like ClickMouse but I couldn't get most of the source.

However SMART could be modified, or Appa could borrow script from it, to work because it uses the same methods as ClickMouse.

EDIT: ps. The methods that would need to be used (to emulate a real click) come from win32api and win32con

EDIT: i guess theres no help. Appa just wont work with some websites :(…

Smartzkid

2009-10-27 23:15:23

How do you know that that is how they detect it; they could be checking your user agent or using some sort of javascript trickery.

Also, take a look at the SendMessage function if you want to simulate mouse clicks.

Gavril

2009-10-28 06:03:26

You can use the SendMessage function as previously stated. Thats from the Windows API, so works nicely.

I've got two questions.
- Any chance of a source release? Would be nice if others could pitch in to make this better :)
- Any chance of adding something that shows where the cursor is (as well as changing momentarily on click)?

nielsie95

2009-10-28 08:55:35

From: rawsilk
Normally MMouse and Mouse require that you have a Client specified. For example I could make this page a client then say Mouse (10,10,True) and it would make my cursor move to (10,10) and click. The problem I have is that the website I want to use Appa with has a receive algorithm on server side that detects programmatically sent signals as many secure sites also have. In Appa the Mouse functions just send a virtual click. However the website will notice that this is not a real click from a mouse because of the way the signal was sent and the button I'm trying to click (a submit button for login form) will not work properly. And yes SubmitForm also does not work.

I made a version of the script that does not use Appa. It just opens in broswer and ClickMouse works just fine because the way it sends the signal is acceptable to the secure site.

I tried reverse engineering Appa to modify the procedures to work like ClickMouse but I couldn't get most of the source.

However SMART could be modified, or Appa could borrow script from it, to work because it uses the same methods as ClickMouse.

EDIT: ps. The methods that would need to be used (to emulate a real click) come from win32api and win32con

EDIT: i guess theres no help. Appa just wont work with some websites :(…


The SubmitForm might not work, because the form might require a button click to work (javascript). ClickMouse uses the WinApi (WM_MOUSEMOVE, WM_LBUTTONDOWN, etc) to click. This will not work on JAVA applets and for Flash applets you'll have to set the correct target. You can't adjust SMART to work with any website, because SMART is made for the RS applet; you cannot use the mouse functions for any other website.

From: Gavril
You can use the SendMessage function as previously stated. Thats from the Windows API, so works nicely.

I've got two questions.
- Any chance of a source release? Would be nice if others could pitch in to make this better :)
- Any chance of adding something that shows where the cursor is (as well as changing momentarily on click)?


I don't think there's a need for the source. People don't use it that much anyway. It doesn't have much use to add a coloured dot to show the position of the mouse, as there's not really a position of the mouse. It sends fake events, but doesn't really create a fake mouse.

Jahooma

2009-10-29 22:44:59

Hmm… I got it working, but it doesn't seem to have support for the Adobe Flash Player. For example, if I go to a site that plays videos using flash (like youtube) they don't work and a message appears saying that I don't have the latest flash version. Do you know of a solution to this problem?
If it helps, I'm using Firefox version 3.5.4

nielsie95

2009-10-30 03:45:27

It uses Internet Explorer ;)

Freddy1990

2009-10-30 04:34:33

From: nielsie95
It sends fake events, but doesn't really create a fake mouse.


Hmm, any RS bot including SMART just sends fake events as well, the thing with java is that it's easier because you can manipulate the events being sent from input devices directly without much effort…

Jahooma

2009-10-30 15:16:28

From: nielsie95
It uses Internet Explorer ;)

:duh: Ah, thanks, that makes sense. Sorry about that.

Gavril

2009-10-31 13:33:28

From: nielsie95
I don't think there's a need for the source. People don't use it that much anyway. It doesn't have much use to add a coloured dot to show the position of the mouse, as there's not really a position of the mouse. It sends fake events, but doesn't really create a fake mouse.


Perhaps you're right about the source, I wouldn't know. Personally I quit RS autoing long ago, so APPA is an excellent tool for me should I want to auto anything else (currently autoing a Flash MMORPG). So perhaps the suggestion was out of greed as I wouldn't mind polishing it up to be more versatile /shrug.

As for a colored dot, I believe you're quite mistaken about its usefulness. Whenever my scripts are working as I intended, sure enough, I don't need a mouse or dot present to show me whats going on. But being that I rarely stick to one stick and usually enjoy autoing things that change to a good amount, my scripts do sometimes `freeze` so to say. Knowing the supposed position of the mouse at the time of the freeze can help in debugging what went wrong…

Quick example: Not to ramble too much more but essentially, say your character is just standing somewhere, well if the mouse/dot is far away, then something didnt trigger it to move. On the other hand, if its where you expected it to be, perhaps the click wasnt caught? Or something else you overlooked.

:)

Smartzkid

2009-11-02 22:27:09

It would be beneficial if it showed (/had the option to show) a square around each control as it is interacted with.

caused

2009-11-03 10:27:17

From: Freddy1990
You might want to rethink that phrase, lol, TWebbrowser is an IE control :duh:


I know : D. The IE engine itself is not that bad though ; D.. It's just microsofts explorer :X.

~caused

nagrom1700

2009-11-06 11:32:27

I cant get anything except the freeRice script to work using this :/ Ill just have to keep trying I guess. Are there any plans for making this more like SMART? Like actual fake mouse clicks instead of just buttons and stuff.

Gavril

2009-11-08 18:32:56

Hmm, is there any way to get the 'mouses' position in Appa? Im trying to convert the WindMouse & MMouse procedures over for Appa with a little help from WinAPI calls… but I need to be able to get the mouses position at various times.

Looking through the function/procedure list, I wasn't able to find anything that resembled what I needed, so please lemme know if Im wrong :)

nielsie95

2009-11-10 02:52:02

There is not really a mouse position as it doesn't create a fake mouse. If you really want to work with mouse positions, it's best to just track them in your script.

Floor66

2009-11-10 03:01:43

What about another seperate SCAR running a seperate script that gets commands from the script running Appa using InterSCARMessages, telling it to move the mouse!

nielsie95

2009-11-10 03:02:44

Why?

Floor66

2009-11-10 03:08:50

Oh I haven't read the thread enough I suppose :S
Nvm my reply >.<

mrpickle

2009-11-10 16:53:49

I am so in love with this :). worked nicely with your rice script, and i would love to use it in mine. THanks a load nielsie!

Dark_Sniper

2010-01-23 01:58:34

Hey I know I may be digging this thread up a bit, but this deserves it :p.

Also is there a way to make the appa window go into the system tray or something like scar? maybe just not as noticeable?

nielsie95

2010-01-23 10:16:11


program New;

function ShowWindow(hWND: HWND; nCmdShow: Integer): Boolean; external 'ShowWindow@user32.dll stdcall';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: LongInt): LongInt; external 'SetWindowLongA@user32.dll stdcall';
function GetWindowLong(hWnd: HWND; nIndex: Integer): LongInt; external 'GetWindowLongA@user32.dll stdcall';
function FindWindow2(lpClassName: string; lpWindowName: string): HWND; external 'FindWindowA@user32.dll stdcall';

var
h: HWND;

procedure BringAppaBack;
begin
ShowWindow(h, 0);
SetWindowLong(h, -20, 0);
ShowWindow(h, 5);
end;

procedure HideAppa(TotalHide: Boolean);
var
a: string;
begin
a := 'Appa - Temporary weird name ' + IntToStr(Random(10000));
appa_Caption(a);
h := FindWindow2('', a);
appa_Caption('Appa');
ShowWindow(h, 0);
if TotalHide then Exit;
SetWindowLong(h, -20, GetWindowLong(h, -20) or $80);
ShowWindow(h, 5);
end;

begin
appa_ShowForm;
HideAppa(False);
Wait(2000);
BringAppaBack;
end.

Here's something to hide it from the taskbar, you'll need to have API-calls enabled.

Dark_Sniper

2010-01-23 11:59:49

well I did all of that and I still get :
Line 23: [Error] (23:1): Unknown identifier 'appa_Caption' in script
is appa_caption part of appa.dll?
maybe I have a different version of appa.

nielsie95

2010-01-23 12:15:14

Could be, yes. I've updated the first post.

Additions:


procedure SaveBitmapAsJPEG(const Bitmap, w, h, Compression: Integer; const FileName: string);
function PostHTTPFormData(const URL: string; const fieldNames, fieldValues, fileFieldNames, fileNames, fileContentType: TStringArray): string;

function appa_GetCookies: string;
procedure appa_SetCookies(const Cookies: string);
procedure appa_Caption(const s: string);

The first two functions have been added to add support for DeCaptcher in SCAR.

Dark_Sniper

2010-01-23 12:19:53

wow ty so much neilsie!

keep this thread going man it is a wonderful addition to scar.
I can make bots out the botthole with this thing!

lordsaturn

2010-01-24 03:27:26

Mufasa support ? :o
btw nice additions

oh and javascript support pretty please :D:D

Simtoon

2010-01-24 06:43:07

Isnt it Simba?

Floor66

2010-01-24 07:27:07

this was made waaay before anyone knew about simba..

nielsie95

2010-01-24 07:44:59

This isn't multi-platform compatible, because it uses Internet Explorer as browser, so it's not fully compatible with Simba. I think Javascript works, lordsaturn?

lordsaturn

2010-01-24 14:03:07

Yeah you're right javascript works, thanks niels. But you could just make appa windows only for simba..

Smartzkid

2010-01-24 17:18:25

As long as simba supports plugins, it should be able to run this?

Dark_Sniper

2010-01-25 18:20:45

is it possible to open up multiple appas?

nielsie95

2010-01-26 09:57:25

Only with multiple SCARs at the moment.

Dark_Sniper

2010-01-26 16:06:05

ok, thought so.

piepolo

2010-02-12 11:20:37

is there an option for sendkeys?

Home

2010-02-15 06:46:16

Guys why this won't work. it will result like this. "hhhhhhooooooommmmmmeee",
but it should be "home"

procedure appa_TypeByte(k: Byte);
begin
appa_KeyDown(k);
appa_KeyUp(k);
end;



procedure appa_TypeSendEx(Text: string; PressEnter: Boolean);
var
S: string;
I, L: Integer;
Shift: Boolean;

begin
S:= 'ABCDEFGHIJKLMNOPQRSTUVWXZ' + '~!@#$%^&*()_+{}|:"<>?';
L := Length(Text);
for I := 1 to L do
begin
Shift := (Pos(Text[i], S) > 0);
if (Shift) then
begin
appa_KeyDown(VK_SHIFT);
while (Pos(Text[i], S) > 0) and (I <= Length(Text)) do
begin
appa_TypeByte(GetKeyCode(Text[I]));
Inc(I);
if (I > Length(Text)) then Break;
end;
end;
if (Shift) then
appa_KeyUp(VK_SHIFT);
if (I <= Length(Text)) then
begin
appa_TypeByte(GetKeyCode(Text[I]));
end;
end;
if (PressEnter) then
appa_TypeByte(GetKeyCode(Chr(13)));
end;


~Home

Home

2010-02-21 03:51:25

Hey is it possible, that we could get the source :) Because would be great if it could use Firefox Engine :) ( So it can be converted to use Simba too ) :)


~Home

Smartzkid

2010-02-22 13:21:07

The code would probably be so different that it would make more sense to start over.

Cazax

2010-02-25 11:22:44

Proxy support would be nice :)

Diddy Kong

2010-02-28 22:39:33

Line 1: [Error] (1:1): Privileged instruction in script 

EDIT: Kaspersky blacklisted the program. F*CK!

http://www.virustotal.com/analisis/5405e7eb1b702c4c2d1718870b55ec1a76d384d8d2f62f8a549d3cb8661bc9b6-1267415043

nielsie95

2010-03-01 08:28:19

Maybe because it uses a global keyboard hook and connects to the internet. Can't say it doesn't look suspicious, but I'm afraid there's not much I can do =\

Diddy Kong

2010-03-01 09:02:16

It's good. I can just set a file exception.

Diddy Kong

2010-03-03 23:27:26

Could you please add a procedure to hide Appa (the window), but still keep it running?

Dgby714

2010-03-03 23:30:26

From: GreenText
Could you please add a procedure to hide Appa (the window), but still keep it running?


minimize it? also there are programs on the web that will hide it in your taskbar =)

nielsie95

2010-03-04 02:50:04

Home, either do keyup or keydown, not both. They do not really simulate, they just use sendmessage.

Greentext, I believe I made such a function in Scar already (using API calls). Maybe you can find it if you search a bit, else I'll post it again later today :)

EDIT: You can find it in this thread :p (here).

Dynamite

2010-03-20 08:58:16

How can I run a proxy with this?
So maybe every (5) times it goes to a page, it changes ip/proxy?

nielsie95

2010-03-20 10:01:06

You can't, unless you use another program to run everything through a proxy.

Dynamite

2010-03-20 18:46:12

Do you know a program that I can use?

g0tp0t

2010-04-21 17:37:28

i am going to make a runescape account generator with this :D. how would i get the text boxs and how submit nonform buttons

Frement

2010-04-21 17:39:30

From: g0tp0t
i am going to make a runescape account generator with this :D. how would i get the text boxs and how submit nonform buttons


You dont need those :) You can just use PostHTTPPageEx or what ever it is, press F1 when SCAR is open so you can see the functions.

Sir R. M8gic1an

2010-06-22 05:52:43

Stickied for the amount of use & reference this gets.

~RM

tom99

2010-07-18 11:19:59

Can this be used for ALL Scar commands ? i still need to learn to master appa

Sorry for gravedig but is there a command to change client screen? because it starts with a little screen.

ffcfoo

2010-07-30 07:23:11

Also I would like to say that does this even work anymore? I tryed to download it but it says it was a virus so I turned my Avast antivirus off and put it in to scar plugins and tryed using one of the appa functions and it didn't work it didn't even show the commands when I press ctrl + space.

i luffs yeww

2010-07-30 07:43:04

Works fine for me.

http://i25.tinypic.com/b3stoj.png

Shuttleu

2010-07-30 08:39:08

i can also say that it still works, i have been using it with the lockerz raper :p

~shut

ffcfoo

2010-07-30 09:09:51

From: Shuttleu
i can also say that it still works, i have been using it with the lockerz raper :p

~shut


What the! It wont work for me :( Also why does it say it is a virus?

i luffs yeww

2010-07-30 09:27:18

I'm not sure why it'd ever be picked up by an AV.. are you sure you're putting it in the plugins folder? SCAR 3.23?

Smartzkid

2010-07-30 13:28:25

Get rid of Avast and get real antivirus. Get clamwin.

ffcfoo

2010-07-30 19:48:25

From: Smartzkid
Get rid of Avast and get real antivirus. Get clamwin.


0_o. Avast is good…..

Smartzkid

2010-07-31 22:58:02

Realtime AV = Slow & unneeded (except for the incompetent :p)

tom992

2010-08-25 13:38:55

what is the command to resize the window ? btw im tom99 ( forgot pass and my mail block the recipient of password recovery).

nielsie95

2010-08-25 13:47:59

You'll have to manually resize or use the Windows API through API calls.

tom992

2010-08-25 15:11:17

but why does inputs not work in ssl encrypted sites ? can this be bypassed ?

nielsie95

2010-08-25 17:02:56

What do you mean?

tom992

2010-08-25 17:15:00

From: nielsie95
What do you mean?


It cant write anything in http( s ) it seems.

And also can you go backward and forward in page ?

Nvm it do work with https aswell i just did something wrong but there are certain keys you cannot such as . or @

nielsie95

2010-09-18 09:20:40

Another update!

Additions:

function appa_SetProxy(IP: string; Port: Integer; ByPass: string): Boolean;
procedure appa_SetSize(Width, Height: Integer);

function appa_GetFrameCount: Integer;
procedure appa_SetCurrentFrame(Frame: Integer; Nest: Boolean);
procedure appa_ResetFrameNest;

This means support for proxies and frames! I'm not sure if proxies will work on every system, but they do on my system (it should be possible to have a different proxy for each Appa). Frames are accessible with appa_SetCurrentFrame. If you call that function, Appa will set its document to that frame (which means functions like GetElements and GetHTML will use that frame). Nested frames are supported. Don't forget to call appa_ResetFrameNest at the start of your script if you use frames.

tom99

2010-09-22 18:22:36

How do you use the proxy function do you need a proxy server somewhere else to connect to ? or do you just change it to whatever you like ? and port does it need to be open ? and also the "Bypass" thing what does it do, and what is getframecount, is it amounts of open appa?

nielsie95

2010-09-23 12:51:44

You connect to a proxy like this:


appa_SetProxy('128.227.56.81', 3124, '');

And then Appa will use that proxy to browse. The ByPass variable can be used to pass a list to Appa that shouldn't use the proxy (haven't tested this myself yet, though). By the way, here's a nice list of proxies :)

appa_GetFrameCount returns the amount of frames found in the current page. You can change the current frame with appa_SetCurrentFrame to manipulate elements in another (i)Frame. Up until now, Appa couldn't "see" the elements inside frame elements, because they are loaded from a different source.

tom99

2010-09-27 06:44:22

This works great well done nielse i love this update!

nielsie95

2010-09-29 13:23:04

Thanks! That's good to know! :)

Gavril

2010-12-16 12:44:28

In the previous page, there was a good bit of talk/request about integrating this over to Simba (though it would be windows only I s'pose due to IE?). Has any progress been made towards this end?

TBH I've only just gotten started back into autoing n such, haven't gotten around to Simba yet but from the screenies ~ it looks freaking awesome. Essentially, I havent tried using this as a plugin for Simba yet ^^ :D

EGM

2010-12-23 17:58:37

Any sign of an update that is compatible with Simba?

Gu3st...

2010-12-23 18:01:54

I am wondering about this too… And Appa for Scar has a memory leak or something.. It hogs my memory, and it increases for each appa_Navigate() call

Daniel

2010-12-23 21:28:34

Well, it'd still only work natively under Windows.

i luffs yeww

2010-12-23 21:44:58

^ For now.

Daniel

2010-12-23 21:53:52

From: i luffs yeww
^ For now.


Good luck finding/wrapping a recent Gecko/Chromium for OP then :) And also there's the compatibility between resource names, etc.. :)

EGM

2010-12-24 09:52:39

Is the source available for some other person more talented than myself to pick up the project if the original author doesn't care to update it?

nielsie95

2010-12-30 06:06:47

From: Zyt3x
I am wondering about this too… And Appa for Scar has a memory leak or something.. It hogs my memory, and it increases for each appa_Navigate() call


If it is on appa_navigate(), it might be because IE caches something?

About Simba: I don't recall FPC having the TWebBrowser like Delphi has, so it's not possible to compile the source in FPC for Simba. FPC does have support for for WebKit and Gecko, but the current Appa source wont be of much help to create a version with such an engine. (so it's not a matter of updating, it's more a matter of upgrading).

Frement

2011-01-19 19:06:19

I get this in SCAR:
Type: Compiling Error
Line: 1
File:
Message: Unable to register type TAppaElement

Home

2011-04-11 15:44:49

Hey guys. Is there way that i could make this work with Links that opens in new window.. At the moment error comes. Thanks!

~Home

Shuttleu

2011-05-22 04:35:43

can i request a couple of functions for this?
appa_GetColor
appa_FindColor

~shut

Gu3st...

2011-05-22 07:40:11

From: Frement
I get this in SCAR:
Which SCAR? 3.25?
Try 3.22 :)

Home

2011-05-22 12:41:45

I will create little include with Findcolor and most basic stuff.

~Home

Shuttleu

2011-05-22 15:35:30

From: Home
I will create little include with Findcolor and most basic stuff.

~Home


go home!

~shut

Home

2011-05-22 17:11:05




Have fun!

~Home

Xtensity

2011-08-03 15:27:43

Not been many replies in 2 months :|. Tis a shame, great plugin.

Though, I'm curious… How exactly do I use the proxy command?

I mean, I understand the first 2 variables… but what is the ByPass:String; variable at the end of it?

I've configured my computer to have the Tor proxy setup which allows me to have multiple IP addresses overtime… so I do something like this.

Appa_SetProxy('127.0.0.1',8118,'')

Though what's the last variable for? I know the first 2 are right because I'm using them in my browser right now.

nielsie95

2011-08-03 17:43:10

The ByPass variable is to list sites/domains (separated by a semicolon) you don't want to use a proxy for (like "*.villavu.com;www.google.com"). I'm not sure how to use it with Tor. If Tor acts like your proxy on localhost, port 8118, I guess that should work?

And thanks, Home! That should make it easier for people to write scripts :)

Xtensity

2011-08-03 23:36:04

That's the idea yes.

Though, when I have appa connect through the tor proxy I am using successfully on a number of my other browsers, and programs… each page in appa comes back as notfound/can't be displayed.. as if I didn't have any internet connection at all :(.

Why is this?

lolhahauad

2011-12-11 03:19:55

can you make this compatible with simba please?

nielsie95

2011-12-11 09:47:35

I don't think it's very easy, as TWebBrowser isn't available in Lazarus. If I'd use the Delphi version, there would probably be incompatibilities with the string parameters. So no, most likely not going to happen :(

Dgby714

2011-12-11 09:56:30

From: nielsie95
I don't think it's very easy, as TWebBrowser isn't available in Lazarus. If I'd use the Delphi version, there would probably be incompatibilities with the string parameters. So no, most likely not going to happen :(


How about releasing the sawse?

nielsie95

2011-12-11 10:08:09

There's not much you can do with it ;)

Dgby714

2011-12-12 01:35:47

From: nielsie95
There's not much you can do with it ;)


I know, I just wanted to take a peek.

Main

2011-12-12 01:37:37

Should it still be sort of compatible with scar thou?

Dgby714

2011-12-12 01:47:57

From: Main
Should it still be sort of compatible with scar thou?


Yes

Wizzup?

2011-12-12 06:11:26

You should just try loading it in Simba - it may just work.

lolhahauad

2011-12-12 21:04:14

dunno how.. really need this, the plugin doesnt show when i add it.

Dynamite

2011-12-30 23:54:41

Does anyone have an old version of scar as the new version seems to not support plugins??

-Boom

yakkyigooconroy

2011-12-31 00:01:08

From: Dynamite
Does anyone have an old version of scar as the new version seems to not support plugins??

-Boom


have you checked freddy1990.com? i know that he used to have all the old versions on there

Flight

2012-02-06 07:30:11

Niels, would it be too difficult to build something similar to run inline with Simba instead?

goodyou

2012-02-13 01:14:04

If you have any further questions, please ask

Dgby714

2012-02-13 01:15:13

From: Flight
Niels, would it be too difficult to build something similar to run inline with Simba instead?


Maybe not harder than making the original but it'd need to be made from scratch….

Flight

2012-02-15 22:19:46

From: Dgby714
Maybe not harder than making the original but it'd need to be made from scratch….


Yeah, from what I've seen the source was never released. I guess not many people are interested in the concept of a minimize-able browser like this, so it would be hard to get support for something similar to be built for Simba. :/

euphemism

2012-02-15 22:25:41

From: Flight
Yeah, from what I've seen the source was never released. I guess not many people are interested in the concept of a minimize-able browser like this, so it would be hard to get support for something similar to be built for Simba. :/


I would be interested, and I know kanah would be as well. Niels, there are three expectant customers!

Yago

2012-02-17 21:32:56

I am more than interested…

Chris

2012-02-23 13:54:57

I am also very interested, I have tried to use this with Scar, but cant get it to work..
I have downloaded and installed the latest version of Scar and I have put the dll inside the includes folder, but its not in the includes manager and I have tried searching around in Scar but I cant get it to work.
Could someone help me?

Edit: NVM, I have downloaded and installed an older version of Scar and this simply had a Plugins folder :p

Zota

2012-03-28 11:59:31

Will scar minimize whilst using mousemovements? or just collecting data? I could really use a minimizeable browser script.

Luke

Chris

2012-03-28 13:31:08

From: Zota
Will scar minimize whilst using mousemovements? or just collecting data? I could really use a minimizeable browser script.

Luke


Yes it can move a virtual mouse inside the browser. Also when its minimized.


I have a problem with it, I am trying to use Appa with the latest version of scar and Freddy told me to use {$L Appa.dll}, but it gives me an error:
''Unable to register function function appa_GetElements: TAppaElementArray''
Did anyone get it working with the last versions yet?

injustice

2012-03-31 09:16:51

This is amazing! Now I can get high scores in all games :D

Great work, keep it up!

LordJashin

2012-04-08 16:33:05

Alright I got it working with SCAR proof

For anyone interested I'm going to investigate this further later.

nielsie95

2012-04-08 19:03:34

Cool, LordJashin!
Your questions have been answered in this thread ;)

LordJashin

2012-04-09 19:17:02

If anyone is still interested, Runescape loads in Appa. I bet a lot of addons/plugins for IE might work too.

http://i.imgur.com/G1OpB.png

shstiger2009

2012-04-09 19:26:00

From: LordJashin
If anyone is still interested, Runescape works in Appa. I bet a lot of addons/plugins for IE might work too.

http://i.imgur.com/G1OpB.png


I'm very interested, and I think a lot of users are or at least a handful of us.

SMART is detectable, isn't this the way to make it not?

LordJashin

2012-04-09 19:41:34

From: shstiger2009
I'm very interested, and I think a lot of users are or at least a handful of us.

SMART is detectable, isn't this the way to make it not?


Smart isn't detectable. This only works for Internet Explorer. If you press Ctrl + N in Appa you get a new window in Internet explorer.

Why am I getting this error on youtube? - Cant get it fixed sometimes it works


Request: Tabs for APPA

Chris

2012-04-16 16:04:59

I sometimes get an error:
Type: Runtime Error, Line: 87, Message: Exception: Unknown error.

procedure appa_UpdateBitmap;
var
p: TPoint;
begin
if (not appa_Showing) then
Exit;
p := appa_GetSize;
if BitmapAssigned(Target) then
FreeBitmap(Target);
Target := BitmapFromString(p.x, p.y, '');
SetTargetBitmap(temp);
appa_CopyContentToBitmap(Target); // <-- this is line 87
SetTargetBitmap(Target);
end;
Target and temp are global variables.

Do you know more about the unknown error? Any idea how it could occur?

Thanks in advance,
Chris

shadowrecon

2012-04-18 02:43:42

The error with scar not being able to register functions was a bug in the type exporting routine in scar 3.32 its fixed in scar 3.33 beta. Download the latest beta and give it ago =p

nickdean

2013-02-25 09:44:28

Having some trouble finding an older version, seems 3.38 doesn't have the same type of plugins. Is anyone still using this? I'd like it for a soundcloud bot i created.

Zeta Matt

2013-10-02 19:04:51

I want to try it out… trying to figure out some things first :P

Zeta Matt

2013-10-02 19:06:35

Is it possible to use it with SIMBA? >.<

rj

2013-10-02 19:11:29

From: archermaths
Is it possible to use it with SIMBA? >.<


yes

Zeta Matt

2013-10-02 19:25:55

From: Officer Barbrady
yes


Could you please tell me how? I just downloaded SCAR, but I'd love to uninstall it back .-.

Zeta Matt

2013-10-02 19:28:34

Is it just dropping the includes in Simba's include file?

Chris

2013-10-03 03:58:06

From: archermaths
Is it just dropping the includes in Simba's include file?


It's a plugin, so it should be dropped in Simba's plugin folder. :)
But you'll need the one from the Appa for Simba thread:
Appa for Simba - A Minimizeable WebClient

You include it in your script using:
{$loadlib Appa_Simba.dll}

Zeta Matt

2013-10-03 21:46:59

From: Chris
It's a plugin, so it should be dropped in Simba's plugin folder. :)
But you'll need the one from the Appa for Simba thread:
Appa for Simba - A Minimizeable WebClient

You include it in your script using:
{$loadlib Appa_Simba.dll}


Oh fu****g thanks Chris! That's what I needed :D

Zef Style

2014-11-16 23:31:38

How does someone set values of non form IDs?

appa_setValue does not work with appa_ElementAction

and what about IDs/Elements that do not have a "value"…certain drop down boxes..ect

delemojo

2015-04-04 07:08:01

Puuh old thread, anyways. Is there anayway to search for BitMaps in Appa? I didnt found any? :)

bg5

2015-04-04 07:36:07

From: delemojo
Puuh old thread, anyways. Is there anayway to search for BitMaps in Appa? I didnt found any? :)


There is function appa_CopyContentToBitmap();

or just drag Simba's cross on APPA window.

delemojo

2015-04-04 07:45:24

From: bg5
There is function appa_CopyContentToBitmap();

or just drag Simba's cross on APPA window.


Ah ok, I gonna take a look at it, thx :)

delemojo

2015-04-07 10:55:55

So I tryed a little bit, but I doesnt seem to work.
First I load the BMPs.
Than I use appa_CopyContentToBitmap(BMP); in a Procedure, with EVERY BMP I have.
And than I use again FindBitMap.
or is this wrong?
BTW. is there a Typekeys function in Appa too? I only found keydown / keyup. But I would need Typekeys, cause User Editable 'Strings' :)

~

—-
EDIT : I think its working now. I will write later after I tested somethign :)
Could be that appa_Click not working probably. (Im not using appa_Click, sry :D Im using HoldMouse / RealeseMouse (from appa))

delemojo

2015-04-20 14:48:14

Ok now is there any way to "FindColor" / "GetColor" in APPA Only?