Jump to content

مشكلة تآيمر يكرر آلرسآلة .


Recommended Posts

سلام عليكم

عندي مشكلة بتآيمر

آلحين آبي آسوي تآيمر في سيرفر سآيد 

وآنقله علي آلشآشة في كلنت سآيد ..

ولمآ آلتآيمر يخلص يرسل رسآلة بآلشآت

-- # Server -- يسوي تآيمر ويرسله للكنت

function convertMilliseconds ( timeMs )
	local minutes	= math.floor( timeMs / 60000 )
	local timeMs	= timeMs - minutes * 60000;
	local seconds	= math.floor( timeMs / 1000 )
	return string.format( '%02d:%02d', minutes, seconds );
end

timer = setTimer( function () end, 10000, 1 )

setTimer( function()
	local timerMission = convertMilliseconds( getTimerDetails(timer) )
	if isTimer(timer) then
		triggerClientEvent( root, "timeStart2", root, timerMission )
	end
end, 1000, 0 )

-- # Client -- يحط آلتآيمر بدي آكس تكست
addEvent("timeStart2", true)
addEventHandler("timeStart2", root,
	function( timerMission )
		theTimer = "".. timerMission ..""
	end
)

-- # Server -- آتحقق آنه خلص .. بعدين يرسل ترآيقر 

setTimer( function()
	if isTimer(timer) then return end
	triggerClientEvent( root, "timeEnd2", root )
	timer = setTimer( function () end, 10000, 1 )
end, 1000, 0 )

-- # Client -- تحقق من كلنت آنه يجيب آلكلمة آلي بآلدي آكس آلتآني ويرسل ترآيقر ,, عشآن يرسل آلرسآلة

addEvent("timeEnd2", true)
addEventHandler("timeEnd2", root,
	function(  )
		local Mission = theMission
		triggerServerEvent("outputText",localPlayer,Mission)
	end
)

-- # Server

addEvent ( "outputText", true )
addEventHandler ( "outputText", root,
	function (Mission)
		if Mission == "Dderby" then outputChatBox("derby mission",root,255,0,0) end
		if Mission == "Derby" then outputChatBox("derby mission",root,255,0,0) end
	end
)

 

آلمشكلة آنه , يكرر رسآلة

derby mission

مدري ليه

 

Link to comment

1 - تقدر تنقص عدد التايمرات بشكل كبير, كذا يعتبر هدر للمال العام, والطريقه كالآتي :

 

سطر 10 وسطر 32 نفس التايمر بالضبط, تقدر تسوي وظيفه وتخلي التايمر بداخلها وتستدعي الوظيفه فقط. -

- سطر 12 وسطر 29 تقدر تختصرها بشوية متغيرات بدل كل هالتايمرات.

بخصوص مشكلتك هي بسبب أنه التايمرات أنت مخليها لانهائيه من خلال وضع قيمتها صفر

عندك خيارين :

1- تحط عدد مرات تكرار محدده .

2- تستخدم وظيفتين التحقق من التايمر + قتل التايمر ( isTimer, killTimer ) .

3- عندك تايمرات بنفس المسمى وهذا يمكن يسبب لك مشاكل .

  • Like 1
Link to comment
2 hours ago, Sha67 said:

1 - تقدر تنقص عدد التايمرات بشكل كبير, كذا يعتبر هدر للمال العام, والطريقه كالآتي :

 

سطر 10 وسطر 32 نفس التايمر بالضبط, تقدر تسوي وظيفه وتخلي التايمر بداخلها وتستدعي الوظيفه فقط. -

- سطر 12 وسطر 29 تقدر تختصرها بشوية متغيرات بدل كل هالتايمرات.

بخصوص مشكلتك هي بسبب أنه التايمرات أنت مخليها لانهائيه من خلال وضع قيمتها صفر

عندك خيارين :

1- تحط عدد مرات تكرار محدده .

2- تستخدم وظيفتين التحقق من التايمر + قتل التايمر ( isTimer, killTimer ) .

3- عندك تايمرات بنفس المسمى وهذا يمكن يسبب لك مشاكل .

كفو مآ فهمت شي :lol:

2 hours ago, Sha67 said:

3- عندك تايمرات بنفس المسمى وهذا يمكن يسبب لك مشاكل .

وين هآدي آلتآيمرآت , حدد

2 hours ago, Sha67 said:

1- تحط عدد مرات تكرار محدده .

 

لو حطيت عدد مررآت تكرآر محدده , مآ بيشتغل لمآ يخلص .

Link to comment
-- Client 

addEventHandler("onClientRender", root,
    function()
        dxDrawText(tostring(getElementData(resourceRoot,'Timer')), 153, 304, 308, 371, tocolor(255, 255, 255, 255), 2.00, "default", "left", "top", false, false, false, false, false)
    end
)
-- Server

timer = setTimer( function () end, 10000, 1 )

setTimer( function()
	if isTimer(timer) then
		local timerMission = math.floor(getTimerDetails(timer) / 1000)
		setElementData(resourceRoot,'Timer',timerMission) 
	else
		setElementData(resourceRoot,'Timer','Timer End')
	end
end, 50, 0 )

 

  • Confused 1
Link to comment
33 minutes ago, KillerX said:

-- Client 

addEventHandler("onClientRender", root,
    function()
        dxDrawText(tostring(getElementData(resourceRoot,'Timer')), 153, 304, 308, 371, tocolor(255, 255, 255, 255), 2.00, "default", "left", "top", false, false, false, false, false)
    end
)

-- Server

timer = setTimer( function () end, 10000, 1 )

setTimer( function()
	if isTimer(timer) then
		local timerMission = math.floor(getTimerDetails(timer) / 1000)
		setElementData(resourceRoot,'Timer',timerMission) 
	else
		setElementData(resourceRoot,'Timer','Timer End')
	end
end, 50, 0 )

 

دقيقة بجرب ^,^

طيب ولو آبي آسوي آن لمآ آلتآيمر يخلص يبدآ تآني بيكون كدآ ؟

timer = setTimer( function () end, 10000, 1 )

setTimer( function()
	if isTimer(timer) then
		local timerMission = math.floor(getTimerDetails(timer) / 1000)
		setElementData(resourceRoot,'Timer',timerMission) 
	else
		setElementData(resourceRoot,'Timer','Timer End')
		timer = setTimer( function () end, 10000, 1 )
	end
end, 50, 0 )

 

Link to comment

بيكون كذا تفضل 

timer = setTimer( function () end, 10000, 0)

setTimer( function()
	if isTimer(timer) then
		local timerMission = math.floor(getTimerDetails(timer) / 1000)
		setElementData(resourceRoot,'Timer',timerMission) 
	else
		setElementData(resourceRoot,'Timer','Timer End')
	end
end, 50, 0 )

 

Link to comment
3 hours ago, KillerX said:

بيكون كذا تفضل 


timer = setTimer( function () end, 10000, 0)

setTimer( function()
	if isTimer(timer) then
		local timerMission = math.floor(getTimerDetails(timer) / 1000)
		setElementData(resourceRoot,'Timer',timerMission) 
	else
		setElementData(resourceRoot,'Timer','Timer End')
	end
end, 50, 0 )

 

كدآ مآ بينفع

لآنه مآ بيلحق يسوي آلآشيآء آلي آلمفروض يسويهآ لو آلتآيمر خلص

, وش آلخطآ بطريقتي ؟

4 hours ago, Mr.Mostafa said:

 

Link to comment

لو تبيه تايمر واحد وللجميع ولمهمة الديربي
إستخدم المتغيرات
مثلاً إستخدم متغير وكل ثانية نقصه 1 وسوي ترايقر لجميع اللاعبين تحديث التايمر ..
أو بدون ترايقر , تقدر تسوي تايمر بالسيرفر سايد يبدا المهمة ومن اول م يبدا يسوي ترايقر لجميع اللاعبين ويسوي لهم متغير بكلنت لكل لاعب ويحدث التايمر هناك افضل من لوب كل ثانية ..
أتمنى اكون افدتك.

Link to comment
function convertMilliseconds ( timeMs )
	local minutes	= math.floor( timeMs / 60000 )
	local timeMs	= timeMs - minutes * 60000;
	local seconds	= math.floor( timeMs / 1000 )
	return string.format( '%02d:%02d', minutes, seconds );
end

timer = setTimer( function () end, 10000, 1 )

iamtimer=setTimer( function()
	if isTimer(timer) then
	local timerMission = convertMilliseconds( getTimerDetails(timer) )
    setElementData(resourceRoot,'time',timerMission)
     else
      removeElementData(resourceRoot,'time')
      outputChatBox('timer done!',root)
      killTimer(iamtimer)
	end
end, 1000, 0 )
--------------client side
addEventHandler('onClientRender',root,function()

    	if getElementData(resourceRoot,'time') then
      		dxDrawText(tostring(getElementData(resourceRoot,'time') ),255,100)
      	end
end)

اتوقع وصلتك الفكره بالتوفيق

Link to comment
2 minutes ago, Sha67 said:

كل الإثنين لا نهائية لأنك حاط القيمة صفر, إذا استخدمت الكود حق اللي أعطاك فوق ^^

آلكود حقي لآ نهآئي , مسويه 1

On 31/08/2018 at 04:35, Mr.Mostafa said:

10000, 1 )

ــ

وعلي آلعموم آلمشكلة آنحلت آلحمدآلله , تسلم :)

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