Popular Post iMr.WiFi..! Posted July 14, 2017 Popular Post Share Posted July 14, 2017 (edited) بسم الله الرحمن الرحيم سلام عليكم ورحمة الله وبركاتة كيف الحال ؟ ان شاء الله طيبين اليوم قررت افتح موضوع بسيط وحلو يفيد المبتدئين والمتوسطين اننا نشارك ببعض المعلومات البرمجية مع أضافة مثال كمثال : Spoiler loadstring هذي فايدتها جداً مهمة لأن تكتب الاكواد بسترنق مافهمت loadstring ( " return ( 1 + 1 ) " ); هذا الفنكشن بيفيدك اذا تبي تجيب فنكشن بسترنق او تيبل او اي شيء ان كان .. local functionName = "givePlayerMoney" loadstring ( " ".. functionName .. " ( 12345 ) " ); مثال آخر : Spoiler unpack يستعمل في فك الجدول مثال : mynumbers = { "1", "2", "3" }; outputChatBox ( unpack ( mynumbers ) ); --[[ راح يطلع : 1 2 3 ]] واتمنى انكم تحطون معلومات مهمة مو معلومات عادية مثل Spoiler guiSetVisible تستعمل في اخفاء اللوحة وفي أمان الله Edited July 14, 2017 by iMr.WiFi..! 5 1 Link to comment
Rockyz Posted July 14, 2017 Share Posted July 14, 2017 وعليكم السلام الفكرة حلوة لكن اتوقع ان القسم غلط Link to comment
iMr.Omar Posted July 14, 2017 Share Posted July 14, 2017 (edited) وعليكم السلام ورحمة الله وبركاته .. موضوع مفيد , شكرا لك , وظيفة : executeCommandHandler لأيسمح لك بأستخدام اوامر اللعبة مثلأ executeCommandHandler ( "time" ) -- خطأ executeCommandHandler ( "report" ) -- صح إن شاء الله وصلت المعلومة . Edited July 14, 2017 by iMr.Omar 1 Link to comment
iMr.WiFi..! Posted July 14, 2017 Author Share Posted July 14, 2017 (edited) 15 minutes ago, iMr.Omar said: وعليكم السلام ورحمة الله وبركاته .. موضوع مفيد , شكرا لك , وظيفة : executeCommandHandler لأيسمح لك بأستخدام اوامر اللعبة مثلأ executeCommandHandler ( "time" ) -- خطأ executeCommandHandler ( "report" ) -- صح إن شاء الله وصلت المعلومة . لو تحط اوامر اللعبة الممنوعة .. كنت بتفيد اكثر , علعموم شكراً على المشاركة 24 minutes ago, #,+( _xiRoc[K]; > said: وعليكم السلام الفكرة حلوة لكن اتوقع ان القسم غلط لاتنسى في نصور الذيب ينقل الموضوع بلمحة ,, loadBrowserURL اذا حطيت رابط غير محمي او ماعنده شهادة امان , او بدقة ماهو https: الفنكشن ماراح يشتغل معك الا بحالة ان كانت الملفات داخل المود راح يشتغل الفنكشن معك توضيح اكثر : loadBrowserURL ( browser, "http://www.lolnexus.com" ) -- خطأ loadBrowserURL ( browser, "https://www.youtube.com" ) -- صح loadBrowserURL ( browser, "http://mta/"..getResourceName( getThisResource () ) .. "/index.html" ) -- صح --- ^^ للي مايعرف ثالث واحدة تستخدم عشان تفتح ملفات داخل السيرفر عن طريق اسم المود Edited July 14, 2017 by iMr.WiFi..! 2 Link to comment
Rockyz Posted July 14, 2017 Share Posted July 14, 2017 مايصير تسوي تريقر للكلنت مباشرة اذا استخدمت فنشكن 'onResourceStart' مثال : -- #Server Side : addEventHandler ( "onResourceStart", root, function ( ) for i, v in ipairs ( getElementsByType ( "player" ) ) do triggerClientEvent ( "outtt", v ) end end ) -- #Client Side : addEvent ( "outtt", true ) addEventHandler ( "outtt", root, function ( ) outputChatBox ( "Test" ) end ) بيطلع في الدي بق : ERROR : Server triggered clientside event outtt, but event is not added clientside 2 Link to comment
#BrosS Posted July 14, 2017 Share Posted July 14, 2017 gettok تستخدم لفصل السترنج على حسب الرقم اللي تحدده و الرمز /الحرف اللي تفصل به مثال : local theString = "666, 911, 100" local result = gettok(theString,2,',') outputChatBox(result) -- 911 مثال اخر local kkk = "Why im 9 wasting 9 my time" local weeb = gettok(kkk,2,'9') outputChatBox(weeb) -- wasting 2 Link to comment
</Mr.Tn6eL> Posted July 15, 2017 Share Posted July 15, 2017 عندي ملعومات وايد لك باختار لكم الاسهل اذا كان اول ارقمنت هو جدول او ستنرق يمكنك استدعائها بدون اقواس مثال print "Hello World" print(unpack{1, 2, 3)) print{1, 2} -- = print("Hello World") print(unpack({1, 2, 3})) print({1, 2}) مع وظائف السترنق oopيمكنك استخدام ال مثال local s = "123" print(s:len()) print(s:sub(2)) function string.prepend(s, s2) return s2..s end print(s:prepend("0")) -- 0123 -- or print(string.prepend(s, "0")) -- 0123 3 Link to comment
Master_MTA Posted July 15, 2017 Share Posted July 15, 2017 13 minutes ago, </Mr.Tn6eL> said: عندي ملعومات وايد لك باختار لكم الاسهل اذا كان اول ارقمنت هو جدول او ستنرق يمكنك استدعائها بدون اقواس مثال print "Hello World" print(unpack{1, 2, 3)) print{1, 2} -- = print("Hello World") print(unpack({1, 2, 3})) print({1, 2}) مع وظائف السترنق oopيمكنك استخدام ال مثال local s = "123" print(s:len()) print(s:sub(2)) function string.prepend(s, s2) return s2..s end print(s:prepend("0")) -- 0123 -- or print(string.prepend(s, "0")) -- 0123 في غلطه بسيطه print(unpack{1, 2, 3)) مسكر التيبل بطريقه خطا +_+ لكن معلومات مفيده 1 Link to comment
iMr.WiFi..! Posted July 15, 2017 Author Share Posted July 15, 2017 (edited) في معلومة نادر ما أحد يعرفها عن Meta Tables والي هي self مثال : Spoiler function aWifi:OutPut ( ) print (self); end ("DD"):OutPut ( ) --[[ بيطلع بالديبق : DD ]] مثال اخر Spoiler i = 0; function aWifi:OutPut ( ) i = i + 1; print ( self.."_"..i ); end ("DD"):OutPut ( ) ("BB"):OutPut ( ) --[[ بيطلع بالديبق : DD_1 BB_2 ]] أتمنى من كل واحد يطرح معلوماته ويشاركه حيث يستفيد الكل Edited July 15, 2017 by !#NssoR_) Modifed as requested. Link to comment
</Mr.Tn6eL> Posted July 15, 2017 Share Posted July 15, 2017 امثلتك كلها غلط print self; -- مايمديك تسوي كذا يجيك سينتاكس ايرور ونفس الشي مع "DD":OutPut ( ) لازم تحط السترنق بين اقواس ("DD"):OutPut() 1 Link to comment
iMr.WiFi..! Posted July 15, 2017 Author Share Posted July 15, 2017 2 hours ago, </Mr.Tn6eL> said: امثلتك كلها غلط print self; -- مايمديك تسوي كذا يجيك سينتاكس ايرور ونفس الشي مع "DD":OutPut ( ) لازم تحط السترنق بين اقواس ("DD"):OutPut() غريبة لانه قد زبط معي .. علعموم @!#NssoR_) أتمنى تعدل المثال الاول الى : function aWifi:OutPut ( ) print (self); end ("DD"):OutPut ( ) --[[ بيطلع بالديبق : DD ]] والمثال الثاني الى : i = 0; function aWifi:OutPut ( ) i = i + 1; print ( self.."_"..i ); end ("DD"):OutPut ( ) ("BB"):OutPut ( ) --[[ بيطلع بالديبق : DD_1 BB_2 ]] == مشكور تنطيل على التنبيه : ) 2 Link to comment
Popular Post #CroSs Posted July 18, 2017 Popular Post Share Posted July 18, 2017 يمكن قليل إلي يعرفوها for بشرح معلومة عن اللوب :شيء مثل كذا ،for أغلبنا يعرف عن كيف تسوي لوب رقمي باللوب for var = startingIndex, endingIndex, increament_discreament do end ipairsو pairs نستخدمه غالبا مع الوظيفة for ثاني للوب syntax لكن في :وإلي هو for result1, result2, r3, ... in iterator, argument1, arg2 do end تنبيه: ما يصير تحط العملية ... في هذي الحالة، حطيتها لأوضح انك تقدر تستقبل بيانات قد ما تبي والإستقبال هو أنك تستلم البيانات المرجعة من الوظيفة وتحفظها، سواء بمتغير أو جدول. في حالتنا نحفظها في متغيرات لو قلت الكلمة تمرير أعرف أني أقصد هو أنك ترسل بيانات للوظيفة، غالبا البيانات بتحطهم بين الأقواس ،المهم for بمعنى حلقة، هي عبارة عن وظيفة يسموها حلقة لما تستعملها باللوب iterator الـ كيف؟ في هذي الحالة for اولًا لازم نعرف طريقة عمل اللوب ولازم تحط على الأقل متغير واحد ،for في متغيرات لنستخدمها داخل نطاق اللوب interator هو تعريف البيانات المستقبلة من الحلقة in إلي على يسار الكلمة أما إلي على يمينها، تكون أول قيمة هي الحلقة إلي تبي تستدعيها وهي إجبارية لأن اللوب معتمد عليها، فلازم تحطها (أما القيم الباقية فهي البيانات إلي بتمررها للحلقة وقت استدعائها، وتقدر تحط 2 كحد أقصى، ولكن ما بيظهر غلط لو حطيت أكثر، لكن بتم استبعادهم (كأنك ما حطيتهم اوك، في شيء لازم نوضحه هنا متى يتم استدعاء الحلقة؟ أو حتى تُستخدَم كل الذاكرة المتوفرة، في ذاك الوقت، اللوب يوقف، أو أن البرنامج يوقف كله إذا استُخدمَت كل الذاكرة المتوفرة nil ببساطة، يتم استدعائها من بداية اللوب ويتكرر الاستدعاء إلى ما لا نهاية حتى توقف الحلقة عن إرجاع أي قيمة أو ترجع :وهي ،for في آلية معينة يتبعها اللوب أول ما يبدأ اللوب، لوا تستدعي الحلقة مع تمرير لها القيم إلي بعدها إذا وجد، ولما تنتهي الحلقة من التنفيذ، القيم إلي رجعتها الحلقة، لوا تعرفهم بالمتغيرات إلي حطيتهم على اليسار، ولازم تعرف أن أي قيمة زايدة سيتم استبعادها، بمعنى مثلا لو حطيت متغيرين والحلقة ترجع 3 قيم، القيمة الثالثة سيتم استبعادها، نفس الآلية تحدث مع استقبال عادي لبيانات وظيفة عادية هذا إلي يصير في الدورة الأولى للوب، أما من الدورة الثانية ورايح يصير تغير، وأحتاجك تركز هنا شوي للتوضيح: المقصود بالدورة الثانية هو أن تقوم لوا باستخراج الكود الخاص باللوب للمرة الثانية ،المهم إلي يصير في هذي المرحلة من اللوب هو أن أول قيمة رجعتها الحلقة من قبل في الدورة السابقة (افترض أن الدورة السابقة هي الأولى والحين احنا داخلين بالثانية) يتم إستخدامها كبرامتر ثاني بالاستدعاء الثاني للحلقة طيب والبرامتر الأول؟ (البرامتر الأول هو القيمة إلي حطيتها بعد الحلقة مباشرة (إلي في البداية for result1, result2, r3, ... in iterator, argument1, arg2 do end argument1 فمثلا، بالنسبة لهذا الكود القيمة هي قيمة المتغير طيب وإذا ما حطيتها؟ nil ببساطة، لوا بتعتبرها (الزبدة، الاستدعاء بالدورة الأولى للحلقة يكون كذا (لو افترضنا iterator(argument1, arg2) من الدورة الثانية ورايح يكون الاستدعاء كذا iterator(argument1, result1) يكون كذا argument1 لو مافي iterator(nil, result1) بنوضح كل هذا الكلام بتطبيقات function enumerateToHundred(_, number) if number == nil then number = 0 end if number < 100 then number = number + 1 return number end end for number in enumerateToHundred do print("Current number is: " .. number) end لو جربت هذا الكود، راح يحسب لك من الواحد للمئة وش إلي يصير بالضبط؟ أولًا، حطيت _ في البرامتر الأول للحلقة، لأن هذا يعبر عن القيمة الثانية (القيمة الأولى هي الحلقة)، وبما أن القيمة الثانية ثابتة ما تتغير من بداية اللوب، فأنا ما ابيها (عادة المبرمجين يحطون _ عشان يتفادون اي قيمة ما يبونها، لأن ماله داعي يحطون اسم معين)، في هذي الحالة، أنا ابي القيمة الثالثة إلي اقدر اغيرها كيف ما ابي، وإلي ترجع لي قيمتها السابقة (مو شرط، لكن ما دام أني ارجعها هي نفسها فترجع لي قيمتها السابقة) عشان اقدر ازود عليها وارجعها من جديد، وهكذا المهم، إلي يصير هو :وبدون تمرير أي قيمة، الاستدعاء (كافتراض) بكون شيء مثل كذا enumerateToHundred اللوب بالدورة الأولى يستدعي الحلقة local number = enumerateToHundred(nil, nil) فبالتالي الشرط بيتحقق وبتصير قيمته صفر، بعدها نتحقق أنه أقل من مئة، وإلي شيء طبيعي بيتحقق، ونزود عليه واحد، فبصير واحد، ونرجعه ،nill هي number لأن قيمة المتغير تمام، هذا في المرة الأولى الرقم يكون واحد nil من اللوب الثاني ورايح يتم اتباع طريقة مختلفة شوي، إلي هي ياخذ أول قيمة مرجعة ويحطها بالبرامتر الثاني، أما البرامتر الأول، فهو القيمة الثانية، وبما أنها غير موجودة، بتكون قيمتها وبكون شيء مثل كذا local number = enumerateToHundred(nil, 1) بنفس الآلية، يستدعي الحلقة، وينفذ الكود، وتقدر تتوقع أن النتيجة بتكون اثنين من الكود ويستمر هذا الشيء، حتى يوصل للدورة رقم 101 قبل ما ينفذها، الرقم السابق أكيد بكون 100 وبكون شيء مثل كذا local number = enumerateToHundred(nil, 100) هنا يتم استدعاء الحلقة، وفقًا للكود، الشرط ما يتحقق، إلي هو أن 100 أقل من 100، وبذلك، الوظيفة ما ترجع شيء، ويوقف اللوب وصلنا لنهاية الشرح تقريبًا، عسى ما طولنا عليكم هذا الكلام يشرح الطريقة هذي بعمل اللوب local t = { 1, 2, 3 } for key, value in next, t do print(key, value) end (next هو نفسه pairs لأن اصلًا الـ) pairs هذي الطريقة نفسها بالضبط بطريقة الـ next للي ما يعرف وش تسوي الوظيفة ببساطة، ترجع لك المفتاح والقيمة إلي بعد مفتاح معين في الجدول Syntax: object key, object value next(table[, object key]) table = الجدول إلي تبي تطبق عليه الوظيفة key = المفتاح إلي تبي تجيب المفتاح إلي بعده وقيمته، لو ما خليته، برجع أول مفتاح بالجدول يعني كائن، والمعنى منه هو أي نوع من البيانات object :ملاحظة ملاحظة: مو دائمًا تقدر تعرف ترتيب المفاتيح، الترتيب بالكود ما بسوي شيء، حطيت ذا اول أو حطيت ذاك أخير، يمكن الأخير يطلع الأول تقدم المفاتيح الرقمية على أنواع أخرى، (بس لكن لو حطيتهم بالترتيب في الجدول من البداية، وبعدها حطيت المفاتيح من الأنواع الثانية)، لو سويت شيء، مثل مفتاح رقمي أول وثالث وفي نصهم من نوع ثاني، بتصير خربطة next في العادة الوظيفة ،المهم الحين بنشرح آلية عمل هذا الكود local t = { 1, 2, 3 } for key, value in next, t do print(key, value) end :ما بطول كثير هنا، إلي يصير ببساطة كذا :المرة الأولى local key, value = next(t, nil) يرجع المفتاح 1 والقيمة 1 :المرة الثانية local key, value = next(t, 1) :المرة الثالثة local key, value = next(t, 2) :المرة الرابعة local key, value = next(t, 3) ويوقف اللوب nil ترجع next المرة الرابعة، بعد المفتاح 3، مافي مفتاح ثاني، فالحلقة next فمثل ما قلت لكم، هي نفسها pairs أما بالنسبة لـ nilوالجدول و next الوظيفة ترجع لك الوظيفة ،pairs لما تستخدم الوظيفة ،فيعني لما تسوي كذا local t = { 1, 2, 3 } for key, value in pairs(t) do print(key, value) end أنت كأنك مسوي كذا local t = { 1, 2, 3 } for key, value in next, t, nil do print(key, value) end ما فرق هنا ما تأثر، سواء حطيتها ولا لا nil ملاحظة: الـ pairs هذي وظيفة سهلة، لكنها تتبع آلية مختلفة عن ipairs وبالنسبة لـ :آلية عملها كالتالي function _pairs(table) return function(table, index) index = index + 1 local value = table[index] if value then return value end end, table, 0 end وأعتقد أن تنطيل طرحها من قبل وخلص الموضوع، لول .إذا ما فهمت ارجع أقرأ مرة ثانية، شيء عادي إذا ما فهمت من اول مرة 5 1 Link to comment
#CroSs Posted July 18, 2017 Share Posted July 18, 2017 false اخر كود المفروض يكون كذا، عشان ما يفشل التحقق مع قيم ال function _pairs(table) return function(table, index) index = index + 1 local value = table[index] if value ~= nil then return index end end, table, 0 end 3 Link to comment
Doffy Posted July 21, 2017 Share Posted July 21, 2017 معلومات رائعة من شخص اروع ♥ واصل الي الامام لا توقف .. Link to comment
Ahmed_Negm Posted July 21, 2017 Share Posted July 21, 2017 تصدق لسا فاهم معني loadString و unpack وشكرآ لك انت مفيد وخوادمك ايضآ Link to comment
coNolel Posted July 21, 2017 Share Posted July 21, 2017 هل تعلم ان الحوت ؟.... امزح امزح فيه حركة لو تبي تكتب مثلا سترنق طويل وفيه مسافات من اف8 ولا عبر " / " لو تسويه بدون الحركة ذي بياخد اول كلمة بس مثال : function sTeamName(thePlayer, cmdName, TeamNumber, newTeam ) local playerAccount = getPlayerAccount(thePlayer) local playerAccName = getAccountName(playerAccount) if isObjectInACLGroup ("user."..playerAccName, aclGetGroup("Admin") ) then if TeamNumber == "1" then homeName = newTeam setTeamName ( team[1], homeName ) triggerClientEvent(thePlayer, "updateNameS1", getRootElement(), homeName ) outputChatBox ("You have successfully changed the team name to ".. homeName, thePlayer) elseif TeamNumber == "2" then enemyName = newTeam setTeamName ( team[2], enemyName ) triggerClientEvent(thePlayer, "updateNameS2", getRootElement(), enemyName ) outputChatBox ("You have successfully changed the team name to ".. enemyName, thePlayer) end else outputChatBox("You don't have rights !", thePlayer) end end addCommandHandler("stn", sTeamName) لو تكتب مثلا في اف 8 : stn 1 hey there guys بياخد hey ويسحب على الباقي ف لذلك عوض ما تحط 8465 أرقمنت للكلمات نستعمل ... function sTeamName(thePlayer, cmdName, TeamNumber, ... ) local playerAccount = getPlayerAccount(thePlayer) local playerAccName = getAccountName(playerAccount) if isObjectInACLGroup ("user."..playerAccName, aclGetGroup("Admin") ) then if TeamNumber == "1" then homeName = table.concat( {...}, " " ) setTeamName ( team[1], homeName ) triggerClientEvent(thePlayer, "updateNameS1", getRootElement(), homeName ) outputChatBox ("You have successfully changed the team name to ".. homeName, thePlayer) elseif TeamNumber == "2" then enemyName = table.concat( {...}, " " ) setTeamName ( team[2], enemyName ) triggerClientEvent(thePlayer, "updateNameS2", getRootElement(), enemyName ) outputChatBox ("You have successfully changed the team name to ".. enemyName, thePlayer) end else outputChatBox("You don't have rights !", thePlayer) end end addCommandHandler("stn", sTeamName) table.concat والفنكشن ذا عظيم الحين مهما كان طول السترنق اقصد مهما كانت من المسافات بياخدها كلها أتمنى الفكرة وصلت ,_, ما اعرف اشرح 1 Link to comment
1337.Ibrahim Posted July 21, 2017 Share Posted July 21, 2017 @coNolel يعطيك العافية 1 Link to comment
coNolel Posted July 21, 2017 Share Posted July 21, 2017 Just now, Talis said: @coNolel يعطيك العافية هههههههههههههههههههه الله يعافيك 1 Link to comment
</Mr.Tn6eL> Posted July 22, 2017 Share Posted July 22, 2017 21 hours ago, coNolel said: الأفضل تفهمها لهم بطريقة واضحة ... تعطيك الارقمنتات print مثلا عندك وظيفة تقدر تسوي عدد لانهائي من الطباعات print(1, 2, 3, 4, ...) كيف ؟ باستخدام الثلاث النقاط هذي ويكون عملها بالطريقة هذي function myprint(...) local output = "" for k, v in ipairs({...}) do output = output..v.."\t" end return print(output) end myprint(1, 2, 3, 4) بعض الامثلة للتوضيح function abc(x, ...) if x == 1 then return print(...) end end abc(1, 2, 3) -- 2, 3 function add_to_x(x, ...) local sum = x for k, v in ipairs({...}) do sum = sum+v end return sum end print(add_to_x(10, 5, 5, 4, 6)) -- 10+5+5+4+6 = 30 select مثلا تقدر تستخدمها مع function get_number_2_of_args(...) return select(2, ...) end print(get_number_2_of_args("foo", "bar")) -- bar مثلا تقدر تعرف متغير عليها function declare_xyz_as(...) x, y, z = ... end declare_xyz_as(1, 2, 3, 4) print(x, y, z) -- لاننا حددنا ثلاث متغيرات للتعريف لذا 4 لن تتعرف وتقدر تتحقق من عدد الارقمنات بالفنكشن معها i function print_yes_if_arg_count_eq_3(...) if #{...} == 3 then print("yes") end end print_yes_if_arg_count_eq_3(1, 2, 3) 2 Link to comment
iMr.WiFi..! Posted September 11, 2017 Author Share Posted September 11, 2017 On ٢١/٧/٢٠١٧ at 14:17, Ahmed_Negm said: تصدق لسا فاهم معني loadString و unpack وشكرآ لك انت مفيد وخوادمك ايضآ اعتذر مالاحظت ردك loadString تكتب الاكواد على شكل سترنق loadString ( "print ( 'd' ) " ) فيها فوائد اخرى بس عطيتك مثال بسيط اما بنسبة ل unpack من اسمها واضح تفك القيم من الجدول كأنها تشيل القوسين المعوجين {} local x,y,z = unpack ( { 1, 2, 3 } ) -- Result : local x,y,z = 1, 2, 3 -- Another Example local NumberTable = { 4, 5, 6 } local x,y,z = unpack ( NumberTable ) -- Result : local x,y,z = 4, 5, 6 -- Last Example : local NumberTable = { 42, 51, 46 } local x,y,z = unpack ( NumberTable ) print ( x..","..y..",".. z ) -- Result : "42, 51, 46" 1 Link to comment
WTF_ Posted September 12, 2017 Share Posted September 12, 2017 On 11/09/2017 at 17:59, iMr.WiFi..! said: اعتذر مالاحظت ردك loadString تكتب الاكواد على شكل سترنق loadString ( "print ( 'd' ) " ) فيها فوائد اخرى بس عطيتك مثال بسيط اما بنسبة ل unpack من اسمها واضح تفك القيم من الجدول كأنها تشيل القوسين المعوجين {} local x,y,z = unpack ( { 1, 2, 3 } ) -- Result : local x,y,z = 1, 2, 3 -- Another Example local NumberTable = { 4, 5, 6 } local x,y,z = unpack ( NumberTable ) -- Result : local x,y,z = 4, 5, 6 -- Last Example : local NumberTable = { 42, 51, 46 } local x,y,z = unpack ( NumberTable ) print ( x..","..y..",".. z ) -- Result : "42, 51, 46" شكرا لك أخوي وي في والله فهمت من شرحك كثير و أفدتني بس لو توريني أمثلة أكثر بعد إذنك مثال جدول كبير هل نفس الشي وشكراا لك Link to comment
iMr.WiFi..! Posted September 12, 2017 Author Share Posted September 12, 2017 1 minute ago, WTF_ said: شكرا لك أخوي وي في والله فهمت من شرحك كثير و أفدتني بس لو توريني أمثلة أكثر بعد إذنك مثال جدول كبير هل نفس الشي وشكراا لك Tables = { { 1,5 }, { 2,6 } } -- نسوي جدول ثم نسوي جدول داخله قيمتين فيها رقمين local NumberTable, NumberTable2 = unpack ( Tables ) -- نفك الجدول الي داخل جدول Tables -- Result : local NumberTable, NumberTable2 = { 1,5 }, { 2,6 } -- النتيجة local number1,number5,number2,number6 = unpack ( NumberTable ), unpack ( NumberTable2 ) -- نفك الجداول ونحط الارقام الي فيها -- Result : local number1,number5,number2,number6 = 1,5,2,6 -- النتيجة print ( number1,number5,number2,number6 ) -- Result : "1 5 2 6" عفوا في الخدمة : ) Link to comment
WTF_ Posted September 12, 2017 Share Posted September 12, 2017 (edited) 6 minutes ago, iMr.WiFi..! said: Tables = { { 1,5 }, { 2,6 } } -- نسوي جدول ثم نسوي جدول داخله قيمتين فيها رقمين local NumberTable, NumberTable2 = unpack ( Tables ) -- نفك الجدول الي داخل جدول Tables -- Result : local NumberTable, NumberTable2 = { 1,5 }, { 2,6 } -- النتيجة local number1,number5,number2,number6 = unpack ( NumberTable ), unpack ( NumberTable2 ) -- نفك الجداول ونحط الارقام الي فيها -- Result : local number1,number5,number2,number6 = 1,5,2,6 -- النتيجة print ( number1,number5,number2,number6 ) -- Result : "1 5 2 6" عفوا في الخدمة : ) أخوي تسلم والله فهمتك وكفو عليك أخوي بس سأل بسيط local goku = unpack(weeb[math.random(#weeb)]) شفت ال # ليش اسويها وهل أقدر أحذفها ؟ وشكرااا لك والله كفو عليك أخوي وكمان وش وضيفة ipairs وتسلم يا الحب Edited September 12, 2017 by WTF_ Link to comment
1337.Ibrahim Posted September 12, 2017 Share Posted September 12, 2017 On ١٣/٧/٢٠١٧ at 02:45, Abdul KariM said: موب بس التيبلات حتى السترنق يجيب لك طول السلسلة مثال myName = "Abdul_KariM" print ( #myName ) مثال ثاني myName = getPlayerName ( localPlayer ) outputChatBox ( #myName ) هذا راح يجيب طول اسمك On ١٣/٧/٢٠١٧ at 01:12, !#NssoR_) said: وعليكم السلام و الرحمة وظيفتها تقوم بتحويل التيبل الي عدد مثال TestTable = { 1,2,3,4,5,6 } outputChatBox(#TestTable,root) -- سيظهر لنا رقم 6 لأن هنالك 6 قيم داخل التيبل مثال اخر TestTable = { 111,222,333 } outputChatBox(#TestTable,root) -- سيظهر لنا رقم 3 لأن هنالك 3 قيم داخل التيبل مثال اخير local newcolshape = createColSphere ( 1, 2, 3, 4 ) -- نقوم بإنشاء كول شيب local players = getElementsWithinColShape ( newcolshape, "player" ) -- هذا الفنكشن سيحضر جميع اللاعبين المتواجدين في الكول شيب ويضعهم في تيبل outputChatBox(#players,root) -- والان نحول التيبل الي عدد لإظهار هذا العدد في الشات هذا والله اعلم Link to comment
iMr.WiFi..! Posted September 20, 2018 Author Share Posted September 20, 2018 من احد أهم الوظائف, ولكن للأسف الكثير منا يجهلها الا وهي: addDebugHook تسنح هذه الوظيفة لك بالإمكانية معرفة عند استخدام الوظيفة الفلانية في اي مود كان. وتسمح لك بمعرفة الاحداث التي استخدمت بأي مود كان يمكنك تخطي الأحداث والوظائف باسترجاع قيمة skipمثال على الوظيفة addDebugHook( "preFunction", onPreFunction, {"createVehicle"} ) function onPreFunction( _, _, _, _, _, ... ) local args = { ... } if( args[1] == 411 )then return "skip" end end النتيجة: سيتم الغاء اي محاولة لصنع سيارة بالأيدي 411, والتي هي الأنفرس 2 1 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