Jump to content

تحت التطوير :كود - Useful Arab functions


Booo

Recommended Posts

@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

وضيفة نوعا ما مفيدة B|

طبعا الوضيفة زي الي فوق لكن الفرق هو انه فيه بارتمر زيادة والي هو الأندكس

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 by #,+( _xiRoc[K]; >
  • Like 1
Link to comment

السلام عليكم روحمة الله وبركاته

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 by !#NssoR_)
Modifed as requested.
  • Like 2
Link to comment

السلام عليكم ورحمة الله وبركاته , 

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

@#_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
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

السلام عليكم ورحمة الله وبركاته

وظيفة 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 by Master_MTA
  • Like 1
Link to comment
14 hours ago, #,+( _xiRoc[K]; > said:

@Master_MTA

حلو, لكن موجود من قبل

لا في فرق  حبيب قلبي ذي تزبط النافذه بمكانها الاصلي مب زي 

centerWindow

لا لاما تحطها بنص الشاشه ذي تحطها بمكانها اللي سويته انت بس عند كل اللاعبين ما اتوقع شفتها من قبل

Link to comment
1 hour ago, Master_MTA said:

لا في فرق  حبيب قلبي ذي تزبط النافذه بمكانها الاصلي مب زي 

centerWindow

لا لاما تحطها بنص الشاشه ذي تحطها بمكانها اللي سويته انت بس عند كل اللاعبين ما اتوقع شفتها من قبل

اللعبة ماتت خلاص 

  • Sad 2
Link to comment

بسم الله الرحمن الرحيم

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 by #,+( _xiRoc[K]; >
  • Like 2
Link to comment

بسم الله الرحمن الرحيم

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 by !#NssoR_)
As requested.
  • Like 1
Link to comment
2 minutes ago, #,+( _xiRoc[K]; > said:

تعديل بسيط على السورس كود الي فوق :

كان يفضل انك تسميها اسم اخر لان الام لا يتوافق مع الوظيفه

guiFadeIn()

او شي مثل كذا لكن وظيفه حلوه لكن اتوقع تقدر تستخدم التايمر بكذا يكون سهل الموضوع

 

Link to comment
2 minutes ago, Master_MTA said:

كان يفضل انك تسميها اسم اخر لان الام لا يتوافق مع الوظيفه

guiFadeIn()

او شي مثل كذا لكن وظيفه حلوه لكن اتوقع تقدر تستخدم التايمر بكذا يكون سهل الموضوع

 

الصراحة انا الأسم مادري وش احطه

لكن في النهاية الأسم مايهم تقدر تغيره

+ الطريقة هذي افضل من التايمر

Edited by #,+( _xiRoc[K]; >
Link to comment
Just now, #,+( _xiRoc[K]; > said:

+ طريقتي افضل من التايمر

اشوف التايمر افضل من الراندر واقرا صفحة الويكي الخاصه بالراندر

وخاصة انك لو حطيت تايمر بتقدر تاثر على سرعة تغير الالفا والخ

اما الراندر فهو يحدث في الملي سكند او مدري شيسمونها اكيت تقدر تحدد بالراندر ايضا الوقت لكن افضل التايمر بحيث انه ما يجيب لاج للاعب

وعلى العموم كلها وجهات نظر لكن شغل حلو بالتوفيق

Link to comment
6 minutes ago, Master_MTA said:

اشوف التايمر افضل من الراندر واقرا صفحة الويكي الخاصه بالراندر

وخاصة انك لو حطيت تايمر بتقدر تاثر على سرعة تغير الالفا والخ

اما الراندر فهو يحدث في الملي سكند او مدري شيسمونها اكيت تقدر تحدد بالراندر ايضا الوقت لكن افضل التايمر بحيث انه ما يجيب لاج للاعب

وعلى العموم كلها وجهات نظر لكن شغل حلو بالتوفيق

ماتوقع انها بتجيب لاق

لكن المهم الطريقتين صح

Link to comment

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 )

والسلام خير الختام

  • Like 1
Link to comment
46 minutes ago, Abdul KariM said:

هذا موب خطأ لان لو ماكان الالمنت موجود بيرجع فولس ويقولك باد ارقمنت

يب لكن اتوقع بيطلع خطأ

getElementType

expected element got ..

شي زي كذا

Edited by #,+( _xiRoc[K]; >
Link to comment
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 by #,+( _xiRoc[K]; >
  • Like 1
Link to comment
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 by Deativated
Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...