Rockyz Posted September 26, 2017 Share Posted September 26, 2017 (edited) @Abdul KariM طيب وش رايك بهذي الطريقة : function table.toString ( theTable, char ) assert ( type ( theTable ) == 'table', 'expected table at argument 1 got ' .. type ( theTable ) ) assert ( type ( char ) == 'string', 'expected string at argument 2 got ' .. type ( char ) ) assert ( char:len ( ) <= 2, 'expected charcter at argument 2 got ' .. char ) local m, t = '', { }; for _, v in pairs ( theTable ) do table [ 'insert' ] ( t, v ) end for k, v in pairs ( t ) do if ( k == #t ) then m = m .. v else m = m .. v .. char end end return m; end في النهاية فرق كم سطر #Edit: بسم الله الرحمن الرحيم table.toStringWithIndex وضيفة نوعا ما مفيدة طبعا الوضيفة زي الي فوق لكن الفرق هو انه فيه بارتمر زيادة والي هو الأندكس Syntax table.toStringWithIndex ( table theTable, string separatingChar [, index = true ] ) Source Code : function table.toStringWithIndex ( theTable, char, index ) assert ( type ( theTable ) == 'table', 'expected table at argument 1 got ' .. type ( theTable ) ) assert ( type ( char ) == 'string', 'expected string at argument 2 got ' .. type ( char ) ) assert ( char:len ( ) <= 2, 'expected charcter at argument 2 got ' .. char ) local index = index or false assert ( type ( index ) == 'boolean', 'expected bool at argument 3 got ' .. type ( index ) ) local m, t = '', { }; for _, v in pairs ( theTable ) do table [ 'insert' ] ( t, { _, v } ) end for k, v in pairs ( t ) do if ( k == #t ) then if ( index ) then m = m .. v [ 1 ] .. ' = ' .. v [ 2 ] else m = m .. v [ 2 ] end else if ( index ) then m = m .. v [ 1 ] .. ' = ' .. v [ 2 ] .. char else m = m .. v [ 2 ] .. char end end end return m; end Example : print(table.toStringWithIndex({[1234]='a',[100]='b',[400]='c'},', ',true)) --[[ output : 100 = b, 1234 = a, 400 = c ]] Edited September 26, 2017 by #,+( _xiRoc[K]; > 1 Link to comment
Abdul KariM Posted September 26, 2017 Share Posted September 26, 2017 @#,+( _xiRoc[K]; > افضل من طريقتك table.concat استعمال Link to comment
^iiEcoo'x_) Posted September 27, 2017 Share Posted September 27, 2017 (edited) السلام عليكم روحمة الله وبركاته isArabicLanguage وظيفة التحقق من اللغة العربية Syntax : isArabicLanguage ( Text ) Text : النص المراد التحقق منه Code : ArabicCharacters = { 'ا' , 'أ' , 'إ' , 'ض' , 'ص' , 'ط' , 'غ' , 'ق' , 'ث' , 'ف' , 'ع' , 'ه' , 'خ' , 'ح' , 'ج' , 'د' , 'ئ' , 'ء' , 'ؤ' , 'ر' , 'لا' , 'ى' , 'آ' , 'ة' , 'و' , 'ز' , 'ظ' , 'ذ' , 'ك' , 'م' , 'ن' , 'ت' , 'ل' , 'ب' , 'ي' , 'س' , 'ش } function isArabicLanguage ( Text ) if ( Text ) then assert ( type ( Text ) == 'string' , 'Bad Arg #1 , [ '..Text..' ] not string' ) for _ , Characters in ipairs ( ArabicCharacters ) do if ( string.find ( Text , Characters ) ) then return true end end else error ( 'Bad Arg #1 nil value' ) end end Ex. : addCommandHandler ( 'اللغة' , function ( Player , _ , Text ) if ( isArabicLanguage ( Text ) ) then outputChatBox ( '* الكلام باللغة العربية' , Player ) end end ) هذا وكان كل شي , ما ادري اذا الوظيفة موجودة من قبل , والسلام عليكم ورحمة الله وبركاته Edited October 10, 2017 by !#NssoR_) Modifed as requested. 2 Link to comment
^iiEcoo'x_) Posted September 27, 2017 Share Posted September 27, 2017 السلام عليكم ورحمة الله وبركاته , convertTime وظيفة تحويل الوقت , Syntax : convertTime ( TimeID , Type , Time ) TimeID : رقم التعريف ( الآي دي ) , هذا بتحطه عشان اذا تبي تسوي أكثر من وقت تحط أي رقم من عندك عشان تجلبه لما تسوي التايمر Type : الرمز أو النوع , يوجد أربعة أنواع , وتقدر تضيف إذا تبي , و يكون في علامة تنصيص ● s : الثانية ● m : دقيقة ● h : ساعة ● d : يوم Time : وهو الوقت الذي تريد تحويله Function Code : TimerTable = { Times = { } , Timers = { { 's' , 1000 } , { 'm' , 1000 * 60 } , { 'h' , 1000 * 60 * 60 } , { 'd' , 1000 * 60 * 60 * 24 } } } function convertTime ( TimeID , Type , Time ) if ( Type ) and ( Time ) and ( TimeID ) then if ( Type ~= '' ) or ( Type == nil ) then if ( type ( Type ) == 'string' ) then if ( type ( Time ) == 'number' ) then if ( type ( TimeID ) == 'number' ) then for _ , time in ipairs ( TimerTable.Timers ) do if ( Type == time [ 1 ] ) then TimerTable.Times [ TimeID ] = nil local TimeTable = time [ 2 ] local TimeFunction = Time TimerTable.Times [ TimeID ] = TimeTable*TimeFunction end end else error ( 'Bad Arg#1 , The ( '..TimeID..' ) is not a numeric value' ) end else error ( 'Bad Arg#3 , The ( '..Time..' ) is not a numeric value' ) end else error ( 'Bad Arg#3 , The ( '..Type..' ) is not a textual value' ) end else error ( 'Bad Arg#2 , The ( '..Type..' ) value is null' ) end else error ( 'One of the values does not exist' ) end end وظيفة جلب الوقت المحول : getConvertingTime Syntax : getConvertingTime ( TimeID ) TimeID : رقم تعريف تحويل الوقت أو الآي دي الوقت الذي تم تحويله , Function Code : function getConvertingTime ( TimeID ) if ( TimeID ) then if ( type ( TimeID ) == 'number' ) then return TimerTable.Times [ TimeID ] else error ( 'Bad Arg#1 , The ( '..TimeID..' ) is not a numeric value' ) end else error ( 'The first value does not exist' ) end end Ex. : convertTime ( 1 , 's' , 10 ) addCommandHandler ( 'Time' , function ( Player ) local Time = getConvertingTime ( 1 ) setTimer ( function ( ) outputChatBox ( 'Welcome' , root ) end , Time , 1 ) end ) ما أدري إذا الوظيفة موجودة من قبل , والسلام عليكم ورحمة الله وبركاته Link to comment
Rockyz Posted September 27, 2017 Share Posted September 27, 2017 @#_iMr.[E]coo وضيفتك تقدر تختصرها كذا : TimerTable = { { 's' , 1000 } , { 'm' , 1000 * 60 } , { 'h' , 1000 * 60 * 60 } , { 'd' , 1000 * 60 * 60 * 24 } }; function convertTime ( Type, Time ) assert ( type ( Type ) == 'string', '[convertTime] expected string at argument 1 @ got ' .. type ( Type ) ) assert ( type ( Time ) == 'number', '[convertTime] expected number at argument 2 @ got ' .. type ( Time ) ) for _, v in ipairs ( TimerTable ) do if ( Type == v [ 1 ] ) then return v [ 2 ] * Time; end end return false; end Link to comment
^iiEcoo'x_) Posted September 27, 2017 Share Posted September 27, 2017 23 minutes ago, #,+( _xiRoc[K]; > said: @#_iMr.[E]coo وضيفتك تقدر تختصرها كذا : TimerTable = { { 's' , 1000 } , { 'm' , 1000 * 60 } , { 'h' , 1000 * 60 * 60 } , { 'd' , 1000 * 60 * 60 * 24 } };function convertTime ( Type, Time )assert ( type ( Type ) == 'string', '[convertTime] expected string at argument 1 @ got ' .. type ( Type ) )assert ( type ( Time ) == 'number', '[convertTime] expected number at argument 2 @ got ' .. type ( Time ) ) for _, v in ipairs ( TimerTable ) do if ( Type == v [ 1 ] ) then return v [ 2 ] * Time; end end return false;end كنت مختصر منها اكثر من كذا .. بس طقى جهازي وراح التعديل .. + فكرتك حلوة ما فكرت بيها رح اعدله لما افضى , شكرا للمجهودك Link to comment
Master_MTA Posted September 28, 2017 Share Posted September 28, 2017 (edited) السلام عليكم ورحمة الله وبركاته وظيفة fixGuiPosition من الاسم الوظيفه تقوم بضبط الجيو المنت ليتناسب مع كل الشاشات نجي للسورس كود function fixGuiPosition(guiElement,sx,sy,relative) local relative=relative or false local x,y=guiGetPosition(guiElement,relative) local w,h=guiGetSize(guiElement,relative) if guiSetPosition(guiElement,sx*x,sy*y,relative) and guiSetSize(guiElement,sx*w,sy*h,relative) then return true end return false end الارقمنتات guiElement هي الالمنت اللي تبي تنفذ عليه الوظيفه sxهو عرض الشاشه حقتك مثلا انا 1366 sy هو طول الشاشه حقتك انا 768 relative هو الريلاتف يعني باختصار يوم انشات اللوحه انشاتها برقم عشري ولا ارقام كبيره هي في العاده تكون false نجي للساينتكس : fixGuiPosition(element guiElement,int sx,int sy, bolean relativ) نجي للامثله : function fixGuiPosition(guiElement,sx,sy,relative) local relative=relative or false local x,y=guiGetPosition(guiElement,relative) local w,h=guiGetSize(guiElement,relative) if guiSetPosition(guiElement,sx*x,sy*y,relative) and guiSetSize(guiElement,sx*w,sy*h,relative) then return true end return false end local GUIEditor={ Window={}, Button={} } GUIEditor.Window[1]=guiCreateWindow(20,50,20,50,'test',false) GUIEditor.Window[2]=guiCreateWindow(20,50,20,50,'test',false) GUIEditor.Button[1]=guiCreateButton(10,5,20,30,'test',false,GUIEditor.Window[1]) -----------------------------example 1 fixGuiPosition(GUIEditor.Window[1],1366,768) --------------------وهذا مثال لو معك اكثر من نافذه مثلا for k=1,#GUIEditor.Window do fixGuiPosition(GUIEditor.Window[k],1366,768) end وفي الختام اتمنى منكم الدعاء Edited September 28, 2017 by Master_MTA 1 Link to comment
Rockyz Posted September 28, 2017 Share Posted September 28, 2017 @Master_MTA حلو, لكن موجود من قبل Link to comment
Master_MTA Posted September 29, 2017 Share Posted September 29, 2017 14 hours ago, #,+( _xiRoc[K]; > said: @Master_MTA حلو, لكن موجود من قبل لا في فرق حبيب قلبي ذي تزبط النافذه بمكانها الاصلي مب زي centerWindow لا لاما تحطها بنص الشاشه ذي تحطها بمكانها اللي سويته انت بس عند كل اللاعبين ما اتوقع شفتها من قبل Link to comment
yasin0 Posted September 29, 2017 Share Posted September 29, 2017 1 hour ago, Master_MTA said: لا في فرق حبيب قلبي ذي تزبط النافذه بمكانها الاصلي مب زي centerWindow لا لاما تحطها بنص الشاشه ذي تحطها بمكانها اللي سويته انت بس عند كل اللاعبين ما اتوقع شفتها من قبل اللعبة ماتت خلاص 2 Link to comment
Rockyz Posted September 29, 2017 Share Posted September 29, 2017 (edited) بسم الله الرحمن الرحيم convertTimeToSeconds function convertTimeToSeconds(y,d,h,m,s) local y,d,h,m,s,newTime=y or 0,d or 0,h or 0,m or 0,s or 0,0 local newTime=newTime+(31556926*y)+(86400*d)+(3600*h)+((3600/60)*m)+(((3600/60)/60)*s) return math.floor(newTime) end Arguments : y: السنوات d: الأيام h: الساعات m: الدقائق s: الثواني الوضيفة تقوم بتحويل الوقت الى ثواني Edited September 29, 2017 by #,+( _xiRoc[K]; > 2 Link to comment
Popular Post iMr.WiFi..! Posted September 30, 2017 Popular Post Share Posted September 30, 2017 (edited) math.ceilPlus < مدري لو الوظيفة موجودة من قبل ولكن على حسب بحثي مالقيتها > بسم الله الرحمن الرحيم, سلام عليكم ورحمة الله وبركاتة جبت لكم وظيفة مفيدة جداً لعمل بطولات وتيمات او اشياء من هالقبيل .. وظيفة للغة LUA يعني صالح في استعمال اي شيء يخص بلوا وليس فقط MTA علعموم نبدأ بالسورس كود | Source Code : function math.ceilPlus ( n ) if type ( n ) ~= 'number' or not tonumber ( n ) then error ( " ERROR : function ( math.ceilPlus ) bad argument 1# expected number, got "..type ( n ) ); return false; end local r; if ( n % 1 < 1 ) then r = math.floor ( n ) + 1; end return r or n; end السينتاكس | Syntax : int math.ceilPlus ( int n ) n : الرقم الذي تريد تطبيق عليه العملية الحسابيةفائدة الوظيفية | Functional benefit : الوظيفة راح تحول الرقم الى الرقم الي بعده لو كان فيه كسور مثال | Example : local n = math.ceilPlus ( 5.5 ); print ( n ); -- Result : 6; local n = math.ceilPlus ( 1.5 ); print ( n ); -- Result : 2; local n = math.ceilPlus ( 5 / 2 ); -- 5 / 2 == 2.5 print ( n ); -- Result : 3; أتمنى ان الوظيفة عجبتكم وأذا عجبتكم سوو ثانكس او لايك للتعليق هذا + وبتوفيق للكل وسلام خير الختام Edited September 30, 2017 by iMr.WiFi..! 4 Link to comment
Rockyz Posted September 30, 2017 Share Posted September 30, 2017 (edited) بسم الله الرحمن الرحيم guiCreateAnimation gui-Elementالفنكشن يعمل تأثير لأي نوع من الــ يعني الألفا حقت الألمنت تزداد تدريجيا او تنقص تدريجيا _______________________________ الفنكشن معه افنت 'onClientGUIAnimationEnd' هذا الأفنت هو لما التأثير ينتهي _______________________________ Event : Event Source: guiElement - الألمنت المطبق عليه التأثير Paratmers: openState _______________________________ Function : Syntax: bool guiCreateAnimation ( element gui-element, bool openState[ , int effectSpeed = 1 ] ) _______________________________ Source Code: local guiTable = { }; addEvent ( 'onClientGUIAnimationEnd', true ) function animationRender ( guiElement, open, speed ) guiTable [ guiElement ] [ 'guiNow' ] = getTickCount ( ); local anim1, anim2 = interpolateBetween ( 0, 100, 0, 100, 0, 0, ( guiTable [ guiElement ] [ 'guiNow' ] - guiTable [ guiElement ] [ 'guiTick' ] ) / ( speed * 1000 ), 'Linear' ) if ( open ) then guiSetAlpha ( guiElement, anim1 / 100 ) else guiSetAlpha ( guiElement, anim2 / 100 ) end if ( guiTable [ guiElement ] [ 'guiNow' ] > guiTable [ guiElement ] [ 'guiTick' ] + ( speed * 1000 ) ) then removeEventHandler ( 'onClientRender', root, guiTable [ guiElement ] [ 'guiEvent' ] ) guiTable [ guiElement ] = nil triggerEvent ( 'onClientGUIAnimationEnd', guiElement, open ) if ( not open ) then guiSetVisible ( guiElement, false ) end end end function guiCreateAnimation ( guiElement, open, speed ) assert ( isElement ( guiElement ) and getElementType ( guiElement ):find ( 'gui-' ), 'guiCreateAnimation bad argument @ 1 gui-Element expected, got ' .. type ( guiElement ) ) assert ( type ( open ) == 'boolean', 'guiCreateAnimation bad argument @ 2 boolean expected, got ' .. type ( open ) ) local speed = speed or 1 assert ( type ( speed ) == 'number', 'guiCreateAnimation bad argument @ 3 number expected, got ' .. type ( speed ) ) if ( guiTable [ guiElement ] ) then return false end guiSetVisible ( guiElement, true ) guiTable [ guiElement ] = { }; guiTable [ guiElement ] [ 'guiTick' ], guiTable [ guiElement ] [ 'guiEvent' ] = getTickCount ( ), function ( ) animationRender ( guiElement, open, speed ) end addEventHandler ( 'onClientRender', root, guiTable [ guiElement ] [ 'guiEvent' ] ) return true end _______________________________ Arguments: 1 - gui-element - gui-element النافذة او الــ المراد تطبيق التأثير عليها 2 - openState - طريقة التأثير اذا كان true بينفتح تدريجيا و العكس 3 - effectSpeed - سرعة التأثير _______________________________ Example: local sPos = { guiGetScreenSize ( ) }; GUIEditor = { window = {} } addEventHandler("onClientResourceStart", resourceRoot, function() GUIEditor.window[1] = guiCreateWindow( ( sPos [ 1 ] - 520 ) / 2, ( sPos [ 2 ] - 452 ) / 2, 520, 452, "Flashing window", false) guiWindowSetSizable(GUIEditor.window[1], false) btn = guiCreateButton(50, 50, 50, 50, '', false, GUIEditor.window[1]) guiCreateAnimation ( GUIEditor.window[1], true, 0.5 ) guiSetFlashing ( GUIEditor.window[1], true ) outputChatBox 'Start !' setTimer ( function ( ) guiSetFlashing ( GUIEditor.window[1], false ) outputChatBox 'Finish !' end, 5000, 1 ) end ) local flasherEvent = { }; function guiSetFlashing ( wnd, state ) if ( state ) then flasherEvent [ wnd ] = function ( state ) if ( source == GUIEditor.window[1] ) then guiCreateAnimation ( GUIEditor.window[1], not state, 0.5 ) end end addEventHandler ( 'onClientGUIAnimationEnd', resourceRoot, flasherEvent [ wnd ] ) else if ( flasherEvent [ wnd ] ) then removeEventHandler ( 'onClientGUIAnimationEnd', resourceRoot, flasherEvent [ wnd ] ) end end end هذا المثال بيسوي فلاش للوحة وبعد 5 ثواني بيختفي الفلاش Edited September 30, 2017 by !#NssoR_) As requested. 1 Link to comment
Master_MTA Posted September 30, 2017 Share Posted September 30, 2017 2 minutes ago, #,+( _xiRoc[K]; > said: تعديل بسيط على السورس كود الي فوق : كان يفضل انك تسميها اسم اخر لان الام لا يتوافق مع الوظيفه guiFadeIn() او شي مثل كذا لكن وظيفه حلوه لكن اتوقع تقدر تستخدم التايمر بكذا يكون سهل الموضوع Link to comment
Rockyz Posted September 30, 2017 Share Posted September 30, 2017 (edited) 2 minutes ago, Master_MTA said: كان يفضل انك تسميها اسم اخر لان الام لا يتوافق مع الوظيفه guiFadeIn() او شي مثل كذا لكن وظيفه حلوه لكن اتوقع تقدر تستخدم التايمر بكذا يكون سهل الموضوع الصراحة انا الأسم مادري وش احطه لكن في النهاية الأسم مايهم تقدر تغيره + الطريقة هذي افضل من التايمر Edited September 30, 2017 by #,+( _xiRoc[K]; > Link to comment
Master_MTA Posted September 30, 2017 Share Posted September 30, 2017 Just now, #,+( _xiRoc[K]; > said: + طريقتي افضل من التايمر اشوف التايمر افضل من الراندر واقرا صفحة الويكي الخاصه بالراندر وخاصة انك لو حطيت تايمر بتقدر تاثر على سرعة تغير الالفا والخ اما الراندر فهو يحدث في الملي سكند او مدري شيسمونها اكيت تقدر تحدد بالراندر ايضا الوقت لكن افضل التايمر بحيث انه ما يجيب لاج للاعب وعلى العموم كلها وجهات نظر لكن شغل حلو بالتوفيق Link to comment
Rockyz Posted September 30, 2017 Share Posted September 30, 2017 6 minutes ago, Master_MTA said: اشوف التايمر افضل من الراندر واقرا صفحة الويكي الخاصه بالراندر وخاصة انك لو حطيت تايمر بتقدر تاثر على سرعة تغير الالفا والخ اما الراندر فهو يحدث في الملي سكند او مدري شيسمونها اكيت تقدر تحدد بالراندر ايضا الوقت لكن افضل التايمر بحيث انه ما يجيب لاج للاعب وعلى العموم كلها وجهات نظر لكن شغل حلو بالتوفيق ماتوقع انها بتجيب لاق لكن المهم الطريقتين صح Link to comment
Popular Post Abdul KariM Posted October 2, 2017 Popular Post Share Posted October 2, 2017 guiProgressBarSetMaximum وظيفة وضع للبروجريس حد اقصى , يعني الحد المعروف للبروجريس 100 عن طريق الوظيفة هذي تقدر تخليه فوق 100 او تحت 100 Syntax : bool guiProgressBarSetMaximum ( element ProgressBar , int Maximum ) Required Arguments : ProgressBar : البروجريس المراد وضع حد اقصى له Maximum : الرقم المراد وضعه كـ حد اقصى للبروجريس Source Code : _guiProgressBarSetProgress = guiProgressBarSetProgress function guiProgressBarSetMaximum ( pro , Maximum ) assert ( getElementType ( pro ) == "gui-progressbar" , "Bad Arg 1 got " .. type ( pro ) ) assert ( tonumber ( Maximum ) , "Bad Arg 2 got " .. type ( Maximum ) ) Max = Maximum or 100 return true end function guiProgressBarSetProgress ( pro , numPro ) return Max == nil and _guiProgressBarSetProgress ( pro , numPro ) or _guiProgressBarSetProgress ( pro , ( numPro * 100 ) / Max ) end Examples / امثلة local screenPos = { guiGetScreenSize ( ) } myProgressBar = guiCreateProgressBar ( ( screenPos [ 1 ] - 411 ) / 2, ( screenPos [ 2 ] - 391 ) / 2, 411, 25, false ) guiProgressBarSetMaximum ( myProgressBar , 1 ) guiProgressBarSetProgress ( myProgressBar , 0.5 ) local screenPos = { guiGetScreenSize ( ) } myProgressBar = guiCreateProgressBar ( ( screenPos [ 1 ] - 411 ) / 2, ( screenPos [ 2 ] - 391 ) / 2, 411, 25, false ) guiProgressBarSetMaximum ( myProgressBar , 1000 ) guiProgressBarSetProgress ( myProgressBar , 500 ) الوظيفة بيسطه لكن مفعولها قوي وهذا وصل الله وسلم على نبينا محمد 5 1 Link to comment
iMr.WiFi..! Posted October 3, 2017 Share Posted October 3, 2017 guiEditSetOnlyNumbers< مدري لو الوظيفة موجودة من قبل ولكن على حسب بحثي مالقيتها >بسم الله الرحمن الرحيم, سلام عليكم ورحمة الله وبركاتة وظيفة واضحة من أسمها .. تجعل الأيديت لا يقبل الا الأرقام , سورس كود | Source Code : function guiEditSetOnlyNumbers ( edit, boolean ) local function CheckNumbers ( ) local currText = guiGetText( source ) local newText = string.gsub( currText, '[^0-9]', '' ) if newText ~= currText then guiSetText( source, newText ) end end if edit and boolean then if getElementType ( edit ) == 'gui-edit' and type ( boolean ) == 'boolean' then if boolean == true then local CheckEventTrue = getEventHandlers( "onClientGUIChanged", edit ) for i, v in ipairs( CheckEventTrue ) do if v == CheckNumbers then removeEventHandler ( "onClientGUIChanged", edit, v ) break; end end addEventHandler ( "onClientGUIChanged", edit, CheckNumbers ) return true; else local CheckEventFalse = getEventHandlers( "onClientGUIChanged", edit ) for i, v in ipairs( CheckEventFalse ) do if v == CheckNumbers then addEventHandler ( "onClientGUIChanged", edit, v ) break; end end removeEventHandler ( "onClientGUIChanged", edit, CheckNumbers ) return true; end else error ( "ERROR : bad argument ".. getElementType ( edit ) == 'gui-edit' and "2" or "1" .." excepted '".. getElementType ( edit ) == 'gui-edit' and "boolean" or "gui-edit" .."' got ".. getElementType ( edit ) == 'gui-edit' and type ( boolean ) or getElementType ( edit ) ) return false; end else error ( "ERROR : bad argument ".. getElementType ( edit ) == 'gui-edit' and "2" or "1" .." excepted '".. getElementType ( edit ) == 'gui-edit' and "boolean" or "gui-edit" .."' got ".. getElementType ( edit ) == 'gui-edit' and type ( boolean ) or getElementType ( edit ) ) return false; end end السينتاكس | Syntax : bool guiEditSetOnlyNumbers ( element edit, bool boolean ) الأرقمنتات المطلوبة | Required Arguments : edit : الأيديت الذي تريد جعله يوضع الأرقام boolean : تحديد اما ان يجعله يوضع الأرقام فقط ام لا مثال | Example : function guiEditSetOnlyNumbers ( edit, boolean ) local function CheckNumbers ( ) local currText = guiGetText( source ) local newText = string.gsub( currText, '[^0-9]', '' ) if newText ~= currText then guiSetText( source, newText ) end end if edit and boolean then if getElementType ( edit ) == 'gui-edit' and type ( boolean ) == 'boolean' then if boolean == true then local CheckEventTrue = getEventHandlers( "onClientGUIChanged", edit ) for i, v in ipairs( CheckEventTrue ) do if v == CheckNumbers then removeEventHandler ( "onClientGUIChanged", edit, v ) break; end end addEventHandler ( "onClientGUIChanged", edit, CheckNumbers ) return true; else local CheckEventFalse = getEventHandlers( "onClientGUIChanged", edit ) for i, v in ipairs( CheckEventFalse ) do if v == CheckNumbers then addEventHandler ( "onClientGUIChanged", edit, v ) break; end end removeEventHandler ( "onClientGUIChanged", edit, CheckNumbers ) return true; end else error ( "ERROR : bad argument ".. getElementType ( edit ) == 'gui-edit' and "2" or "1" .." excepted '".. getElementType ( edit ) == 'gui-edit' and "boolean" or "gui-edit" .."' got ".. getElementType ( edit ) == 'gui-edit' and type ( boolean ) or getElementType ( edit ) ) return false; end else error ( "ERROR : bad argument ".. getElementType ( edit ) == 'gui-edit' and "2" or "1" .." excepted '".. getElementType ( edit ) == 'gui-edit' and "boolean" or "gui-edit" .."' got ".. getElementType ( edit ) == 'gui-edit' and type ( boolean ) or getElementType ( edit ) ) return false; end end _edit = guiCreateEdit( ... ) guiEditSetOnlyNumbers ( _edit, true ) والسلام خير الختام 1 Link to comment
Rockyz Posted October 3, 2017 Share Posted October 3, 2017 @Abdul KariM وضيفة حلوة بس في خطأ بسيط هذا السطر : assert ( getElementType ( pro ) == "gui-progressbar" , "Bad Arg 1 got " .. type ( pro ) ) يصير كذا : assert ( isElement ( pro ) and getElementType ( pro ) == "gui-progressbar" , "Bad Arg 1 got " .. type ( pro ) ) Link to comment
Abdul KariM Posted October 3, 2017 Share Posted October 3, 2017 هذا موب خطأ لان لو ماكان الالمنت موجود بيرجع فولس ويقولك باد ارقمنت 1 Link to comment
Rockyz Posted October 3, 2017 Share Posted October 3, 2017 (edited) 46 minutes ago, Abdul KariM said: هذا موب خطأ لان لو ماكان الالمنت موجود بيرجع فولس ويقولك باد ارقمنت يب لكن اتوقع بيطلع خطأ getElementType expected element got .. شي زي كذا Edited October 3, 2017 by #,+( _xiRoc[K]; > Link to comment
Abdul KariM Posted October 3, 2017 Share Posted October 3, 2017 انا متعمد اخليه عشان يجي بق من الفنكشن نفسه مايحتاج اسوي تحققات 1 Link to comment
Rockyz Posted October 7, 2017 Share Posted October 7, 2017 (edited) On 9/30/2017 at 22:41, #,+( _xiRoc[K]; > said: بسم الله الرحمن الرحيم guiCreateAnimation gui-Elementالفنكشن يعمل تأثير لأي نوع من الــ يعني الألفا حقت الألمنت تزداد تدريجيا او تنقص تدريجيا _______________________________ الفنكشن معه افنت 'onClientGUIAnimationEnd' هذا الأفنت هو لما التأثير ينتهي _______________________________ Event : Event Source: guiElement - الألمنت المطبق عليه التأثير Paratmers: openState _______________________________ Function : Syntax: bool guiCreateAnimation ( element gui-element, bool openState[ , int effectSpeed = 1 ] ) _______________________________ Source Code: local guiTable = { }; addEvent ( 'onClientGUIAnimationEnd', true ) function animationRender ( guiElement, open, speed ) guiTable [ guiElement ] [ 'guiNow' ] = getTickCount ( ); local anim1, anim2 = interpolateBetween ( 0, 100, 0, 100, 0, 0, ( guiTable [ guiElement ] [ 'guiNow' ] - guiTable [ guiElement ] [ 'guiTick' ] ) / ( speed * 1000 ), 'Linear' ) if ( open ) then guiSetAlpha ( guiElement, anim1 / 100 ) else guiSetAlpha ( guiElement, anim2 / 100 ) end if ( guiTable [ guiElement ] [ 'guiNow' ] > guiTable [ guiElement ] [ 'guiTick' ] + ( speed * 1000 ) ) then removeEventHandler ( 'onClientRender', root, guiTable [ guiElement ] [ 'guiEvent' ] ) guiTable [ guiElement ] = nil triggerEvent ( 'onClientGUIAnimationEnd', guiElement, open ) if ( not open ) then guiSetVisible ( guiElement, false ) end end end function guiCreateAnimation ( guiElement, open, speed ) assert ( isElement ( guiElement ) and getElementType ( guiElement ):find ( 'gui-' ), 'guiCreateAnimation bad argument @ 1 gui-Element expected, got ' .. type ( guiElement ) ) assert ( type ( open ) == 'boolean', 'guiCreateAnimation bad argument @ 2 boolean expected, got ' .. type ( open ) ) local speed = speed or 1 assert ( type ( speed ) == 'number', 'guiCreateAnimation bad argument @ 3 number expected, got ' .. type ( speed ) ) if ( guiTable [ guiElement ] ) then return false end guiSetVisible ( guiElement, true ) guiTable [ guiElement ] = { }; guiTable [ guiElement ] [ 'guiTick' ], guiTable [ guiElement ] [ 'guiEvent' ] = getTickCount ( ), function ( ) animationRender ( guiElement, open, speed ) end addEventHandler ( 'onClientRender', root, guiTable [ guiElement ] [ 'guiEvent' ] ) return true end _______________________________ Arguments: 1 - gui-element - gui-element النافذة او الــ المراد تطبيق التأثير عليها 2 - openState - طريقة التأثير اذا كان true بينفتح تدريجيا و العكس 3 - effectSpeed - سرعة التأثير _______________________________ Example: local sPos = { guiGetScreenSize ( ) }; GUIEditor = { window = {} } addEventHandler("onClientResourceStart", resourceRoot, function() GUIEditor.window[1] = guiCreateWindow( ( sPos [ 1 ] - 520 ) / 2, ( sPos [ 2 ] - 452 ) / 2, 520, 452, "Flashing window", false) guiWindowSetSizable(GUIEditor.window[1], false) btn = guiCreateButton(50, 50, 50, 50, '', false, GUIEditor.window[1]) guiCreateAnimation ( GUIEditor.window[1], true, 0.5 ) guiSetFlashing ( GUIEditor.window[1], true ) outputChatBox 'Start !' setTimer ( function ( ) guiSetFlashing ( GUIEditor.window[1], false ) outputChatBox 'Finish !' end, 5000, 1 ) end ) local flasherEvent = { }; function guiSetFlashing ( wnd, state ) if ( state ) then flasherEvent [ wnd ] = function ( state ) if ( source == GUIEditor.window[1] ) then guiCreateAnimation ( GUIEditor.window[1], not state, 0.5 ) end end addEventHandler ( 'onClientGUIAnimationEnd', resourceRoot, flasherEvent [ wnd ] ) else if ( flasherEvent [ wnd ] ) then removeEventHandler ( 'onClientGUIAnimationEnd', resourceRoot, flasherEvent [ wnd ] ) end end end هذا المثال بيسوي فلاش للوحة وبعد 5 ثواني بيختفي الفلاش تعديل على المثال الي فوق ^ local sPos = { guiGetScreenSize ( ) }; GUIEditor = { window = {} } addEventHandler("onClientResourceStart", resourceRoot, function() GUIEditor.window[1] = guiCreateWindow( ( sPos [ 1 ] - 520 ) / 2, ( sPos [ 2 ] - 452 ) / 2, 520, 452, "Flashing window", false) guiWindowSetSizable(GUIEditor.window[1], false) btn = guiCreateButton(50, 50, 50, 50, '', false, GUIEditor.window[1]) guiCreateAnimation ( GUIEditor.window[1], true, 0.5 ) guiSetFlashing ( GUIEditor.window[1], true ) outputChatBox 'Start !' setTimer ( function ( ) guiSetFlashing ( GUIEditor.window[1], false ) outputChatBox 'Finish !' end, 5000, 1 ) end ) local flasherEvent = { }; function guiSetFlashing ( wnd, state ) if ( state ) then flasherEvent [ wnd ] = function ( state ) if ( source == wnd ) then guiCreateAnimation ( wnd, not state, 0.5 ) end end addEventHandler ( 'onClientGUIAnimationEnd', resourceRoot, flasherEvent [ wnd ] ) else if ( flasherEvent [ wnd ] ) then removeEventHandler ( 'onClientGUIAnimationEnd', resourceRoot, flasherEvent [ wnd ] ) end end end ____ Example 2: local sPos = { guiGetScreenSize ( ) }; local wordsTable = { { 'Hi', 'Hello !' }, { 'Bye', 'Good Bye !' }, { 'Wow !', 'Nice !' }, { '', '????' }, }; GUIEditor = { window = {} } addEventHandler('onClientResourceStart', resourceRoot, function() GUIEditor.window[1] = guiCreateWindow( ( sPos [ 1 ] - 500 ) / 2, ( sPos [ 2 ] - 500 ) / 2, 500, 500, 'My window', false) guiWindowSetSizable(GUIEditor.window[1], false) btn = guiCreateButton(50, 50, 50, 50, '', false, GUIEditor.window[1]) btn1 = guiCreateButton( 500 / 2, 500 / 2, 50, 50, '', false, GUIEditor.window[1]) guiSetVisible ( GUIEditor.window[1], false ) addEventHandler ( 'onClientGUIClick', btn, text, false ) addEventHandler ( 'onClientGUIClick', btn1, text, false ) end ) bindKey ( 'F5', 'down', function ( ) local b = guiCreateAnimation ( GUIEditor.window[1], not guiGetVisible ( GUIEditor.window[1] ), 0.5 ) if ( b ) then guiSetEnabled ( GUIEditor.window[1], false ) outputChatBox'DONE' else outputChatBox'Please Wait' end end ) addEventHandler ( 'onClientGUIAnimationEnd', resourceRoot, function ( openState ) if ( source == GUIEditor.window[1] ) then local mathRandom = wordsTable [ math.random ( #wordsTable ) ] guiSetText ( btn, mathRandom [ 1 ] ) guiSetText ( btn1, mathRandom [ 2 ] ) guiSetEnabled ( GUIEditor.window[1], true ) showCursor ( openState ) end end ) function text ( ) outputChatBox ( '1 : ' .. guiGetText ( btn ), math.random ( 255 ), math.random ( 255 ), math.random ( 255 ), true ) outputChatBox ( '2 : ' .. guiGetText ( btn1 ), math.random ( 255 ), math.random ( 255 ), math.random ( 255 ), true ) end Edited October 7, 2017 by #,+( _xiRoc[K]; > 1 Link to comment
Adham Posted October 11, 2017 Share Posted October 11, 2017 (edited) On 10/3/2017 at 05:11, iMr.WiFi..! said: guiEditSetOnlyNumbers< مدري لو الوظيفة موجودة من قبل ولكن على حسب بحثي مالقيتها >بسم الله الرحمن الرحيم, سلام عليكم ورحمة الله وبركاتة وظيفة واضحة من أسمها .. تجعل الأيديت لا يقبل الا الأرقام , سورس كود | Source Code : function guiEditSetOnlyNumbers ( edit, boolean ) local function CheckNumbers ( ) local currText = guiGetText( source ) local newText = string.gsub( currText, '[^0-9]', '' ) if newText ~= currText then guiSetText( source, newText ) end end if edit and boolean then if getElementType ( edit ) == 'gui-edit' and type ( boolean ) == 'boolean' then if boolean == true then local CheckEventTrue = getEventHandlers( "onClientGUIChanged", edit ) for i, v in ipairs( CheckEventTrue ) do if v == CheckNumbers then removeEventHandler ( "onClientGUIChanged", edit, v ) break; end end addEventHandler ( "onClientGUIChanged", edit, CheckNumbers ) return true; else local CheckEventFalse = getEventHandlers( "onClientGUIChanged", edit ) for i, v in ipairs( CheckEventFalse ) do if v == CheckNumbers then addEventHandler ( "onClientGUIChanged", edit, v ) break; end end removeEventHandler ( "onClientGUIChanged", edit, CheckNumbers ) return true; end else error ( "ERROR : bad argument ".. getElementType ( edit ) == 'gui-edit' and "2" or "1" .." excepted '".. getElementType ( edit ) == 'gui-edit' and "boolean" or "gui-edit" .."' got ".. getElementType ( edit ) == 'gui-edit' and type ( boolean ) or getElementType ( edit ) ) return false; end else error ( "ERROR : bad argument ".. getElementType ( edit ) == 'gui-edit' and "2" or "1" .." excepted '".. getElementType ( edit ) == 'gui-edit' and "boolean" or "gui-edit" .."' got ".. getElementType ( edit ) == 'gui-edit' and type ( boolean ) or getElementType ( edit ) ) return false; end end السينتاكس | Syntax : bool guiEditSetOnlyNumbers ( element edit, bool boolean ) الأرقمنتات المطلوبة | Required Arguments : edit : الأيديت الذي تريد جعله يوضع الأرقام boolean : تحديد اما ان يجعله يوضع الأرقام فقط ام لا مثال | Example : function guiEditSetOnlyNumbers ( edit, boolean ) local function CheckNumbers ( ) local currText = guiGetText( source ) local newText = string.gsub( currText, '[^0-9]', '' ) if newText ~= currText then guiSetText( source, newText ) end end if edit and boolean then if getElementType ( edit ) == 'gui-edit' and type ( boolean ) == 'boolean' then if boolean == true then local CheckEventTrue = getEventHandlers( "onClientGUIChanged", edit ) for i, v in ipairs( CheckEventTrue ) do if v == CheckNumbers then removeEventHandler ( "onClientGUIChanged", edit, v ) break; end end addEventHandler ( "onClientGUIChanged", edit, CheckNumbers ) return true; else local CheckEventFalse = getEventHandlers( "onClientGUIChanged", edit ) for i, v in ipairs( CheckEventFalse ) do if v == CheckNumbers then addEventHandler ( "onClientGUIChanged", edit, v ) break; end end removeEventHandler ( "onClientGUIChanged", edit, CheckNumbers ) return true; end else error ( "ERROR : bad argument ".. getElementType ( edit ) == 'gui-edit' and "2" or "1" .." excepted '".. getElementType ( edit ) == 'gui-edit' and "boolean" or "gui-edit" .."' got ".. getElementType ( edit ) == 'gui-edit' and type ( boolean ) or getElementType ( edit ) ) return false; end else error ( "ERROR : bad argument ".. getElementType ( edit ) == 'gui-edit' and "2" or "1" .." excepted '".. getElementType ( edit ) == 'gui-edit' and "boolean" or "gui-edit" .."' got ".. getElementType ( edit ) == 'gui-edit' and type ( boolean ) or getElementType ( edit ) ) return false; end end _edit = guiCreateEdit( ... ) guiEditSetOnlyNumbers ( _edit, true ) والسلام خير الختام وظيفه رائعه استمر Edited October 11, 2017 by Deativated 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