Jump to content

مساعدة في وضع تايمر علي الزر


Recommended Posts

السلام عليكم

الحين انا مسوي مود 

مثلا زر يقفل ويفتح بعد 5 دقائق لما اضغط علية

لكن المشلكة ننتظر ومانعرف متي بيفتح

ابي يجي تايمر (عد تنازلي علي الزر) حتي يفتح الزر مرة اخرة

وشكرا

elseif ( source == btn.mp5 ) then 
playSound("open.wav")
guiSetEnabled (btn.mp5 ,false)
setTimer(guiSetEnabled, 300000, 0 ,btn.mp5 ,true)	
	triggerServerEvent('giveWeapon_', localPlayer , 0 , 29, 1000 , "MP5" )

ياريت يكون بسيط وشكررا

Link to comment
1 hour ago, SAM!! said:

السلام عليكم

الحين انا مسوي مود 

مثلا زر يقفل ويفتح بعد 5 دقائق لما اضغط علية

لكن المشلكة ننتظر ومانعرف متي بيفتح

ابي يجي تايمر (عد تنازلي علي الزر) حتي يفتح الزر مرة اخرة

وشكرا


elseif ( source == btn.mp5 ) then 
playSound("open.wav")
guiSetEnabled (btn.mp5 ,false)
setTimer(guiSetEnabled, 300000, 0 ,btn.mp5 ,true)	
	triggerServerEvent('giveWeapon_', localPlayer , 0 , 29, 1000 , "MP5" )

ياريت يكون بسيط وشكررا

addEventHandler("onClientGUIClick",root,
function ( Test )
	if ( source == btn.mp5 ) then
    playSound("open.wav")
	local Test = guiGetText( btn.mp5 )
	guiSetEnabled( btn.mp5 , true )
    guiSetText ( source, "الكلام التبيه يظهر والزر مغلق" )
    TimerEnabled = setTimer ( guiSetText, 300000, 1, source, "الكلام التبيه يظهر لما الزر يرجع" )
	guiSetEnabled(source, false)
	setTimer(guiSetEnabled, 300000 , 1 , btn.mp5, true )
	end
end
)
-- ملاحظة لو تبي تجرب وتشوف شغالة ولا لا شيل 300000 وحط اول شي 5000 5ثواني وجرب

جرب وان شاء الله تظبط نفس ماظبطت معي

Edited by ,#Savage
Link to comment

سويت لك فنكشن مفيد يساعدك

guiEnable = {};
local types = {['second']=1000, ['minute']=1000*60, ['hour']=1000*60*60, ['ms']=1};

function guiSetDelay(gui, delay)
    assert(getElementType(gui):find('gui-'), 'bad argument guiSetDelay @1 gui-element expected got '..(isElement(gui) and getElementType(gui) or type(gui)))
    assert(type(delay)=='table', 'bad argument guiSetDelay @2 table expected got '..type(delay))
    local canContinue
    for key in pairs(types) do
        if delay[key] then
            canContinue = true;
            break
        end
    end
    if canContinue then
        guiSetEnabled(gui, false);
        guiEnable[gui] = {oldString = guiGetText(gui), element = gui}
        local ms = 0;
        for key, value in pairs(delay) do
            if types[key] then
                ms=ms+(types[key]*value)
            end
        end
        guiEnable[gui].timer = setTimer(function()
            guiSetEnabled(gui, true)
            if isTimer(guiEnable[gui].timer) then killTimer(guiEnable[gui].timer);guiSetText(gui,guiEnable[gui].oldString);guiEnable[gui]=nil;end;
            local newTable = {};
            for _, value in pairs(guiEnable) do
                table.insert(newTable, value)
            end
            if #newTable == 0 and isTimer(timerCheck) then killTimer(timerCheck) end
        end, ms, 1)
        timer(true)
        if not isTimer(timerCheck) then timerCheck = setTimer(timer, 1000, 0);end;
        setTimer(function() local details = getTimerDetails(guiEnable[gui].timer);guiSetText(guiEnable[gui].element, msToString(details)); end, 50, 1)
    end
end

function timer(b)
    for _, value in pairs(guiEnable) do
        if isTimer(value.timer) then
            local details = getTimerDetails(value.timer);guiSetText(value.element, msToString(details));
        end
    end
end

function msToString(ms)
    if ms and type(ms)=='number' then
        local second = (ms and (ms>=1000 and ms) or 1000)/1000
        local minute = second/60
        return ('%02d:%02d:%02d'):format(math.floor(minute/24), math.floor(minute%60), math.floor(second%60))
    end
    return false
end

كودك يصير كذا :

elseif ( source == btn.mp5 ) then 
guiSetDelay(source, {ms = 300000})
playSound("open.wav")    
triggerServerEvent('giveWeapon_', localPlayer , 0 , 29, 1000 , "MP5" )

 

  • Thanks 1
Link to comment

,#Savage

اخوي كودك يجيب كلام علي الزر انا ابي تايمر 

عد تنازلي علي التايمر

 

,#Savage

كودك تمام شغال بس مشكلتي مابي يجي كلام علي الزر ابي يجي تايمر

 

 

#,+( _xiRoc[K]; >

نجح كودك 

شكرا شكرا

شكرا شكرا شكرا شكرا:x

:x

#,+( _xiRoc[K]; >

شوف كمان طلب معلش ابي لما ينتهي  الوقت يرسل رسالة في الشات يقولة يمكنك الشراء مرة اخري

او يجيب صوت مثلا للشخص كتنبية لة

وشكرا مقدما

Link to comment
15 minutes ago, SAM!! said:

,#Savage

اخوي كودك يجيب كلام علي الزر انا ابي تايمر 

عد تنازلي علي التايمر

 

,#Savage

كودك تمام شغال بس مشكلتي مابي يجي كلام علي الزر ابي يجي تايمر

 

 

#,+( _xiRoc[K]; >

نجح كودك 

شكرا شكرا

شكرا شكرا شكرا شكرا:x

:x

اها ماكنت فاهم طلبك المهم بالتوفيق

  • Like 1
Link to comment

غير السورس كود لـ:

guiEnable = {};
local types = {['second']=1000, ['minute']=1000*60, ['hour']=1000*60*60, ['ms']=1};
addEvent('onClientGUIDelayStart', true);
addEvent('onClientGUIDelayEnd', true);

function guiSetDelay(gui, delay)
    assert(getElementType(gui):find('gui-'), 'bad argument guiSetDelay @1 gui-element expected got '..(isElement(gui) and getElementType(gui) or type(gui)))
    assert(type(delay)=='table', 'bad argument guiSetDelay @2 table expected got '..type(delay))
    local canContinue
    for key in pairs(types) do
        if delay[key] then
            canContinue = true;
            break
        end
    end
    if canContinue then
        guiSetEnabled(gui, false);
        guiEnable[gui] = {oldString = guiGetText(gui), element = gui}
        local ms = 0;
        for key, value in pairs(delay) do
            if types[key] then
                ms=ms+(types[key]*value)
            end
        end
        guiEnable[gui].timer = setTimer(function()
            guiSetEnabled(gui, true)
            if isTimer(guiEnable[gui].timer) then killTimer(guiEnable[gui].timer);guiSetText(gui,guiEnable[gui].oldString);guiEnable[gui]=nil;end;
            triggerEvent('onClientGUIDelayEnd', guiEnable[gui].element)
            local newTable = {};
            for _, value in pairs(guiEnable) do
                table.insert(newTable, value)
            end
            if #newTable == 0 and isTimer(timerCheck) then killTimer(timerCheck) end
        end, ms, 1)
        if guiEnable[gui].timer then
            timer()
            if not isTimer(timerCheck) then timerCheck = setTimer(timer, 1000, 0);end;
            setTimer(function() local details = getTimerDetails(guiEnable[gui].timer);guiSetText(guiEnable[gui].element, msToString(details)); end, 50, 1)
            triggerEvent('onClientGUIDelayStart', guiEnable[gui].element)
        end
    end
end

function timer()
    for _, value in pairs(guiEnable) do
        if isTimer(value.timer) then
            local details = getTimerDetails(value.timer);guiSetText(value.element, msToString(details));
        end
    end
end

function msToString(ms)
    if ms and type(ms)=='number' then
        local second = (ms and (ms>=1000 and ms) or 1000)/1000
        local minute = second/60
        return ('%02d:%02d:%02d'):format(math.floor(minute/24), math.floor(minute%60), math.floor(second%60))
    end
    return false
end

اذا تبي تضيف شي عندما يبدء المؤقت

addEventHandler('onClientGUIDelayStart', resourceRoot, function()
    --Your code
end)

واذا تبي تضيف شي عندما ينتهي المؤقت

addEventHandler('onClientGUIDelayEnd', resourceRoot, function()
    --Your code
end)

 

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...