Jamlegend C++ 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 sendet

    vielleicht 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.html

    Download Source:
    http://www.file-upload.net/download-1681439/JamLegend-Bot.rar.html

    Anleitung:
    -> 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 deaktivieren

    Wie'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



  • Hab mal versucht raus zu finden, wann der "out of sync" läuft. Das passiert nur sobald flash ausgelastet ist. Die Buttons werden noch immer zur richtigen zeit gedrückt (der hintergrund des zielfeldes wird farbig und der bubble ist direkt auf dem feld), aber flash sagt, das der druck nicht gezählt hat. Als falsch wird der aber auch nicht gewertet, ganz merkwürdig.



  • @SWW13 dein bot läuft anfangs ganz ok aber nach einigen minuten dreht er durch und drückt die key wild umsich obwohl keine noten kommen...

    aber die oberfläche ist sehr gut 😃





  • ahh also du bist der cheat0r
    wieso funzt der bei dir so gut und bei mir niocht
    hier ma nen video gucks dir ma an hatte kb es bei utube hochzujladen
    http://rapidshare.com/files/240778158/clip0026.avi.html



  • Wenn das in echt auch so ruckelt wie in dem video kannst du dir ja vorstellen wieso.



  • also das ist nur im video so könntest du vielleicht deine exe hochladen ich benutze auch opera aber hab vista 64 bit aber denke ma das geht auch ...
    wäre nett wenns hochlädst



  • das problem war dass ich vista 64 bit benutzt habe jetzt hab ich das ma auf xp 32 bit gemacht und schon viel besser aber die noten die ganz nah aneinander sind bei flight of the bumblebee trifft der nicht
    aber sonst so gut wie 100%
    👍

    [edit]

    ok 99% geht doch!!!
    in einem song bin ich schon besser als du 😃
    und nochma DANKE !!! für den code

    (sorry doppelpost)



  • na dann passts ja, np 🙂



  • Hab mein Bot auch noch mal Verbessert, das Problem mit dem heller werden besteht noch.
    Dafür ist das Problem mit den Effekten behoben und er unterstützt jetzt auch Strum(mehr oder wenniger).

    Download Bot:
    http://www.file-upload.net/download-1683611/JamLegend-Bot.exe.html

    Source auf an Frage.

    Vllt. mach ich ihn in nächster Zeit fertig, der Bot von foofel tut ja sowieso bei den meisten.



  • ein bot der guitar jam kann wär gut 😃

    aber ich glaube wenn du die function die foofel benutzt nimmst dann würde der besser funktionieren (auf jeden fall bei mir) dazu dann einfach noch die oberfläche ...damit es nicht nur in opera funktioniert.



  • drachlen schrieb:

    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

    Komm ein bischen selbstständigkeit könntest du auch mal an den tag legen, hast ja sogar gesagt das du es probieren willst also machs auch. Alles was du brauchst steht schon in sourcecode.



  • So, hab jetzt die Similar Funktion von foofle genommen und es tut (zumindest beim Normal-Modus) bis auf Hold alles perfekt.

    Weil Hold nicht wirklich richtig funktioniert, kann mans deaktivieren.
    Source wieder auf Anfrage, keine Lust das hoch zu laden wenns eh keiner will.

    Download:
    http://www.file-upload.net/download-1685966/JamLegend-Bot.exe.html



  • oh scheiße schon wieder der hat den irgend wie zwei mal geschickt als ich auf vorschau geklickt hab 😞



  • so ich hab jetz ma nen bot auf strum gemacht
    der besteht jetz aus zwei teilen der erste teil strumt die noten und der zweite macht die hammer ons
    der erste ist genau der gleiche wie der von foofel nur das er noch enter ranhängt..
    und der zweite teil da wurde eigentlich nur die rgb farben verändert (die weiße farbe in den boobles (hammer ons))
    aber so perfekt sind die nicht hier ma die codes
    das ist der für das strumen erste teil :

    #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)
    
                        ;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; 
    }
    

    und das ist der zweite für die hammer ons:

    #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(220, 220, 220), RGB(260, 260, 260),  Vector2D(549, 480), Vector2D(552, 465), VK_1)); // gelb 
            buttons.push_back(Button(RGB(220, 220, 220), RGB(260, 260, 260),  Vector2D(589, 480), Vector2D(592, 465), VK_2)); // lila 
            buttons.push_back(Button(RGB(220, 220, 220), RGB(260, 260, 260),  Vector2D(629, 480), Vector2D(632, 465), VK_3)); // grün 
            buttons.push_back(Button(RGB(220, 220, 220), RGB(260, 260, 260),  Vector2D(669, 480), Vector2D(672, 465), VK_4)); // rot 
            buttons.push_back(Button(RGB(220, 220, 220), RGB(260, 260, 260),  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 (9);
    
            } 
        } 
    
        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; 
    }
    

    der ausgelesene rgb wert für die hammer ons war (240,240,240)
    also hab ich sie einfach ma zu
    rgb(220, 220, 220) rgb(260, 260, 260)
    gemacht sollte ich das anders machen??

    wenn ihr noch tipps zum verbessern habt dann schreibt. 😃



  • kann mir jemand den teil der strummt so machen das er auch die choords machen kann also mehrere aufeinmal ?? wäre total nett hab mich schon die ganze zeit dran versucht... doch kiregs einfach nicht gebacken



  • Was willst du am ende überhaupt damit machen? Nur so aus neugier, ich mein es war ganz interessant zum gucken obs einfach geht aber jetzt is irgendwie die luft raus ^^



  • naja ich würd halt einfach gern nen bot der auch strummen kann ...
    und viele highscore haben ^^


Anmelden zum Antworten