-
Posts
2,799 -
Joined
-
Days Won
13
Posts posted by </Mr.Tn6eL>
-
-
يب تعودت على لغة ثانية
-
On 16/01/2019 at 05:07, #_iMr,[E]coo said:
سازرع لاحصد .
وأموت لأحيا
-
On 22/02/2019 at 03:48, #_iMr,[E]coo said:
@!#DesTroyeR_,)
function getPlayerInfo ( Player , Type ) if ( isElement ( Player ) ) and ( getElementType ( Player ) == 'player' ) then local Table = { [ 'Name' ] = getPlayerName ( Player ) , [ 'Serial' ] = getPlayerSerial ( Player ) , [ 'Money' ] = getPlayerMoney ( Player ) , [ 'TeamName' ] = getPlayerTeam ( Player ) and getTeamName ( getPlayerTeam ( Player ) ) or '' } if ( not Table [ Type ] ) then return false end return Table [ Type ] end end
أعدت كتابة الفنشكن وخليته يقبل عدد لامحدود من البيانات ويقبل الالمنت داتا
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
On 29/03/2019 at 17:01, KillerX said:السلام عليكم ورحمه الله وبركاتة
امس في القسم الاجنبي عضو سال ازاي يجيب اقرب بيد بالنسبة لنقطة
عطيتو الفنكشن بس حبيت اطوروا اكثر
getNearsetElmFromXYZ
الفنكشن عبارة عن يجيبلك اقرب اليمنت بالنسبة لنقطة معينة
( الساينتكس / syntax ) :
function getNearsetElmFromXYZ( etype , x , y , z )
etype : نوع الاليمنت
x , y , z : احداثيات النقطة
( السورس كود / Source Code ) :
function getNearsetElmFromXYZ( etype , x , y , z ) local elements , positions , element = getElementsByType( etype ) , { } , { } if( ( not elements ) or ( #elements == 0 ) ) then return false end for index = 1 , #elements do positions[ index ] = getDistanceBetweenPoints3D( x , y , z , getElementPosition( elements[ index ] ) ); element[ positions[ index ] ] = elements[ index ]; end return element[ math.min( unpack( positions ) ) ]; end
ودا مثال يجيب معلومات اقرب سيارة بالنسبة لمكان الاعب
addCommandHandler( "getNearsetVeh" , function( plr ) local nearstVehicle = getNearsetElmFromXYZ( "vehicle" , getElementPosition( plr ) ); if( not nearstVehicle ) then return outputChatBox( "There\'s not vehicles" ); end outputChatBox( "Name : " .. getVehicleName( nearstVehicle ) ); outputChatBox( "Model : " .. getElementModel( nearstVehicle ) ); end )
@Master_MTA --> معلش علي اللون الاخضر ما اقدر اقاوم لوول
اختصرها بtable.sort
for index = 1 , #elements do table.insert(element, getDistanceBetweenPoints3D( x , y , z , getElementPosition( elements[ index ] ) ) end table.sort(element) return element[1];
- 2
- 1
-
أبي انتظرني لأحضر الكراسة للذهاب الى الدراسة
- 1
-
On 03/11/2018 at 16:18, iMr.WiFi..! said:
ماكنت اسوي صداقات ايام زمان كنت انسان اعزل.. ولكن بعد ما سويت حساب بالمنتدى بديت اكون بعض الصداقات واغلبها مستمرة حتى الآن والله يديم علينا الصداقة الحلوة
@Master_MTA
@N3xT
@</Mr.Tn6eL>
@Mr.CoR
@#,xiRocKyz
@Dr.Marco
@Rakan#
@coNolel
@H25
@#DesTroeyR
والي ماذكرته موجود في القلب -متى كنت صديقك؟
- 1
-
You should put lines 15-25 outside the render to increase performance
-
كل ماتذكر اني مسوي مرقص بمجانين الشطف وفيه ويسكي بعد ماتشربه تجيك رقصة سكران وانا غاسل يدي
وش ذا الماضي الاسود دشرت حقين السيرفر
On 23/09/2018 at 23:29, ععيونككء اخخر امممأليء ^ said:قالولك الجلاكسي رخيص
جوالي مو جلكسي
ياخي مو كل اندرويد جلكسي
-
8 hours ago, ععيونككء اخخر امممأليء ^ said:
ججلاكسسي
الايفون كذبة اخترعها الاغنياء فصدقها الفقراء
- 1
-
ما شاء الله تابليتو ماشي شغلها
-
معاك حق لكن هذا في البرامترات اللي تعوض قيمة علامة ?
لكن انت حاط مباشرة داخل كود السكل
انصحك تتحقق من وجود ارقام وحروف انكليزية فقط للسيريال
- 1
-
On 20/08/2018 at 01:57, N3xT said:
السلام عليكم ورحمة الله وبركاته
فالفترة الأخيرة لاحظت طلبات كثير على قواعد البيانات عالسيريال وما شابه, فقلت ليه ما اسهل الموضوع وأخليها بكود أسهل بكثير
عموماً نخش عالموضوع سريع سريع ونشوف
-
setSerialData
Syntax:
setSerialData ( string serial, string key, string value )
Source code:
function setSerialData ( serial, key, value ) if ( serial and key and value ) then local database = executeSQLQuery ( "CREATE TABLE IF NOT EXISTS `" .. serial .. "` ( key TEXT, value TEXT )" ) local data = executeSQLQuery ( "SELECT value FROM `" .. serial .. "` WHERE key=?", tostring ( key ) ) local result = false if ( #data == 1 ) then if ( data[1].value ~= value ) then executeSQLQuery ( "UPDATE `" .. serial .. "` SET value=? WHERE key=?", tostring ( value ), tostring ( key ) ) result = true end else executeSQLQuery ( "INSERT INTO `" .. serial .. "` ( key, value ) VALUES ( ?, ? )", tostring ( key ), tostring ( value ) ) result = true end return result end end
getSerialData
Syntax:
getSerialData ( string serial, string key )
Source code:
function getSerialData ( serial, key ) if ( serial and key ) then local database = executeSQLQuery ( "CREATE TABLE IF NOT EXISTS `" .. serial .. "` ( key TEXT, value TEXT )" ) local data = executeSQLQuery ( "SELECT value FROM `" .. serial .. "` WHERE key=?", tostring ( key ) ) local result = false if ( #data == 1 ) then result = data[1].value end return result end end
removeSerialData
Syntax:
removeSerialData ( string serial, string key )
Source code:
function removeSerialData ( serial, key ) if ( serial and key ) then local database = executeSQLQuery ( "CREATE TABLE IF NOT EXISTS `" .. serial .. "` ( key TEXT, value TEXT )" ) local data = executeSQLQuery ( "SELECT value FROM `" .. serial .. "` WHERE key=?", tostring ( key ) ) local result = false if ( #data == 1 ) then executeSQLQuery("DELETE FROM `" .. serial .. "` WHERE key=?", tostring ( key ) ) result = true end return result end end
ان شاء الله تكون مفيدة الوظيفة لكم, في آمان الله
كودك يسبب ثغرة SQL Injection
-
- Popular Post
- Popular Post
تحتاج عنصرين اول شي شريط التمرير والزر حق السحب كما في الصورة
شريط التمرير راح يكون له اربع متغيرات
اللي هي الاحداثيات والطول والعرض
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, -- راح اشرحها بعدين }
وبسطت المفهوم بصورة
Spoilerاما بالنسبة للعملية الحسابية عشان تحريك الزر الازرق بسيطة
اول شي نحتاج نعرف مكان الماوس
راح نستخدم مكان الماوس في عمليتين
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
كذا حلينا المشكلة الأولى
اما المشكلة الثانية هي التوسيط
لما ننقل الزر الازرق لاحداثيات الماوس تصير مشكلة كما في الصورة
Spoilerالحل بسيط ناخذ احداثيات الماوس وننقصها من نص حجم الزر الازرق كما في المعادلة التالية
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
- 4
-
بشكل عام جهازك ضعيف مايشغل العاب
أولا لأنه معالج بنواتين و32 بت
والرامات بطيئة اظن من نوع DDR2
سرعتها قليلة وحجمها قليل
بالنسبة لكرت الشاشة المدمج مع المعالج ابدا مايشغل
الحل اشتري جهاز جديد
- 1
-
طور البي سي حقك مرة قديم فورت نايت لعبة جديدة
الحين تقدر تسوي لك تجميعة تشغل العاب ب600$ دولار بدون الاشياء الجانبية
-
راح يكون عندك أعمدة وصفوف لكل عمود صف فيه عناصر محددة عشان تسوي هذه الطريقة بالخوارزمية التالية
-- ثوابث نحتاجها 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
سأشرح لك الطريقة بالخطوات
أولا نعمل لوب للعواميد عشان نعرض بيانات الصفوف لها
يعني لكل عمود صفوف خاصة فيها واحداثيات
في الللوب الأول نعرض اسم العمود على الشاشة ونحسب مكانه على الشاشة كما وضحنا بالكود
اما باللوب الثاني اننا نسوي لوب داخل اللوب الأول عشان تتكرر العملية لكل عمود
نبدأ نحسب مكان الصف افقياً اي نجعلها تحت العمود الخاص به ونعرضها كما وضحنا بالكود
طبعا الطرق كثيرة لكن هذه ابسطها والله أعلم واعذرني اذ كان هناك خطأ
- 3
-
تهدي واحد ميت
- 2
- 1
-
- 1
-
API اكثر استخداماً في نقل البيانات عبر الانترنت خصوصاً JSON
لأنها أسرع في الوصول للبيانات وأسهل في القراءة والكتابة وتقدر كمان تستخدمها كاوبجكت في الجافاسكربت لانها أصلا اوبجكت جافاسكربت
وكتابة البيانات أقصر من الاكس ام ال وتوفر المساحة
XML اما
تدعم أنواع بيانات كثيرة أكثر من الجسون
البيانات اكثر تنظيماً من الجسون
تقدر تستخدم أكثر من اسم للقيمة عكس الجسون
في رأي جسون أفضل للويب في ارسال البيانات واستقبالها وكمان لتطبيقات الجوال
- 1
- 1
-
جيد لكن في ملاحظات
* مايدعم العربية بالتحديد
* مايمديك تغير مكان المؤشر
* مايدعم Home + End + Tab + ...
* placeholder مايدعم
* جرب تكتب كلام طويل حيطلع برا
التحدي الثاني سوي srcollbar
-
مايحتاج تقول حبيبي
- 1
-
لأن مستحيل النص عندك يعدي 5000 كلمة ومع العلم ان هذا النوع يقبل اكثر من هذا بكثيرtext استخدم
واللغة العربية تاخذ حرفين عكس بسبب utf8
اما بالنسبة للايكات سوي جدول منفصل يكون فيها اي دي التوبك واي دي حساب اللي حط الايك(من جدول حسابات المستخدمين)
بعدين تقدر تجيب اللي اعطى لايكات من الموضوع المحدد عبر الايدي وتقدر تعرف من اعطى لايك عبر جلب معلومات الاي دي لجدول الحسابات
وملاحظة تحقق ان الحساب نفسه ما اعطى لنفس التوبك عشان مايصير تكرار
- 1
-
من لوا الى جافاسكربت
من جافاسكربت الى لوا
mta.triggerEvent
مزيد من المعلومات
https://wiki.multitheftauto.com/wiki/CEF_Tutorial
بهالطريقة سويت الشات الخاص حقي
Spoilerصورة قديمة
بس المطور أحلى ><
بس أهم شي ركز عالحماية امنع المستخدم من حقن اكواد جافاكسربت
- 2
-
الملف مو موجود
-
من ناحية التركيب يمكن ان تكون اكثر من لغة مثل
java, javascript, C#, C++, PHP
لكن من ناحية الفنكشن والبيئة هي جافا
هلاااا
in القسم العام
Posted
ههههه حيا الله كور
زيك من قوة الطفش تذكرت أيام المنتدى هنا