Wysłany: 2019-08-07, 18:13
Kacperiusz
.
Wiek: 23 Na forum: 2770 dni Posty: 113
Piwa : 205
Witam, mam problem. Chcia? bym zrobi? by po klikni?ciu w obrazek porusza? si? on za mysz?. Prosz? o pomoc, bo nie wiem jak to zrobi?.
Stawiam
Mam Taki kod:
local px , py = guiGetScreenSize ()
local zoom = 1
if px < 1920 then
zoom = math . min ( 2 , 1920 / px )
end
showCursor ( true )
function mysz ( x , y , width , height )
if ( not isCursorShowing ( ) ) then
return false
end
local sx , sy = guiGetScreenSize ( )
local cx , cy = getCursorPosition ( )
local cx , cy = ( cx * sx ), ( cy * sy )
if ( cx >= x and cx <= x + width ) and ( cy >= y and cy <= y + height ) then
return true
else
return false
end
end
img = dxCreateTexture ( "ulgowy.png" )
function gui ()
dxDrawImage ( 678 / zoom , 542 / zoom , 388 / zoom , 516 / zoom , img )
end
addEventHandler ( "onClientRender" , root , gui )
function cos ()
if mysz ( 670 / zoom , 542 / zoom , 388 / zoom , 516 / zoom ) then
guiSetPosition ( gui , cx , cy , true )
end
end
addEventHandler ( "onClientClick" , root , cos )
Przepraszam ?e nie doda?em tego wcze?niej. Kod zrobiony dla testu.
Uda?o si?, a czy m?g? by mi kto? powiedzie? jak zrobi? by obrazek szed? za kursorem bardziej "g?adko". Bo mam kod, obrazek idzie za kursorem ale nie jest tak jakby "przyczepiony" tylko teleportuje si? do miejsca w kt?rym klikn?.
Mam nadzieje ?e kto? zrozumie moje pytanie
Ostatnio zmieniony przez Kacperiusz 2019-08-08, 14:26, w całości zmieniany 5 razy
Wysłany: 2019-08-07, 20:16
marcin778
Krytyk serwerów MTA
Wiek: 24 Na forum: 4149 dni Posty: 2268
Nick w MP: Marcineg
Piwa : 4662
i aktualizowanie pozycji obrazka, je?eli to CEGUI to i
Więcej szczegółów
Wystawiono 1 piw(a):Kacperiusz
Wysłany: 2019-08-08, 13:04
Kacperiusz
.
Wiek: 23 Na forum: 2770 dni Posty: 113
Piwa : 205
marcin778 , Pr?bowa?em, ale nie uda?o mi si? zrobi?.
[ Dodano : 2019-08-08, 14:15 ]
Uda?o si?, a czy m?g? by mi kto? powiedzie? jak zrobi? by obrazek szed? za kursorem bardziej "g?adko". Bo mam kod, obrazek idzie za kursorem ale nie jest tak jakby "przyczepiony" tylko teleportuje si? do miejsca w kt?rym klikn?.
Mam nadzieje ?e kto? zrozumie moje pytanie
Wysłany: 2019-08-08, 15:17
marcin778
Krytyk serwerów MTA
Wiek: 24 Na forum: 4149 dni Posty: 2268
Nick w MP: Marcineg
Piwa : 4662
Po to poda?em Ci aby by?o "p?ynnie", a ty sobie zrobi?e? to na klikanie. Je?li to Więcej informacji znajdziesz w Wikipedii MTA: dxDrawImage
To w evencie od renderowania sobie zr?b warunek by sprawdzac czy obrazek jest "klikniety" i je?li tak to go rysujesz na pozycji kursora
Wysłany: 2019-08-08, 16:47
Kacperiusz
.
Wiek: 23 Na forum: 2770 dni Posty: 113
Piwa : 205
Oke, a jak zrobi? by po klikni?ciu na obrazek dopiero zacz?? si? rusza??
Wysłany: 2019-08-08, 17:10
marcin778
Krytyk serwerów MTA
Wiek: 24 Na forum: 4149 dni Posty: 2268
Nick w MP: Marcineg
Piwa : 4662
i teraz masz dwie mozliwosci, albo dodajesz event na sta?e i wtedy sprawdzasz przez zmienn? czy kliknales na obrazek, wartosc zmiennej zmieniasz w onClientClick, albo dodajesz po kliknieciu i usuwasz event po ponownym kliknieciu by 'puscic' obrazek
Wysłany: 2019-08-09, 17:13
Kacperiusz
.
Wiek: 23 Na forum: 2770 dni Posty: 113
Piwa : 205
Zrobi?em, aleeeeeeeee xD, zn?w mam problem. Ot??, mam taki kod:
local w , h = guiGetScreenSize ()
local x = 1920
local zoom = 1
local mZ = 2
if x < w then
zoom = math . min ( mZ , x / w )
end
showCursor ( true )
x , y = 370 / zoom , 436 / zoom
local gitesik = false
local trzymam = false
img = dxCreateTexture ( "window.png" )
function mysz ( x , y , width , height )
if ( not isCursorShowing ( ) ) then
return false
end
sx , sy = guiGetScreenSize ( )
cx , cy = getCursorPosition ( )
cx , cy = ( cx * sx ), ( cy * sy )
if ( cx >= x and cx <= x + width ) and ( cy >= y and cy <= y + height ) then
return true
else
return false
end
end
function gui ( btn , state )
if mysz ( x , y , 1920 / zoom , 1080 / zoom ) and getKeyState ( "mouse1" ) then
local s , y = getCursorPosition ()
x , y = ( s * w -( 370 / zoom / 2 )), ( y * h -( 436 / zoom / 2 ))
gitesik = true
trzymam = true
dxDrawImage ( x + 1 , y + 1 , 200 + 1 / zoom , 200 + 1 / zoom , img , 0 , 0 , 0 , tocolor ( 255 , 255 , 255 , 255 ), false )
dxDrawImage ( x , y , 200 / zoom , 200 / zoom , img , 0 , 0 , 0 , tocolor ( 255 , 255 , 255 , 255 ), false )
end
end
addEventHandler ( "onClientRender" , root , gui )
Obrazek nie pojawia si?, dopiero gdy w niego klikn?, gui si? pojawia.
Wysłany: 2019-08-09, 18:36
marcin778
Krytyk serwerów MTA
Wiek: 24 Na forum: 4149 dni Posty: 2268
Nick w MP: Marcineg
Piwa : 4662
Poniewa? masz warunek, na getKeyState i w tym warunku renderujesz obrazek. Renderuj obrazek ca?y czas, poza warunkiem. We warunku aktualizuj tylko jego pozycj? na pozycje kursora. Sprawdzanie pozycji kursora w renderze te? jest z?ym pomys?em bo to wszystko si? b?dzie bugowa?. Musisz u?y? i w nim sprawdza? czy klikni?to na obrazek, je?li tak to ustawiamy np. trzymam na true a w renderze sprawdzamy czy trzyma, je?li trzyma to aktualizujemy pozycje tego obrazka. W onClientClick je?li pu?ci przycisk myszki to trzymam na false
Wysłany: 2019-08-09, 19:03
Kacperiusz
.
Wiek: 23 Na forum: 2770 dni Posty: 113
Piwa : 205
Inaczej, czym m?g? bym zast?pi? getKeyState? Bo nwm
Wysłany: 2019-08-10, 00:34
marcin778
Krytyk serwerów MTA
Wiek: 24 Na forum: 4149 dni Posty: 2268
Nick w MP: Marcineg
Piwa : 4662
Napisa?em ju? wy?ej, ja?niej nie ju? nie potrafi? tego wyt?umaczy?.
Wysłany: 2019-08-10, 15:58
Kacperiusz
.
Wiek: 23 Na forum: 2770 dni Posty: 113
Piwa : 205
local w , h = guiGetScreenSize ()
local x = 1920
local zoom = 1
local mZ = 2
if x < 200 then
zoom = math . min ( mZ , x / 200 )
end
showCursor ( true )
marker = createMarker ( 4 , 4 , 4 - 2 , "cylinder" , 1 , 255 , 255 , 255 )
x , y = 200 / zoom , 200 / zoom
local gitesik = false
local trzymam = false
local trzymam2 = false
img = dxCreateTexture ( "paczka.png" )
function mysz ( x , y , width , height )
if ( not isCursorShowing ( ) ) then
return false
end
sx , sy = guiGetScreenSize ( )
cx , cy = getCursorPosition ( )
cx , cy = ( cx * sx ), ( cy * sy )
if ( cx >= x and cx <= x + width ) and ( cy >= y and cy <= y + height ) then
return true
else
return false
end
end
function gui ()
if mysz ( x , y , 1920 / zoom , 1080 / zoom ) and getKeyState ( "mouse1" ) and trzymam ~= true then
px , py = getCursorPosition ()
x , y = ( px * w -( 200 / zoom / 2 )), ( py * h -( 200 / zoom / 2 ))
trzymam = true
else
if mysz ( 0 / zoom , 0 / zoom , 1920 / zoom , 1080 / zoom ) and getKeyState ( "mouse1" ) then
gitesik = true
else
gitesik = false
end
trzymam = false
dxDrawImage ( x , y , 200 / zoom , 200 / zoom , img )
end
end
addEventHandler ( "onClientRender" , root , gui )
Teraz gui si? pokazuje aleee jak klikam to miga.
Pr?bowa?em zrobi? ale nie wysz?o.
Wysłany: 2019-08-10, 19:35
marcin778
Krytyk serwerów MTA
Wiek: 24 Na forum: 4149 dni Posty: 2268
Nick w MP: Marcineg
Piwa : 4662
Czego nie rozumiesz w tym co napisa?em? Renderuj poza warunkami i musisz u?y? onClientClick . Aktualizujesz jedynie pozycje w renderze lub onClientCursorMove (do wyboru, jak wolisz) na pozycj? kursora
Tagi: gui
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: