Jump to content

elementdata problem


Sande

Recommended Posts

Posted

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 
  

Posted

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 
  

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

Posted

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 
  

Posted

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 ) 

Posted

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.

Posted

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) 

Posted

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

Posted

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 

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

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