Jump to content

</Mr.Tn6eL>

Members
  • Posts

    2,799
  • Joined

  • Days Won

    13

</Mr.Tn6eL> last won the day on August 2 2022

</Mr.Tn6eL> had the most liked content!

Details

  • Gang
    [ SH!5-AR ], [M.O]
  • Location
    Home

Recent Profile Visitors

4,783 profile views

</Mr.Tn6eL>'s Achievements

Foot Soldier

Foot Soldier (41/54)

380

Reputation

  1. ههههه حيا الله كور زيك من قوة الطفش تذكرت أيام المنتدى هنا ?
  2. أعدت كتابة الفنشكن وخليته يقبل عدد لامحدود من البيانات ويقبل الالمنت داتا PLAYER_DATA = { "serial", "money", "team" = function(player) local team = getPlayerTeam(player) return team and getTeamName(team) end, "&level", "&clan", "name", "wantedLevel", "&kills", tag = function(player) return getPlayerName(player):match "^%b[]" end, -- u cann add more... -- x = getPlayerX -- &x = getElementData(player, x) -- x() = custom function } function getPlayerInfo(player) if isElement(player) and getElementType(player) == "player" then local data = [] for k, v in pairs(PLAYER_DATA) do local pre = v:sub(1, 1) == "&" if pre then data[v:sub(2)] = getElementData(player, v) elseif type(v) == "function" then data[k] = v(player) else data[v] = _G["getPlayer"..v:gsub("^%a", string.upper)](player) end end return data end end اختصرها بtable.sort for index = 1 , #elements do table.insert(element, getDistanceBetweenPoints3D( x , y , z , getElementPosition( elements[ index ] ) ) end table.sort(element) return element[1];
  3. أبي انتظرني لأحضر الكراسة للذهاب الى الدراسة?
  4. You should put lines 15-25 outside the render to increase performance
  5. كل ماتذكر اني مسوي مرقص بمجانين الشطف وفيه ويسكي بعد ماتشربه تجيك رقصة سكران وانا غاسل يدي وش ذا الماضي الاسود دشرت حقين السيرفر ? جوالي مو جلكسي ياخي مو كل اندرويد جلكسي??
  6. الايفون كذبة اخترعها الاغنياء فصدقها الفقراء
  7. ما شاء الله تابليتو ماشي شغلها
  8. معاك حق لكن هذا في البرامترات اللي تعوض قيمة علامة ? لكن انت حاط مباشرة داخل كود السكل انصحك تتحقق من وجود ارقام وحروف انكليزية فقط للسيريال
  9. تحتاج عنصرين اول شي شريط التمرير والزر حق السحب كما في الصورة شريط التمرير راح يكون له اربع متغيرات اللي هي الاحداثيات والطول والعرض 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
  10. بشكل عام جهازك ضعيف مايشغل العاب أولا لأنه معالج بنواتين و32 بت والرامات بطيئة اظن من نوع DDR2 سرعتها قليلة وحجمها قليل بالنسبة لكرت الشاشة المدمج مع المعالج ابدا مايشغل الحل اشتري جهاز جديد
  11. طور البي سي حقك مرة قديم فورت نايت لعبة جديدة الحين تقدر تسوي لك تجميعة تشغل العاب ب600$ دولار بدون الاشياء الجانبية
×
×
  • Create New...