title: Lua - attempt to call global 'contains' (a nil value)
body: <p>I'm interesting, if who know what is the problem of this code bellow. I always get this error:</p>
  
  <p>''attempt to call global 'contains' (a nil value)''</p>
  
  <p>Here is the code:</p>
  
  <pre><code>state1={10,11,20,21,22,23,24,30,31,32,33,34,35,36,37,38,39,40,45,46,47,48,49,50,51,69,72,73,74,85}
  state3={78}
  state4={1,2,3,4,5,6}
  
  playerskin=initArray2(32,0)
  wepskin=initArray2(32,0)
  
  function getPlayerData(id,d)
  if (d=="team") then
      if (player(id,"team")==1) then
          return "red"
      end
      if (player(id,"team")==2) then
          return "blu"
      end
  end
  if (d=="class") then
      return string.lower(tf2.classes.name[tf2.classes.class[id]])
  end
  end
  
  function changeSkin(id,w)
  if (contains(state1,w)) then
      if (playerskin[id]~=0) then
          freeimage(playerskin[id])
      end
      playerskin[id]=image("gfx/tf2/skins/"..getPlayerData(id,"team").."   /"..getPlayerData(id,"class").."/"..getPlayerData(id,"team").."_"..getPlayerData(id,"class").."_1.png",1,0,200+id)
  end
  if (contains(state3,w)) then
      if (playerskin[id]~=0) then
          freeimage(playerskin[id])
      end
      playerskin[id]=image("gfx/tf2/skins/"..getPlayerData(id,"team").."/"..getPlayerData(id,"class").."/"..getPlayerData(id,"team").."_"..getPlayerData(id,"class").."_3.png",1,0,200+id)
  end
  if (contains(state4,w)) then
      if (playerskin[id]~=0) then
          freeimage(playerskin[id])
      end
      playerskin[id]=image("gfx/tf2/skins/"..getPlayerData(id,"team").."/"..getPlayerData(id,"class").."/"..getPlayerData(id,"team").."_"..getPlayerData(id,"class").."_4.png",1,0,200+id)
  end
  if (hat[id]~=0 and tf2.classes.hatunlock[id][tf2.classes.class[id]]~=0) then
      freeimage(hat[id])
      hat[id]=image(crafts[tf2.classes.hatunlock[id] [tf2.classes.class[id]]].image,1,0,200+id)
  end
  end
  
  --[[function changeWeaponSkin(id,w)
  if (wepskin[id]~=0) then
      freeimage(wepskin[id])
  end
  wepskin[id]=image("gfx/tf2/skins/weapons/"..getPlayerData(id,"class").." /"..string.lower(tf2.classes.weaponnames[w])..".png",1,0,200+id)
  end
  ]]
  
  addhook("select","tf2.classes.images")
  function tf2.classes.images(id,w)
  if (player(id,"armor")~=206) then
      changeSkin(id,player(id,"weapontype"))
      --changeWeaponSkin(id,w)
  end
  end
  
  addhook("spawn","tf2.classes.spawndebug")
  function tf2.classes.spawndebug(id)
  if (player(id,"armor")~=206) then
      changeSkin(id,player(id,"weapontype"))
      timer(10,"parse","lua changeSkin("..id..",player("..id..",\"weapontype \"))")
      if (tf2.classes.hatunlock[id][tf2.classes.class[id]]~=0) then
          timer(10,"parse","lua freeimage("..hat[id]..")")
          timer(10,"parse","lua   hat["..id.."]=image(crafts[tf2.classes.hatunlock["..id.."][tf2.classes.class["..id.."]]].image,1,0,200+"..id..")")
      else
          timer(10,"parse","lua freeimage("..hat[id]..")")
          timer(10,"parse","lua hat["..id.."]=0")
      end
  end
  end
  
  addhook("attack2","tf2.classes.spycloak")
  function tf2.classes.spycloak(id)
  if (tf2.classes.class[id]==9 and player(id,"armor")==0) then
      if (playerskin[id]~=0) then
          freeimage(playerskin[id])
      end
      --[[
      if (wepskin[id]~=0) then
          freeimage(wepskin[id])
  </code></pre>
  
  <p>If you've the solution please help me.</p>
  
  <p>Thanks,</p>
  
  <p>Michael</p>