Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 22/09/18 in all areas

  1. Have you read attachElementsOffsets (it's linked in the attachElements wiki page)? Maybe something in there will help.
    2 points
  2. Try this version of MTA: https://nightly.multitheftauto.com/mtasa_xp-1.5.6-full_rc-14484-20180921.exe
    2 points
  3. السلام عليكم ورحمة الله وبركاته ( المود غير مشفر ,) كيف الحال عسـآكم بخير وبـأفضل صحة معي لكم مود صراحة اول مرة احد يسويه طبعا المود ( اختصارات ) الفكره هي ايش؟ ان اي زائر او اي شخص فـ السيرفر يقدر يضيف الاختصار بنفسه . + فيه فلتر لـ الكلام اللي مو كويس . وفيه زرار حذف اختصار يفتح فقط لـ الكونسول. واي لاعب ما معه كونسول ما راح يشوف الزرار المميزات 1 - لوحة مميزة ومنسقه 2 - حفظ الكلام علي SQL 3 - مود حصري 4 - أكتشف بنفسك لـ تحميل المود : http://up.top4top.net/downloadf-3864ijgw1-zip.html طبعأ آولأ آحب اشــكر أخوي وزميلي ماستر علي مساعدته لي وعلي موافقته اني انشر المود بسم الله نبدأ الصور image free hosting host image online picture uploading
    1 point
  4. Hello friends ! Aren't there any easy way to get the offset position of X, Y and Z of an attaching element, that can be used as "attachElements" function's arguments ? Please tell me a way if you know.
    1 point
  5. طيب ليه ما تضيف القيمة على طول للقاعدة ليه لازم جدول؟
    1 point
  6. Podrias explicar mejor lo que tratas de hacer?
    1 point
  7. i didn't see that, thx but how do I set the visibility to him? like a toggle command for it?
    1 point
  8. With the matrix of course: (the offset can be received with the function in @MrTasty his replied) function getPositionFromElementOffset(element,offX,offY,offZ) local m = getElementMatrix ( element ) -- Get the matrix local x = offX * m[1][1] + offY * m[2][1] + offZ * m[3][1] + m[4][1] -- Apply transform local y = offX * m[1][2] + offY * m[2][2] + offZ * m[3][2] + m[4][2] local z = offX * m[1][3] + offY * m[2][3] + offZ * m[3][3] + m[4][3] return x, y, z -- Return the transformed point end https://wiki.multitheftauto.com/wiki/GetElementMatrix or https://wiki.multitheftauto.com/wiki/Matrix
    1 point
  9. My purpose here is teaching and not free scripting. Please help yourself: https://wiki.multitheftauto.com/wiki/GuiCreateButton https://wiki.multitheftauto.com/wiki/AddEventHandler
    1 point
  10. local o = createObject( 2121, 1418.1678466797,-1595.0837402344,13.366353988647 ) shader1 = dxCreateShader("texReplace.fx", 0, 0 , false, "object") red = dxCreateTexture("red.png") dxSetShaderValue( shader1, "gTexture", red ) engineApplyShaderToWorldTexture( shader1, "gTexture", o ) local o1 = createObject( 2121, 1411.8753662109,-1591.5054931641,13.360206604004 ) shader2 = dxCreateShader("texReplace.fx", 0, ,0, false, "object") blue = dxCreateTexture("blue.png") dxSetShaderValue( shader2, "gTexture",blue) engineApplyShaderToWorldTexture( shader2, "gTexture", o1 )
    1 point
  11. If you don't mind, Can i re-publish this topic in Arabic sections? because it really good system and i hope that Arabs use it in some day! Of course all rights will come back to you.
    1 point
  12. ماعليك مني، اهم شي نتيجة مرضية للي بيستخدمه ?
    1 point
  13. تسلم والله ان شاء الله اححم ، وياك ان شاء الله ?
    1 point
  14. اللهم صل وسلم وبارك على نبينا وحبيبنا محمد وعلى آله وصحبه أجمعين
    1 point
  15. انظر ياصديقي . . لايوجد شئ صعب مادام انك تتبع نفسك وماتبي تصير احد ثاني ماتبي تصير شخصية اخري! لأن كل شخص يبرع في " مجاله " فحدد مجالك ابدأ بالاساسيات ومهما كانت اللغة البرمجية لاتستهن بالاساسيات خذ وقتك جدا في تعلم الاساسيات حتي تتمكن من الاساس كليًا. بعدها تعلم المجال الذي تريد تعلمه في اللغه ! ولا تستبق الاحداث وتنظر الي النتائج . . . لا تسأل كثيُرا فقد اقرأ وتعلم من ما تقرأه.
    1 point
  16. @Debo15 #1 you bumped a 10 year old topic, #2 the function has been natively added to MTA.
    1 point
  17. تحتاج عنصرين اول شي شريط التمرير والزر حق السحب كما في الصورة شريط التمرير راح يكون له اربع متغيرات اللي هي الاحداثيات والطول والعرض x, y, w, h راح يكون له متغيرين thumb وزر شريط التمرير اللي اسمه thumb_y اول شي احداثياته y بما اننا راح نسوي شريط تمرير عمودي راح نستخدم الاحداثي والعكس مع الافقي THUMB_S اما المتغير الثاني اللي هو حجمه بما اننا نستخدم ثوابت فالأفضل نستخدم اسم متغير بحجم كبير progress راح يكون عندنا متغير ثاني وهو نسبة المثوية للشريط تكون اسمها يكون كل شي بالجدول التالي SCROLLBAR = { x = 0, y = 0, -- احداثيات الشريط w = 13, h = 480 -- الطول والعرض thumb_y = 0, -- الاحداثيات للزر progress = 0, -- نسبة التقدم THUMB_SIZE = 27, -- حجم الزر hold = true, -- راح اشرحها بعدين } وبسطت المفهوم بصورة اما بالنسبة للعملية الحسابية عشان تحريك الزر الازرق بسيطة اول شي نحتاج نعرف مكان الماوس راح نستخدم مكان الماوس في عمليتين 1- التحقق من ان الماوس داخل المنطقة الرمادية عند الضغط 2- بما اننا نستخدم شريط تمرير عمودي y ننقل الزر الازرق لاحدثيات الماوس راح نستخدم وظيفتين getCursorPosition getKeyState - mouse1(زر الماوس الايسر) وتكون حسابات الطريقة كالآتي hold عند الضغط على المنطقة الرمادية بالزر الايسر بالماوس نسوي متغير لكن عند افلات زر الماوس نلغي المتغير طبعا نحن نريد يفلت زر الماوس باي منطقة شرط يكون ضغط في البداية على المنطقة الرمادي كالآتي hold يكون عملية تحويل المتغير function render() local cx, cy = getCursorPosition() -- نجلب احداثيات الماوس -- نتحقق ان احداثيات الماوس داخل المربع المادي local hovered = cx >= SCROLLBAR.x and cx <= SCROLLBAR.h and cy >= SCROLLBAR.y and cy <= SCROLLBAR.h if hovered and getKeyState "mouse1" then -- نتحقق كمان ان الماوس مضغوط SCROLLBAR.hold = true -- hold نفعل قيمة end if hold and not getKeyState "mouse1" then -- hold اذا الاعب افلت زر الماوس وكان متفعل متغير SCROLLBAR.hold = false -- نلغي المتغير end -- hold if SCROLLBAR.hold then -- اذا تحقق الشرط هذا كما شرحنا سابقا بامكاننا نجري حساباتنا SCROLLBAR.thumb = ... SCROLLBAR.progress = ... end end onClientClick طبعا في طرق كثيرة مثلا باستخدام حدث لكن اخترت هذي عشان يكون كل الحسابات في مكان واحد ننتقل الى المرحلة المعقدة وهي عن الضغط او السحب نريد نقل الزر الازرق الى الاحداثيات المطلوبة لكن في مشاكل الأولى قد يتعدى الزر الازرق المنطقة الرمادية يكون فوق المنطقة او تحتها y نحتاج نعمل الحد الأدنى للإحداثيات وراح يكون اقل حد هو احداثيات المنطقة الرمادية وننقصه من طول الزر الازرق y اما للحد الأقصى هو طول المنطقة الرمادية مجموعة مع احداثيات يكون y : الحد الأدنى y+h-THUMB_SIZE : الحد الأقصى صار كذا عندنا نطاق لمكان الشريط الازرق يوضع فيه راح نستخدم math.max, math.min كذا حلينا المشكلة الأولى اما المشكلة الثانية هي التوسيط لما ننقل الزر الازرق لاحداثيات الماوس تصير مشكلة كما في الصورة الحل بسيط ناخذ احداثيات الماوس وننقصها من نص حجم الزر الازرق كما في المعادلة التالية cy-(THUMB_SIZE/2) يصير كذا حلينا كل المشاكل اللي تتعلق بالنقل تصير المعادلة الحاسبية لاحداثيات الزر الازرق كالتالي --[[ نتأكد ان قيمة احداثيات الماوس الازرق اصغر من الحد الأقصى واكبر من الحد الأدنى لنضعها في نطاق محدد لاتخرح عنه math.min( math.max( احداثيات الزر الازرق, الحد الأدنى ), الحد الأقصى ) ]] SCROLLBAR.thumb_y = math.min(math.max(cy-(t/2), SCROLLBAR.y), SCROLLBAR.y+SCROLLBAR.h-SCROLLBAR.THUMB_SIZE) اما بالنسبة لحساب النسبة المئوية نحتاج نخليه احداثيات الزر الازرق بالنسبة لاحداثيات المنطقة الرمادية يعني لو كانت احداثيات المنطقة الرمادية هي 100 واحداثيات الزر الازرق هي 150 فتصير الاحداثيات 50 بالنسبة الى المنطقة الرمادية y بالمتغير thumb_y يعني نحتاج نطرح المتغير كذا اعطانا قيمة اولى لحساب النسبة المثوية لكن نحتاج الى قيمة قصوى ثابتة وهي طول المنطقة الرمادية منقوصة من حجم الزر الازرق تصير الحسبة كالتالي SCROLLBAR.progress = math.floor((SCROLLBAR.thumb_y-SCROLLBAR.y)/(SCROLLBAR.h-SCROLLBAR.THUMB_SIZE)*100) يكون الكود النهائي كالتالي -- اتجاه شريط التمرير راح يكون عمودي -- y ومتغيرات لاحداثي x يعني راح نستخدم ثوابث لاحداثي SCROLLBAR = { x = 0, y = 0, -- احداثيات الشريط w = 13, h = 480 -- الطول والعرض thumb_y = 0, -- الاحداثيات للزر الازرق progress = 0, -- النسبة المئوية THUMB_SIZE = 32, -- حجم الزر hold = false, -- راح اشرحها بعدين } function render() -- onClientRender local cx, cy = getCursorPosition() -- نجلب احداثيات الماوس -- نتحقق ان احداثيات الماوس داخل المربع المادي local hovered = cx >= SCROLLBAR.x and cx <= SCROLLBAR.h and cy >= SCROLLBAR.y and cy <= SCROLLBAR.h if hovered and getKeyState "mouse1" then -- نتحقق كمان ان الماوس مضغوط SCROLLBAR.hold = true -- hold نفعل قيمة end if hold and not getKeyState "mouse1" then -- hold اذا الاعب افلت زر الماوس وكان متفعل متغير SCROLLBAR.hold = false -- نلغي المتغير end -- hold if SCROLLBAR.hold then -- اذا تحقق الشرط هذا كما شرحنا سابقا بامكاننا نجري حساباتنا --[[ نتأكد ان قيمة احداثيات الماوس الازرق اصغر من الحد الأقصى واكبر من الحد الأدنى لنضعها في نطاق محدد لاتخرح عنه math.min( math.max( احداثيات الزر الازرق, الحد الأدنى ) الحد الأقصى ) ]] SCROLLBAR.thumb_y = math.min(math.max(cy-(t/2), SCROLLBAR.y), SCROLLBAR.y+SCROLLBAR.h-SCROLLBAR.THUMB_SIZE) -- current/max -- المعادلة ذي تعطينة نسبة لشيء بالنسبة لشيء -- current : هي قيمة احداثيات الزر الازرق منقوصة من احداثيات المنطقة الرمادي عشان تعطينا الاحداثيات بالنسبة للمنطقة الرمادية -- max : هي القيمة الثابتة اللي بنينا عليها النسبة المئوية -- يكون الناتج نضربه ب100 يعطينا النسبة المئوية -- math.floor يعطينا رقم بدون كسور SCROLLBAR.progress = math.floor((SCROLLBAR.thumb_y-SCROLLBAR.y)/(SCROLLBAR.h-SCROLLBAR.THUMB_SIZE)*100) end -- الزر الازرق dxDrawRectangle(SCROLLBAR.x, SCROLLBAR.thumb_y, SCROLLBAR.w, SCROLLBARTHUMB_SIZE, 0x03a9f4ff) -- شريط التمرير اللي هي المنطقة الرمادية dxDrawRectangle(SCROLLBAR.x, SCROLLBAR.y, SCROLLBAR.w, SCROLLBAR.h, 0xb3b3b3ff) -- النسبة المئوية dxDrawText(SCROLLBAR.progress, SCROLLBAR.x, SCROLLBAR.y, SCROLLBAR.x+w, SCROLLBAR.y+SCROLLBAR.h, 0xffffffff, 1, font, "center", "center") end
    1 point
  18. اذا كان عندك المودات معليك الا تحذف كود setElementDimension او setElementInteriors رح تلقى الكود تحت creatMarker بالتوفيق (:
    1 point
  19. setElementDimension + setElementInterior
    1 point
  20. المكتبه حقته ومودات السيرفر ب ٥٥٠ دولار ولا باعع مسكت معه وعيا يبيعني ههههههه
    0 points
×
×
  • Create New...