Jump to content

</Mr.Tn6eL>

Members
  • Posts

    2,799
  • Joined

  • Days Won

    13

Everything posted by </Mr.Tn6eL>

  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$ دولار بدون الاشياء الجانبية
  12. راح يكون عندك أعمدة وصفوف لكل عمود صف فيه عناصر محددة عشان تسوي هذه الطريقة بالخوارزمية التالية -- ثوابث نحتاجها COL_WIDTH_BY_SINGLE_CHAR = 10 -- هذا ثابت نضربه في حجم نص العمود عشان يعطينا طول يوازي نص العمود COL_MARGIN_RIGHT = 15 -- نعطي مسافة فاصلة بين كل نص عمود ROW_HEIGHT = 24 -- طول الصف local cols = {"#", "name", "score"} local rows = { -- {VALUE_FOR_COLUMN_1, VALUE_FOR_COLUMN_2, VALUE_FOR_COLUMN_3} {"1", "Tn6el", "300000"}, {"2", "Player", "0"}, -- {...} وتضيف المزيد من الصفوف } -- ولاضافة على الشاشة نستخدم local x, y = 0, 0 -- احداثيات القائمة local pcol_x = COL_MARGIN_RIGHT -- متغير يعطينا اخر احداثيات العمود for i=1, #cols do local ctext = cols[i] -- نص العمود -- #text تعطينا طول النص -- ملاحظة اذا كان عربي يعطيك طول النص مرتين فاستخدم وظائف utf8 text(ctext, x+pcol_x, ROW_HEIGHT/2) -- مثال لعرض النص للعمود -- نعرض الصفوف لكل عمود for j=1, #rows do -- local rtext = rows[i] -- نص الصفوف للعمود رقم i local row_y = (j+1)*ROW_HEIGHT -- نعرض الصفوف تحت بعض -- حيث نضرب رقم ترتيب الصف في الطول للصف ويعطينا نتيحة ان جميع الصفوف تحت بعض text(rtext, pcol_x, row_y) -- مثال لعرض النص للصف -- draw rows end -- نحدث احداثيات اخر عمود عشان نستخدمه للمرة القادمة pcol_x += (#ctext*COL_WIDTH_BY_SINGLE_CHAR)+COL_MARGIN_RIGHT (طول النص * ثابت يمثل عرض كل حرف) + المسافة الفاصلة end سأشرح لك الطريقة بالخطوات أولا نعمل لوب للعواميد عشان نعرض بيانات الصفوف لها يعني لكل عمود صفوف خاصة فيها واحداثيات في الللوب الأول نعرض اسم العمود على الشاشة ونحسب مكانه على الشاشة كما وضحنا بالكود اما باللوب الثاني اننا نسوي لوب داخل اللوب الأول عشان تتكرر العملية لكل عمود نبدأ نحسب مكان الصف افقياً اي نجعلها تحت العمود الخاص به ونعرضها كما وضحنا بالكود طبعا الطرق كثيرة لكن هذه ابسطها والله أعلم واعذرني اذ كان هناك خطأ
  13. @UAEpro لاحقني بكل مكان اشوفه بمقترحات اليوتيوب وبعدين اشوفه يعيد تغريدة لي
  14. API اكثر استخداماً في نقل البيانات عبر الانترنت خصوصاً JSON لأنها أسرع في الوصول للبيانات وأسهل في القراءة والكتابة وتقدر كمان تستخدمها كاوبجكت في الجافاسكربت لانها أصلا اوبجكت جافاسكربت وكتابة البيانات أقصر من الاكس ام ال وتوفر المساحة XML اما تدعم أنواع بيانات كثيرة أكثر من الجسون البيانات اكثر تنظيماً من الجسون تقدر تستخدم أكثر من اسم للقيمة عكس الجسون في رأي جسون أفضل للويب في ارسال البيانات واستقبالها وكمان لتطبيقات الجوال
  15. جيد لكن في ملاحظات * مايدعم العربية بالتحديد * مايمديك تغير مكان المؤشر * مايدعم Home + End + Tab + ... * placeholder مايدعم * جرب تكتب كلام طويل حيطلع برا التحدي الثاني سوي srcollbar
  16. لأن مستحيل النص عندك يعدي 5000 كلمة ومع العلم ان هذا النوع يقبل اكثر من هذا بكثيرtext استخدم واللغة العربية تاخذ حرفين عكس بسبب utf8 اما بالنسبة للايكات سوي جدول منفصل يكون فيها اي دي التوبك واي دي حساب اللي حط الايك(من جدول حسابات المستخدمين) بعدين تقدر تجيب اللي اعطى لايكات من الموضوع المحدد عبر الايدي وتقدر تعرف من اعطى لايك عبر جلب معلومات الاي دي لجدول الحسابات وملاحظة تحقق ان الحساب نفسه ما اعطى لنفس التوبك عشان مايصير تكرار
  17. من لوا الى جافاسكربت executeBrowserJavascript من جافاسكربت الى لوا mta.triggerEvent مزيد من المعلومات https://wiki.multitheftauto.com/wiki/CEF_Tutorial بهالطريقة سويت الشات الخاص حقي بس أهم شي ركز عالحماية امنع المستخدم من حقن اكواد جافاكسربت
  18. من ناحية التركيب يمكن ان تكون اكثر من لغة مثل java, javascript, C#, C++, PHP لكن من ناحية الفنكشن والبيئة هي جافا
×
×
  • Create New...