Jamlegend C++ Bot
-
schaut einfach aus, ist also wohl nur eine frage der bezahlung
-
Ja also ich würde auch zahlen und da es ja leicht aussieht muss es ja auch nicht viel sein oder??
ich erklär ma was der bot machen sollte :
Hier erst ma zwei links zu zwei songs
http://www.jamlegend.com/song/302/1251/
in diesem songs werden hauptsächlich hammerons benutzt das sind die noten in denen so etwas blinkt (sowas wie ein stern)
diese noten muss man nicht mit enter bestätigen aber die noten in denen diese nicht sind die muss man mit enter bestätigen
also : man muss immer den jeweiligen key drücken 1,2,3,4oder 5 und dazu die noten mit enter bestätigen(die die nicht blinken)es gibt beat jam das hier: http://1000ff.de/img/screenshot_jamlegend.jpg
und guitar jam das hier : http://www.pault.de/wp-content/uploads/2009/01/jamlegend.pngder bot sollte hauptsächlich für guitar jam sein..
hoffe du könntest mir so schnell wie möglich einen bot coden
MfG drachlen
-
niemand will einen bot machen ??
anscheinend doch nicht so leicht
-
drachlen schrieb:
niemand will einen bot machen ??
anscheinend doch nicht so leichtfalls falls du gewinnen willst, wuerde es dich billiger kommen Roxanne auf ein date einzuladen und sie betrunken zu machen bevor du sie an den computer fesselst und gegen sie zoggst, als hier jemanden zu bezahlen
Der preis richtet sich nach angebot/nachfrage, nicht nach schwierigkeit, solange du das selbst nicht kannst :p
-
Ja also ich würde auch zahlen und da es ja leicht aussieht muss es ja auch nicht viel sein oder??
Was ist nicht viel? Ein paar Stunden wird man da allemal dransitzen (zumindest ich).
-
dann nimm dir die stunden zeit und dann bekommse von mir nen haufen geld... achja roxanne ...gegen die gewinn ich ehschon immer
-
ich probiere mich einfach mal selbst dran...^^
könnte mir denn vielleicht einer von euch sagen wie man einen bestimmten pixel auf die farbe kontrolieren kann und wenn die farbe sich verändert eine bestimmte taste drückt??das wär ja eigentlich auch alles was ich für so einen bot bräuchte.
Danke
-
Erster Treffer bei google:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-231951.html
-
Hatte gerade lust sowas zu basteln.
Anpassen und zum laufen bekommen musste es aber selber, ist für die beatjam version. Hat noch ein paar kleine bugs (ka ob das am programm oder flash liegt) aber läuft generell schon recht gut. Ist eher ne kalibrierungssache. Habs unter 1280x1024 gebaut (opera).
viel spass.
// JamBot is a bot especially for http://www.jamlegend.com // it uses simple color detection for actions #include "stdafx.h" #include <iostream> #include <vector> #include <utility> #define VK_1 0x31 #define VK_2 0x32 #define VK_3 0x33 #define VK_4 0x34 #define VK_5 0x35 struct Vector2D { Vector2D() {} Vector2D(float x, float y) { this->x = x; this->y = y; } float x, y; }; struct Vector3D { Vector3D() {} Vector3D(float x, float y, float z) { this->x = x; this->y = y; this->z = z; } float x, y, z; }; struct Button { Button(COLORREF c, COLORREF hc, Vector2D p, Vector2D hp, int k) { color = c; holdColor = hc; pos = p; holdPos = hp; locktime = 0; down = false; key = k; } COLORREF color; COLORREF holdColor; Vector2D pos; Vector2D holdPos; unsigned long locktime; bool down; int key; }; class Window { public: Window() { hDC = CreateDC("DISPLAY", NULL, NULL, NULL); hWnd = FindWindow("OperaWindowClass", NULL); Init(); Run(); } ~Window() { DeleteDC(hDC); } private: COLORREF GetColor(Vector2D pos, int rows , int cols) { Vector3D rgb; int counter = 0; if (rows == 0 || cols == 0) { return GetPixel(hDC, (int)pos.x, (int)pos.y); } // row oder col == 1 -> -1, 0, 1, == 2 -> -2, -1, 0, 1, 2 for (int y = -cols; y <= cols; y++) { for (int x = -rows; x <= rows; x++) { COLORREF color = GetPixel(hDC, (int)pos.x + x, (int)pos.y + y); rgb.x += GetRValue(color); rgb.y += GetGValue(color); rgb.z += GetBValue(color); counter++; } } rgb.x /= counter; rgb.y /= counter; rgb.z /= counter; return RGB(rgb.x, rgb.y, rgb.z); } void Init() { buttons.push_back(Button(RGB(255, 236, 136), RGB(255, 247, 51), Vector2D(549, 480), Vector2D(552, 465), VK_1)); // gelb buttons.push_back(Button(RGB(236, 148, 255), RGB(246, 96, 254), Vector2D(589, 480), Vector2D(592, 465), VK_2)); // lila buttons.push_back(Button(RGB(198, 255, 130), RGB(201, 255, 50), Vector2D(629, 480), Vector2D(632, 465), VK_3)); // grün buttons.push_back(Button(RGB(255, 146, 134), RGB(255, 97, 100), Vector2D(669, 480), Vector2D(672, 465), VK_4)); // rot buttons.push_back(Button(RGB(151, 211, 247), RGB(146, 246, 255), Vector2D(711, 480), Vector2D(712, 465), VK_5)); // blau } bool IsColorSimilar(COLORREF c1, COLORREF c2, int maxDistance) { byte r1 = GetRValue(c1); byte r2 = GetRValue(c2); byte g1 = GetGValue(c1); byte g2 = GetGValue(c2); byte b1 = GetBValue(c1); byte b2 = GetBValue(c2); // größer dem kleineren und kleiner dem größeren if (r1 <= Clamp(r2 + maxDistance, 0, 255) && r1 >= Clamp(r2 - maxDistance, 0, 255) && g1 <= Clamp(g2 + maxDistance, 0, 255) && g1 >= Clamp(g2 - maxDistance, 0, 255) && b1 <= Clamp(b2 + maxDistance, 0, 255) && b1 >= Clamp(b2 - maxDistance, 0, 255)) { return true; } return false; } bool HasToHold(Button &b) { COLORREF lineColor = GetColor(b.holdPos, 0, 0); if (IsColorSimilar(lineColor, b.holdColor, 60)) { return true; } return false; } void Run() { // better sleep timeBeginPeriod(1); while (true) { for(size_t i = 0; i < buttons.size(); i++) { Button &b = buttons[i]; COLORREF targetColor = GetColor(b.pos, 2, 1); bool isSimilar = IsColorSimilar(targetColor, b.color, 30); if (isSimilar && !b.down/* && (b.locktime + 90) < timeGetTime() */) { keybd_event(b.key, 0, 0, 0); // press enter at the same time //keybd_event(0xD, 0, 0, 0); b.down = true; b.locktime = timeGetTime(); } else if(!isSimilar && b.down && /*(b.locktime + 50) < timeGetTime() && */!HasToHold(b)) { //keybd_event(0xD, 0, KEYEVENTF_KEYUP, 0); keybd_event(b.key, 0, KEYEVENTF_KEYUP, 0); b.down = false; } } Sleep(10); } } int Clamp(int val, int min, int max) { return max(min, min(val, max)); } HDC hDC; HWND hWnd; std::vector<Button> buttons; }; int _tmain(int argc, _TCHAR* argv[]) { Window wnd; return 0; }
-
also wenn ich den code compilieren will kommen 37 errors ... ich benutze dev-c++
hier ma der logCompiler: Default compiler
Executing g++.exe...
g++.exe "C:\Users\Philipp\Desktop\Untitled1.cpp" -o "C:\Users\Philipp\Desktop\Untitled1.exe" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"
C:\Users\Philipp\Desktop\Untitled1.cpp:4:21: stdafx.h: No such file or directory
C:\Users\Philipp\Desktop\Untitled1.cpp:40: error: expected `)' before "c"C:\Users\Philipp\Desktop\Untitled1.cpp:51: error:
COLORREF' does not name a type C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:52: error:
COLORREF' does not name a type
C:\Users\Philipp\Desktop\Untitled1.cpp:77: error:COLORREF' does not name a type C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:118: error: expected
;' before '(' token
C:\Users\Philipp\Desktop\Untitled1.cpp:144: error: expected;' before "bool" C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:196: error:
HDC' does not name a type
C:\Users\Philipp\Desktop\Untitled1.cpp:197: error:HWND' does not name a type C:\\Users\\Philipp\\Desktop\\Untitled1.cpp: In constructor
Window::Window()':
C:\Users\Philipp\Desktop\Untitled1.cpp:66: error:hDC' undeclared (first use this function) C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:66: error: (Each undeclared identifier is reported only once for each function it appears in.) C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:66: error:
CreateDC' undeclared (first use this function)
C:\Users\Philipp\Desktop\Untitled1.cpp:67: error:hWnd' undeclared (first use this function) C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:67: error:
FindWindow' undeclared (first use this function)
C:\Users\Philipp\Desktop\Untitled1.cpp: In destructorWindow::~Window()': C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:74: error:
hDC' undeclared (first use this function)
C:\Users\Philipp\Desktop\Untitled1.cpp:74: error:DeleteDC' undeclared (first use this function) C:\\Users\\Philipp\\Desktop\\Untitled1.cpp: In member function
void Window::Init()':
C:\Users\Philipp\Desktop\Untitled1.cpp:111: error: `RGB' undeclared (first use this function)C:\Users\Philipp\Desktop\Untitled1.cpp: In member function
bool Window::HasToHold(Button&)': C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:146: error:
COLORREF' undeclared (first use this function)
C:\Users\Philipp\Desktop\Untitled1.cpp:146: error: expected;' before "lineColor" C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:148: error:
lineColor' undeclared (first use this function)
C:\Users\Philipp\Desktop\Untitled1.cpp:148: error: 'struct Button' has no member named 'holdColor'C:\Users\Philipp\Desktop\Untitled1.cpp:148: error:
IsColorSimilar' undeclared (first use this function) C:\\Users\\Philipp\\Desktop\\Untitled1.cpp: In member function
void Window::Run()':
C:\Users\Philipp\Desktop\Untitled1.cpp:159: error:timeBeginPeriod' undeclared (first use this function) C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:167: error:
COLORREF' undeclared (first use this function)
C:\Users\Philipp\Desktop\Untitled1.cpp:167: error: expected;' before "targetColor" C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:169: error:
targetColor' undeclared (first use this function)
C:\Users\Philipp\Desktop\Untitled1.cpp:169: error: 'struct Button' has no member named 'color'
C:\Users\Philipp\Desktop\Untitled1.cpp:169: error:IsColorSimilar' undeclared (first use this function) C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:173: error:
keybd_event' undeclared (first use this function)
C:\Users\Philipp\Desktop\Untitled1.cpp:177: error: `timeGetTime' undeclared (first use this function)C:\Users\Philipp\Desktop\Untitled1.cpp:182: error:
KEYEVENTF_KEYUP' undeclared (first use this function) C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:187: error:
Sleep' undeclared (first use this function)
C:\Users\Philipp\Desktop\Untitled1.cpp: In member functionint Window::Clamp(int, int, int)': C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:193: error:
min' cannot be used as a function
C:\Users\Philipp\Desktop\Untitled1.cpp:193: error:max' cannot be used as a function C:\\Users\\Philipp\\Desktop\\Untitled1.cpp: At global scope: C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:202: error:
_TCHAR' has not been declared
C:\Users\Philipp\Desktop\Untitled1.cpp:203: error: ISO C++ forbids declaration of `argv' with no typeExecution terminated
ich benutze dev-c++ erst seit kurzem .
liegt es vielleicht am programm kennt ihr ein besseres??
-
Ja, z.B. Eclipse mit C++ plugin oder VisualStudio EE
-
Du brauchst die windows.h. Solltest du als erstes includen um Fehler zu vermeiden. Und musst gegebenenfalls auch noch die libs user32.lib und gdi32.lib linken.
edit:
Und die winmm.lib.
-
so hab jetzt windows.h included
doch jetzt sind noch zwei errors da ..
hier der logCompiler: Default compiler
Executing g++.exe...
g++.exe "C:\Users\Philipp\Desktop\Untitled1.cpp" -o "C:\Users\Philipp\Desktop\Untitled1.exe" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"
C:\Users\Philipp\Desktop\Untitled1.cpp: In member function `int Window::Clamp(int, int, int)':C:\Users\Philipp\Desktop\Untitled1.cpp:194: error:
min' cannot be used as a function C:\\Users\\Philipp\\Desktop\\Untitled1.cpp:194: error:
max' cannot be used as a functionExecution terminated
muss stdafx.h unbedingt included werden??
-
Dann fehlt dir noch ein Makro für min/max:
#define max(a,b) (((a) > (b)) ? (a) : (b)) #define min(a,b) (((a) < (b)) ? (a) : (b))
-
ok klappt aber jetzt neue fehler meldungen
LOG:
(edit) jetzt siehts nur noch so aus :
Compiler: Default compiler
Building Makefile: "C:\Dev-Cpp\Makefile.win"
Executing make...
make.exe -f "C:\Dev-Cpp\Makefile.win" all
g++.exe -c ../Users/Philipp/Desktop/main.cpp -o ../Users/Philipp/Desktop/main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"g++.exe ../Users/Philipp/Desktop/main.o -o "Project1.exe" -L"C:/Dev-Cpp/lib" -mwindows
../Users/Philipp/Desktop/main.o:main.cpp:(.text_ZN6Window3RunEv[Window::Run()]+0xf): undefined reference to `timeBeginPeriod@4' ../Users/Philipp/Desktop/main.o:main.cpp:(.text_ZN6Window3RunEv[Window::Run()]+0xe9): undefined reference to `timeGetTime@0'
collect2: ld returned 1 exit statusmake.exe: *** [Project1.exe] Error 1
Execution terminated
-
Sicher das du die "winmm.lib" gelinkt hast, kuck doch mal in den Projekt Einstellungen.
In VisualStudio kann man es auch ganz einfach mit
#pragma comment(lib, "winmm.lib")
weißt nicht ob das bei anderen Compilern auch geht.
-
so habs geschafft ..
es läuftnur ma ne frage is der bot nicht vielleicht schneller wenn der nicht nach einer bestimmten farbe sucht sonder einfach wartet bis sich die grundfarbe verändert??
weil die richtig harten songs bekommt der nicht hin
aber der ist 1000 mal so gut wie der autoit bot
-
Poste mal bitte ein paar links welche nicht gehen
Weil sowas wie Airborne oder Flight of the Bumblebees hab ich zu 100% Hit.
[edit]
Auf Legendary
-
was
also bei mir schafft der bot bei flight of the bumblebee nur das intro dann kackt der ab
und an meinen laptop kanns nicht liegen da der eigentlich ganz gut ist
und 100% kriegt der so gut wie nie da er manchmal auch bei total leichten noten nicht die taste sendetvielleicht hab ich den quelltext verändert hier ist er nochma :
// JamBot is a bot especially for http://www.jamlegend.com // it uses simple color detection for actions #include "stdafx.h" #include <windows.h> #include <iostream> #include <vector> #include <utility> #pragma comment(lib, "winmm.lib") #define VK_1 0x31 #define VK_2 0x32 #define VK_3 0x33 #define VK_4 0x34 #define VK_5 0x35 struct Vector2D { Vector2D() {} Vector2D(float x, float y) { this->x = x; this->y = y; } float x, y; }; struct Vector3D { Vector3D() {} Vector3D(float x, float y, float z) { this->x = x; this->y = y; this->z = z; } float x, y, z; }; struct Button { Button(COLORREF c, COLORREF hc, Vector2D p, Vector2D hp, int k) { color = c; holdColor = hc; pos = p; holdPos = hp; locktime = 0; down = false; key = k; } COLORREF color; COLORREF holdColor; Vector2D pos; Vector2D holdPos; unsigned long locktime; bool down; int key; }; class Window { public: Window() { hDC = CreateDC(_T("DISPLAY"), NULL, NULL, NULL); hWnd = FindWindow(_T("OperaWindowClass"), NULL); Init(); Run(); } ~Window() { DeleteDC(hDC); } private: COLORREF GetColor(Vector2D pos, int rows , int cols) { Vector3D rgb; int counter = 0; if (rows == 0 || cols == 0) { return GetPixel(hDC, (int)pos.x, (int)pos.y); } // row oder col == 1 -> -1, 0, 1, == 2 -> -2, -1, 0, 1, 2 for (int y = -cols; y <= cols; y++) { for (int x = -rows; x <= rows; x++) { COLORREF color = GetPixel(hDC, (int)pos.x + x, (int)pos.y + y); rgb.x += GetRValue(color); rgb.y += GetGValue(color); rgb.z += GetBValue(color); counter++; } } rgb.x /= counter; rgb.y /= counter; rgb.z /= counter; return RGB(rgb.x, rgb.y, rgb.z); } void Init() { buttons.push_back(Button(RGB(255, 236, 136), RGB(255, 247, 51), Vector2D(549, 480), Vector2D(552, 465), VK_1)); // gelb buttons.push_back(Button(RGB(236, 148, 255), RGB(246, 96, 254), Vector2D(589, 480), Vector2D(592, 465), VK_2)); // lila buttons.push_back(Button(RGB(198, 255, 130), RGB(201, 255, 50), Vector2D(629, 480), Vector2D(632, 465), VK_3)); // grün buttons.push_back(Button(RGB(255, 146, 134), RGB(255, 97, 100), Vector2D(669, 480), Vector2D(672, 465), VK_4)); // rot buttons.push_back(Button(RGB(151, 211, 247), RGB(146, 246, 255), Vector2D(711, 480), Vector2D(712, 465), VK_5)); // blau } bool IsColorSimilar(COLORREF c1, COLORREF c2, int maxDistance) { byte r1 = GetRValue(c1); byte r2 = GetRValue(c2); byte g1 = GetGValue(c1); byte g2 = GetGValue(c2); byte b1 = GetBValue(c1); byte b2 = GetBValue(c2); // größer dem kleineren und kleiner dem größeren if (r1 <= Clamp(r2 + maxDistance, 0, 255) && r1 >= Clamp(r2 - maxDistance, 0, 255) && g1 <= Clamp(g2 + maxDistance, 0, 255) && g1 >= Clamp(g2 - maxDistance, 0, 255) && b1 <= Clamp(b2 + maxDistance, 0, 255) && b1 >= Clamp(b2 - maxDistance, 0, 255)) { return true; } return false; } bool HasToHold(Button &b) { COLORREF lineColor = GetColor(b.holdPos, 0, 0); if (IsColorSimilar(lineColor, b.holdColor, 60)) { return true; } return false; } void Run() { // better sleep timeBeginPeriod(1); while (true) { for(size_t i = 0; i < buttons.size(); i++) { Button &b = buttons[i]; COLORREF targetColor = GetColor(b.pos, 2, 1); bool isSimilar = IsColorSimilar(targetColor, b.color, 30); if (isSimilar && !b.down/* && (b.locktime + 90) < timeGetTime() */) { keybd_event(b.key, 0, 0, 0); // press enter at the same time //keybd_event(0xD, 0, 0, 0); b.down = true; b.locktime = timeGetTime(); } else if(!isSimilar && b.down && /*(b.locktime + 50) < timeGetTime() && */!HasToHold(b)) { //keybd_event(0xD, 0, KEYEVENTF_KEYUP, 0); keybd_event(b.key, 0, KEYEVENTF_KEYUP, 0); b.down = false; } } sleep (10); } } int Clamp(int val, int min, int max)
-
Meiner tut fast perfekt.
Das einzige was Probleme macht sind die "Effekte", wenn die Taste getroffen wurde(Die sprüchen manchmal bis zu nächsten Taste und der Bot löst aus) und bei höher als Normal das die Bahn heller wird wenn man besser wird (und somit die Farbe anders ist und der Bot auslöst).
edit: Nach 10 Streaks scheint es auch heller zu werden, zumindest der Bot löst aus.Download:
http://www.file-upload.net/download-1681432/JamLegend-Bot.exe.htmlDownload Source:
http://www.file-upload.net/download-1681439/JamLegend-Bot.rar.htmlAnleitung:
-> Bot starten
-> JamBot öffnen
-> Song starten
-> nach 3..2..1.. Pausieren (Mit Leertaste)
-> Über Key 1 fahren Numblock 1 drücken, wenn die Taste kurtz aufleuchtet müsste alles tuen
-> Selbes für andere Keys machen
-> Keys die benötigt werden im Bot aktivieren
-> Pause beenden und spielen (lassen)
-> Am Ende "Ende" auf der Tastatur drücken um alle Keys zu deaktivierenWie's funktioniert:
Beim drücken der Numblock Taste wird die Position des Keys und dessen "Grund Farbe" bestimmt. Danach wird kurtz die Taste gedrückt um die Farbe beim gedrückt halten zu bestimmen.Ein Timer(100ms) prüft ob der Key weder die "Grund Farbe" noch die "Gedrückt Farbe" hat, wenn dies der Fall ist drückt er die Taste andern Falls, wenn sie noch gedrückt ist aber die Note vorbei ist("Gedrückt Farbe") lässt er die Taste wieder los.
ScreenShot (Bot):
http://www3.pic-upload.de/04.06.09/cmpbxe.png
ScreenShot (JamLegend):
http://www3.pic-upload.de/04.06.09/6oa87z.png