TCH (statz) | #1, Főfasz (10466) |
1784 | #087f | ^ | Idézet | Fri, 17 Oct 2008 23:29:09 +02 |
84.0.*.* | *.pool.t-online.hu |
Ebbe a problémába én is belefutottam, nevezetesen a Postal 2-nél. Normális megoldást nem tudok, csak egy workaround hacket, ha az is jó. Abból indultam ki, hogy itt az a baj, hogy az egér nincs normálisan emulálva és ezért "mozog" az alternatív képernyőn és ezért "beleakad a szélekbe". Vagyis, ha végteleníteni bírnám azt a felületet, ez nem volna gond. Fogtam egy Lazarus+FreePascal combót és csináltam egy olyan programot, ami figyeli az egeret, és ha a képernyő széléhez ér, akkor átugrasztja a másik felére. Lényegében kell két beviteli mező (TEdit), ahova beírhatod a képernyő dimenzióit, kell egy kapcsoló (TCheckBox), amivel a figyelést ki/be kapcsolhatod, valamint egy időzítő (TTimer), ami a figyelés időközét szabályozza. Javasolt időköznek 10 millisecundomot beállítani, az bőven az emberi érzékhatár alatt van, de még bírja a gép bőven. Az időzítő által végrehajtott kód meg mindössze ennyi: If Mouse.X > StrToInt(Edit1.Text) - 1 Then Mouse.X := 1; // horizontális jobb If Mouse.X < 1 Then Mouse.X := StrToInt(Edit1.Text) - 1; // horizontális bal If Mouse.Y > StrToInt(Edit2.Text) - 1 Then Mouse.Y := 1; // vertikális jobb If Mouse.Y < 1 Then Mouse.Y := StrToInt(Edit2.Text) - 1; // vertikális bal Ez lehetővé teszi, hogy mehessen "körbe" az egész. A határokon sajnos ugrik, de nem akkorát, hogy bele kelljen halni. Pl. Postal 2-zni kurva jól lehetett alatta. Amúgy tudom, hogy ez kibaszott gány, de normális fixet sehol nem találtam erre a problémára. Egy kis nosztalgia a windózfílingből, amikor a fatális hibára nincs megoldás, csak egy workaround. A Wine ezt is emulálja nekünk, a fosságot. :P Az más kérdés, hogy a többi emulátorral, vagy apiwrapperrel kezdeni sem érdemes. |