Sande Posted June 14, 2014 Share Posted June 14, 2014 Hello, this is part from my level system. The problem is this code isn´t actually do anything for somereason, no debug errors. This function have to work like this: Get All players, check does they have needed elementdata if not then set the data. I need some help to get this working because now some players just have an empty hole in scoreboard , soo i want there is something like the default details. function setUP ( ) setTimer(makeThisWorking, 100, 0) setTimer(noFalse, 100, 0) end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), setUP) function makeThisWorking ( ) local players = getElementsByType ( "player" ) for theKey,thePlayer in ipairs(players) do local rank = getElementData(thePlayer, "Rank") local xp = getElementData(thePlayer, "XP") local level = getElementData(thePlayer, "Level") if (rank) == false then setElementData(source, "XP", dfX ) setElementData(source, "Rank", dfR ) setElementData(source, "Level", dfL ) setElementData(source, "XPTNR", dfXN ) elseif (xp) == false then setElementData(source, "XP", dfX ) setElementData(source, "Rank", dfR ) setElementData(source, "Level", dfL ) setElementData(source, "XPTNR", dfXN ) elseif (level) == false then setElementData(source, "XP", dfX ) setElementData(source, "Rank", dfR ) setElementData(source, "Level", dfL ) setElementData(source, "XPTNR", dfXN ) end end end Link to comment
Et-win Posted June 14, 2014 Share Posted June 14, 2014 You are getting the data from thePlayer, but setting it to source. Are you sure this not has to be thePlayer too? Link to comment
Cadell Posted June 14, 2014 Share Posted June 14, 2014 Give this a try function setUP ( ) setTimer(makeThisWorking, 500, 0) setTimer(noFalse, 500, 0) end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), setUP) function makeThisWorking ( ) local players = getElementsByType ( "player" ) for theKey,thePlayer in ipairs(players) do local rank = getElementData(thePlayer, "Rank") local xp = getElementData(thePlayer, "XP") local level = getElementData(thePlayer, "Level") if (rank) == false then setElementData(thePlayer, "XP", dfX ) setElementData(thePlayer, "Rank", dfR ) setElementData(thePlayer, "Level", dfL ) setElementData(thePlayer, "XPTNR", dfXN ) elseif (xp) == false then setElementData(thePlayer, "XP", dfX ) setElementData(thePlayer, "Rank", dfR ) setElementData(thePlayer, "Level", dfL ) setElementData(thePlayer, "XPTNR", dfXN ) elseif (level) == false then setElementData(thePlayer, "XP", dfX ) setElementData(thePlayer, "Rank", dfR ) setElementData(thePlayer, "Level", dfL ) setElementData(thePlayer, "XPTNR", dfXN ) end end end Link to comment
Max+ Posted June 14, 2014 Share Posted June 14, 2014 Give this a try function setUP ( ) setTimer(makeThisWorking, 500, 0) setTimer(noFalse, 500, 0) end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), setUP) function makeThisWorking ( ) local players = getElementsByType ( "player" ) for theKey,thePlayer in ipairs(players) do local rank = getElementData(thePlayer, "Rank") local xp = getElementData(thePlayer, "XP") local level = getElementData(thePlayer, "Level") if (rank) == false then setElementData(thePlayer, "XP", dfX ) setElementData(thePlayer, "Rank", dfR ) setElementData(thePlayer, "Level", dfL ) setElementData(thePlayer, "XPTNR", dfXN ) elseif (xp) == false then setElementData(thePlayer, "XP", dfX ) setElementData(thePlayer, "Rank", dfR ) setElementData(thePlayer, "Level", dfL ) setElementData(thePlayer, "XPTNR", dfXN ) elseif (level) == false then setElementData(thePlayer, "XP", dfX ) setElementData(thePlayer, "Rank", dfR ) setElementData(thePlayer, "Level", dfL ) setElementData(thePlayer, "XPTNR", dfXN ) end end end thePlaeyr - not defined noFalse - where is it in the script ? dfX - not defined ? dfr - not defined ? dfL - samething ? dfXN - samething ? Link to comment
Sande Posted June 14, 2014 Author Share Posted June 14, 2014 Sorry i wasnt see there is missing parts. local dfX = 0 local dfXN = 50 local dfL = 1 local dfR = "Newbie Drifter" function setUP ( ) setTimer(makeThisWorking, 100, 0) setTimer(noFalse, 100, 0) end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), setUP) function makeThisWorking ( ) local players = getElementsByType ( "player" ) for theKey,thePlayer in ipairs(players) do local rank = getElementData(thePlayer, "Rank") local xp = getElementData(thePlayer, "XP") local level = getElementData(thePlayer, "Level") if (rank) == false then setElementData(source, "XP", dfX ) setElementData(source, "Rank", dfR ) setElementData(source, "Level", dfL ) setElementData(source, "XPTNR", dfXN ) elseif (xp) == false then setElementData(source, "XP", dfX ) setElementData(source, "Rank", dfR ) setElementData(source, "Level", dfL ) setElementData(source, "XPTNR", dfXN ) elseif (level) == false then setElementData(source, "XP", dfX ) setElementData(source, "Rank", dfR ) setElementData(source, "Level", dfL ) setElementData(source, "XPTNR", dfXN ) end end end function noFalse ( ) local players = getElementsByType ( "player" ) for theKey,thePlayer in ipairs(players) do if getElementData(thePlayer, "XP" ) == false or getElementData(thePlayer, "Level" ) == false or getElementData(thePlayer, "Rank" ) == false then setElementData(thePlayer, "XP", 0) setElementData(thePlayer, "Rank", "Newbie Drifter") setElementData(thePlayer, "Level", 1) end end end Link to comment
Max+ Posted June 14, 2014 Share Posted June 14, 2014 Try This , register then login in F8 after that start the script and type in f8 debugscript 3 to see any erros . ., local dfX = 0 local dfXN = 50 local dfL = 1 local dfR = "Newbie Drifter" function setUP ( ) setTimer(makeThisWorking, 100, 0) setTimer(noFalse, 100, 0) end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), setUP) function makeThisWorking ( ) local players = getElementsByType ( "player" ) for theKey,thePlayer in ipairs(players) do local rank = getElementData(source, "Rank") local xp = getElementData (source, "XP") local level = getElementData(source, "Level") if (rank) == false then setElementData(source, "XP", dfX ) setElementData(source, "Rank", dfR ) setElementData(source, "Level", dfL ) setElementData(source, "XPTNR", dfXN ) elseif (xp) == false then setElementData(source, "XP", dfX ) setElementData(source, "Rank", dfR ) setElementData(source, "Level", dfL ) setElementData(source, "XPTNR", dfXN ) elseif (level) == false then setElementData(source, "XP", dfX ) setElementData(source, "Rank", dfR ) setElementData(source, "Level", dfL ) setElementData(source, "XPTNR", dfXN ) end end end addEventHandler('onPlayerLogin', root, makeThisWorking ) function noFalse ( ) local players = getElementsByType ( "player" ) for theKey,thePlayer in ipairs(players) do if getElementData(source, "XP" ) == false or getElementData(source, "Level" ) == false or getElementData(source, "Rank" ) == false then setElementData(source, "XP", 0) setElementData(source, "Rank", "Newbie Drifter") setElementData(source, "Level", 1) end end end addEventHandler('onPlayerLogin', root, noFalse ) Link to comment
Sande Posted June 15, 2014 Author Share Posted June 15, 2014 Thanks for that. If have now only one problem to get rank up message working i have been trying this: function systemrankup(dataName,oldValue) if getElementType(source) ~= "player" then return end if dataName == "rank" then local rank = getElementData(source, "Rank") local level = getElementData(source, "Level") outputChatBox("* Congrulations, you rank and level has been raised your rank is now "..tostring(rank).." and your level is "..tostring(level)..".",source,0,255,167) end end addEventHandler("onElementDataChange",getRootElement(),systemrankup) The idea is, when elementdata changing and the elementdata what changing is rank then output that message. Link to comment
Max+ Posted June 15, 2014 Share Posted June 15, 2014 Try This , function systemrankup(dataName) if getElementType(source) == 'player' then if getElementData(source, dataName) == 'Rank' and getElementData(source, dataName ) == 'Level' then local rank = getElementData(source, 'Rank') local level = getElementData(source, 'Level') outputChatBox("* Congrulations, you rank and level has been raised your rank is now "..tostring(rank).." and your level is "..tostring(level)..".",source,0,255,167) end end end addEventHandler("onElementDataChange",getRootElement(),systemrankup) Link to comment
Sande Posted June 15, 2014 Author Share Posted June 15, 2014 Max it doesnt working, no debug errors. Link to comment
Et-win Posted June 15, 2014 Share Posted June 15, 2014 I guess if getElementData(source, dataName) == 'Rank' and getElementData(source, dataName ) == 'Level' then That ^That would be the problem. As soon as setElementData is fired, it fires onElementDataChange? So how can you check or the dataName = Rank AND Level? (I mean it gets fired by each code apart. So first for "Rank", and then "Level") Link to comment
Max+ Posted June 15, 2014 Share Posted June 15, 2014 Max it doesnt working, no debug errors. is it serverside in meta.xml ? Link to comment
Sande Posted June 15, 2014 Author Share Posted June 15, 2014 Max yes it is serverside. So if that is not possible how i can check the rank ups? if getElementData(source, dataName) == 'Rank' and getElementData(source, dataName ) == 'Level' then Link to comment
Et-win Posted June 15, 2014 Share Posted June 15, 2014 if getElementData(source, dataName) == 'Rank' or getElementData(source, dataName ) == 'Level' then Link to comment
Sande Posted June 15, 2014 Author Share Posted June 15, 2014 Et-win, that doesn´t work. And no debugs. Link to comment
Et-win Posted June 15, 2014 Share Posted June 15, 2014 Does the function even run? Test it with outputChatBox... ( function systemrankup(dataName) outputChatBox("Test") ... ) Link to comment
Castillo Posted June 15, 2014 Share Posted June 15, 2014 function systemrankup ( dataName ) if ( getElementType ( source ) == 'player' ) then if ( dataName == "Rank" or dataName == "Level" ) then local rank = getElementData ( source, 'Rank' ) local level = getElementData ( source, 'Level' ) outputChatBox ( "* Congrulations, you rank and level has been raised your rank is now ".. tostring ( rank ) .." and your level is ".. tostring ( level ) ..".", source, 0, 255, 167 ) end end end addEventHandler ( "onElementDataChange", getRootElement(), systemrankup ) Link to comment
Et-win Posted June 15, 2014 Share Posted June 15, 2014 Code Ow ofc, dataName is already the date :facepalm: Link to comment
Sande Posted June 15, 2014 Author Share Posted June 15, 2014 Yes it runs. Multiple times, about 6 times when i get xp. 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