Hilfe bei Entropia Universe Sweat-Bot

12/24/2007 11:06 exsul#1
Hallo Community,
ich suche wie der Titel schon sagt einen Sweatbot für Entropia Universe. Da das Spiel diverse Hack Abwehrmechanismen hat, oder wie auch immer man das nennt. Gibt es leider keinerlei Hacks oder Exploits.
Deswegen suche ich ein Bot der extern auf das Spiel aufgesetzt wird, einfach ähnlich wie ein Macro das dann den Mauszeiger bewegt. So denke ich wird es unmöglich den Bot zu detecten.

Ich habe schon viel gesucht und gelesen, und mir scheint die einzige Möglichkeit wäre ein Bot der über die Farberkennung arbeitet. Ich habe auch Tutorials gefunden. Aber das was ich machen möchte würde dennoch auch meinen Horizont, in Hinsicht auf C/C++ etc., mit Hilfe der Tutorials überschreiten.

Dann schreibe ich einfach mal was der Bot im groben können muss:
1. Sich an einer runden Karte die ständig im HUD ist orientieren und mithilfe dieser auch drehen laufen und so weiter (einfach über die Karte einen roten Punkt suchen dorthin drehen bis der Punkt auf 12Uhr steht und dann dorthin laufen, wenn kein Punkt dort ist im ‚Zick-Zack’ oder so laufen bis einer erscheint)
2. Den Mob erkennen und anwählen (sonst funktionieren die Shortcuts nicht)
3. in bestimmten Abständen Shortcuts anwählen
4. Sobald der Mob leer ist zu einem anderen gehen, die erkennung sollte über den chat erfolgen, dort erscheint eine Meldung (leer bedeutet in diesem fall das man in dem spiel den Mobs etwas sweat absaugt, das in jedem Mob begrenzt vorhanden ist)
5. Bei Tod einfach nach ein paar Sekunden auf eine bestimme Stelle klicken (das ist kein Problem da beim Tod ein kleiner roter Schädel auftaucht)

Mmh, das Problem ist ich hätte bei den meisten dieser Punkte keine Ahnung wie man das umsetzen kann :D
Ich hoffe mir kann jemand sagen ob so etwas möglich wäre….
… ja und obendrein ob mir jemand helfen würde….

Über ein reward würde sich natürlich mit mir sprechen lassen….

Schon mal mehr als vielen Dank für Antworten 
12/24/2007 17:51 Lowfyr#2
bei entropia ist es relativ schwierig ein sweat bot mit nem macro hinbekommen ala ac-tools

bei dem game gibts leider keine basic target bzw. run-to-target funktionen (zumindest nicht als ich es getestet hab) was das ganze um einiges erschwert, auch die loot funktion war damals schwer zu automatisieren wenn ich mich recht erinnere

man müsste also zumindest infos aus dem speicher ziehen die man im bot dann auswertet und ihn jeweils darauf reagieren lässt
12/24/2007 18:25 exsul#3
beim sweaten tötet man den mob halt nicht und müsste ihn auch nicht looten...
mit der reichweite, wann der bot näher ranlaufen soll usw., müsste man über das radar konfigurieren...

€dit: ich habe gehört das das Spiel eine sehr gute Protection hat, also würde ich speicher auslesen etc. glaich außer acht lassen. Wiegesagt ich bin der Meinung das ein einfach aufsatz auf das spiel die beste Lösung wäre.... das man dann nebenbei nichts anderes machen könnte wüsste ich und wäre mir auch egal...
01/03/2008 15:42 exsul#4
ich 'bump' das ganze nochmal ganz frech...
will mir jemand helfen ? ;)
03/14/2008 14:17 Airliner#5
Ich hab da mal was nettes mit C++ entworfen leider bin ich nicht besonders gut in der Fehlersuhe und der "Bot" macht manchmal sachen die ich nicht nachvollziehen kann.

Außerdem wird er momentan nur unter 1280x800 funzen, aber egal vieleicht kann mir ja mal jemand unter die arme greifen ^^


#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <winuser.h>


HWND g_hwnd;
HDC dc;

short skey, ekey;
int x, y;
int r, g, b;

POINT mPos;

int scrrx=1279;
int scrry=799;

bool hpfull=true;
bool mobinfront=false;
int mobentf;
bool death=false;



//------------- MAUS RÜTTEL SIM --------------------------------------->
void shakemouse()
{
Sleep(10);
mouse_event(MOUSEEVENTF_MOVE, 5, 0, 0, 0);
Sleep(10);
}
//--------------------------------------------------------------------->

void checkdeath()
{
ShowWindow(g_hwnd, SW_RESTORE);
SetForegroundWindow(g_hwnd);
SetFocus(g_hwnd);

COLORREF pixel;
dc = GetWindowDC(g_hwnd);
pixel = GetPixel(dc, 1121 , 752);
r = GetRValue(pixel);
g = GetGValue(pixel);
b = GetBValue(pixel);

ReleaseDC(g_hwnd, dc);

if (r == 255 && g == 255 && b == 255)
{
death=true;
Sleep(5000);
}
}

//------------- UNTERBRECHER ------------------------------------------>
void checkend ()
{
ekey = 0;
ekey = GetAsyncKeyState( VK_F5 );
if (ekey == -32767)
{Sleep(30000);}
}
//--------------------------------------------------------------------->

//------------- DOPPELKLICK ------------------------------------------->
void doppelklick()
{
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_MOVE, 0, 10, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(10);

}
//--------------------------------------------------------------------->

//----------------- MOBSUCHE ------------------------------------------>
void mobsuche ()
{
do
{
mobinfront=false;

SetCursorPos(640,400);

for (int f=720;f>660;f--)
{
COLORREF pixel;
dc = GetWindowDC(g_hwnd);
pixel = GetPixel(dc, 1202 , f);

r = GetRValue(pixel);
g = GetGValue(pixel);
b = GetBValue(pixel);

ReleaseDC(g_hwnd, dc);

if (r == 248 && g == 59 && b == 49)
{
mobinfront=true;
f=660;
}
}
if (mobinfront==false)
{
Sleep(10);
mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
Sleep(50);
mouse_event(MOUSEEVENTF_MOVE, 5, 0, 0, 0);
Sleep(50);
mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
Sleep(10);
}
checkend();
checkdeath();
if (death==true)
{mobinfront=true;}
}
while(mobinfront==false);
}
//--------------------------------------------------------------------->

void main (void)
{
do
{
skey = 0;
skey = GetAsyncKeyState( VK_F5 );
Sleep(100);
}
while (skey != -32767);

do
{

g_hwnd = FindWindow(NULL, "Programm");

//------------- Programmstartabfrage Taste = F5 ----------------------->
//--------------------------------------------------------------------->

death=false;
GetCursorPos(&mPos);

cout << "X:" << mPos.x << " Y:" << mPos.y << endl;


//------------- HP PIXELPRÜFUNG UND HEILUNG --------------------------->



Sleep(10000);
do
{
ShowWindow(g_hwnd, SW_RESTORE);
SetForegroundWindow(g_hwnd);
SetFocus(g_hwnd);

COLORREF pixel;

dc = GetWindowDC(g_hwnd);

pixel = GetPixel(dc, 1121 , 752);


r = GetRValue(pixel);
g = GetGValue(pixel);
b = GetBValue(pixel);

ReleaseDC(g_hwnd, dc);

printf("r=%d g=%d b=%d",r, g, b);
printf("\n");
Sleep(1000);

if (r != 54 || g != 80 || b != 34)
{
SetCursorPos(1100,752);
shakemouse();
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(1);

hpfull=false;
SetCursorPos(121,17);
shakemouse();
Sleep(50);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(1);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}
else
{
hpfull=true;
SetCursorPos(187,17);
shakemouse();
Sleep(5000);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(1);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(10);
}
checkend();

}
while (hpfull==false);
//--------------------------------------------------------------------->

mobsuche();

//---------------- BEWEGUNG ZUM MOB -----------------------------------

mouse_event(MOUSEEVENTF_WHEEL, 0,0,1200,0);
Sleep(100);
mouse_event(MOUSEEVENTF_WHEEL, 0,0,1200,0);
Sleep(100);
mouse_event(MOUSEEVENTF_WHEEL, 0,0,1200,0);

do
{
mobentf=60;
for (int f=720;f>660;f--)
{
mobinfront=false;
COLORREF pixel;
dc = GetWindowDC(g_hwnd);
pixel = GetPixel(dc, 1202 , f);

r = GetRValue(pixel);
g = GetGValue(pixel);
b = GetBValue(pixel);

ReleaseDC(g_hwnd, dc);

if (r == 248 && g == 59 && b == 49)
{
mobinfront=true;
mobentf=720-f;
f=660;
}
}

if (mobentf > 8)
{
do
{
SetCursorPos(635,600);
shakemouse();
Sleep(100);
doppelklick();
checkend();
Sleep(300);

for (int f=720;f>660;f--)
{
mobinfront=false;

ShowWindow(g_hwnd, SW_RESTORE);
SetForegroundWindow(g_hwnd);
SetFocus(g_hwnd);

COLORREF pixel;
dc = GetWindowDC(g_hwnd);
pixel = GetPixel(dc, 1202 , f);

r = GetRValue(pixel);
g = GetGValue(pixel);
b = GetBValue(pixel);

ReleaseDC(g_hwnd, dc);

if (r == 248 && g == 59 && b == 49)
{
mobinfront=true;
mobentf=720-f;
f=660;
}
}
if (mobinfront != true)
{
SetCursorPos(640,150);
Sleep(50);
mobsuche();
}
checkdeath();
if (death==true)
{mobentf=0;}
}
while (mobentf>8);
}

do
{
SetCursorPos(635,400);
Sleep(10);
doppelklick();
Sleep(100);
shakemouse();
Sleep(10);
doppelklick();
Sleep(100);
checkend();
checkdeath();

mobentf=60;
for (int f=720;f>660;f--)
{
mobinfront=false;
COLORREF pixel;
dc = GetWindowDC(g_hwnd);
pixel = GetPixel(dc, 1202 , f);

r = GetRValue(pixel);
g = GetGValue(pixel);
b = GetBValue(pixel);

ReleaseDC(g_hwnd, dc);

if (r == 248 && g == 59 && b == 49)
{
mobinfront=true;
mobentf=720-f;
f=660;
}
}

if (death==true)
{mobentf=60;}
}
while (mobentf <= 8);
checkend();
checkdeath();
}
while(death==false);


}
while (mobentf < 10000);
}

Edit: For english request ^^

If you want to try this, compile and run it with c++

1.) The prog will wait until you hit F5, this automaticly switches you into a shortcut menue for weapon and healing at EU. If you have a healing device equipped the prog. will heal you. Else you should comment that out ( /* CODE */ ) cause it will wait until the hp is full else.

2.) The Program will search the Radar for red dots from the middle to upside. If no red dot found the char turns right and radar checks again. This will run until a Mob is in front.

3.) When the mob is in front the programm starts dubbleklicking the ground in front of your chars Feet to walk towards the mob. At a distance of 8pixels on radar screen the programm starts dubbleklicking the middle of the screen (hopefully to hit the mob and start sweating :P)

4.) The programm checks a dot on your screen to get white (what will be death). You have to activate autoteleport for that. When ur dead it all starts again.

--- Programm cant so far :
- evade buildings
- start at a inside building revive terminal
- check if it realy hits a mob and starts sweating

While I tested it i mainly gained defense skills and nearly no sweat ^^. The best place i found to run it so far is a revive terminal north of Neas Place.

Anyhow i havent made any user interface so far, so it will only work on 1280x800 Screen Resolution

To run it in your resolution you will have to find out your radar positions (middle and upper) by using : GetCursorPos(&mPos); and add these values to every position i use my resolutions position witch is : 1202,720 (middle) and 1202,660 (upper)
08/05/2008 20:23 markusbab#6
same error her
whit devc++
08/05/2008 20:34 MeUndercover#7
Quote:
Originally Posted by markusbab View Post
same error her
whit devc++
Dont worked with Dev C++ and dont tested it, but i think you need to write "windows.h" instead of <windows.h>. Dont know which libraries Dev C++ use, but for safety be sure that all is right linked.
At least give the main routine an return value at the end of the routine (under the loop). Good luck! ;)

-MeUndercover
08/10/2008 16:32 cooletobi#8
i wrote a pixel Bot for LastChaos some time ago and in LastChaos there is the Name of the mob written above the head and so i just seeked for the pixel in the name and klicked some pixels alow this point :)
maybe something like this will help u in ur game
08/10/2008 16:44 markusbab#9
Quote:
Originally Posted by cooletobi View Post
i wrote a pixel Bot for LastChaos some time ago and in LastChaos there is the Name of the mob written above the head and so i just seeked for the pixel in the name and klicked some pixels alow this point :)
maybe something like this will help u in ur game
problem by this game is
you not have any name over the head ... you have only name from mob wen you go whit mouse over him

and you only have miniradarmap to search for red dots
also no impletiert funktion in this game ... like hotkey

my expieriens in c++ is realy crap :)
so i will be make a bot but i not even can make it cuz of programming exp.
08/10/2008 16:58 MeUndercover#10
Thats no Problem, when it isnt marked as an Target on the top of your window.
Because its marked intern (invisible) as an target and you have to find it (if it isnt then autoattack wouldnt work).

-MeUndercover
08/12/2008 14:49 MeUndercover#11
I use Visual C++ 2008. Do u set return the return Value at the end of your main function ?

-MeUndercover
11/03/2008 04:30 flamepattern#12
does this still work ?
03/28/2009 21:10 namiokas#13
alle News zu diesem? hat jemand eine laufende Roboter?
04/07/2009 22:30 theSpiked#14
I've got (somewhat) working..
Code:
#include <iostream>
//#include <stdio>
#include <stdlib.h>
#include <windows.h>
#include <winuser.h>

using namespace std;

HWND g_hwnd;
HDC dc;

short skey, ekey;
int x, y;
int r, g, b;

POINT mPos; 

bool hpfull=true;
bool mobinfront=false;
int mobentf;
bool death=false;



//------------- MAUS RÜTTEL SIM --------------------------------------->
void shakemouse()
{
    Sleep(10);
    mouse_event(MOUSEEVENTF_MOVE, 5, 0, 0, 0);
    Sleep(10);
}
//--------------------------------------------------------------------->

void checkdeath()
{
    ShowWindow(g_hwnd, SW_RESTORE);
    SetForegroundWindow(g_hwnd);
    SetFocus(g_hwnd);

    COLORREF pixel;
    dc = GetWindowDC(g_hwnd);
    pixel = GetPixel(dc, 1121 , 752);
    r = GetRValue(pixel);
    g = GetGValue(pixel);
    b = GetBValue(pixel);

    ReleaseDC(g_hwnd, dc); 

    if (r == 255 && g == 255 && b == 255)
    {
        death=true;
        Sleep(5000);
    }
}

//------------- UNTERBRECHER ------------------------------------------>
void checkend ()
{
ekey = 0;
ekey = GetAsyncKeyState( VK_F5 );
if (ekey == -32767)
{Sleep(30000);}
}
//--------------------------------------------------------------------->

//------------- DOPPELKLICK ------------------------------------------->
void doppelklick()
{
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_MOVE, 0, 10, 0, 0);	
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(10);

}
//--------------------------------------------------------------------->

//----------------- MOBSUCHE ------------------------------------------>
void mobsuche ()
{
do
{
mobinfront=false;

SetCursorPos(640,400);

for (int f=720;f>660;f--)
{
COLORREF pixel;
dc = GetWindowDC(g_hwnd);
pixel = GetPixel(dc, 1200 , f);

r = GetRValue(pixel);
g = GetGValue(pixel);
b = GetBValue(pixel);

ReleaseDC(g_hwnd, dc); 

if (r == 248 && g == 59 && b == 49)
{
mobinfront=true;
f=660;
}
}
if (mobinfront==false)
{
Sleep(10);
mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
Sleep(50);
mouse_event(MOUSEEVENTF_MOVE, 5, 0, 0, 0);
Sleep(50);
mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
Sleep(10);
}
checkend();
checkdeath();
if (death==true)
{mobinfront=true;}
}
while(mobinfront==false);
}
//--------------------------------------------------------------------->

int main (void)
{
    do
    {
        skey = 0;
        skey = GetAsyncKeyState( VK_F5 );
        Sleep(100);
    }
    while (skey != -32767);

    do
    {

        g_hwnd = FindWindow(NULL, "Entropia");

        //------------- Programmstartabfrage Taste = F5 ----------------------->
        //--------------------------------------------------------------------->

        death=false;
        GetCursorPos(&mPos); 

        cout << "X:" << mPos.x << " Y:" << mPos.y << endl;


        //------------- HP PIXELPRÜFUNG UND HEILUNG --------------------------->



        Sleep(10000);
        do 
        {
        ShowWindow(g_hwnd, SW_RESTORE);
        SetForegroundWindow(g_hwnd);
        SetFocus(g_hwnd);

        COLORREF pixel;

        dc = GetWindowDC(g_hwnd);

        pixel = GetPixel(dc, 1121 , 752);


        r = GetRValue(pixel);
        g = GetGValue(pixel);
        b = GetBValue(pixel);

        ReleaseDC(g_hwnd, dc); 

        printf("r=%d g=%d b=%d",r, g, b); 
        printf("\n");
        Sleep(1000);

        if (r != 54 || g != 80 || b != 34)
        {
        SetCursorPos(1100,752);
        shakemouse();
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
        Sleep(1);

        hpfull=false;
        SetCursorPos(121,17);
        shakemouse();
        Sleep(50);
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
        Sleep(1);
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
        }	
        else
        {
        hpfull=true;
        SetCursorPos(187,17);
        shakemouse();
        Sleep(5000);
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
        Sleep(1);
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
        Sleep(10);
        }
        checkend();

        }
        while (hpfull==false);
        //--------------------------------------------------------------------->

        mobsuche();

        //---------------- BEWEGUNG ZUM MOB -----------------------------------

        mouse_event(MOUSEEVENTF_WHEEL, 0,0,1200,0);
        Sleep(100);
        mouse_event(MOUSEEVENTF_WHEEL, 0,0,1200,0);
        Sleep(100);
        mouse_event(MOUSEEVENTF_WHEEL, 0,0,1200,0);

        do
        {
        mobentf=60;
        for (int f=720;f>660;f--)
        {
        mobinfront=false;
        COLORREF pixel;
        dc = GetWindowDC(g_hwnd);
        pixel = GetPixel(dc, 1200 , f);

        r = GetRValue(pixel);
        g = GetGValue(pixel);
        b = GetBValue(pixel);

        ReleaseDC(g_hwnd, dc); 

        if (r == 248 && g == 59 && b == 49)
        {
        mobinfront=true;
        mobentf=720-f;
        f=660;
        }
        }

        if (mobentf > 8)
        {
        do
        {
        SetCursorPos(635,600);
        shakemouse();
        Sleep(100);
        doppelklick();
        checkend();
        Sleep(300);

        for (int f=720;f>660;f--)
        {
        mobinfront=false;

        ShowWindow(g_hwnd, SW_RESTORE);
        SetForegroundWindow(g_hwnd);
        SetFocus(g_hwnd);

        COLORREF pixel;
        dc = GetWindowDC(g_hwnd);
        pixel = GetPixel(dc, 1200 , f);

        r = GetRValue(pixel);
        g = GetGValue(pixel);
        b = GetBValue(pixel);

        ReleaseDC(g_hwnd, dc); 

        if (r == 248 && g == 59 && b == 49)
        {
        mobinfront=true;
        mobentf=720-f;
        f=660;
        }
        }
        if (mobinfront != true)
        {
        SetCursorPos(640,150);
        Sleep(50);
        mobsuche();
        }
        checkdeath();
        if (death==true)
        {mobentf=0;}
        }
        while (mobentf>8);
        }

        do
        {
        SetCursorPos(635,400);
        Sleep(10);
        doppelklick();
        Sleep(100);
        shakemouse();
        Sleep(10);
        doppelklick();
        Sleep(100);
        checkend();
        checkdeath();

        mobentf=60;
        for (int f=720;f>660;f--)
        {
        mobinfront=false;
        COLORREF pixel;
        dc = GetWindowDC(g_hwnd);
        pixel = GetPixel(dc, 1200 , f);

        r = GetRValue(pixel);
        g = GetGValue(pixel);
        b = GetBValue(pixel);

        ReleaseDC(g_hwnd, dc); 

        if (r == 248 && g == 59 && b == 49)
        {
        mobinfront=true;
        mobentf=720-f;
        f=660;
        }
        }

        if (death==true)
        {mobentf=60;}
        }
        while (mobentf <= 8);
        checkend();
        checkdeath();
        }
        while(death==false);


    }
    while (mobentf < 10000);

    return 0;
}
This compiles, not thouroughly tested. (It seems to do something ;) )

Yikes, my first post here!
04/08/2009 13:08 exsul#15
would be great if it will work :)
thanks!!!