crait
August 11th, 2006, 17:18
ok, im programming a kirby game, and i need some help :(
whenever i jump in the air, and i press down while facing left, i do not go into "pount mode", but instead the picture changes to player2 and it moves about 1-2 pixels to the left
another thing, is whenever i enter pound mode, while facing right, and jumpstate = ground, then you press right, it messes up, and displays an error
heres the error
./game.lua:51: bad argument #2 to 'blit' (Image expected, got table)
yet when you are on the ground in "pound mode" and press left, your image turns to player2
this is my code....
---------------------------------------------------------------
--Kirby's Lua Adventure
--By crait
--Version 0.35
white = Color.new(255,255,255)
green = Color.new(0,255,0)
red = Color.new(255,0,0)
black = Color.new(0,0,0)
Music.stop()
healthbar = {}
healthbar.y = 10
Player1 = Image.load("kirby.png")
Player2 = Image.load("kirby2.png")
Playerc = Image.load("crouch.png")
Playerc2 = Image.load("crouch2.png")
Playerp = Image.load("kirbyp.png")
Playerp2 = Image.load("kirbyp2.png")
Punch = Image.load("punch.png")
Punch2 = Image.load("punch2.png")
Playerj = Image.load("kirbyj.png")
Playerj2 = Image.load("kirbyj2.png")
kirbyPoint = 0
Player = {}
Player.lives = 4
Player.health = 200
Player.image = Player1
Player.gravity = 200
Player.y = 200
Player.x = 30
Player.jumpspeed = 10
Player.jumpstate = "ground"
spawnpoint = {}
spawnpoint.y = 300
spawnpoint.x = 30
playerHeight = 32
playerWidth = 32
function reSpawn()
Player.image = Player1
Player.x = spawnpoint.x
Player.y = spawnpoint.y
Player.health = 200
Player.lives = Player.lives - 1
end
background=Image.load("bg.png")
while true do
screen:blit(0,0,background,false)
screen:blit(Player.x,Player.y,Player.image,true)
pad=Controls.read()
if pad:cross() and Player.jumpstate == "ground" and Player.image ~= Playerc and Player.image ~= Playerp and Player.image ~= Playerc2 and Player.image ~= Playerp2 then
Player.jumpstate = "jumping"
end
if pad:r()then
if Player.image == Player1 or Player.image == Playerj then
Player.image = Punch
end
if Player.image == Player2 or Player.image == Playerj2 then
Player.image = Punch2
end
end
if Player.image == Punch then
kirbyPoint = kirbyPoint + 1
end
if Player.image == Punch2 then
kirbyPoint = kirbyPoint + 1
end
if Player.image == Punch and kirbyPoint == 14 then
Player.image = Player1
kirbyPoint = 0
end
if Player.image == Punch2 and kirbyPoint == 14 then
Player.image = Player2
kirbyPoint = 0
end
if pad:up()then
if Player.image == Playerc or Player.image == Playerp and Player.jumpstate == "ground" then
Player.image = Player1
end
if Player.image == Playerc2 or Player.image == Playerp2 and Player.jumpstate == "ground" then
Player.image = Player2
end
end
if pad:down() and Player.image == Player1 and Player.jumpstate == "ground" then
Player.image = Playerc
end
if pad:down() and Player.jumpstate == "jumping" and Player.image == Playerj then
Player.image = Playerp
Player.jumpstate = "pound"
end
if pad:down() and Player.image == Player2 and Player.jumpstate == "ground" then
Player.image = Playerc2
end
if pad:down() and Player.jumpstate == "jumping" and Player.image == Playerj2 then
Player.image = Playerp2
Player.jumpstate = "pound"
end
if pad:right() and Player.image ~= Playerp and Player.image ~= Playerp2 then
Player.image = Player1
Player.x = Player.x+4
end
if pad:left() and Player.image ~= Playerp and Player.image ~= Playerp2 then
Player.image = Player2
Player.x=Player.x-4
end
if pad:left() and Player.jumpstate == "ground" and Player.image == Playerp or Player.image == Playerp2 then
Player.image = Player2
Player.x=Player.x-4
end
if pad:right() and Player.jumpstate == "ground" and Player.image == Playerp or Player.image == Playerp2 then
Player.image = Player
Player.x=Player.x+4
end
if pad:l() and Player.health > 0 then
Player.health = Player.health - 20
end
screen:fillRect(0,242,480,30,black)
screen:fillRect(29,259,202,12,white)
screen:fillRect(30,260,200,10,red)
screen:fillRect(30,260,Player.health, healthbar.y, green)
screen:print(30,250, "Health:" .. Player.health,green)
screen:print(260,250,"Lives left:",green)
screen:print(260,260,Player.lives,green)
screen:print(430,252,"V 0.35",white)
screen:print(415,262,"By crait",white)
if Player.health <= -1 then
Player.health = Player.health + 1
end
if Player.lives <= 0 then
dofile("./go.lua")
end
if Player.health <= 0 and Player.lives > 0 then
reSpawn()
end
if Player.lives == -1 then
Player.lives = Player.lives + 1
end
if Player.jumpstate == "jumping" then
Player.jumpspeed = Player.jumpspeed - 0.5
Player.gravity = Player.gravity - Player.jumpspeed
end
if Player.jumpstate == "pound" then
Player.jumpspeed = Player.jumpspeed - 0.5
Player.gravity = Player.gravity - Player.jumpspeed
end
if Player.gravity < 200 and Player.jumpstate == "falling" then
Player.gravity = Player.gravity + (Player.jumpspeed + 3)
end
if Player.gravity == 200 then
Player.jumpspeed = 10
Player.jumpstate = "ground"
end
if Player.jumpstate == "jumping" and Player.image == Player1 then
Player.image = Playerj
end
if Player.jumpstate == "jumping" and Player.image == Player2 then
Player.image = Playerj2
end
if Player.jumpstate == "ground" and Player.image == Playerj then
Player.image = Player1
end
if Player.jumpstate == "ground" and Player.image == Playerj2 then
Player.image = Player2
end
if Player.gravity > 200 then Player.gravity = 200
end
Player.y = Player.gravity
screen.flip()
screen.waitVblankStart()
end
---------------------------------------------------------------
whenever i jump in the air, and i press down while facing left, i do not go into "pount mode", but instead the picture changes to player2 and it moves about 1-2 pixels to the left
another thing, is whenever i enter pound mode, while facing right, and jumpstate = ground, then you press right, it messes up, and displays an error
heres the error
./game.lua:51: bad argument #2 to 'blit' (Image expected, got table)
yet when you are on the ground in "pound mode" and press left, your image turns to player2
this is my code....
---------------------------------------------------------------
--Kirby's Lua Adventure
--By crait
--Version 0.35
white = Color.new(255,255,255)
green = Color.new(0,255,0)
red = Color.new(255,0,0)
black = Color.new(0,0,0)
Music.stop()
healthbar = {}
healthbar.y = 10
Player1 = Image.load("kirby.png")
Player2 = Image.load("kirby2.png")
Playerc = Image.load("crouch.png")
Playerc2 = Image.load("crouch2.png")
Playerp = Image.load("kirbyp.png")
Playerp2 = Image.load("kirbyp2.png")
Punch = Image.load("punch.png")
Punch2 = Image.load("punch2.png")
Playerj = Image.load("kirbyj.png")
Playerj2 = Image.load("kirbyj2.png")
kirbyPoint = 0
Player = {}
Player.lives = 4
Player.health = 200
Player.image = Player1
Player.gravity = 200
Player.y = 200
Player.x = 30
Player.jumpspeed = 10
Player.jumpstate = "ground"
spawnpoint = {}
spawnpoint.y = 300
spawnpoint.x = 30
playerHeight = 32
playerWidth = 32
function reSpawn()
Player.image = Player1
Player.x = spawnpoint.x
Player.y = spawnpoint.y
Player.health = 200
Player.lives = Player.lives - 1
end
background=Image.load("bg.png")
while true do
screen:blit(0,0,background,false)
screen:blit(Player.x,Player.y,Player.image,true)
pad=Controls.read()
if pad:cross() and Player.jumpstate == "ground" and Player.image ~= Playerc and Player.image ~= Playerp and Player.image ~= Playerc2 and Player.image ~= Playerp2 then
Player.jumpstate = "jumping"
end
if pad:r()then
if Player.image == Player1 or Player.image == Playerj then
Player.image = Punch
end
if Player.image == Player2 or Player.image == Playerj2 then
Player.image = Punch2
end
end
if Player.image == Punch then
kirbyPoint = kirbyPoint + 1
end
if Player.image == Punch2 then
kirbyPoint = kirbyPoint + 1
end
if Player.image == Punch and kirbyPoint == 14 then
Player.image = Player1
kirbyPoint = 0
end
if Player.image == Punch2 and kirbyPoint == 14 then
Player.image = Player2
kirbyPoint = 0
end
if pad:up()then
if Player.image == Playerc or Player.image == Playerp and Player.jumpstate == "ground" then
Player.image = Player1
end
if Player.image == Playerc2 or Player.image == Playerp2 and Player.jumpstate == "ground" then
Player.image = Player2
end
end
if pad:down() and Player.image == Player1 and Player.jumpstate == "ground" then
Player.image = Playerc
end
if pad:down() and Player.jumpstate == "jumping" and Player.image == Playerj then
Player.image = Playerp
Player.jumpstate = "pound"
end
if pad:down() and Player.image == Player2 and Player.jumpstate == "ground" then
Player.image = Playerc2
end
if pad:down() and Player.jumpstate == "jumping" and Player.image == Playerj2 then
Player.image = Playerp2
Player.jumpstate = "pound"
end
if pad:right() and Player.image ~= Playerp and Player.image ~= Playerp2 then
Player.image = Player1
Player.x = Player.x+4
end
if pad:left() and Player.image ~= Playerp and Player.image ~= Playerp2 then
Player.image = Player2
Player.x=Player.x-4
end
if pad:left() and Player.jumpstate == "ground" and Player.image == Playerp or Player.image == Playerp2 then
Player.image = Player2
Player.x=Player.x-4
end
if pad:right() and Player.jumpstate == "ground" and Player.image == Playerp or Player.image == Playerp2 then
Player.image = Player
Player.x=Player.x+4
end
if pad:l() and Player.health > 0 then
Player.health = Player.health - 20
end
screen:fillRect(0,242,480,30,black)
screen:fillRect(29,259,202,12,white)
screen:fillRect(30,260,200,10,red)
screen:fillRect(30,260,Player.health, healthbar.y, green)
screen:print(30,250, "Health:" .. Player.health,green)
screen:print(260,250,"Lives left:",green)
screen:print(260,260,Player.lives,green)
screen:print(430,252,"V 0.35",white)
screen:print(415,262,"By crait",white)
if Player.health <= -1 then
Player.health = Player.health + 1
end
if Player.lives <= 0 then
dofile("./go.lua")
end
if Player.health <= 0 and Player.lives > 0 then
reSpawn()
end
if Player.lives == -1 then
Player.lives = Player.lives + 1
end
if Player.jumpstate == "jumping" then
Player.jumpspeed = Player.jumpspeed - 0.5
Player.gravity = Player.gravity - Player.jumpspeed
end
if Player.jumpstate == "pound" then
Player.jumpspeed = Player.jumpspeed - 0.5
Player.gravity = Player.gravity - Player.jumpspeed
end
if Player.gravity < 200 and Player.jumpstate == "falling" then
Player.gravity = Player.gravity + (Player.jumpspeed + 3)
end
if Player.gravity == 200 then
Player.jumpspeed = 10
Player.jumpstate = "ground"
end
if Player.jumpstate == "jumping" and Player.image == Player1 then
Player.image = Playerj
end
if Player.jumpstate == "jumping" and Player.image == Player2 then
Player.image = Playerj2
end
if Player.jumpstate == "ground" and Player.image == Playerj then
Player.image = Player1
end
if Player.jumpstate == "ground" and Player.image == Playerj2 then
Player.image = Player2
end
if Player.gravity > 200 then Player.gravity = 200
end
Player.y = Player.gravity
screen.flip()
screen.waitVblankStart()
end
---------------------------------------------------------------