Jump to content

elementdata problem


Sande

Recommended Posts

Hello, this is part from my level system. The problem is this code isn´t actually do anything xD 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 xD, 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

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

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

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

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

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

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

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