iiv03 Posted August 15, 2019 Share Posted August 15, 2019 (edited) سلآم عليكم مسآعده كل م اجي احاول احط الدآئره علي 270 درجه تجني مثل ب صوره الي آنا ابغاه تجي مثل كذأ الكود function dxDrawCircle( posX, posY, radius, width, angleAmount, startAngle, stopAngle, color, postGUI ) if ( type( posX ) ~= "number" ) or ( type( posY ) ~= "number" ) then return false end local function clamp( val, lower, upper ) if ( lower > upper ) then lower, upper = upper, lower end return math.max( lower, math.min( upper, val ) ) end radius = type( radius ) == "number" and radius or 50 width = type( width ) == "number" and width or 5 angleAmount = type( angleAmount ) == "number" and angleAmount or 1 startAngle = clamp( type( startAngle ) == "number" and startAngle or 0, 0, 270 ) stopAngle = clamp( type( stopAngle ) == "number" and stopAngle or 270, 0, 270 ) color = color or tocolor( 255, 255, 255, 200 ) postGUI = type( postGUI ) == "boolean" and postGUI or false if ( stopAngle < startAngle ) then local tempAngle = stopAngle stopAngle = startAngle startAngle = tempAngle end for i = startAngle, stopAngle, angleAmount do local startX = math.cos( math.rad( i ) ) * ( radius - width ) local startY = math.sin( math.rad( i ) ) * ( radius - width ) local endX = math.cos( math.rad( i ) ) * ( radius + width ) local endY = math.sin( math.rad( i ) ) * ( radius + width ) dxDrawLine( startX + posX, startY + posY, endX + posX, endY + posY, color, width, postGUI ) end return true end function hudcircle() dxDrawCircle(565, 233, 20, 1, 1, 0, 360, tocolor(255, 50, 50)) end addEventHandler("onClientRender", root, hudcircle) Edited August 15, 2019 by liwahadri Link to comment
HassoN Posted August 15, 2019 Share Posted August 15, 2019 بدل هل تعقيد واخرتها يطلع شكلها مب حلو ، جيب صورة دائرة وخليها تلف اسهل بالف مرة Link to comment
iiv03 Posted August 15, 2019 Author Share Posted August 15, 2019 42 minutes ago, HassoN said: بدل هل تعقيد واخرتها يطلع شكلها مب حلو ، جيب صورة دائرة وخليها تلف اسهل بالف مرة المشكله لفه صعبه لو اسويه والمشكله ثاني الصوره اكيد بتفرق ب كل ريزلوشن Link to comment
HassoN Posted August 15, 2019 Share Posted August 15, 2019 1 hour ago, liwahadri said: المشكله لفه صعبه لو اسويه والمشكله ثاني الصوره اكيد بتفرق ب كل ريزلوشن 1) لو بتسويها بطريقتك ذي ، برضو لازم شوية حسابات عشان تعرف تخلي الدائرة ذي تلف ، لازم تقعد تضيف كل شوية على الـ startAngle + stopAngle بصورة تبان كانها تلف و بـ انسيابية 2) حتى طريقتك ذي مابتجي على كل الشاشات طبعاً ، فـ ذي مو نقطة ايجابية لطريقتك dxDrawImage ولو جينا نسوي صورة تلف اسهل بالف مرة من الفنكشن ذا عشان فيه ارقمنت خاص لل روتيشن بالـ حاول تسوي اي شي وبساعدك فيه ان شاء الله Link to comment
iiv03 Posted August 15, 2019 Author Share Posted August 15, 2019 (edited) 6 minutes ago, HassoN said: 1) لو بتسويها بطريقتك ذي ، برضو لازم شوية حسابات عشان تعرف تخلي الدائرة ذي تلف ، لازم تقعد تضيف كل شوية على الـ startAngle + stopAngle بصورة تبان كانها تلف و بـ انسيابية 2) حتى طريقتك ذي مابتجي على كل الشاشات طبعاً ، فـ ذي مو نقطة ايجابية لطريقتك dxDrawImage ولو جينا نسوي صورة تلف اسهل بالف مرة من الفنكشن ذا عشان فيه ارقمنت خاص لل روتيشن بالـ حاول تسوي اي شي وبساعدك فيه ان شاء الله اخوي حسين لو سمحت كيف اسوي الاحمر مثل ب صوره الحين بس علي dxDrawImage لو يتحرك يصير كذا صوره تعبان Edited August 15, 2019 by liwahadri Link to comment
HassoN Posted August 15, 2019 Share Posted August 15, 2019 امسك ذي الصورة وحطها مع الكود ذا local x, y = guiGetScreenSize() local rotation = 0 function renderMyCircle() if (rotation >= 360) then rotation = 0 end rotation = rotation + 1 dxDrawImage(x/2, y-y/10, 70, 70, "circle.png", rotation, 0, 0, tocolor(255, 255, 255, 255), false) end addEventHandler("onClientRender", root, renderMyCircle) Link to comment
iiv03 Posted August 15, 2019 Author Share Posted August 15, 2019 (edited) 8 minutes ago, HassoN said: امسك ذي الصورة وحطها مع الكود ذا local x, y = guiGetScreenSize() local rotation = 0 function renderMyCircle() if (rotation >= 360) then rotation = 0 end rotation = rotation + 1 dxDrawImage(x/2, y-y/10, 70, 70, "circle.png", rotation, 0, 0, tocolor(255, 255, 255, 255), false) end addEventHandler("onClientRender", root, renderMyCircle) قصدي مثل nos او health تتحرك كامل :] شكله ماتنفع الا مع dxDrawCircle Edited August 15, 2019 by liwahadri Link to comment
HassoN Posted August 15, 2019 Share Posted August 15, 2019 تبغاها تتحرك كامل وبعدها توقف يعني؟ وريني مثال مو فاهم منك شي Link to comment
iiv03 Posted August 15, 2019 Author Share Posted August 15, 2019 (edited) 27 minutes ago, HassoN said: تبغاها تتحرك كامل وبعدها توقف يعني؟ وريني مثال مو فاهم منك شي كذا > تصير كذا بعدين< لو اخذت نيترو تتحرك الدآئره زرقاء اتمنى فهمتني المشكله الدآئره شكله خايس من الجوده هل فيه كود او شي يصلح الجوده؟ الكود حقي مسويه if target and getElementType(target) == "vehicle" then localp = getVehicleOccupant(target) else localp = getLocalPlayer() end if(not localp) then return; end local x, y, z = getElementPosition(localp) local pr = getPedRotation(localp) local _,_,playerRotation = getElementRotation(localp) local px,py,pz = getElementPosition(localp) if(getPedOccupiedVehicle(localp)) then local veh = getPedOccupiedVehicle(localp); Edited August 15, 2019 by liwahadri Link to comment
HassoN Posted August 15, 2019 Share Posted August 15, 2019 الدائرة ذي صورة؟ لو صورة عدلها بالفوتوشوب وبالنسبة لطلبك ، ارجع استعمل كودك الاصلي وحاول تعدل بال startAngle, stopAngle لين مايوصل للشكل الي يعجبك Link to comment
iiv03 Posted August 15, 2019 Author Share Posted August 15, 2019 4 minutes ago, HassoN said: الدائرة ذي صورة؟ لو صورة عدلها بالفوتوشوب وبالنسبة لطلبك ، ارجع استعمل كودك الاصلي وحاول تعدل بال startAngle, stopAngle لين مايوصل للشكل الي يعجبك المشكله تحس الخط الي علي الصوره كآنه مرسوم يب هاذي صوره الي ورا الخط الازرق بس الخط الازرق dxdrawcircle هل فيه حل ؟ الكود function dxDrawCircle( x, y, width, height, color, angleStart, angleSweep, borderWidth ) height = height or width color = color or tocolor(255,255,255) borderWidth = borderWidth or 1e9 angleStart = angleStart or 0 angleSweep = angleSweep or 360 - angleStart if ( angleSweep < 360 ) then angleEnd = math.fmod( angleStart + angleSweep, 360 ) + 0 else angleStart = 0 angleEnd = 360 end x = x - width / 2 y = y - height / 2 if not circleShader then circleShader = dxCreateShader ( "circle.fx" ) end dxSetShaderValue ( circleShader, "sCircleWidthInPixel", width ); dxSetShaderValue ( circleShader, "sCircleHeightInPixel", height ); dxSetShaderValue ( circleShader, "sBorderWidthInPixel", borderWidth ); dxSetShaderValue ( circleShader, "sAngleStart", math.rad( angleStart ) - math.pi ); dxSetShaderValue ( circleShader, "sAngleEnd", math.rad( angleEnd ) - math.pi ); dxDrawImage( x, y, width, height, circleShader, 0, 0, 0, color ) end function drawCircleHud() if target and getElementType(target) == "vehicle" then localp = getVehicleOccupant(target) else localp = getLocalPlayer() end if(not localp) then return; end local x, y, z = getElementPosition(localp) local pr = getPedRotation(localp) local _,_,playerRotation = getElementRotation(localp) local px,py,pz = getElementPosition(localp) if(getPedOccupiedVehicle(localp)) then local veh = getPedOccupiedVehicle(localp); dxDrawCircle( 1212, 672, 45, height, tocolor(0,0,255),angleStart,360, 2.5 ) -- dxDrawImageSection(400, 200, 50, 50, 10, 0, 64, 64, 'circle.png', vehiclehealth, 0, 0, tocolor(255,0 ,0)) end addEventHandler("onClientRender", root, drawCircleHud) Link to comment
#\_oskar_/# Posted August 15, 2019 Share Posted August 15, 2019 function createCircle(text,posX,posY,radius,startAngle,stopAngle,color,Sezi) dxDrawCircle(posX,posY,radius, 0,360, tocolor(0,0,0,255), tocolor(0,0,0,255)) dxDrawCircle (posX,posY,radius+Sezi,startAngle,stopAngle,color,tocolor(255,255,255,255),nil, 1) dxDrawCircle(posX,posY, radius, 0,360, tocolor(0,0,0,255), tocolor(0,0,0,255)) dxDrawText(text,posX-30,posY-4,radius+posX,radius+posY,color) end ---- #Code addEventHandler("onClientRender", root, function () local Vehs = getPedOccupiedVehicle(localPlayer) local nitros = getVehicleNitroLevel(Vehs) or 0 if Vehs and nitros then createCircle(math.ceil(nitros*100).."% Nitro",500,400,50,1,nitros/2*725,tocolor(0,5,255,255),5) -- Health Car local Health = getElementHealth (Vehs) Healths = math.ceil(Health/10) createCircle(Healths.."% Health",800,400,50,1,(Health-250)/2,tocolor(0,255,0,255),5) if Healths < 50 then createCircle(Healths.."% Health",800,400,50,1,(Health-250)/2,tocolor(255,0,0,255),5) end end end) قصدك كدا ؟ Link to comment
iiv03 Posted August 15, 2019 Author Share Posted August 15, 2019 (edited) 3 hours ago, #\_oskar_/# said: function createCircle(text,posX,posY,radius,startAngle,stopAngle,color,Sezi) dxDrawCircle(posX,posY,radius, 0,360, tocolor(0,0,0,255), tocolor(0,0,0,255)) dxDrawCircle (posX,posY,radius+Sezi,startAngle,stopAngle,color,tocolor(255,255,255,255),nil, 1) dxDrawCircle(posX,posY, radius, 0,360, tocolor(0,0,0,255), tocolor(0,0,0,255)) dxDrawText(text,posX-30,posY-4,radius+posX,radius+posY,color) end ---- #Code addEventHandler("onClientRender", root, function () local Vehs = getPedOccupiedVehicle(localPlayer) local nitros = getVehicleNitroLevel(Vehs) or 0 if Vehs and nitros then createCircle(math.ceil(nitros*100).."% Nitro",500,400,50,1,nitros/2*725,tocolor(0,5,255,255),5) -- Health Car local Health = getElementHealth (Vehs) Healths = math.ceil(Health/10) createCircle(Healths.."% Health",800,400,50,1,(Health-250)/2,tocolor(0,255,0,255),5) if Healths < 50 then createCircle(Healths.."% Health",800,400,50,1,(Health-250)/2,tocolor(255,0,0,255),5) end end end) قصدك كدا ؟ شوف هنا كيف وشوف حقتي كيف مدري ليش الجوده حق dxDrawCircle خرا آتوقع لازم شيدر؟؟ Edited August 15, 2019 by liwahadri Link to comment
nxFairlywell Posted August 15, 2019 Share Posted August 15, 2019 8 hours ago, liwahadri said: لو اخذت نيترو تتحرك الدآئره زرقاء اتمنى فهمتني المشكله الدآئره شكله خايس من الجوده هل فيه كود او شي يصلح الجوده؟ انت مسوي الدائره بالشادر Link to comment
iiv03 Posted August 15, 2019 Author Share Posted August 15, 2019 7 minutes ago, NX_CI said: انت مسوي الدائره بالشادر الدائره صوره والدائره زرقاء و حمراء = dxDrawCircle Link to comment
nxFairlywell Posted August 15, 2019 Share Posted August 15, 2019 1 minute ago, liwahadri said: الدائره صوره والدائره زرقاء و حمراء = dxDrawCircle يب شادر أعرف السكربت ذا , راح تكون جودة الدائره شوي مو كويسه بس بضبطها واعطيك 1 Link to comment
nxFairlywell Posted August 15, 2019 Share Posted August 15, 2019 function dxDrawShaderCircle( x, y, width, height, color, angleStart, angleSweep, borderWidth ) height = height or width color = color or tocolor(255,255,255) borderWidth = borderWidth or 1e9 angleStart = angleStart or 0 angleSweep = angleSweep or 360 - angleStart if ( angleSweep < 360 ) then angleEnd = math.fmod( angleStart + angleSweep, 360 ) + 0 else angleStart = 0 angleEnd = 360 end x = x - width / 2 y = y - height / 2 if not circleShader then circleShader = dxCreateShader ( "circle.fx" ) end dxSetShaderValue ( circleShader, "sCircleWidthInPixel", width ); dxSetShaderValue ( circleShader, "sCircleHeightInPixel", height ); dxSetShaderValue ( circleShader, "sBorderWidthInPixel", borderWidth ); dxSetShaderValue ( circleShader, "sAngleStart", math.rad( angleStart ) - math.pi ); dxSetShaderValue ( circleShader, "sAngleEnd", math.rad( angleEnd ) - math.pi ); dxDrawImage( x, y, width, height, circleShader, 0, 0, 0, color ) end local sw,sh = guiGetScreenSize(); local x,y=sw/1.2,sh/1.1; local width,height=60,60; addEventHandler("onClientRender",root, function() dxDrawCircle(x,y,(width/2)-2,0,360,tocolor(33,33,33)) dxDrawText("Nitro",x-11.4,y-5.5,x+width,y+height); local vehicle = getPedOccupiedVehicle(localPlayer); if vehicle then circleCounter = (360 * (isVehicleHasNitro(vehicle) and getVehicleNitroLevel (vehicle) or 0)); if isVehicleHasNitro(vehicle) then dxDrawShaderCircle(x,y,width,height,tocolor(0,0,255),0,circleCounter,5); end end end ); function isVehicleHasNitro(vehicle) if vehicle and getElementType(vehicle)=="vehicle" then local upgrades = getVehicleUpgrades (vehicle) for _, upgrade in ipairs ( upgrades ) do if getVehicleUpgradeSlotName(upgrade) == "Nitro" then return upgrade; end end return false end return false end Link to comment
iiv03 Posted August 15, 2019 Author Share Posted August 15, 2019 14 minutes ago, NX_CI said: function dxDrawShaderCircle( x, y, width, height, color, angleStart, angleSweep, borderWidth ) height = height or width color = color or tocolor(255,255,255) borderWidth = borderWidth or 1e9 angleStart = angleStart or 0 angleSweep = angleSweep or 360 - angleStart if ( angleSweep < 360 ) then angleEnd = math.fmod( angleStart + angleSweep, 360 ) + 0 else angleStart = 0 angleEnd = 360 end x = x - width / 2 y = y - height / 2 if not circleShader then circleShader = dxCreateShader ( "circle.fx" ) end dxSetShaderValue ( circleShader, "sCircleWidthInPixel", width ); dxSetShaderValue ( circleShader, "sCircleHeightInPixel", height ); dxSetShaderValue ( circleShader, "sBorderWidthInPixel", borderWidth ); dxSetShaderValue ( circleShader, "sAngleStart", math.rad( angleStart ) - math.pi ); dxSetShaderValue ( circleShader, "sAngleEnd", math.rad( angleEnd ) - math.pi ); dxDrawImage( x, y, width, height, circleShader, 0, 0, 0, color ) end local sw,sh = guiGetScreenSize(); local x,y=sw/1.2,sh/1.1; local width,height=60,60; addEventHandler("onClientRender",root, function() dxDrawCircle(x,y,(width/2)-2,0,360,tocolor(33,33,33)) dxDrawText("Nitro",x-11.4,y-5.5,x+width,y+height); local vehicle = getPedOccupiedVehicle(localPlayer); if vehicle then circleCounter = (360 * (isVehicleHasNitro(vehicle) and getVehicleNitroLevel (vehicle) or 0)); if isVehicleHasNitro(vehicle) then dxDrawShaderCircle(x,y,width,height,tocolor(0,0,255),0,circleCounter,5); end end end ); function isVehicleHasNitro(vehicle) if vehicle and getElementType(vehicle)=="vehicle" then local upgrades = getVehicleUpgrades (vehicle) for _, upgrade in ipairs ( upgrades ) do if getVehicleUpgradeSlotName(upgrade) == "Nitro" then return upgrade; end end return false end return false end آتوقع ماتغير شي Link to comment
nxFairlywell Posted August 15, 2019 Share Posted August 15, 2019 16 minutes ago, liwahadri said: آتوقع ماتغير شي كيف ماتغير شي يعني انت مسويه من قبل ؟ Link to comment
iiv03 Posted August 15, 2019 Author Share Posted August 15, 2019 (edited) 6 minutes ago, NX_CI said: كيف ماتغير شي يعني انت مسويه من قبل ؟ السالفه طلعت من antialias بس فيه مشكله ثاني تصير دائره كامله مساعده بالله كيف احطه علي شكل خط؟ local floor = math.floor function fromColor(col) local r,g,b,a b = col%256 g = floor(col/0x100)%256 r = floor(col/0x10000)%256 a = floor(col/0x1000000)%256 return r,g,b,a end local shader = dxCreateShader( "circle.fx" ) local shaderColCache = {} function dxDrawCircleShader(posX,posY,radius,color1,color2,antialias) assert(type(color1) == "number", "Expected number as color argument to dxDrawCircleShader") if (not color2) or (color2 == color1) then color2 = "def" end local finColor local col1 = shaderColCache[color1] if col1 then local col2 = col1[color2] if col2 then finColor = col2 end end if not finColor then shaderColCache[color1] = shaderColCache[color1] or {} local twoColors = (color2 ~= "def") if twoColors then local r1,g1,b1,a1 = fromColor(color1) local r2,g2,b2,a2 = fromColor(color2) local finR = floor((r1/256)*16)*16 + floor((r2/256)*16) local finG = floor((g1/256)*16)*16 + floor((g2/256)*16) local finB = floor((b1/256)*16)*16 + floor((b2/256)*16) local finA = floor((a1/256)*8)*32 + floor((a2/256)*8)*4 + 2 finColor = tocolor( finR, finG, finB, finA ) else local r,g,b,a = fromColor(color1) local finA = (floor((a/256)*64)*4)%256 finColor = tocolor( r,g,b, finA ) end shaderColCache[color1][color2] = finColor end local antialiasComp = 16777216 if not antialias then antialiasComp = 0 end finColor = finColor + antialiasComp dxDrawImage( posX-radius, posY-radius, radius*2, radius*2, shader, nil, nil, finColor ) end addEventHandler("onClientRender",root, function() dxDrawCircleShader(500,200,60,tocolor(255,255,255),tocolor(255,255,255),1) end ) Edited August 15, 2019 by liwahadri Link to comment
nxFairlywell Posted August 15, 2019 Share Posted August 15, 2019 ممكن تفهمني ايش التغيير اللي حصل في الكود هذا ^ 7 minutes ago, liwahadri said: السالفه طلعت من antialias بس فيه مشكله ثاني تصير دائره كامله مساعده بالله كيف احطه علي شكل خط؟ local floor = math.floor function fromColor(col) local r,g,b,a b = col%256 g = floor(col/0x100)%256 r = floor(col/0x10000)%256 a = floor(col/0x1000000)%256 return r,g,b,a end local shader = dxCreateShader( "circle.fx" ) local shaderColCache = {} function dxDrawCircleShader(posX,posY,radius,color1,color2,antialias) assert(type(color1) == "number", "Expected number as color argument to dxDrawCircleShader") if (not color2) or (color2 == color1) then color2 = "def" end local finColor local col1 = shaderColCache[color1] if col1 then local col2 = col1[color2] if col2 then finColor = col2 end end if not finColor then shaderColCache[color1] = shaderColCache[color1] or {} local twoColors = (color2 ~= "def") if twoColors then local r1,g1,b1,a1 = fromColor(color1) local r2,g2,b2,a2 = fromColor(color2) local finR = floor((r1/256)*16)*16 + floor((r2/256)*16) local finG = floor((g1/256)*16)*16 + floor((g2/256)*16) local finB = floor((b1/256)*16)*16 + floor((b2/256)*16) local finA = floor((a1/256)*8)*32 + floor((a2/256)*8)*4 + 2 finColor = tocolor( finR, finG, finB, finA ) else local r,g,b,a = fromColor(color1) local finA = (floor((a/256)*64)*4)%256 finColor = tocolor( r,g,b, finA ) end shaderColCache[color1][color2] = finColor end local antialiasComp = 16777216 if not antialias then antialiasComp = 0 end finColor = finColor + antialiasComp dxDrawImage( posX-radius, posY-radius, radius*2, radius*2, shader, nil, nil, finColor ) end addEventHandler("onClientRender",root, function() dxDrawCircleShader(500,200,60,tocolor(255,255,255),tocolor(255,255,255),1) end ) الشادر اختلف عن الشادر الأول , الشادر هذا يحط دائره معبئة Link to comment
iiv03 Posted August 15, 2019 Author Share Posted August 15, 2019 (edited) 5 minutes ago, NX_CI said: ممكن تفهمني ايش التغيير اللي حصل في الكود هذا ^ الشادر اختلف عن الشادر الأول , الشادر هذا يحط دائره معبئة آدري بس الخطوط اتشالت بس حين كيف اخليه علي دائره بس قآيلك الخطوطط مو صافيه ب صوره قبل والحين صافيه يعني الخطوط واضح الحين مثل صوره HD Edited August 15, 2019 by liwahadri Link to comment
nxFairlywell Posted August 15, 2019 Share Posted August 15, 2019 4 minutes ago, liwahadri said: آدري بس الخطوط اتشالت بس حين كيف اخليه علي دائره بس قآيلك الخطوطط مو صافيه ب صوره قبل والحين صافيه يعني الخطوط واضح الحين مثل صوره HD أهااا فهمت عليك الحين يعني مشكلتك مع الدائره نفسها مو مع الكود المشكله اني ما اعرف للشادر وهو الشي الوحيد اللي معرقلني في اللعبه دور على كود شادر في المواقع وهذي كلمات دلاليه تساعدك في البحث HLSL, Shaders DirectX9 أدري صعب تفهمها بس مافيه شرح في الويكي للأسف وقليل تحصل ناس تفهم في الشادر 1 Link to comment
iiv03 Posted August 15, 2019 Author Share Posted August 15, 2019 3 minutes ago, NX_CI said: أهااا فهمت عليك الحين يعني مشكلتك مع الدائره نفسها مو مع الكود المشكله اني ما اعرف للشادر وهو الشي الوحيد اللي معرقلني في اللعبه دور على كود شادر في المواقع وهذي كلمات دلاليه تساعدك في البحث HLSL, Shaders DirectX9 أدري صعب تفهمها بس مافيه شرح في الويكي للأسف وقليل تحصل ناس تفهم في الشادر عندي سؤال هل يمدني انسخ اكواد شيدر الثاني ب شيدر ذا وبتجي مشاكل؟ Link to comment
nxFairlywell Posted August 15, 2019 Share Posted August 15, 2019 Just now, liwahadri said: عندي سؤال هل يمدني انسخ اكواد شيدر الثاني ب شيدر ذا وبتجي مشاكل؟ أكيد فيها مشاكل لأن طريقة كتابة الشادر في ام تي اي تختلف عن بقية الشادرز الثانيه Scripting ما أدري صراحة , لكن أنصحك تحط موضوعك بالانجليزية في قسم وتسأل عن الشادر كيف تخليه يشتغل على ام تي اي Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now