Log In  


As far as I know, every variable is returning as nil. That doesn't mean that it is. I cant get far enough into my game to figure out more

I am unsure what i did. I have gone through my code multiple times and i am just done currently. Any help or advice would be greatly appreciated.

-- game loop

function _init()
 gamestart()
	_upd=update_game()
	_drw=draw_game()
end

function _update()
	frm+=1
	_upd()
end

function _draw()
	_drw()
end

function gamestart()
	frm=1
	col=false
----------------
--menus
----------------
	men_main={
		items={"start game","controls"},
		menx=10,
		meny=10,
		curx=2,
		cury=10,
		menoff=7
	}
----------------
--player
----------------
	p={
	sp=1,
	x=48,
	xo=0,
	y=40,
	yo=0,
	w=8,
	h=8,
	ymt=0,
	spd=1,
	flp=false,
	dx=0,
	dy=0,
	--gravity/collision stuff
	hbx1=1,
	hbx2=6,
	hby1=7,
	hby2=1,
	grv=0.2,
	acc=0.5,
	landed=false,
	jumping=false,
	running=false,
	falling=false,
	dashing=false,
	rolling=false,
	attacking=false,
	itemgrab=false,
	--animation (in sprite #)
		frame=0,
		anim_idle=1,
		anim_walk={1,2,3,4},
		anim_jf=5,
		anim_atk={1,4,6},
		anim_dashing=8,
		anim_rolling={9,10,11,9},
		anim_attacking=6,
		anim_itemgrab=7,
	--game stats
		mhp=10,
		chp=10,
		atk=1,
		def=1,
		agi=1.1,--1.1 beacuse fucking math
}
		inv={}
		abilities={}
----------------
--tiles
----------------
	--collision
	t={--x1=l x2=r y1=t y2=b
		wall={x1=4,x2=6,y1=0,y2=7},
		floor={x1=0,x2=7,y1=4,y2=7}
	}
end
-->8
-- updates
function update_game()
--player---------------------
-----------------------------
		p.frame+=1
		if p.frame==5 then
		 p.frame=1
		end
		if (btn(⬅️))	then
			p.dx=-1
			p.flp=true
			p.running=true
		elseif (btn(➡️))	then
			p.dx=1
			p.flp=false
			p.running=true
		else
			p.dx=0
			p.running=false
		end

--collisions & gravity
		local ly=p.y
		p.dy+=p.grv

--check collision left and right
  if p.dx<0 then
    if collide_map(p,"left",0) then
      p.dx=0
    end
  elseif p.dx>0 then
    if collide_map(p,"right",0) then
      p.dx=0
    end
  end

  --jump
  if btnp(⬆️)
  and p.landed then
    p.dy-=2
    p.landed=false
  end

  --check collision up and down
  if p.dy>0 then
    p.falling=true
    p.landed=false
    p.jumping=false

    if collide_map(p,"down",0) then
      p.landed=true
      p.falling=false
      p.dy=0
      p.y-=((p.y+p.h+1)%8)-1
    end
  elseif p.dy<0 then
    p.jumping=true
    if collide_map(p,"up",0) then
      p.dy=0
    end
  end
	p.x+=p.dx
	p.y+=p.dy
--animation
	if p.jumping or p.falling then
		p.sp=p.anim_jf
	elseif p.running then
		if frm%5<=4 then
			p.sp=p.anim_walk[p.frame]
		end 
	elseif p.attacking then
		p.sp=p.anim_attack
	else --player idle
		p.sp=1
	end

end

function update_mm()
	upd_menu(men_main)
end
-->8
-- draws
function draw_game()
	cls()
	map()
	spr(p.sp,p.x,p.y,1,1,p.flp)
	camera(p.x-60,p.y-60)

	print(p.dx,1+p.x-59,1+p.y-59,8)
	print(p.dy,9+p.x-59,1+p.y-59,8)
end

function draw_mm() 
	cls()
	menutext(men_main.items,men_main.menx,men_main.meny,8)
	drw_menucur(men_main)
end

-->8
--functions
function does_tile(flag,x,y) -- bool
	tile=mget(x,y)
	has_flag=fget(tile,flag)
	return has_flag
end

function collide_map(obj,aim,flag)
 --obj = table needs x,y,w,h
 --aim = left,right,up,down

 local x=obj.x  local y=obj.y
 local w=obj.w  local h=obj.h

 local x1=0	 local y1=0
 local x2=0  local y2=0

 if aim=="left" then
   x1=x-1  y1=y
   x2=x    y2=y+h-1

 elseif aim=="right" then
   x1=x+w-1    y1=y
   x2=x+w  y2=y+h-1

 elseif aim=="up" then
   x1=x+2    y1=y-1
   x2=x+w-3  y2=y

 elseif aim=="down" then
   x1=x+2      y1=y+h
   x2=x+w-3    y2=y+h
 end

 --pixels to tiles
 x1/=8    y1/=8
 x2/=8    y2/=8

 if fget(mget(x1,y1), flag)
 or fget(mget(x1,y2), flag)
 or fget(mget(x2,y1), flag)
 or fget(mget(x2,y2), flag) then
   return true
 else
   return false
 end

end

-->8
--menu

function startmenu(menutable)

end

function menutext(menutable,x,y,off)
	for i=1, #menutable do
		print(menutable[i],x,y+menutable.off*i)
	end
end

function drw_menucur(menutable)	
	local x1 = menutable.curx-8
	local y1 = menutable.cury-10
	local x2 = x1+12
	local y2 = y1+6

	rectfill(x1,y1,x2,y2,7)
end

function upd_menu(menutable)
	if btnp(⬆️) then
	 menutable.cury-=7 
	end
	if btnp(⬇️) then
	 menutable.cury+=7
	end
--	if btnp(❎) then menuacc(menutable)
--	if btnp(🅾️) then menuden(menutable)

end



1

You need to delete the parentheses in the assignments to _upd and _drw:

    _upd=update_game
    _drw=draw_game


[Please log in to post a comment]