lua - Error: attempt to index global 'playerBul' (a nil value) -


the error saying:

game.lua:171: attempt index global 'playerbul' (a nil value)

sorry if put unnecessary code, not know causing error.

here files game:

menu.lua:

local menu = {} local bannermenu;  local selection;  menu.name = 'menu'  local function play() mode = require('game') mode.load() end   local options = { {['text'] = 'play', ['action'] = play}, {['text'] = 'exit', ['action'] = love.event.quit}  }  function menu.load()  bannermenu = love.graphics.newimage(banner) selection = 1  pointer = love.graphics.newimage(pointer) mode = menu  end   function menu.update()  return mode  end   function menu.draw()  love.graphics.draw(bannermenu, 200,10) = 1,#options      if == selection          love.graphics.draw(pointer, 300, 200 + *20)     end      love.graphics.printf(options[i].text,0,200 + * 20,   love.graphics.getwidth(), 'center') end  end   function menu.keypressed(key) if key == "up"      selection = (selection - 2)%(#options) + 1  elseif key == "down"      selection = (selection) % (#options) + 1  elseif key == "return"      options[selection].action()  elseif key == "escape"      love.event.quit()  end  end   return menu  

main.lua

title = 'die aliens die!' player_bullet = 'images/playerbullet.png' enemy_bullet = 'images/enemybullet.png' health_img = 'images/life.png' enemy_ufo = {   enemy_1 = 'images/enemy1.png', enemy_2 = 'images/enemy2.png', enemy_3 = 'images/enemy3.png' } player_img = 'images/spaceship.png' you_win = 'images/win.png' banner = 'images/banner.png'  pointer = 'images/pointer.png'  function love.load()  love.window.settitle(title) mode = require "menu" mode.load()  end   function love.draw() mode.draw() end   function love.keypressed(key, isrepeat)  mode.keypressed(key) end   function love.update(dt) mode.update(dt)  end  

game.lua

local game = {} local playership = {} local alienufo = {} local bullets = {} local alienbullets = {} local playerbullets = {} local aliens = {{},{},{},{},{},{},{},{},{},{}} local health = 3  local score = 0  local level = 1  local alienmovement = true  local healthimage; local alienqty = 0  local pause   --local function gameover()  --local function gamwwin()  local function cleartable(t) = #t,1,-1      table.remove(t,i) end end  local function clearaliens() i=#aliens,1,-1      j = #aliens[i],1,-1          table.remove(aliens[i],j)     end end end  local function insertaliens() alienqty = 0  i=1,4      j =1,10          local alien = {}         alien.x = (j-1) *alienufo.width + 10          alien.y = (j-1) *alienufo.width + 35          if level ==2              alien.life = 2          if level == 3              alien.life = 3          end         table.insert(aliens[j], alien)         alienqty = alienqty + 1      end end end end   local function initgame() cleartable(playerbullets) cleartable(alienbullets) clearaliens() insertaliens() playership.x = love.graphics.getwidth() / 2 - playership.width /2  end   local function playershoot() local bullet = {} playership.x = playership.x + 32 playership.y = playership.y + 10  table.insert(playerbullets, bullet) end  local function alienshoot(x,y) local bullet = {} bullet.x = alienufo.width/2  bullet.y = y -5  table.insert(alienbullets, bullet) end   local function playershots(dt) if next(playerbullets) ~= nil      = #playerbullets,1,-1          playerbullets[i].y = playerbullets[i].y - dt*           playerbullets.bulletspeed            if playerbullets[i].y < 0              table.remove(playerbullets,i)         else              j = #aliens, 1,-1                  k = #aliens[j],1,-1                      if next(playerbullets) ~= nil , playerbullets[i] ~= nil     ,                         aliens[j][k].x <= playerbullets[i].x , aliens[j]  [k].x + 50 >= playerbullets[i].x                         , aliens[j][k].y <= playerbullets[i].y , aliens[j]  [k].y + 47 >= playerbullets[i].y                          table.remove(playerbullets, i)                         if level == 2 , aliens[j][k].life > 0                              aliens[j][k].life = aliens[j][k].life - 1                          if level == 3 , aliens[j][k].life > 0                              aliens[j][k].life = aliens[j][k].life - 1                          else                              table.remove(aliens[j], k)                              alienqty = alienqty - 1                              score = score + 100                          end                          break                      end                 end             end         end     end end end  local function playershot() health = health - 1  if health == 0      love.event.quit() -- come here lose  end end  local function alienshots(dt) if next(alienbullets) ~= nil      = #alienbullets,1,-1          alienbullets[i].y = alienbullets[i].y + dt * alienufo.bulletspeed         if alienbullets[i].y > love.graphics.getheight()              table.remove(alienbullets, i)         elseif playership.x <= alienbullets[i].x , playership.x +   playership.width >= alienbullets[i].x              , playership.y <= alienbullets[i].y , playership.y +  playership.height >- alienbullets[i].y              table.remove(alienbullets, i)             playershot()         end     end end end  local function nextlvl() level = level + 1  if level == 2      alienufo.image = love.graphics.newimage(alienufo.enemy1)     alienufo.speed = 100      alienufo.shotprob = 20     alienufo.bullet = alienbul.image      initgame() elseif level == 3      alienufo.image = love.graphics.newimage(alienufo.enemy2)     initgame() elseif level > 3      love.event.quit() -- come here win  end end    function game.load()  pause = false  level = 1  health = 3  score = 0  playership.speed = 300  playership.bulletspeed = 300  playership.width = 75  playership.height = 71  alienufo.speed = 70  alienufo.width = 50  alienufo.height = 47  alienufo.enemy1 = enemy_ufo.enemy_1  alienufo.enemy2 = enemy_ufo.enemy_2  alienufo.enemy3 = enemy_ufo.enemy_3  alienufo.bulletspeed = 300  alienufo.image = love.graphics.newimage(alienufo.enemy3) playership.image = player_img playership.image = love.graphics.newimage(playership.image) healthimage = love.graphics.newimage(health_img) playership.x = love.graphics.getwidth() / 2 - playership.width/2  playership.y = love.graphics.getheight() - 100  playerbul.image = love.graphics.newimage(player_bullet) alienbul.image = love.graphics.newimage(enemy_bullet) initgame() end   function game.draw() if pause      love.graphics.print('game paused',love.graphics.getwidth()/2 - 20,20) end   if next(playerbullets) ~= nil      = 1, #playerbullets          love.graphics.draw(playerbul.image, playerbullets[i].x,    playerbullets[i].y)     end end  if next(alienbullets) ~= nil      = 1, #alienbullets          love.graphics.draw(alienbul.image, alienbullets[i].x,    alienbullets[i].y)      end end  if next(aliens) ~= nil      = 1, #aliens          j = 1, #aliens[i]              love.graphics.draw(alienufo.image, aliens[i][j].x, aliens[i][j].y)         end     end end   love.graphics.print('score: '..score, love.graphics.getwidth() - 100,20) love.graphics.draw(playership.image, playership.x, playership.y) = 1, lives      love.graphics.draw(healthimage, 10+ 1 * 15,20) end  end   function game.update(dt)     if not pause          if alienqty == 0              nextlvl()         end           if love.keyboard.isdown("right")              playership.x = playership.x + dt * playership.speed          elseif love.keyboard.isdown("left")              playership.x = playership.x - dt * playership.speed          end          if love.keyboard.isdown(" ")              playershoot()          end          playershots(dt)         alienshots(dt)         if love.math.random(1,100) < alienufo.shotprob              local r = love.math.random(1,#aliens)             if next(aliens[r]) ~= nil                  alienshoot(aliens[r][#aliens[r]].x, aliens[r][#aliens[r]].y)             end          end           if alienmovement              = 1, #aliens                  j = 1, #aliens[i]                      aliens[i][j].x = aliens[i][j].x + dt * alienufo.speed                     if aliens[i][j].x + alienufo.width + 2 >=    love.graphics.getwidth()                          alienmovement = false                      end                 end             end         else              =1, #aliens                  j = 1, #aliens[i]                      aliens[i][j].x = aliens[i][j].x - dt * alienufo.speed                      if aliens[i][j].x - 2 <= 0                          alienmovement = true                      end                 end             end         end         if playership.x < 0              playership.x = 0              elseif playership.x > love.graphics.getwidth() - 75                  playership.x = love.graphics.getwidth() -75             end          end      end  end  function game.keypressed(key)     if key =='p'          pause = not pause      end  end  return game  

you haven't defined load function on game table return in game.lua. looks wrote load logic wrote local function named loadgame. fix issue update game.lua export load function , have call load function you've created, this:

function game.load()     loadgame() end 

somewhere before return game table in game.lua, after definition of game.keypressed

or alternatively change local function loadgame() function game.load() remove local function , redefine exported functionality


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -