FSXTim Posted September 19, 2012 Share Posted September 19, 2012 Hay, I'm trying to raise the playtime (Spielzeit) every 60 seconds about 1. So I created a endless loop, but it isn't endless. After two times, it stops. function setZeit() for index, spieler in ipairs (getElementsByType("player")) do if getElementData( spieler, "LoggedIn" ) then setElementData(spieler, "Spielzeit", getElementData(spieler, "Spielzeit") + 1) local result = mysql_query(sqlcon, "UPDATE user_data SET Spielzeit='"..tostring(getElementData(spieler,"Spielzeit")).."' WHERE Username='"..tostring(getElementData(spieler,"Username")).."';") if (result) then mysql_free_result(result) end end end setTimer(setZeit2, 30000, 1) end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), setZeit) function setZeit2() setTimer(setZeit, 30000, 1) end Greets Link to comment
TAPL Posted September 19, 2012 Share Posted September 19, 2012 (edited) The timers look fine, try add outputChatBox inside function setZeit, and see if it does output two times and then stop or not. Edited September 19, 2012 by Guest Link to comment
Alan.Alexander Posted September 19, 2012 Share Posted September 19, 2012 Try this. function setZeit() for index, spieler in ipairs (getElementsByType("player")) do if getElementData( spieler, "LoggedIn" ) then setElementData(spieler, "Spielzeit", getElementData(spieler, "Spielzeit") + 1) local result = mysql_query(sqlcon, "UPDATE user_data SET Spielzeit='"..tostring(getElementData(spieler,"Spielzeit")).."' WHERE Username='"..tostring(getElementData(spieler,"Username")).."';") if (result) then mysql_free_result(result) end end end end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), setZeit2) function setZeit2() setTimer(setZeit, 60000, 0) end Link to comment
FSXTim Posted September 19, 2012 Author Share Posted September 19, 2012 @Alan.Alexander: This doesn't work. @TAPL function setZeit() outputChatBox("Test1", getRootElement()) for index, spieler in ipairs (getElementsByType("player")) do outputChatBox("Test2", getRootElement()) if getElementData( spieler, "LoggedIn" ) then outputChatBox("Test3", getRootElement()) setElementData(spieler, "Spielzeit", getElementData(spieler, "Spielzeit") + 1) local result = mysql_query(sqlcon, "UPDATE user_data SET Spielzeit='"..tostring(getElementData(spieler,"Spielzeit")).."' WHERE Username='"..tostring(getElementData(spieler,"Username")).."';") if (result) then mysql_free_result(result) end end end setTimer(setZeit2, 30000, 1) end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), setZeit) function setZeit2() setTimer(setZeit, 30000, 1) end The ChatBox outputs the following two times: Greets Link to comment
Renkon Posted September 20, 2012 Share Posted September 20, 2012 setTimer(setZeit2, 30000, 1) 30000x2 = 60000 So whole loop is repeteated every 10 minutes. You should set 3000 instead of 30000 same in the other settimer Link to comment
FSXTim Posted September 20, 2012 Author Share Posted September 20, 2012 No, Renkon. I Want to repeat the loop every minute, so 2x30000=60000 is correct. Greets Link to comment
FSXTim Posted September 20, 2012 Author Share Posted September 20, 2012 If I am alone on my server, this script works perfectly. If another player join, the loop stops, but why? function setZeit() outputChatBox("Test1", getRootElement()) for index, spieler in ipairs (getElementsByType("player")) do outputChatBox("Test2", getRootElement()) if getElementData( spieler, "LoggedIn" ) then outputChatBox("Test3", getRootElement()) setElementData(spieler, "Spielzeit", getElementData(spieler, "Spielzeit") + 1) local result = mysql_query(sqlcon, "UPDATE user_data SET Spielzeit='"..tostring(getElementData(spieler,"Spielzeit")).."' WHERE Username='"..tostring(getElementData(spieler,"Username")).."';") if (result) then mysql_free_result(result) end end end setTimer(setZeit2, 30000, 1) end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), setZeit) function setZeit2() setTimer(setZeit, 30000, 1) end Greets Link to comment
Renkon Posted September 20, 2012 Share Posted September 20, 2012 Why don't you use a timer only? Also, I have noticed that your third argument on both setTimers is 1. That means, it will be executed only ONCE. Set 0 instead. function setZeit() setTimer( function() outputChatBox("Test1", getRootElement()) for index, spieler in ipairs (getElementsByType("player")) do outputChatBox("Test2", getRootElement()) if getElementData( spieler, "LoggedIn" ) then outputChatBox("Test3", getRootElement()) setElementData(spieler, "Spielzeit", getElementData(spieler, "Spielzeit") + 1) local result = mysql_query(sqlcon, "UPDATE user_data SET Spielzeit='"..tostring(getElementData(spieler,"Spielzeit")).."' WHERE Username='"..tostring(getElementData(spieler,"Username")).."';") if (result) then mysql_free_result(result) end end end end, 60000, 0) end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), setZeit) Link to comment
FSXTim Posted September 20, 2012 Author Share Posted September 20, 2012 Thank you, but I found another Solution. It works now. Greets 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