Jump to content

طلب Text 3D


Recommended Posts

جرب هذآ كود تنطيل بس عدلته عشآن تكون آسهل

addEventHandler ("onClientRender", root, 
    function () 
        for i,v in ipairs (getElementsByType("marker")) do 
        local Data = getElementData ( v, "3DText" ) 
        end 
        if ( Data ~= "" ) then 
        local x,y,z = getElementPosition (v) -- نجيب احداثيات الماركر 
        local px, py, pz = getElementPosition (localPlayer) -- نجيب اداثيات اللاعب 
        if (isLineOfSightClear (x, y, z, px, py, pz, true, true, false, true)) then -- نتحقق انه مافيه شي مغطي على الماركر يعني مب ورا جدار او كذا 
            local sx, sy = getScreenFromWorldPosition (x,y,z+1) -- نجيب الاحداثيات من العالم 
            if (sx) and (sy) then 
                local dis = getDistanceBetweenPoints3D (x,y,z, px,py,pz) -- نجيب المسافه بين اللاعب والماركر 
                if (dis < 20) then -- اذا كانت المسافه اقل من 20 
                dxDrawText (Data, sx + 2, sy + 2, sx, sy, tocolor (0,0,0), 2 - (dis / 20), "arial", "center", "center") -- نكتب الكلام 
                dxDrawText (Data, sx, sy, sx, sy, tocolor (255,255,0), 2 - (dis / 20), "arial", "center", "center") -- نكتب الكلام 
                end 
            end 
        end 
    end 
end     
) 

إذآ تبي تسوي كلآم لآي ماركر

حط له داتا

setElementData ( myMarker, "3DText", "Test" ) 

مآجربت آلكود

Link to comment
جرب هذآ كود تنطيل بس عدلته عشآن تكون آسهل
addEventHandler ("onClientRender", root, 
    function () 
        for i,v in ipairs (getElementsByType("marker")) do 
        local Data = getElementData ( v, "3DText" ) 
        end 
        if ( Data ~= "" ) then 
        local x,y,z = getElementPosition (v) -- نجيب احداثيات الماركر 
        local px, py, pz = getElementPosition (localPlayer) -- نجيب اداثيات اللاعب 
        if (isLineOfSightClear (x, y, z, px, py, pz, true, true, false, true)) then -- نتحقق انه مافيه شي مغطي على الماركر يعني مب ورا جدار او كذا 
            local sx, sy = getScreenFromWorldPosition (x,y,z+1) -- نجيب الاحداثيات من العالم 
            if (sx) and (sy) then 
                local dis = getDistanceBetweenPoints3D (x,y,z, px,py,pz) -- نجيب المسافه بين اللاعب والماركر 
                if (dis < 20) then -- اذا كانت المسافه اقل من 20 
                dxDrawText (Data, sx + 2, sy + 2, sx, sy, tocolor (0,0,0), 2 - (dis / 20), "arial", "center", "center") -- نكتب الكلام 
                dxDrawText (Data, sx, sy, sx, sy, tocolor (255,255,0), 2 - (dis / 20), "arial", "center", "center") -- نكتب الكلام 
                end 
            end 
        end 
    end 
end     
) 

إذآ تبي تسوي كلآم لآي ماركر

حط له داتا

setElementData ( myMarker, "3DText", "Test" ) 

مآجربت آلكود

كلاسيك جربت كود

باد ارقمنت السطر 7 اكسبكتيد المن ارقمنت 1

والسطر 9 اكسبكتيد فيكتور 3 ات ارقمنت 1 بولين

مو لازم تربط التكست مع الماركر خلهم معزولين عن بعض

يعنى التكست يكون له احداثيات لحاله بعيد عن الماركر

شلون ؟

Link to comment
جرب هذآ كود تنطيل بس عدلته عشآن تكون آسهل
addEventHandler ("onClientRender", root, 
    function () 
        for i,v in ipairs (getElementsByType("marker")) do 
        local Data = getElementData ( v, "3DText" ) 
        end 
        if ( Data ~= "" ) then 
        local x,y,z = getElementPosition (v) -- نجيب احداثيات الماركر 
        local px, py, pz = getElementPosition (localPlayer) -- نجيب اداثيات اللاعب 
        if (isLineOfSightClear (x, y, z, px, py, pz, true, true, false, true)) then -- نتحقق انه مافيه شي مغطي على الماركر يعني مب ورا جدار او كذا 
            local sx, sy = getScreenFromWorldPosition (x,y,z+1) -- نجيب الاحداثيات من العالم 
            if (sx) and (sy) then 
                local dis = getDistanceBetweenPoints3D (x,y,z, px,py,pz) -- نجيب المسافه بين اللاعب والماركر 
                if (dis < 20) then -- اذا كانت المسافه اقل من 20 
                dxDrawText (Data, sx + 2, sy + 2, sx, sy, tocolor (0,0,0), 2 - (dis / 20), "arial", "center", "center") -- نكتب الكلام 
                dxDrawText (Data, sx, sy, sx, sy, tocolor (255,255,0), 2 - (dis / 20), "arial", "center", "center") -- نكتب الكلام 
                end 
            end 
        end 
    end 
end     
) 

إذآ تبي تسوي كلآم لآي ماركر

حط له داتا

setElementData ( myMarker, "3DText", "Test" ) 

مآجربت آلكود

طيب بجربه ض

مو لازم تربط التكست مع الماركر خلهم معزولين عن بعض

يعنى التكست يكون له احداثيات لحاله بعيد عن الماركر

شلون ؟

كذا

text = { 
{"Text 1",-1323,-147,15, -- x,y,z pos 
255,0,255},-- r,g,b color 
-- {"Text",x,y,z,r,g,b}, 
}   
addEventHandler ( "onClientRender", root, 
function (v) 
for _,v in ipairs (text) do 
if ( getDistanceBetweenPoints3D (v[2],v[3],v[4], getElementPosition ( localPlayer ) ) ) < 50 then 
local pos = { getScreenFromWorldPosition ( v[2],v[3],v[4]) } 
if pos[1] and pos[2] then 
dxDrawText (v[1], pos[1],pos[2],pos[1],pos[2], tocolor(v[5],v[6],v[7]), 2, "default-bold" ) 
end 
end 
end 
end) 
  

Link to comment

لم يتم التجربة ..

شف حط هالكود كلنت ..

function markers_text (  ) 
 for _,markers in ipairs ( getElementsByType ( "marker", resourceRoot ) ) do 
        local x, y, z = getElementPosition ( localPlayer )      
        local string_ = getElementData ( markers, "markerText" ) or "None" 
        local tX, tY, tZ = getElementPosition ( markers ) 
        local distance = getDistanceBetweenPoints3D ( x, y, z, tX, tY, tZ ) 
        if ( distance <= 10 ) then 
          local sx, sy = getScreenFromWorldPosition ( tX, tY, tZ ) 
          if ( sx ) then 
             dxDrawText( string_, sx, sy, sx, sy, tocolor(255,255,255,255), math.min ( 30/distance, 1.5 ), "default-bold", "left", "top", false, false, true, true, false) 
         end 
      end 
   end 
end 
addEventHandler ( "onClientRender", root, markers_text ) 

وبالسيرفر او بكلنت اي مكان مسوي فيه الماركر خله كذا

marker = createMarker ( ... ) 
setElementData ( marker, "markerText", "hello" ) 

يعني مع كل ماركر تسويه تحط له داتا بنفس الاسم اللي فوق وتكتب التكست حقه .

Link to comment
جرب هذآ كود تنطيل بس عدلته عشآن تكون آسهل
addEventHandler ("onClientRender", root, 
    function () 
        for i,v in ipairs (getElementsByType("marker")) do 
        local Data = getElementData ( v, "3DText" ) 
        end 
        if ( Data ~= "" ) then 
        local x,y,z = getElementPosition (v) -- نجيب احداثيات الماركر 
        local px, py, pz = getElementPosition (localPlayer) -- نجيب اداثيات اللاعب 
        if (isLineOfSightClear (x, y, z, px, py, pz, true, true, false, true)) then -- نتحقق انه مافيه شي مغطي على الماركر يعني مب ورا جدار او كذا 
            local sx, sy = getScreenFromWorldPosition (x,y,z+1) -- نجيب الاحداثيات من العالم 
            if (sx) and (sy) then 
                local dis = getDistanceBetweenPoints3D (x,y,z, px,py,pz) -- نجيب المسافه بين اللاعب والماركر 
                if (dis < 20) then -- اذا كانت المسافه اقل من 20 
                dxDrawText (Data, sx + 2, sy + 2, sx, sy, tocolor (0,0,0), 2 - (dis / 20), "arial", "center", "center") -- نكتب الكلام 
                dxDrawText (Data, sx, sy, sx, sy, tocolor (255,255,0), 2 - (dis / 20), "arial", "center", "center") -- نكتب الكلام 
                end 
            end 
        end 
    end 
end     
) 

إذآ تبي تسوي كلآم لآي ماركر

حط له داتا

setElementData ( myMarker, "3DText", "Test" ) 

مآجربت آلكود

طيب بجربه ض

مو لازم تربط التكست مع الماركر خلهم معزولين عن بعض

يعنى التكست يكون له احداثيات لحاله بعيد عن الماركر

شلون ؟

كذا

text = { 
{"Text 1",-1323,-147,15, -- x,y,z pos 
255,0,255},-- r,g,b color 
-- {"Text",x,y,z,r,g,b}, 
}   
addEventHandler ( "onClientRender", root, 
function (v) 
for _,v in ipairs (text) do 
if ( getDistanceBetweenPoints3D (v[2],v[3],v[4], getElementPosition ( localPlayer ) ) ) < 50 then 
local pos = { getScreenFromWorldPosition ( v[2],v[3],v[4]) } 
if pos[1] and pos[2] then 
dxDrawText (v[1], pos[1],pos[2],pos[1],pos[2], tocolor(v[5],v[6],v[7]), 2, "default-bold" ) 
end 
end 
end 
end) 
  

الف الف عافيه لك تسلم والله ولايهنون البقيه استوى الكود

بس في مشكله انه ينشاف من ورا الجدر

Link to comment
طيب الكود ذا مافيه مشكله

وشغال مدري وش مسوي انت

ماسويت شئ ض

بس في جدار ورا الماركر

مدري يأثر ولا لا

ايه يأثر الكلام ما يظهر ورا الجدار لازم تكون قدام الماركر عشان يظهر

استخدم الكود هذا

Server
a = createMarker(1055.2, -2671, 0.8, "cylinder", 4 , 89, 0, 99, 255 ) 
setElementID(a, "MarkerText") 

Client

addEventHandler ("onClientRender", root, 
    function () 
        local a = getElementByID("MarkerText") 
        if not a then return end 
        local x,y,z = getElementPosition (a) -- نجيب احداثيات الماركر 
        local px, py, pz = getElementPosition (localPlayer) -- نجيب اداثيات اللاعب 
        if (isLineOfSightClear (x, y, z, px, py, pz, true, true, false, true)) then -- نتحقق انه مافيه شي مغطي على الماركر يعني مب ورا جدار او كذا 
            local sx, sy = getScreenFromWorldPosition (x,y,z+1) -- نجيب الاحداثيات من العالم 
            if (sx) and (sy) then 
                local dis = getDistanceBetweenPoints3D (x,y,z, px,py,pz) -- نجيب المسافه بين اللاعب والماركر 
                if (dis < 20) then -- اذا كانت المسافه اقل من 20 
                    dxDrawText ("Text", sx + 2, sy + 2, sx, sy, tocolor (0,0,0), 2 - (dis / 20), "arial", "center", "center") -- نكتب الكلام 
                    dxDrawText ("Text", sx, sy, sx, sy, tocolor (255,255,0), 2 - (dis / 20), "arial", "center", "center") -- نكتب الكلام 
                end 
            end 
        end 
    end 
) 

Link to comment
طيب الكود ذا مافيه مشكله

وشغال مدري وش مسوي انت

ماسويت شئ ض

بس في جدار ورا الماركر

مدري يأثر ولا لا

ايه يأثر الكلام ما يظهر ورا الجدار لازم تكون قدام الماركر عشان يظهر

استخدم الكود هذا

Server
a = createMarker(1055.2, -2671, 0.8, "cylinder", 4 , 89, 0, 99, 255 ) 
setElementID(a, "MarkerText") 

Client

addEventHandler ("onClientRender", root, 
    function () 
        local a = getElementByID("MarkerText") 
        if not a then return end 
        local x,y,z = getElementPosition (a) -- نجيب احداثيات الماركر 
        local px, py, pz = getElementPosition (localPlayer) -- نجيب اداثيات اللاعب 
        if (isLineOfSightClear (x, y, z, px, py, pz, true, true, false, true)) then -- نتحقق انه مافيه شي مغطي على الماركر يعني مب ورا جدار او كذا 
            local sx, sy = getScreenFromWorldPosition (x,y,z+1) -- نجيب الاحداثيات من العالم 
            if (sx) and (sy) then 
                local dis = getDistanceBetweenPoints3D (x,y,z, px,py,pz) -- نجيب المسافه بين اللاعب والماركر 
                if (dis < 20) then -- اذا كانت المسافه اقل من 20 
                    dxDrawText ("Text", sx + 2, sy + 2, sx, sy, tocolor (0,0,0), 2 - (dis / 20), "arial", "center", "center") -- نكتب الكلام 
                    dxDrawText ("Text", sx, sy, sx, sy, tocolor (255,255,0), 2 - (dis / 20), "arial", "center", "center") -- نكتب الكلام 
                end 
            end 
        end 
    end 
) 

ذا كيلر استخدمت الكود حق اوسكار وطلع الكلام ض

بس المشكله معرف استخدم حق الجدر ض

Link to comment

text = { 
{"Text 1",-1307.3328857422,-297.8932800293,16, -- x,y,z pos 
255,0,255},-- r,g,b color 
}   
addEventHandler ( "onClientRender", root, 
function (v) 
for _,v in ipairs (text) do 
local x,y,z = getElementPosition ( localPlayer ) 
if ( getDistanceBetweenPoints3D (v[2],v[3],v[4], x,y,z ) ) < 50 then 
local pos = { getScreenFromWorldPosition ( v[2],v[3],v[4]) } 
if (isLineOfSightClear (v[2],v[3],v[4], x,y,z, true, true, false, true)) then 
if pos[1] and pos[2] then 
dxDrawText (v[1], pos[1],pos[2],pos[1],pos[2], tocolor(v[5],v[6],v[7]), 2, "default-bold" ) 
end 
end 
end 
end 
end) 
  
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...