Wysłany: 2018-05-29, 13:27
DaVeCS
Mapper
Wiek: 31 Na forum: 3386 dni Posty: 193
Nick w MP: DaVe
Piwa : 59
Witam,
Korzystam obecnie z GM ITS'a z rozgrywk? w SF i mam pytanie. Podczas gdy w??czam zas?b "3dtext" to gdy znajduj? si? w miejscu gdzie jest du?o ich to zas?b ten obci??a mi serwer w 60%. Co mo?e by? przyczyn?? Ni?ej wstawiam kod "3dtext"
C-Side
function dxDrawBorderedText ( scaleBorder , text , left , top , right , bottom , color , scale , font , alignX , alignY , clip , wordBreak , postGUI )
local scaleBorder = scaleBorder or 1
for oX = - scaleBorder , scaleBorder do
for oY = - scaleBorder , scaleBorder do
dxDrawText ( text : gsub ( '#%x%x%x%x%x%x' , '' ), left + oX , top + oY , right + oX , bottom + oY , tocolor ( 0 , 0 , 0 , 255 ), scale , font , alignX , alignY , clip , wordBreak , postGUI )
end
end
dxDrawText ( text , left , top , right , bottom , color , scale , font , alignX , alignY , clip , wordBreak , postGUI , true )
end
defscale = 1
font = "clear"
addEventHandler ( "onClientRender" , root , function()
local rootx , rooty , rootz = getCameraMatrix ()
local dim = getElementDimension ( localPlayer )
local int = getElementInterior ( localPlayer )
local texty = getElementsByType ( "text" , root , true )
for i , text in pairs ( texty ) do
if text and isElement ( text ) and getElementDimension ( text ) == dim and getElementInterior ( text ) == int then
local x , y , z = getElementPosition ( text )
if isLineOfSightClear ( rootx , rooty , rootz , x , y , z , true , false , false , true , false , false , false , nil ) then
local dist = getDistanceBetweenPoints3D ( rootx , rooty , rootz , x , y , z )
local numer = getElementData ( text , "rendering" ) or 50
if dist < numer then
local sx , sy = getScreenFromWorldPosition ( x , y , z , 100 , true )
if sx and sy then
local name = getElementData ( text , "name" )
local scale = getElementData ( text , "scale" )
local r = getElementData ( text , "r" ) or 255
local g = getElementData ( text , "g" ) or 255
local b = getElementData ( text , "b" ) or 255
if not name then return end
dxDrawBorderedText ( 0.2 , name , sx , sy , sx , sy , tocolor ( r , g , b , 255 ), ( scale or defscale ), font , "center" , "center" , false )
end
end
end
end
end
end )
S-Side
function init ()
local x = exports [ 'ogrpg-db' ]: dbGet ( "SELECT * from 3dtexty" )
if not x or #x < 1 then return end
for i , p in pairs ( x ) do
wczytaj ( p )
end
end
addEventHandler ( "onResourceStart" , resourceRoot , init )
function wczytaj ( v )
v . pos = split ( v . pos , "," )
local text = createElement ( v . type );
local tekst = string . gsub ( v . text , "\n" , "\n" )
setElementData ( text , "name" , tekst )
setElementData ( text , "scale" , tonumber ( v . scale ))
setElementPosition ( text , v . pos [ 1 ], v . pos [ 2 ], v . pos [ 3 ])
setElementInterior ( text , tonumber ( v . interior ))
setElementDimension ( text , tonumber ( v . dimension ))
end
Jeszcze raz prosz? o pomoc.
Wysłany: 2018-05-29, 14:38
nanKy
Wiek: 22 Na forum: 3865 dni Posty: 498
Nick w MP: nanky
Piwa : 1773
Minimalnym obci??eniem mo?e by? tu funkcja dxDrawBorderedText, bo rysuje ci nie tylko jeden tekst.
Spr?buj usun?? funkcj? oraz zamieni? to:
dxDrawBorderedText ( 0.2 , name , sx , sy , sx , sy , tocolor ( r , g , b , 255 ), ( scale or defscale ), font , "center" , "center" , false )
na to
dxDrawText ( name , sx , sy , sx , sy , tocolor ( r , g , b , 255 ), ( scale or defscale ), font , "center" , "center" , false )
Tagi: 3dtext
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: