Eli oon tekemässä huviksee sellast aimbottii cs:ssään, että hiiri menee tiettyyn väriin eli miten jatkan täst :P
#include <SDL/SDL.h> #include <gl/gl.h> #include <gl/glu.h> #include <math.h> #include <stdlib.h> #include <time.h> #include <windows.h> #pragma comment( lib, "opengl32.lib" ) #pragma comment( lib, "glu32.lib" ) void GetPixelColor(SDL_Surface *screen, int x, int y, Uint8 *color){ Uint32 *bufp; bufp = (Uint32 *) screen -> pixels + y*screen -> pitch/4 + x; SDL_GetRGB(*bufp, screen -> format, &color[0], &color[1], &color[2]); } int main(int argc, char *argv[]) { if( SDL_Init(SDL_INIT_VIDEO)<0) { fprintf(stderr, "OHO! Sdl:n alustus meni pieleen: %s\n", SDL_GetError()); return 0; } SDL_Surface * screen; screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_DOUBLEBUF); //Tämä rivi tekee windows ikkunan ikkunan SDL_WM_SetCaption("", NULL); //tällä eliminoidaan kurja "SDL_app" teksti - eli otsikko srand((unsigned)time(0)); int mx, my, mouse; Uint8 rgb[2]; while (1) { SDL_Event tapahtuma; SDL_PollEvent(&tapahtuma); Uint8* keyboard; keyboard=SDL_GetKeyState(NULL); //keybd_event (vbKeySnapshot, screen, 0&, 0&); Uint32 color; color = SDL_MapRGB (screen->format, 0, 0, 0); SDL_FillRect (screen, NULL, color); mouse=SDL_GetMouseState(&mx, &my); SDL_LockSurface(screen); GetPixelColor(screen, 1, 1, rgb); SDL_UnlockSurface(screen); int r = rgb[0]; int g = rgb[1]; int b = rgb[2]; //keyboard[SDLK_PRINT] = true; //if(rgb[0] == 0 && rgb[1] == 0 && rgb[2] == 0) break; keybd_event (VK_SNAPSHOT, KEYEVENTF_KEYUP, 0, 0); if(keyboard[SDLK_ESCAPE]) break; SDL_Delay(1); SDL_Flip(screen); } SDL_Quit(); return 0; }
Öh, mitäs jos kokeilisit vaikka itse kokeilla miettiä sitä, että miten jatkat tuota? :)
Ei sitä tänne tarvitse tulla kyselemään. Vastauksia ongelmiisi voit tottakai tulla kysymään, mutta minusta tällainen on jo tyhmää.
Sienet eivät sovi kaikkien ruokavalioon... =I
Mutta kuitenkin... En viitti nyt mitää aimbottia lähteä kirjottaa (ja tossa on sekin, että se pitäis saada pysymää päällimmäisenä windowsissa, enkä ole ihan varma että miten. Kai jokin windowsin oma kirjasto tjsp) mutta.. Tarkistetaan jokainen pikseli yksitellen ja jos sen väri on jokin tietty otetaan talteen pikselin kordinaatit.
Sitten jotakin mousestate = pikselinkordinaatit tai jotain muuta yhtä ovelaa ^,^
Etpä voi SDL:ää käyttää koska sinun pitää lukea näytöllä toisessa ikkunassa olevia värejä.
Tarvinnet jotain WinAPI:a.
ok ja mite tarkastetaa koko näytön pikselit?
sain selville mitä funktioita siihen pikselin tarkastamiseen tarttee ja nyt tarvin enää parametrit.
No.. En usko että toi ainbotti toimisi tuon pikselin haku menetelmän avulla, koska ainakin sorsassa pitäisi "dynaamisen valaistuksen" valoistaa vihollisen päätä aina erinlailla paikasta riippuen ja tilanteesta riippuen. Ja toinen ongelma on, että pixelin etsimen voi olla hidasta.. No tässä on kuitenkin erään lainen pikselin selaus koodi jota kerran ite tarvitsin.
int FindPixel(int *X, int *Y, int Color, int xx, int yy, int xmax, int ymax) { int ColorTemp, x = xx, y = yy; int i; HDC hdc = GetDC(0); //Otetaa koko näytän DC käyttöö. for(i=0; i == 0; i = i) //Alotetaa looppi. { ColorTemp = GetPixel(hdc, x, y); //Katsotaan näytönpixelinväri kohdasta x,y. if (ColorTemp == Color) //Katsotaan jos ColotTemp on sama kuin haettu väri. { *X = x; *Y = y; return 1; i = 1; } if (x > xmax - 1) //X määrä ylitetty, kasvata Ytä yhdellä ja palauta x. { x = xx; y+=1; } if (y>ymax - 1) //Ruutu etsitty, väriä ei löytynyt. { i=1; return 0; } x+=1; } }
Toi siis etsii kyseistä väriä (int Color) suorakulmiosta joka määritellään muuttujien xx, yy, xmax, ymax avulla ja mikäeli väri löytyy, kirjoittaa funktio sen koordinaatit x ja y muuttujiin.
Esim. FindPixel(&pixelx, &pixely, 0x0, 100, 100, 200, 200).
Ton pitäs toimia ainakii Devcppl.
kiitoksia ja eikä siitä välttämättä aimpotti tartte tulla :P
Aihe on jo aika vanha, joten et voi enää vastata siihen.