GTA Közösség - A magyar GTA fórum

Multi Theft Auto (MTA) => MTA: Szerverfejlesztés => Segítségkérés => A témát indította: Dragonflash11 - 2016. december 19. - 18:49:52

Cím: Hogyan lehetne megoldani? (Mozgó rectangle)
Írta: Dragonflash11 - 2016. december 19. - 18:49:52


   

 
Sziasztok! A napokban bukkantam egy igényes külföldi szerverre, és megtetszett, de nem értem hogyan lehetséges ezt MTA-ban megvalósítani? Vagy milyen irányba kellene elindulni, esetleg valaki próbálkozott már hasonlóval? 
 
A válaszokat előre köszönöm!
Cím: Hogyan lehetne megoldani? (Mozgó rectangle)
Írta: impreZZa - 2016. december 19. - 19:37:09

Ezek oszt színek öcsém. -^
Cím: Hogyan lehetne megoldani? (Mozgó rectangle)
Írta: Dragonflash11 - 2016. december 19. - 20:31:44
Idézetet írta: impreZZa date=1482172629


   
   
      Ezek oszt színek öcsém. -^
   


Sajnos ebből csak azt tudtam meg, hogy shaderekkel menne, de ha jól látom te se teljesen oldottad meg, azért köszönöm. :)
 
További ötleteket, válaszokat még várok. 
Cím: Hogyan lehetne megoldani? (Mozgó rectangle)
Írta: impreZZa - 2016. december 19. - 22:50:24
Shader
 

texture iTexture;
technique drawTexture {
pass P0 {
   Texture[0] = iTexture;
}
}

 
Kliens oldal
 

local screenWidth, screenHeight = guiGetScreenSize()
local shader3D = dxCreateShader(\"files/shaders/default.fx\")
bindKey(\"m\", \"down\", function()
showCursor(not isCursorShowing())
end)
addEventHandler(\"onClientRender\", root, function()
if isCursorShowing() then
   local cursorX, cursorY = getCursorPosition()
   cursorX, cursorY = cursorX*screenWidth, cursorY*screenHeight
   local rectRotX = -(cursorX-screenWidth/2)/80
   local rectRotY = (cursorY-screenHeight/2)/50
   local drawSurface = dxCreateRenderTarget(screenWidth, screenHeight, true)
   dxSetShaderValue(shader3D, \"iTexture\", drawSurface)
   dxSetRenderTarget(drawSurface, true)
   dxDrawRectangle(screenWidth/2-320, screenHeight/2-200, 640, 376, tocolor(21, 25, 27, 255))
   dxDrawRectangle(screenWidth/2-320, screenHeight/2-200+376, 640, 24, tocolor(0, 0, 0, 255))
   dxDrawRectangle(screenWidth/2-320+10, screenHeight/2-200+10, 309, 50, (isCursorInPosition(screenWidth/2-320+10, screenHeight/2-200+10, 309, 50) and tocolor(122, 163, 62) or tocolor(130, 130, 130)))
   dxDrawRectangle(screenWidth/2-320+10+311, screenHeight/2-200+10, 309, 50, (isCursorInPosition(screenWidth/2-320+10+311, screenHeight/2-200+10, 309, 50) and tocolor(62, 163, 153) or tocolor(130, 130, 130)))
   dxSetRenderTarget()
   dxSetShaderTransform(shader3D, rectRotX, rectRotY)
   dxDrawImage(0, 0, screenWidth, screenHeight, shader3D)
   destroyElement(drawSurface)
end
end)
function isCursorInPosition(boxX, boxY, boxW, boxH)
if isCursorShowing() then
   local absoluteX, absoluteY = getCursorPosition()
   absoluteX, absoluteY = absoluteX*screenWidth, absoluteY*screenHeight
   return (absoluteX >= boxX and absoluteX <= boxX+boxW) and (absoluteY >= boxY and absoluteY <= boxY+boxH)
else
   return false
end
end

 
Nyilván meg lehet oldani jobban/szebben/pontosabban, de ebből ki tudsz indulni. (elvileg..)
Cím: Hogyan lehetne megoldani? (Mozgó rectangle)
Írta: Live - 2016. december 20. - 11:03:15
MTA Fórumján múltkor kérdezte valaki, hogy hogy lehet ilyet.
 
https://forum.mtasa.com/topic/87496-help3d-perspective-dxdraw-when-cursor-moves-in-screen/#comment-809197
Cím: Hogyan lehetne megoldani? (Mozgó rectangle)
Írta: Dragonflash11 - 2016. december 20. - 15:27:08
Nagyon szépen köszönöm mindkettőtöknek a segítséget!! :)