Sande Posted June 14, 2014 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
Et-win Posted June 14, 2014 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?
Cadell Posted June 14, 2014 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
Max+ Posted June 14, 2014 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 ?
Sande Posted June 14, 2014 Author 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
Max+ Posted June 14, 2014 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 )
Sande Posted June 15, 2014 Author 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.
Max+ Posted June 15, 2014 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)
Et-win Posted June 15, 2014 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")
Max+ Posted June 15, 2014 Posted June 15, 2014 Max it doesnt working, no debug errors. is it serverside in meta.xml ?
Sande Posted June 15, 2014 Author 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
Et-win Posted June 15, 2014 Posted June 15, 2014 if getElementData(source, dataName) == 'Rank' or getElementData(source, dataName ) == 'Level' then
Et-win Posted June 15, 2014 Posted June 15, 2014 Does the function even run? Test it with outputChatBox... ( function systemrankup(dataName) outputChatBox("Test") ... )
Castillo Posted June 15, 2014 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 )
Et-win Posted June 15, 2014 Posted June 15, 2014 Code Ow ofc, dataName is already the date :facepalm:
Sande Posted June 15, 2014 Author Posted June 15, 2014 Yes it runs. Multiple times, about 6 times when i get xp.
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