~Mr.Hassan Posted August 13, 2015 Share Posted August 13, 2015 السلام عليكمابيكم هنا تحفظوني كيف اعمل سكل يحفظ على سيريالات شيئ محدد Link to comment
#Wizard Posted August 13, 2015 Share Posted August 13, 2015 مثال تسوي نظام حفظ الاحداثيات بـ SQL ( Serial ) .. اول شيء نسوية نظيفة للقاعدة نسوي جدول بالقاعدة registry.db لانه الفنكشن حق SQL يستخدم قاعدهـ ( registry ) .. اول شيء نسوي جدول داخل قاعدة : addEventHandler('onResourceStart',resourceRoot, function ( ) local CreateNewTable = executeSQLQuery ('CREATE TABLE IF NOT EXISTS `Save Position System` ( PlayerSerial,PlayerX,PlayerY,PlayerZ ) ') if ( CreateNewTable ) then outputDebugString('Create [ Save Position System ] Table done .') end end ) اللي سويتة انا : executeSQLQuery ('CREATE TABLE IF NOT EXISTS `Save Position System` ( PlayerSerial,PlayerX,PlayerY,PlayerZ ) ') بس سويت متغير او مسمى للتيبل اللي بيتخزن بقاعدتنا الاولى و سويت الكولومن اللي احتاجهم على حسب اللي تسوية انا سويت هذولا : PlayerSerial = بخزنة عالسريال PlayerX = احداثي X PlayerY = احداثي Y PlayerZ = احداثي Z وسميت الجدول حق القاعدة : Save Position System = نظام حفظ الاحداثيات الحين سوينا القاعدة عشان بـ استخدم : executeSQLQuery ( 'CREATE TABLE IF NOT EXISTS MyTable or `MY TABLE` or 'My Table' ( column,... )' ) الحين ودكـ تخزن الاشياء صح ؟ انا بخزنها يوم يطلع الاعب من الروم . . : addEventHandler('onPlayerQuit',root, function ( ) local x,y,z = getElementPosition ( source ) local Results = executeSQLQuery("SELECT * FROM `Save Position System` WHERE PlayerSerial=?",getPlayerSerial ( source ) ) if ( type ( Results ) == "table" and #Results == 0 or not Results ) then executeSQLQuery ( "INSERT INTO `Save Position System` ( PlayerSerial,PlayerX,PlayerY,PlayerZ ) VALUES(?,?,?,?)",getPlayerSerial ( source ),x,y,z ) else executeSQLQuery('UPDATE `Save Position System` SET PlayerX =?, PlayerY =?, PlayerZ =? WHERE PlayerSerial =?',x,y,z,getPlayerSerial ( source ) ) end end ) الاشياء و الوظائف الثانية معروفة .. بس بوضح لك الـ ( SQL ) : اول شيء نجيب النتائج عشان قبل لانخزن نتحقق اذا فية شيء مخزن نسوي لة تحديث مانخزن من جديد ~ : local Results = executeSQLQuery("SELECT * FROM `Save Position System` WHERE PlayerSerial=?",getPlayerSerial ( source ) ) و الـ Results يعتبر جدول لانة جدول اصلا .. الحين جبنا نتائج نتحقق : if ( type ( Results ) == "table" and #Results == 0 or not Results ) then اذا ماكان فية شيء مخزن او او او التيبل = 0 نسوي ادخال للبيانات على سريال الاعب بالترتيب من الـ Column اللي مسوية ! executeSQLQuery ( "INSERT INTO `Save Position System` ( PlayerSerial,PlayerX,PlayerY,PlayerZ ) VALUES(?,?,?,?)",getPlayerSerial ( source ),x,y,z ) اذا اول مرة تسوية ولا اذا كان مخزن تسوي تحديث بس ~ طبعا واضحة الاشياء من قبل PlayerSerial = بخزنة عالسريال PlayerX = احداثي X PlayerY = احداثي Y PlayerZ = احداثي Z و اسم التيبل حق القاعدة واضح ~ و الـ VALUES ( ?,?,? ) تكون على حسب اللي انت تحتاجها اصلا .. امم الحين نفرض انة مخزن من قبل ! ومسوي ادخال للبيانات وحصلها بالقاعدة وش المفترض تخزن ثانية ؟ لآ ~ : نسوي تحديث للبيانات : executeSQLQuery('UPDATE `Save Position System` SET PlayerX =?, PlayerY =?, PlayerZ =? WHERE PlayerSerial =?',x,y,z,getPlayerSerial ( source ) ) SET = ? Wiki WHERE = ? Wiki UPDATE = ? Wiki انت تحدث على مين ؟ على سريال الاعب WHERE PlayerSerial =? -- التحديث بيكون عالسريال الخاص بالاعب # الحين حفظنآ يوم خرج الاعب بنحمل البيانات يوم يسجل دخولة الاعب : addEventHandler('onPlayerLogin',root, function ( ) local Results = executeSQLQuery("SELECT * FROM `Save Position System` WHERE PlayerSerial=?",getPlayerSerial ( source ) ) if ( type ( Results ) == "table" and #Results == 0 or not Results ) then return end setTimer( setElementPosition,2000,1,source,Results[1]['PlayerX'],Results[1]['PlayerY'],Results[1]['PlayerZ'] ) end ) انت اللي عليك بس تبي تجيب بيانات من اللي مخزنة ؟ بيانات السريال ! صح ؟ زين سويناها : local Results = executeSQLQuery("SELECT * FROM `Save Position System` WHERE PlayerSerial=?",getPlayerSerial ( source ) ) مع اسم التيبل حق القاعدة بـ التأكيد .. الحين نتحقق فية بيانات عندي ولالا ؟ : if ( type ( Results ) == "table" and #Results == 0 or not Results ) then return end اذا مافية خلاص مايسوي شيء ويكنسل .. اذا فية بيكمل وبيسوي لك setElementPosition : setTimer( setElementPosition,2000,1,source,Results[1]['PlayerX'],Results[1]['PlayerY'],Results[1]['PlayerZ'] ) Results[1]['PlayerX'],Results[1]['PlayerY'],Results[1]['PlayerZ'] = ? هذي من وين جبتها ؟ هذي الاشياء اللي انت سويتها Column فية طريقة ثانية استخرج فيها اطول شوي شوف : for _,v in ipairs ( Results ) do setElementPosition ( source,v.PlayerX,v.PlayerY,v.PlayerZ ) end و بكذآ سوينا نظام حفظ للاحداثيات عن طريق : SQL أتمنى وصلتكـ المعلومة بكل وضوح وهذا السكربت بشكل كامل يطلع : addEventHandler('onResourceStart',resourceRoot, function ( ) local CreateNewTable = executeSQLQuery ('CREATE TABLE IF NOT EXISTS `Save Position System` ( PlayerSerial,PlayerX,PlayerY,PlayerZ ) ') if ( CreateNewTable ) then outputDebugString('Create [ Save Position System ] Table done .') end end ) addEventHandler('onPlayerQuit',root, function ( ) local x,y,z = getElementPosition ( source ) local Results = executeSQLQuery("SELECT * FROM `Save Position System` WHERE PlayerSerial=?",getPlayerSerial ( source ) ) if ( type ( Results ) == "table" and #Results == 0 or not Results ) then executeSQLQuery ( "INSERT INTO `Save Position System` ( PlayerSerial,PlayerX,PlayerY,PlayerZ ) VALUES(?,?,?,?)",getPlayerSerial ( source ),x,y,z ) else executeSQLQuery('UPDATE `Save Position System` SET PlayerX =?, PlayerY =?, PlayerZ =? WHERE PlayerSerial =?',x,y,z,getPlayerSerial ( source ) ) end end ) addEventHandler('onPlayerLogin',root, function ( ) local Results = executeSQLQuery("SELECT * FROM `Save Position System` WHERE PlayerSerial=?",getPlayerSerial ( source ) ) if ( type ( Results ) == "table" and #Results == 0 or not Results ) then return end setTimer( setElementPosition,2000,1,source,Results[1]['PlayerX'],Results[1]['PlayerY'],Results[1]['PlayerZ'] ) end ) بـ التوفيق .. اي شيء تفضل أسأل عنة .. Link to comment
Professional Posted August 25, 2015 Share Posted August 25, 2015 شرح كيف اعمل تيكست مثلا ولما اكتب بتيكست تطلع بنص شاشه الاعبين الكتابه لي كتبتها للكل Link to comment
The Killer Posted August 25, 2015 Share Posted August 25, 2015 هذا الموضوع لشرح الاكواد والاستفسار عنها انتم قلبتوها طلبات عندك قسم البرمجه رح اطلب فيه مب تجي هنا على اساس نسوي لك اكودا جاهزه على اساس انك جاي تتعلم , عجيب امركم # Link to comment
Professional Posted August 25, 2015 Share Posted August 25, 2015 هذا الموضوع لشرح الاكواد والاستفسار عنها انتم قلبتوها طلباتعندك قسم البرمجه رح اطلب فيه مب تجي هنا على اساس نسوي لك اكودا جاهزه على اساس انك جاي تتعلم , عجيب امركم # مو معاجبك لا تشرح Link to comment
#DRAGON!FIRE Posted August 25, 2015 Share Posted August 25, 2015 حبيبي هنا للاستفسارات عن شي محدد عن ايفنت محدد او فنكشن محدد .. مو اكواد كاملة . Link to comment
Professional Posted August 27, 2015 Share Posted August 27, 2015 ابي شرح ل getPlayerFromSerial وابي امثله كيف احدد لاعب الخ .. Link to comment
The Killer Posted August 27, 2015 Share Posted August 27, 2015 اتوقع ان الفنكشن واضح من اسمه وغير كذا فيه مثال عليه في الويكي function getPlayerFromSerial ( serial ) assert ( type ( serial ) == "string" and #serial == 32, "getPlayerFromSerial - invalid serial" ) for index, player in ipairs ( getElementsByType ( "player" ) ) do if ( getPlayerSerial ( player ) == serial ) then return player end end return false end هذا يجلب اللاعب من سرياله يعني زي كذا getPlayerFromSerial ("serial") تحط سريال اللاعب فوق وبس .. اتوقع انها سهله وما يبغالها شرح لاكن بحطها لك في مثال بسيط addCommandHandler ("command", function (plr, _, serial) if (serial) then local player = getPlayerFromSerial (serial) if (player) then outputChatBox ("Hello Player", player, 0, 255, 0) else outputChatBox ("Player not found.", plr, 255, 0, 0) end else outputChatBox ("You must write a serial.", plr, 255, 0, 0) end end ) Link to comment
Jupi Posted August 28, 2015 Share Posted August 28, 2015 coroutine هذا وش يسوي؟ بلتفصيل الممل Link to comment
Jupi Posted August 28, 2015 Share Posted August 28, 2015 ابي شرح ل settimer setTimer يحط لك وقت مشان يسوي وظيفة خلنا نشرح الارقمنتات الاول setTimer ( function theFunction, int timeInterval, int timesToExecute) هنا الارقمنت theFunction هو الفنكشن اللي راح يتنفذ حط اسم الفنكشن و الارقمنت timeInterval هنا المدة اللي راح تتنفذ فييها الوظيفة 1000 = ثانية 10000 = دقيقة الارقمنت timesToExecute عدد المرات الليي راح يتكرر فيها التايمر يعني مثلا حطينا 3 بعدد المرات و حطينا 5 ثواني يطلع رسالة بلشات كل 5 ثواني راح يطلع رسالة بلشات يعني راح تطلع 3 رسائل حسب تكرار التايمر و تقدر تخليه تايمر غير محدود بستعمال رقم 0 حط صفر بعدد المرات و هذا مثال سريع function outputHassan()--فتح فنكشن مع الاسم outputChatBox("Hassan Meke Is A Human", root, 255, 0, 0, true)--اخراج رسالة بلشات end--اغلاق الفنكشن setTimer(outputHassan, 50000, 5) --outputHassan يسوي الفنكشن حق اخراج الرسالة اللي اسمه --50000 يسويه كل 5 دقائق --5 راح يسويه خمس مرات و يوقف التايمر هذه توقف لك تايمر killTimer isTimer هذه تتحقق اذا في تايمر شغال و اتمني اكون افدتك Link to comment
Simba Posted August 28, 2015 Share Posted August 28, 2015 getRealTime هذا الفنكشن يجيب الوقت الحقيقي صح ؟ طيب وقت ايش ؟ يعني توقيت ايش ؟ غرينتش , السعودية , أمريكا , البحرين , مصر , السودان , ؟؟ ايش بالضبط Link to comment
#DRAGON!FIRE Posted August 28, 2015 Share Posted August 28, 2015 coroutine هذا وش يسوي؟ بلتفصيل الممل returns a table containing functions for threads ابي شرح ل settimer setTimer :هو ببساطة وقت محدد لتنفيد كودكـ .. وهو يعتمد ع الميلي ثانية وله اكثر من فنشكن تابعع له .. : killTimer resetTimer getTimerDetails getTimers طبعا من اسمائهم واضحين .. لاكن الان افهم التايمر وانتقل لهم بـ وقت لاححق Syntax timer setTimer ( function theFunction, int timeInterval, int timesToExecute, [ var arguments... ] ) function theFunction = الفنكشن اللي بتسويه بعد وقت محدد int timeInterval = الوقت بـ الميلي الثانية timesToExecute = هذا ببساطة عدد مرات الـ تايمر كيف يعني ؟ .. لو حطيت صفر فـ التايمر مفتوح للابد كل الوقت المحدد يسوي كودك مدام السكربت شغال .. لو ححطيت 1 فـ التايمر بتسويه لـ مرة واحدة فقط [ var arguments... ] وهذي الارقمنات حق الفنكشن اللي ضفته وتلاحظ انها مهي اجبارية لانه في فنكشنات انت مسويها بـ السكربت نفسه وما فيها ارقمنات فـ تحطها بدون الارقمنات طبعا مثال بسيط جدا عن تايمر لنقل اللاعب بعد 3 دقائق .. : setTimer( setElementPosition, 180000, 1, player, x, y, z ) تلاحظ اول ارقمنت وش هو ؟ الفنكشن نفسه وثاني ارقمنت الوقت بـ الميلي ثانية .. وثالث ارقمنت وهو عدد تكرار التايمر ذذ var arguments وبعد هذول جا وقت الـ x, y, z الاصلي الارقمنات اللي به هي الالمنت اللي تبي تنقله والـ احداثيات setElementPosition وبـ فنكشن وهنا مستخدمينه بـ التايمر .. فـ حطينا الـ بلير وهو ع حسب كودكـ هذا مجرد مثال والـ x, y, z اتمنى فهمت .. اي شي ما فهمته تفضل قول # getRealTime هذا الفنكشن يجيب الوقت الحقيقي صح ؟ طيب وقت ايش ؟ يعني توقيت ايش ؟ غرينتش , السعودية , أمريكا , البحرين , مصر , السودان , ؟؟ ايش بالضبط لو حطيته بـ جانب كلاينت راح يجيب وقت جهاز اللاعب .. لو حطيته سيرفر راح يجيب وقت بلد الخادم نفسه يعني لو كان الخادم الماني يجيب الوقت بالنسبة لهناكـ .. عاد انت تشوف غرينتش وتشوف كم الفرق وتزود او تجيبه بـ جانب كلاينت ع حسب الوقت حق جهاز اللاعب . Link to comment
Jupi Posted August 28, 2015 Share Posted August 28, 2015 returns a table containing functions for threads Arabic Please : / ما فهمت الا انه يرجع جدول يحتوي علي فنكشنات من نوع ما .... Link to comment
iMr.SFA7 Posted August 28, 2015 Share Posted August 28, 2015 getRealTime هذا الفنكشن يجيب الوقت الحقيقي صح ؟ طيب وقت ايش ؟ يعني توقيت ايش ؟ غرينتش , السعودية , أمريكا , البحرين , مصر , السودان , ؟؟ ايش بالضبط هذآ مثآل يجيب لكك وقت جهآز اللاعب السآعة الدقيقة الثآنية ع لبل -- Client Side addEventHandler ( 'onClientPreRender' , root , function ( ) local Time = getRealTime ( ) local H = Time .hour local M = Time .minute local S = Time .second guiSetText ( lebal,' '..H..'/'..M..'/'..S..'') end ) الوظيفة getRealTime تجيب لكك الثوآني والدقآيق والسآعآت والأيآم وكل شيء الا العآم هذآ مثآل يجيب لكك الأيآم addEventHandler ( 'onClientPreRender' , root , function ( ) local RealTime = getRealTime ( ) local D = RealTime.monthday local M = RealTime.month guiSetText ( lebal,''..D..'/'..M..'') end ) طبعآ لآزم تستخدم الحدث onClientPreRenderأو onClientRenderأو التآيمر لو ما أستخدمتهم كل بيتحدث الوقت ؟ أتمنى تكون فهمت السآلفة Link to comment
Jupi Posted August 28, 2015 Share Posted August 28, 2015 طبعآ لآزم تستخدم الحدث onClientPreRenderأو onClientRenderأو التآيمر انا انصح ب "onClientRender" لان سرعته ابطأ من "onClientPreRender" و راح يجيب لاق بسيط Link to comment
Rm-Dj Posted August 31, 2015 Share Posted August 31, 2015 next اشوف في بعض الاحيان يستخدمونها في اللوبات بدال كلمة pairs or ipairs وش فايدتها ؟؟ ومتي استخدمها Link to comment
0m4r Posted August 31, 2015 Share Posted August 31, 2015 nextاشوف في بعض الاحيان يستخدمونها في اللوبات بدال كلمة pairs or ipairs وش فايدتها ؟؟ ومتي استخدمها اللي اعرفه ان next نفس ipairs Link to comment
#CroSs Posted August 31, 2015 Share Posted August 31, 2015 next = ترجع لك المفتاح والقيمة بعد الرقم إلي حطيته في ترتيب الجدول : مثال Table = { "Value1", "Value2", "Value3" } -- جدول key1, value1 = next( Table ) -- لو ما حطيت رقم راح يجيب اول قيمة ومفتاح بالجدول key2, value2 = next( Table, 1 ) -- .. راح يجيب القيمة والمفتاح إلي بعد رقم 1 في ترتيب الجدول الخ key3, value3 = next( Table, 2 ) key4, value4 = next( Table, 3 ) print( key1, value1 ) print( key2, value2 ) print( key3, value3 ) print( key4, value4 ) 1 Value1 -- جاب مفتاح عشوائي لأن مافي مفتاح 2 Value2 3 Value3 nil nil -- رجع نيل لأن مافي قيمة Link to comment
Rm-Dj Posted September 1, 2015 Share Posted September 1, 2015 ^ تسلم علي شرحك الجميل بس لحد الان ماهي واصله الفكرة ولو تشوف الطريقة ذي كيف مستخدمها for _, aAccounts in next, getAccounts( ) do Link to comment
iMr.SFA7 Posted September 1, 2015 Share Posted September 1, 2015 ^ تسلم علي شرحك الجميل بس لحد الان ماهي واصله الفكرة ولو تشوف الطريقة ذي كيف مستخدمها for _, aAccounts in next, getAccounts( ) do next , ipairs = نفس الشيء أنت مخير بينهم اما تستعمل هاذي أو هاذي for _, aAccounts in next, getAccounts( ) do for _, aAccounts in ipairs ( getAccounts( )) do Link to comment
Rm-Dj Posted September 1, 2015 Share Posted September 1, 2015 يعني نفس الشئ مافيه اي فرق ؟؟؟ فقط الكلمة هي الي تختلف ؟؟ وليه اصلن سووها مدام نفس الشي Link to comment
#DRAGON!FIRE Posted September 1, 2015 Share Posted September 1, 2015 نفس الشي .. الفرق انه ضايفين بالنكست ارقمنت المفتاح فقط . Link to comment
Rm-Dj Posted September 1, 2015 Share Posted September 1, 2015 ياليت مثال مافهمت انا الي اعرفه بكل لوب لازم يجيبلك القيمة و المفتاح كيف يعني يجيبلك المفتاح ؟؟ Link to comment
#DRAGON!FIRE Posted September 1, 2015 Share Posted September 1, 2015 لكن تختلف عنها بـ ترتيب الجدول والقيم ipairs زي الـ local table = { "Hello", "ZA7F", "Rm-Dj", "test" } local k, v = next ( table, 1 ) print ( v ) خش هنا http://www.lua.org/cgi-bin/demo Output وحط الكود واضغط رن .. وشوف النتيجة بالمربع اللي تحت الثاني بعدها في رقم 1 بداخل القوسين حق النكست .. غيرهـ الى 2 ولاحظ القيمة الاولة ما جابها مع انك حاط 1 وهذا هو الكلام Its first argument is a table and its second argument is an index in this table. next returns the next index of the table and its associated value. When called with nil as its second argument, next returns an initial index and its associated value Link to comment
Recommended Posts