Rm-Dj Posted July 13, 2014 Share Posted July 13, 2014 السلام عليكم شباب انا شفت بعض السكربتات يجي فيها التيبل زي كذا ExampleTable = {} function () if not ExampleTable[source] then ExampleTable[source] = {} end local car = createVehicle (....) table.insert ( ExampleTable[source], car) end طبعا الكود ماله داعي ولكن انا اوصل الفكرة كيف يتحقق اذا ماعنده جدول ويسوي جدول ويضيف داخله الموتر وزي كذا ؟ واتمني من اهل الخبره يشرحونه بالتفصيل الممل ويعطونا امثله عليه وشكرا Link to comment
#DRAGON!FIRE Posted July 13, 2014 Share Posted July 13, 2014 (edited) هذي طريقة مبسطة بشكل بسيط ع اللي سواهـ سوينا جدول وداخل الجدول جدول للسورس مثلأ table = { ZA7F = { }, RmDj = { }, } وضاف لـ جدول زاحف مثلأ قيمة table.insert( table[ZA7F], car ) اتمنى فهمت هذي طريقة بسيطة جدا .. لو عندك اي اسالة او ما فهمت تفضل قول Edited July 13, 2014 by Guest Link to comment
xX|KeMo|Xx Posted July 13, 2014 Share Posted July 13, 2014 forum.multitheftauto.com/viewtopic.php?f=164&t=50471 رح يفيدك ان شاء الله Link to comment
Rm-Dj Posted July 13, 2014 Author Share Posted July 13, 2014 اخ زاحف الطريقة هاذي table.insert ( ExampleTable[source], car) يعني تكون للاعب نفسه بس طريقتك اعتقد ماتكون للاعب نفسه !! ياليت مثال عليها Link to comment
#DRAGON!FIRE Posted July 13, 2014 Share Posted July 13, 2014 لا تكون للاعب نفسه .. والمثال اللي عطيتك ما بيشتغل شي اكيد بس انا وضحت لك وش يسوي هو هذا مثال وجرب .. اكتب اول مرة الكوماند ما يصير شي لانه مو موجود بالتيبل يعني سوا انسيرت .. اكتب مرة ثانية بتلقى اسمكـ - سيريالكـ جا بالشات . local tablePlayers = { }; addCommandHandler( "insert", function ( player ) if ( tablePlayers[player] ) then return outputChatBox ( "* Your Name in table "..getPlayerName( tablePlayers[player][1] ).." and serial "..getPlayerSerial( tablePlayers[player][1] ).."" , player, 255, 255, 0 ) else tablePlayers[player] = { } table.insert( tablePlayers[player], player ) end end ) + مداكـ تسويها بطريقة ثانية مختصرة اكثر Link to comment
Rm-Dj Posted July 13, 2014 Author Share Posted July 13, 2014 والله للحين موفاهم بس فيه ناس اشوفهم يحطون فيها ابوجكتات للاعب نفسه اكثر من اوبجكت وزي كذا كيف ؟ Link to comment
فاّرس Posted July 14, 2014 Share Posted July 14, 2014 وعليكم السلام ورحمه الله وبركاته, اولا عندك خطأ , الوظيفه تحتاج اسم . ثانيا : هذي تسوي جدول داخل جدول بغرض حفظ قيمه للاعب نفسه , كمثال : t = { t2 = {}; } كذا انا سويت جدول داخل جدول , وتقدر تضيف قيمه للجدول الثاني. هذا مثال كامل : -- Server Side # local commander = {} addCommandHandler('insertMe', function ( player ) if not commander [ player ] then -- اذا لم يكن اللاعب في الجدول commander [ player ] = {}; -- نسوي جدول للاعب table.insert ( commander [ player ], player ) -- نضيف اللاعب داخل الجدوله حقه end end) طبعا الجدول تقدر تقول صار كذا : local commander = { TheBest = { player }; } * TheBest : طبعا ماراح يكون الاسم كذا , فقط للتوضيح , وهو راح يكون اللاعب . * player : هذي القيمه داخل جدول اللاعب , وهي اللاعب نفسه , وتعتبر القيمه الاولى داخل جدول اللاعب , تقدر تضيف قيم اخرى. طيب كيف اقدر استدعي اللاعب من الجدول حقه؟ هذا مثال : -- Server Side # addCommandHandler ( 'Health', function ( plr ) if commander [ plr ] then -- نتحقق هل اللاعب عنده جدول ؟ setElementHealth ( commander [ plr ] [ 1 ], 10 ) end end) * commander -- الجدول الرئيسي. * [ plr ] -- جدول اللاعب . * [ 1 ] -- القيمه الاولى من جدول اللاعب. تقدر تقول وش الفايده من الطريقه ؟ هي مجرد طريقه للحفظ , تحفظ اسم اللاعب او اي شيء . اتمنى وصلت الفكره . Link to comment
Rm-Dj Posted July 14, 2014 Author Share Posted July 14, 2014 اخوي ذا بست شرحك 100 % 100 ويدخل العقل ولكن بسالك لو مثلا اذا انا كتبت كلمه وجاء اوبجكت وكتبت كلمه اخري وجاء اوبجكت ولكن اذا كتبت كلمة يختفي بعطيك مثاال علي كلامي مثلا انا كتبت الكلمه ذي door1 تجي بوابه واذا كتبت door2 تجي بوابه ثانيه واذا كتبت removedoor1 تروح البوابه الاولي واذا كتبت removedoor2 تروح البوابه الثانيه كيف ؟ يعني ماني فاهم فكرة كيف ادخل اكثر من قيمة بل جدول وزي كذا وشكرا ع الشرح Link to comment
فاّرس Posted July 14, 2014 Share Posted July 14, 2014 (edited) شوف حبيبي ذا مثال كل مره يضيف ماركر داخل جدول اللاعب , -- Server Side # local commander = {} -- جدول عام local markers = {} -- جدول للماركرات addCommandHandler('insertMe', function ( player ) if not commander [ player ] then -- اذا ما كان اللاعب له جدول commander [ player ] = {}; -- نضيف جدول للاعب end local x,y,z = getElementPosition ( player ) markers [ player ] = createMarker ( x, y, z, 'cylinder', 2, 255,0,255, 177 ) table.insert ( commander [ player ], markers [ player ] ) -- نضيف الماركر الي سواه اللاعب , كل ما يسوي ماركر يضيفه بالجدول حق اللاعب end) يعني تقدر تقول الجدول بيصير كذا لو سويت ثلاثه ماركرات : local commander = { TheBest = { marker1, marker2, marker3 } } طيب الحين مثلا ابي احذف الماركرات , هذا مثال : addCommandHandler ( 'destroyMarker', function ( plr, _, id ) if commander [ plr ] and id and tostring ( id ) then -- نتحقق هل اللاعب عنده جدول وهل كتب الايدي وهل هو رقم؟ destroyElement ( commander [ plr ] [ tonumber(id) ] ) -- نحذف الماركر حسب الرقم الي كتبه في اف8 , وهو رقم قيمه الماركر داخل الجدول commander [ plr ] [ tonumber(id) ] = nil; -- نحذف القيمه , اشرحها تحت end end) * commander -- الجدول الرئيسي. * [ plr ] -- جدول اللاعب . * [ tonumber(id) ] -- ؟ tostring طبعا ليش استخدمت .عشان ارقومنت الكوماند يكون سترنق فـ لازم احوله الى رقم , لأن القيمه رقم وليست سلسله نصيه commander [ plr ] [ tonumber(id) ] = nil; ^ طبعا اعتقد موب واضحه فـ اشرحها بالتفصيل : * commander -- الجدول الرئيسي. * [ plr ] -- جدول اللاعب . * [ tonumber(id) ] -- ؟ tonumber طبعا ليش استخدمت .عشان ارقومنت الكوماند يكون سترنق فـ لازم احوله الى رقم , لأن القيمه رقم وليست سلسله نصيه * = nil -- ليش خليت القيمه تساوي نيل ؟ يعني تساوي لا شيء بمعنى الحذف ؟ لأنه لو ما سويت كذا , راح تصير مشاكل وهي : لو سويت الماركر الاول وسويت ماركر ثاني وماركر ثالث , وحذفتها كلها , .destroyMarker 1 ورجعت سويت ماركر آخر , راح تكتب في اف8 كذا !تتفاجأ انه راح يطلع خطأ بالديبوق , لأن مافيه قيمه بمعنى ان آخر ماركر سويته بيكون رقمه 4 وليس 1 مع انك حذفتها , فـ لازم تسوي الي انا سويته عشان ترجع القيمه تعد من اول. اتمنى تكون وصلت الفكره . Edited July 14, 2014 by Guest Link to comment
Rm-Dj Posted July 14, 2014 Author Share Posted July 14, 2014 شككرا اخوي ذا بست افدتني كثيرر جزاك الله خير وشوف هذا الكود صحيح ولا لا مجرد مثال علي الي فهمته local tablePlayers = {} local objects = {} addCommandHandler('addO', function ( player ) if not tablePlayers [ player ] then tablePlayers [ player ] = {} end local x,y,z = getElementPosition ( player ) objects [ player ] = createObject ( 382,x,y+2,z ) table.insert ( tablePlayers [ player ], objects [ player ] ) end) addCommandHandler('whomach', function ( player ) if ( objects [ player ] ) then outputChatBox('total objects is '..#objects[ player ] ,player) else outputChatBox("you don't have any Objects ",player) end end) addCommandHandler('delete', function ( player,_,id ) if ( objects [ player ] ) then destroyElement(objects [ player ][id] ) objects [ player ][id] = nil end end) Link to comment
#DRAGON!FIRE Posted July 14, 2014 Share Posted July 14, 2014 صحيح .. بس عندك كم خطا . + لو ركزت شوية بـ كلامي كان فهمت وركز بالمثال اللي باول الموضوع وجرب المثال الثاني وبتفهم السالفة بشرح لكـ بالتفصيل local table = { }; عندكـ ذا التيبل فاضي .. وجيت تبي تسوي للاعب جدول بـ ذا التيبل تسوي كذا table[player] = { } ---Ex : table[za7f] = { } الحين التيبل صار بـ الشكل ذا .. : local table = { ZA7F = { }, }; من وين جت ZA7F ؟ يوم سويت table[player] = { } مو شرط جدول يمديكـ قيمة اي شي table[player] = true عشانكـ حطيت { } فـ صارت جدول للاعب وجيت اضفت نفسكـ صار كذا local table = { ZA7F = { }, RmDj = { }, }; طبعا اللاعب بالجدول هو مفتاح .. والقيمة حق المفتاح ذي هي القيمة اللي حطيتها فـ يعني قيمة المفتاح لكل لاعب هو الجدول ومداكـ تحط اللي تبيه بالجدول ذا مثلأ بتحط تكست لـ مفتاح زاحف .. table.insert( table[ZA7F], "Test insert To ZA7F Table" ) table[ZA7F] = ? table[ZA7F] = هو الجدول حق مفتاح زاحف .. يوم صار انسيرت صار القيمة حق مفتاح زاحف كذا .. local table = { ZA7F = { "Test insert To ZA7F Table" }, RmDj = { }, }; طيب تبي تضيف قيمة ثانية ثالثة الخ .. يب يمديك تضيف اللي تبي طيب لو ضفنا شي ثاني .. مثلأ قيمة ترو .. table.insert( table[ZA7F], true ) صار كذا .. : local table = { ZA7F = { "Test insert To ZA7F Table", true }, RmDj = { }, }; تبي تحذف اول قيمة بـ جدول حق مفتاح زاحف .. تسوي كذا table[ZA7F][1] = nil table[ZA7F] = جلبنا القيمة حق مفتاح زاحف [1] = اول قيمة بـ جدول حق مفتاح زاحف تبي تحذف الثانية [2] الثالثة .. : [3] وكذأ تبي تشيل الجدول حق مفتاح زاحف .. table[ZA7F] = nil طبعا تشوفنا نستخدم نل .. مداك تستخدم تيبل ريموف يعني بـ اختصار table.remove = nil وطبعا نل لها استخدامات اخرى . Link to comment
فاّرس Posted July 14, 2014 Share Posted July 14, 2014 شككرا اخوي ذا بست افدتني كثيرر جزاك الله خير وشوف هذا الكود صحيح ولا لا مجرد مثال علي الي فهمته local tablePlayers = {} local objects = {} addCommandHandler('addO', function ( player ) if not tablePlayers [ player ] then tablePlayers [ player ] = {} end local x,y,z = getElementPosition ( player ) objects [ player ] = createObject ( 382,x,y+2,z ) table.insert ( tablePlayers [ player ], objects [ player ] ) end) addCommandHandler('whomach', function ( player ) if ( objects [ player ] ) then outputChatBox('total objects is '..#objects[ player ] ,player) else outputChatBox("you don't have any Objects ",player) end end) addCommandHandler('delete', function ( player,_,id ) if ( objects [ player ] ) then destroyElement(objects [ player ][id] ) objects [ player ][id] = nil end end) عندك اخطاء بسيطه : * الايدي حق الاوبجكت غلط . * tablePlayers سطر 17 , المفروض تجيب القيمه داخل الجدول. * سطر 26 المفروض تتحقق ان اللاعب عنده جدول , لأن لو عنده جدول اكيد بيكون عنده قيمه . * objects وليس tablePlayers سطر 27 , المفروض تحذف القيمه من الجدول * سطر 28 , ^ نفس الكلام * لازم تحولها الى رقم لأنها من الاصل سترنق id , سطر 27 و 28 , التصحيح : -- Server Side # local tablePlayers = {} local objects = {} addCommandHandler('addO', function ( player ) if not tablePlayers [ player ] then tablePlayers [ player ] = {} end local x,y,z = getElementPosition ( player ) objects [ player ] = createObject ( 3822 ,x + 10 ,y,z ) table.insert ( tablePlayers [ player ], objects [ player ] ) end) addCommandHandler('whomach', function ( player ) if ( objects [ player ] ) then outputChatBox('total objects is '..#tablePlayers [ player ], player) else outputChatBox("you don't have any Objects ", player) end end) addCommandHandler('delete', function ( player,_,id ) if ( tablePlayers [ player ] ) then destroyElement(tablePlayers [ player ][tonumber(id)] ) tablePlayers [ player ][tonumber(id)] = nil end end) Link to comment
Rm-Dj Posted July 14, 2014 Author Share Posted July 14, 2014 شككرا اخوي ذا بست ولكن انا رقم الاوبجكت عارف انه خطأ جايبه من رأسي انا قلت فقط مثال ض1 وشكرا ع التصحيح مره اخري وبالنسبة ل اخ زااحف شرحك مفهوم وماااقصرت ي شننب ويعطيك العاافيه ولكن سالفة انك تشيله من التيبل مافهمتها هاذي table.remove = nil يعني شوف كذا local table = { ZA7F = { }, RmDj = { }, }; اذا ابي احذف نفسي ابيه يكون بهذا الشكل local table = { ZA7F = { }, }; كيف ؟ مافهمتها Link to comment
#DRAGON!FIRE Posted July 14, 2014 Share Posted July 14, 2014 شككرا اخوي ذا بست ولكن انا رقم الاوبجكت عارف انه خطأ جايبه من رأسي انا قلت فقط مثال ض1 وشكرا ع التصحيح مره اخريوبالنسبة ل اخ زااحف شرحك مفهوم وماااقصرت ي شننب ويعطيك العاافيه ولكن سالفة انك تشيله من التيبل مافهمتها هاذي table.remove = nil يعني شوف كذا local table = { ZA7F = { }, RmDj = { }, }; اذا ابي احذف نفسي ابيه يكون بهذا الشكل local table = { ZA7F = { }, }; كيف ؟ مافهمتها القصد انه نل .. = ازالة القيمة من الجدول تيبل ريموف = ازالة القيمة من الجدول نل تعني انه لا شي او بلا قيمة .. ويوم تستخدم نل بالجداول بيحذف لك القيمة من الجدول يعني الاثنين يسون نفس الوظيفة تقريبا لو تبي تشيل نفسكـ من التيبل table[RmDj] = nil بـ هذهـ الطريقة شلت المفتاح حقكـ كله Link to comment
Rm-Dj Posted July 14, 2014 Author Share Posted July 14, 2014 اها طيب لو بطلعه من التيبل من خلال الكود هذا وبطريقة هاذي function dele(player) if tablePlayers [ player ] then table.remove ( tablePlayers [ player ], player ) end end addCommandHandler("removeme",dele) هل الطريقة هاذي صحيحه ؟ Link to comment
فاّرس Posted July 14, 2014 Share Posted July 14, 2014 (edited) لا خطأ , حط رقم القيمه , كمثال : table.remove ( tablePlayers [ player ], 1 ) -- القيمه الاولى اما لو تبي تحذف جدول اللاعب , tablePlayers [ player ] = nil; يصير الجدول كذا : tablePlayers = {} -- فاضي , الا لو كان فيه اكثر من جدول . Edited July 14, 2014 by Guest Link to comment
#DRAGON!FIRE Posted July 14, 2014 Share Posted July 14, 2014 addCommandHandler( "remove", function ( player ) for k, v in ipairs( tablePlayers ) do if ( v == player ) then if ( table.remove( tablePlayers, k ) ) then outputChatBox( "deleted", player ) break end end end end ) Link to comment
Rm-Dj Posted July 14, 2014 Author Share Posted July 14, 2014 شكككرا زاحف جزيل الشكر لك وشكرأ ي اخ ذا بست تمت الافاده من قبلكم انتم الاثنين Link to comment
فاّرس Posted July 14, 2014 Share Posted July 14, 2014 شكككرا زاحف جزيل الشكر لك وشكرأ ي اخ ذا بست تمت الافاده من قبلكم انتم الاثنين العفو , حياك الله 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