Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB6] Piste keskelle ruutua

Sivun loppuun

JussiR [28.08.2007 17:44:15]

#

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.

TsaTsaTsaa [28.08.2007 17:49:38]

#

Nyt on pakko kysyä että miksi?

Gwaur [28.08.2007 17:50:32]

#

Peli itse ei piirrä tähtäintä. ;)

miiro [28.08.2007 17:52:55]

#

KIILTO Sinitarra v1.0, maksaa Tiimarissa aika vähän. Sisältää lisenssit myös kavereille!

Antti Laaksonen [28.08.2007 18:04:43]

#

Oletko kokeillut silmukkaa, joka tuhertaa koko ajan pistettä samaan kohtaan?

Pisteen voi piirtää ruudulle WinAPIn funktiolla SetPixel.

JussiR [28.08.2007 18:41:23]

#

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.

Grez [28.08.2007 19:06:01]

#

Kannattaa huomata, että saat helposti bannit pelissä tuosta.. Mutta laita X:ksi Screen.width\2\screen.twipsperpixelx niin luulisi menevän keskelle.

Metabolix [28.08.2007 20:15:50]

#

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.

Antti Laaksonen [28.08.2007 20:38:25]

#

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

T.M. [28.08.2007 21:47:11]

#

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

Grez [29.08.2007 00:07:40]

#

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

JussiR [29.08.2007 09:19:07]

#

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. :(

Antti Laaksonen [29.08.2007 10:36:39]

#

Minne se sitten sen piirtää?

Voit määrittää koordinaatit myös käsin kokeilemalla, niin saat ainakin pisteen juuri siihen kohtaan kuin haluat.

JussiR [29.08.2007 13:52:14]

#

LOL. Eihän mulla enää oo muuta ongelmaa ku saada se keskelle ruutua.

JussiR [29.08.2007 17:02:00]

#

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.

arcatan [29.08.2007 17:03:25]

#

JussiR kirjoitti:

Tuskin se kovin vaikeaa on? ^^
Ei niitä käsin voi pistää koska resoluutio saattaa vaihdella.

Kuinka usein vaihtelet resoluutiota pelatessasi tuota peliä?

JussiR [29.08.2007 18:21:40]

#

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?

Metabolix [29.08.2007 20:14:04]

#

Ei BitBlt ainakaan nopeammin toimi. (Huomaa kirjoitusasu.) Se on kuvanpiirtofunktio, jolla voi piirtää HDC:ltä toiselle.

JussiR [30.08.2007 12:45:30]

#

Pakkohan tuolle jokin tapa on olla?
Ja lopettakaa noi jutut sinitarroista sun muista.

JussiR [01.09.2007 10:38:09]

#

Eli VB:llä ei voi tehdä?
Onkohan RedDot niminen ohjelma tehty C:llä?

Grez [02.09.2007 01:33:41]

#

No siis mikä tossa nyt on ongelmana VB:llä?

Ja miksi pitää tehdä uusi ohjelma jos on kerran jo "reddot"?

JussiR [02.09.2007 13:12:51]

#

VB:llä sekoilee koko ohjelma ja pistettä ei meinaa millään saada pysymmään keskellä ruutua, ja ilman että käyttää koko koneen suorituskykyä.

Grez [02.09.2007 21:11:15]

#

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.

Mobel [03.09.2007 16:48:35]

#

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.

squid [04.09.2007 14:42:09]

#

Kyllä kai ton resoluution saa katsottua jollain WinApin(?) funktiollakin?

Jorgga [06.09.2007 15:43:39]

#

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)

JussiR [07.09.2007 18:17:23]

#

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.".

Jorgga [10.09.2007 22:00:23]

#

no laitat siihen jotain että form_gefocus ja me.lostfocus tai jotai tollasta jollon se perjaatteessa ei vaikuta? emt


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta