Miten saisin keskelle näyttöä pari pikseliä leveän pisteen?
Sen pitäisi olla AINA keskellä näyttöä ja AINA päälimmäisenä, pelatessakin. ;)
Aina päälimmäisenä oleva ohjelma joka on pikselin kokoinen ei toimi koska silloin hiiri klikkaa siihen eikä peliin.
Nyt on pakko kysyä että miksi?
Peli itse ei piirrä tähtäintä. ;)
KIILTO Sinitarra v1.0, maksaa Tiimarissa aika vähän. Sisältää lisenssit myös kavereille!
Oletko kokeillut silmukkaa, joka tuhertaa koko ajan pistettä samaan kohtaan?
Pisteen voi piirtää ruudulle WinAPIn funktiolla SetPixel.
Antti Laaksonen kirjoitti:
Oletko kokeillut silmukkaa, joka tuhertaa koko ajan pistettä samaan kohtaan?
Pisteen voi piirtää ruudulle WinAPIn funktiolla SetPixel.
Kiitoksia ainoasta vastauksesta kysymykseeni. :)
Miten saisin sen vielä piirtämään keskelle ruutua. Jos pistän esim x:ksi "Screen.Width / 2", se ei mene läheskään keskelle. En tiedä miksi.
EDIT: Eikös setpixel voi piirtää pisteen vain tiettyyn ikkunaan tai objektiin, hdc?
Tarttis jonkun funktion mikä ei tarvitsee hwnd:tä tai hdc:tä tietoonsa.
Kannattaa huomata, että saat helposti bannit pelissä tuosta.. Mutta laita X:ksi Screen.width\2\screen.twipsperpixelx niin luulisi menevän keskelle.
Kokeile HDC:ksi nollaa tai sellaista, minkä GetDC palauttaa, jos HWND on nolla.
Kyllä minä pitäisin lopulta sinitarraa tai purukumia varmempana vaihtoehtona, voi olla, että esim. DirectX:llä toteutetussa pelissä eivät omat piirustukset näy.
Tämmöinen toimii ainakin Windowsin flipperin päällä:
Option Explicit Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long Sub Main() Dim x As Long, y As Long Dim hdc As Long x = Screen.Width / 2 / Screen.TwipsPerPixelX y = Screen.Height / 2 / Screen.TwipsPerPixelY hdc = GetDC(0) Do SetPixel hdc, x, y, RGB(255, 0, 0) SetPixel hdc, x + 1, y, RGB(255, 0, 0) SetPixel hdc, x, y + 1, RGB(255, 0, 0) SetPixel hdc, x + 1, y + 1, RGB(255, 0, 0) DoEvents Loop End Sub
Grez kirjoitti:
Kannattaa huomata, että saat helposti bannit pelissä tuosta..
Mikä peli mahtaa olla kyseessä ? O_o
Ihmettelen myös että miten ne voisivat tietää käytätkö pistettä keskellä ruutua vai et.
Ja myös ihmettelen mihin hemmettiin tuollaista voi hyödyntää :D
En tiedä mitä peliä kysyjä harrasta, mutta ainakin americas armyssä otetaan ruudunkaappauksia käyttäjien pelitilanteista ja niistä sitten analysoidaan automaattisesti juuri esim. keskellä ruutua olevia ylimääräisiä pisteitä jotka sitten menee vielä ylläpitäjille tarkastettavaksi ennen lopullista bannia.
Ja lisäksihän monissa peleissä valvotaan ettei ole epäilyttäviä ylimääräisiä prosesseja ajossa samaan aikaan.
Tosiaan sinitarra voi olla aika idioottivarma tuossakin mielessä :D
T.M. kirjoitti:
Grez kirjoitti:
Kannattaa huomata, että saat helposti bannit pelissä tuosta..
Mikä peli mahtaa olla kyseessä ? O_o
Ihmettelen myös että miten ne voisivat tietää käytätkö pistettä keskellä ruutua vai et.
Ja myös ihmettelen mihin hemmettiin tuollaista voi hyödyntää :D
Ei tuosta mitään bännejä saa. Pistän truecombattiin niin on helpompi ampua tähtäämättä (pelissä tähdätään samallalailla kuin oikeasti) jos vihollinen tulee yhtäkkiä nenän eteen.
Antin koodi ei pistä pistettä keskelle ruutua. :(
Minne se sitten sen piirtää?
Voit määrittää koordinaatit myös käsin kokeilemalla, niin saat ainakin pisteen juuri siihen kohtaan kuin haluat.
LOL. Eihän mulla enää oo muuta ongelmaa ku saada se keskelle ruutua.
Tuskin se kovin vaikeaa on? ^^
Ei niitä käsin voi pistää koska resoluutio saattaa vaihdella.
EDITTIÄ: sain toimimaan kun pistin sen etsimään hdc:n 5 sekunnin välein.
JussiR kirjoitti:
Tuskin se kovin vaikeaa on? ^^
Ei niitä käsin voi pistää koska resoluutio saattaa vaihdella.
Kuinka usein vaihtelet resoluutiota pelatessasi tuota peliä?
En kovin usein, mutta tämä ohjelma tulee nettiin jakoon ja sen täytyisi toimia kaikilla.
Huomasin että tuo setpixel vähentää liikaa suorituskykyä vaikka pistin sen tekemään sitä 0.1s välein.
Mikä se BitBit tjsp. on? Voiko sillä tehdä saman?
Ei BitBlt ainakaan nopeammin toimi. (Huomaa kirjoitusasu.) Se on kuvanpiirtofunktio, jolla voi piirtää HDC:ltä toiselle.
Pakkohan tuolle jokin tapa on olla?
Ja lopettakaa noi jutut sinitarroista sun muista.
Eli VB:llä ei voi tehdä?
Onkohan RedDot niminen ohjelma tehty C:llä?
No siis mikä tossa nyt on ongelmana VB:llä?
Ja miksi pitää tehdä uusi ohjelma jos on kerran jo "reddot"?
VB:llä sekoilee koko ohjelma ja pistettä ei meinaa millään saada pysymmään keskellä ruutua, ja ilman että käyttää koko koneen suorituskykyä.
No ei se VB:stä ole kiinni vaan siitä mitä se ohjelma tekee. Ihan yhtä hyvin voit tehdä sekoilevan ja koko koneen suorituskyvyn syövän ohjelman C:llä.
Kuuntelet resoluutionvaihtoviestit ja koukutat kohdeikkunan paint-viestit ja piirrät niiden yhteydessä (kun se toinen ohjelma on ensin piirtänyt) ne pisteet, niin ei luulis syövän about yhtään tehoa.
Yksi vaihtoehtohan olisi kysyä käyttäjältä aluksi käytettävää resoluutiota(esim. dropDown-valikon avulla), jolloin tuosta laskettaisiin minne piste tulee piirtää. Näin siis, jo ongelmana on hdc:n avulla etsityn keskipisteen syömät tehot.
Kyllä kai ton resoluution saa katsottua jollain WinApin(?) funktiollakin?
Minun toteutukseni: http://koti.mbnet.fi/jorgga/kamaa/piste ruudulle.zip
(saan kyllä vielä kuulla tästä kun eihän valmista koodia oo tapana antaa.)
Pistettä voi liikuttaa hiirellä, Paketti sisältää lähdekoodin mutta ei exeä (saat jotai tehä ite)
Kiitoksia! Mutta kuten ekassa viestissä sanoin "Aina päälimmäisenä oleva ohjelma joka on pikselin kokoinen ei toimi koska silloin hiiri klikkaa siihen eikä peliin.".
no laitat siihen jotain että form_gefocus ja me.lostfocus tai jotai tollasta jollon se perjaatteessa ei vaikuta? emt
Aihe on jo aika vanha, joten et voi enää vastata siihen.