HU/getCursorPosition: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
Line 1: Line 1:
{{Client function hu}}
{{Client function hu}}
__NOTOC__
__NOTOC__
This function gets the current position of the mouse cursor. Note that for performance reasons, the world position returned is always 300 units away. If you want the exact world point (similar to [[onClientClick]]), use [[processLineOfSight]] between the camera position and the worldX/Y/Z result of this function. (See example below)
Ez a function visszaadja az egér kurzor aktuális pozícióját. Vegye figyelembe, hogy teljesítményi okok miatt a world pozíció mindig 300 egységnyi távolságra van. If you want the exact world point (similar to [[onClientClick]]), use [[processLineOfSight]] between the camera position and the worldX/Y/Z result of this function. (Lásd az alábbi példát)


==Szintaxis==
==Szintaxis==
Line 9: Line 9:


===Visszatérési érték===
===Visszatérési érték===
Returns 5 values: ''cursorX'', ''cursorY'', ''worldX'', ''worldY'', ''worldZ''. The first two values are the 2D relative screen coordinates of the cursor: ''cursorX'' goes from 0 (left side of the screen) to 1 (right side), ''cursorY'' goes from 0 (top) to 1 (bottom). The 3 values that follow are the 3D world map coordinates that the cursor points at. If the cursor isn't showing, returns ''false'' as the first value.
Visszaad 5 értéket: ''cursorX'', ''cursorY'', ''worldX'', ''worldY'', ''worldZ''. Az első két érték a kurzor 2D relatív képernyő koordinátái: ''cursorX'' 0-ról indul (a képernyő bal oldala) 1-ig (jobb oldal), ''cursorY'' 0-ról indul (teteje) 1-ig (alja).  
 
A következő 3 érték a 3D world map koordinátái, amelyekre a kurzor mutat. Ha a kurzor nem jelenik meg, akkor első értékként ''false'' értéket ad vissza.
===Issues===
===Issues===
{{Issues|
{{Issues|
Line 17: Line 17:


==Példa==
==Példa==
This example prints your cursors current world coordinates and relative screen coordinates to chatbox after typing ''cursorpos''.
Ez a példa kiírja a chatba a kurzorok aktuális world kordinátáit és a képernyő relatív koordinátáit, mután beírtuk a ''cursorpos'' parancsot.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
function cursorInfo()
function cursorInfo()
Line 33: Line 33:




This (untested) example uses [[processLineOfSight]] to calculate the exact world location:
Ez a (nem tesztelt) példa  a [[processLineOfSight]]-t használva kiszámolja a világ pontos helyét:
'''Warning, using the script down there will cause high CPU usage.'''
'''Figyelmeztetés, ez a script nagy CPU használatát eredményez.'''
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
addEventHandler( "onClientRender", root,
addEventHandler( "onClientRender", root,

Latest revision as of 10:31, 13 October 2018

Ez a function visszaadja az egér kurzor aktuális pozícióját. Vegye figyelembe, hogy teljesítményi okok miatt a world pozíció mindig 300 egységnyi távolságra van. If you want the exact world point (similar to onClientClick), use processLineOfSight between the camera position and the worldX/Y/Z result of this function. (Lásd az alábbi példát)

Szintaxis

float, float, float, float, float getCursorPosition ( )

Visszatérési érték

Visszaad 5 értéket: cursorX, cursorY, worldX, worldY, worldZ. Az első két érték a kurzor 2D relatív képernyő koordinátái: cursorX 0-ról indul (a képernyő bal oldala) 1-ig (jobb oldal), cursorY 0-ról indul (teteje) 1-ig (alja). A következő 3 érték a 3D world map koordinátái, amelyekre a kurzor mutat. Ha a kurzor nem jelenik meg, akkor első értékként false értéket ad vissza.

Issues

Issue ID Description
#5226 getCursorPosition() 3D Positions Return Inaccurate, But Nearby Positions - Also Negative WorldZ

Példa

Ez a példa kiírja a chatba a kurzorok aktuális world kordinátáit és a képernyő relatív koordinátáit, mután beírtuk a cursorpos parancsot.

function cursorInfo()
   if isCursorShowing() then -- if the cursor is showing
      local screenx, screeny, worldx, worldy, worldz = getCursorPosition()

      outputChatBox( string.format( "Cursor screen position (relative): X=%.4f Y=%.4f", screenx, screeny ) ) -- make the accuracy of floats 4 decimals
      outputChatBox( string.format( "Cursor world position: X=%.4f Y=%.4f Z=%.4f", worldx, worldy, worldz ) ) -- make the accuracy of floats 4 decimals accurate
   else
      outputChatBox( "Your cursor is not showing." )
   end
end
addCommandHandler( "cursorpos", cursorInfo )


Ez a (nem tesztelt) példa a processLineOfSight-t használva kiszámolja a világ pontos helyét: Figyelmeztetés, ez a script nagy CPU használatát eredményez.

addEventHandler( "onClientRender", root,
    function()
        if isCursorShowing() then
            local screenx, screeny, worldx, worldy, worldz = getCursorPosition()
            local px, py, pz = getCameraMatrix()
            local hit, x, y, z, elementHit = processLineOfSight ( px, py, pz, worldx, worldy, worldz )

            if hit then
                dxDrawText( "Cursor at " .. x .. " " .. y .. " " ..  z, 200, 200 )
                if elementHit then
                    dxDrawText( "Hit element " .. getElementType(elementHit), 200, 220 )
                end
            end
        end
    end
)

Lásd még

Fordította