Resource:DxDraw3DText
From Multi Theft Auto: Wiki
This resource allow you to draw 3D-DX texts any where in the game. You need to add a Text to display only once.
Contents
How it works
You need to use the exported function called dxDraw3DText to draw a text in the 3D world. (Use the exported function like this: exports.3d_dx_texts:dxDraw3DText)
The dxDraw3DText function
Syntax
element dxDraw3DText( string text, int x, int y, int z [, int scale = 2, string font = "default", int r = 255, int g = 255, int b = 255, int maxDistance = 12 ] )
Required Arguments
- text : A string representing the text you wish to draw .
- x, y, z : Three integers representing the world coordinates of where you want the text to be .
Optional Arguments
- scale : An int representing the size of the font .
- font : A string representing the font type, This CAN'T be a DX font element, It can ONLY be :
- "default": Tahoma
- "default-bold": Tahoma Bold
- "clear": Verdana
- "arial": Arial
- "sans": Microsoft Sans Serif
- "pricedown": Pricedown (GTA's theme text)
- "bankgothic": Bank Gothic Medium
- "diploma": Diploma Regular
- "beckett": Beckett Regular
- r, g, b : Three integers representing the RGB Color codes for the text .
- maxDistance : An int representing the max distance the text will show in .
Returns
The function returns a text element if successfule, false otherwise .
Example
This example will draw a 3D text near a player when the resource starts, And destroys it after 5 seconds .
local dxDraw3DText = exports.3D_DX_Texts:dxDraw3DText -- define the function addEventHandler( "onClientResourceStart", getResourceRootElement( getThisResource( ) ), function( ) local x, y, z = getElementPosition( getLocalPlayer( ) ) -- getting the player coordinates local playerName = getPlayerName( getLocalPlayer( ) ) -- getting the player name local theText = dxDraw3DText( "Welcome " .. playerName, x, y, z ) -- dtawing the text if theText then -- if it was drawn setTimer( destroyElement, 5000, 1, theText ) -- set a time to destroy it after 5 seconds end end )
Notes
- The dxDraw3DText function is client side only .
- The dxDraw3DText function doesn't need the onClientRender event to work .
- The dxDraw3DText function only creates a text element, The drawing and stuff is done in the resource, So it MUST be running so the texts show .
Download
You can download the resource, comment about it, rate it and report any bugs at the community page : [1]
Alternative Function
This alternative function is meant to be used directly with the eventHandler onClientRender.
Syntax
bool dxDraw3DText( string text, int x, int y, int z [, int scale = 2, string font = "default", int color = white, int maxDistance = 12, bool colorCoded = false ] )
Returns
The function return true and displays a text if successful, false otherwise.
Required Arguments
- text : A string representing the text you wish to draw .
- x, y, z : Three integers representing the world coordinates of where you want the text to be .
Optional Arguments
- scale : An int representing the size of the font .
- font : A string representing the font type, This CAN'T be a DX font element, It can ONLY be :
- "default": Tahoma
- "default-bold": Tahoma Bold
- "clear": Verdana
- "arial": Arial
- "sans": Microsoft Sans Serif
- "pricedown": Pricedown (GTA's theme text)
- "bankgothic": Bank Gothic Medium
- "diploma": Diploma Regular
- "beckett": Beckett Regular
- color: the color of the text, a value produced by tocolor or 0xAARRGGBB (AA = alpha, RR = red, GG = green, BB = blue).
- maxDistance : An int representing the max distance the text will show in .
- colorCoded : Set to true to enable embedded #FFFFFF color codes. Note: clip and wordBreak are forced false if this is set.
Code
Click to collapse [-]
Clientfunction dxDraw3DText(text, x, y, z, scale, font, color, maxDistance, colorCoded) if not (x and y and z) then outputDebugString("dxDraw3DText: One of the world coordinates is missing", 1); return false; end if not (scale) then scale = 2; end if not (font) then font = "default"; end if not (color) then color = tocolor(255, 255, 255, 255); end if not (maxDistance) then maxDistance = 12; end if not (colorCoded) then colorCoded = false; end local pX, pY, pZ = getElementPosition( localPlayer ); local distance = getDistanceBetweenPoints3D(pX, pY, pZ, x, y, z); if (distance <= maxDistance) then local x, y = getScreenFromWorldPosition(x, y, z); if (x and y) then dxDrawText( text, x, y, _, _, color, scale, font, "center", "center", false, false, false, colorCoded); return true; end end end
By: Ceeser