Qbasicnews.com

Full Version: Illegal function call
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
its saying that my put statment is an illegal function call this is a large amount of code so i'll only post part of it
Code:
SUB tileassign

FOR y = 1 TO 12
FOR x = 1 TO 20

IF map1(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map1(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map1(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map1(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), portal, PSET
NEXT x: NEXT y

PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND
PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR

PUT (erow% * 16 - 16, ecol% * 16 - 16), enemymask, AND
PUT (erow% * 16 - 16, ecol% * 16 - 16), enemy, AND

END SUB
any ideas?
this looks right to me so the problem might be in another part of the code if you need me to ill post the rest of the code
Did you share all the vars you are using? (the arrays)



only thing I can see from that.
ill paste it all.
Code:
DECLARE SUB loadsprites ()
DECLARE SUB tileassign ()
DECLARE SUB movement ()
DECLARE SUB redrawmap1 ()
DECLARE SUB map2load ()
DIM SHARED grass(16, 16), wall(16, 16), water(16, 16), portal(16, 16)
DIM SHARED guy(16, 16), guymask(16, 16)
DIM SHARED enemy(16, 16), enemymask(16, 16)
DIM SHARED map1(20, 12)
DIM SHARED map2(20, 12)
SCREEN 13

guyx = 4
guyy = 5

erow% = 4
ecol% = 6

CALL loadsprites

CALL tileassign

DO

a$ = INKEY$

CALL movement

IF map1(guyx, guyy) = 4 THEN CALL map2load

CALL redrawmap1

LOOP UNTIL a$ = "q"

IF a$ = "q" THEN END

'grass
DATA 02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02
DATA 02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02
DATA 02,02,10,02,02,02,02,02,10,02,02,02,02,10,02,02
DATA 02,02,02,10,02,02,02,10,10,02,02,02,10,02,02,02
DATA 02,02,02,10,02,10,02,10,10,02,02,10,02,02,02,02
DATA 10,02,02,02,10,10,02,10,02,02,10,10,02,02,02,02
DATA 02,10,02,02,10,10,02,02,02,02,02,10,02,02,02,02
DATA 02,10,02,02,02,02,02,02,02,10,02,02,02,02,10,02
DATA 02,02,10,02,02,02,02,02,10,10,02,02,02,10,02,02
DATA 02,10,02,02,02,02,10,02,02,02,02,02,02,10,02,02
DATA 02,10,10,10,02,10,10,02,02,02,02,02,10,02,02,02
DATA 02,02,10,10,02,02,02,10,02,02,02,02,02,02,02,02
DATA 02,02,02,02,02,02,02,02,10,02,02,02,02,02,10,02
DATA 10,02,02,02,02,02,02,02,02,02,02,02,02,10,02,02
DATA 02,10,10,02,02,02,02,02,02,02,02,02,02,02,02,02
DATA 02,02,10,02,02,02,02,02,02,02,02,02,02,02,02,02

'wall
DATA 07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07
DATA 07,08,08,08,08,08,08,08,08,08,08,08,08,08,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,08,08,08,08,08,08,08,08,08,08,08,08,08,07
DATA 07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07

'water

DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,09,01,01,09,01,01,09,01,01,01,01,01,01,01,01
DATA 01,01,09,09,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,09,01,01,01,09,01,01
DATA 01,01,01,01,01,01,01,01,01,01,09,09,09,01,01,01
DATA 01,01,01,01,09,01,09,01,09,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,09,01,01,01,01,01,01,01,01
DATA 09,01,01,01,01,01,01,01,01,01,01,01,01,09,01,01
DATA 01,01,01,01,01,01,01,01,09,01,01,09,01,01,01,01
DATA 01,01,01,09,01,01,01,01,01,09,09,01,01,01,01,01
DATA 01,01,01,01,09,09,09,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01


'portal
DATA 00,00,00,00,01,01,01,01,01,01,01,01,00,00,00,00
DATA 00,00,00,01,00,00,00,00,00,00,00,00,01,00,00,00
DATA 00,00,00,01,00,00,01,01,01,01,00,00,01,00,00,00
DATA 00,00,01,00,00,01,00,00,00,00,01,00,00,01,00,00
DATA 00,00,01,00,00,01,00,01,01,00,01,00,00,01,00,00
DATA 00,01,00,00,01,00,01,00,01,00,00,01,00,00,01,00
DATA 00,01,00,00,01,00,01,00,00,01,00,01,00,00,01,00
DATA 00,01,00,01,00,01,00,00,00,01,00,00,01,00,01,00
DATA 00,01,00,01,00,01,00,01,00,00,01,00,01,00,01,00
DATA 00,01,00,01,00,00,01,00,01,00,01,00,01,00,01,00
DATA 00,01,00,00,01,00,01,00,01,00,01,00,01,00,01,00
DATA 00,00,01,00,01,00,00,01,00,01,00,01,00,00,01,00
DATA 00,00,01,00,00,01,00,00,00,01,00,01,00,01,00,00
DATA 00,00,00,01,00,01,01,01,01,00,01,00,00,01,00,00
DATA 00,00,00,01,00,00,00,00,00,00,01,00,01,00,00,00
DATA 00,00,00,00,01,01,01,01,01,01,00,00,00,00,00,00

'guy
DATA 0,0,0,5,5,5,5,5,5,5,5,5,5,5,0,0
DATA 0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,0
DATA 0,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5
DATA 0,5,5,6,6,6,6,5,5,5,5,6,5,0,5,5
DATA 0,0,5,6,6,0,6,6,6,0,6,6,5,5,0,0
DATA 0,0,0,6,6,0,6,6,6,0,6,6,0,0,0,0
DATA 0,0,0,0,6,6,6,6,6,6,6,0,0,0,0,0
DATA 0,0,4,4,4,6,6,6,6,6,4,6,0,0,0,0
DATA 0,4,4,4,4,4,4,4,4,4,4,6,6,0,0,0
DATA 6,6,6,4,4,4,4,4,4,4,6,6,6,6,0,0
DATA 6,6,6,0,4,4,4,4,4,4,6,6,6,6,0,0
DATA 6,6,6,0,1,4,4,4,4,4,4,6,6,0,0,0
DATA 0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0
DATA 0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0
DATA 0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

'guymask
DATA 255,255,255,5,5,5,5,5,5,5,5,5,5,5,255,255
DATA 255,255,5,5,5,5,5,5,5,5,5,5,5,5,5,255
DATA 255,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5
DATA 255,5,5,6,6,6,6,5,5,5,5,6,5,255,5,5
DATA 255,255,5,6,6,0,6,6,6,0,6,6,5,5,255,255
DATA 255,255,255,6,6,0,6,6,6,0,6,6,255,255,255,255
DATA 255,255,255,255,6,6,6,6,6,6,6,255,255,255,255,255
DATA 255,255,4,4,4,6,6,6,6,6,4,6,255,255,255,255
DATA 255,4,4,4,4,4,4,4,4,4,4,6,6,255,255,255
DATA 6,6,6,4,4,4,4,4,4,4,6,6,6,6,255,255
DATA 6,6,6,255,4,4,4,4,4,4,6,6,6,6,255,255
DATA 6,6,6,255,1,4,4,4,4,4,4,6,6,255,255,255
DATA 255,255,255,255,1,1,1,1,1,1,1,1,1,255,255,255
DATA 255,255,255,255,1,1,1,1,1,1,1,1,255,255,255,255
DATA 255,255,255,255,255,1,1,1,1,255,255,255,255,255,255,255
DATA 255,255,255,255,255,0,0,0,0,255,255,255,255,255,255,255

'enemy
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,8,8,8,0,0,0,0,0,0
DATA 0,0,0,0,0,0,8,0,0,0,8,0,0,0,0,0
DATA 0,0,0,0,0,8,0,0,0,0,0,8,0,0,0,0
DATA 0,0,0,0,0,8,0,0,0,0,0,8,0,0,0,0
DATA 0,0,0,0,0,8,0,4,0,4,0,8,0,0,0,0
DATA 0,0,0,0,0,8,0,0,0,0,0,8,0,0,0,0
DATA 0,0,0,0,0,8,0,0,0,0,0,8,0,0,0,0
DATA 0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,0
DATA 0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,0
DATA 0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,0
DATA 0,0,0,8,0,0,0,0,0,0,0,0,0,8,0,0
DATA 0,0,0,8,0,0,0,0,0,0,0,0,0,8,0,0
DATA 0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,0
DATA 0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,8

'enemy mask
DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
DATA 255,255,255,255,255,255,255,8,8,8,255,255,255,255,255,255
DATA 255,255,255,255,255,255,8,0,0,0,8,255,255,255,255,255
DATA 255,255,255,255,255,8,0,0,0,0,0,8,255,255,255,255
DATA 255,255,255,255,255,8,0,0,0,0,0,8,255,255,255,255
DATA 255,255,255,255,255,8,0,4,0,4,0,8,255,255,255,255
DATA 255,255,255,255,255,8,0,0,0,0,0,8,255,255,255,255
DATA 255,255,255,255,255,8,0,0,0,0,0,8,255,255,255,255
DATA 255,255,255,255,8,0,0,0,0,0,0,0,8,255,255,255
DATA 255,255,255,255,8,0,0,0,0,0,0,0,8,255,255,255
DATA 255,255,255,255,8,0,0,0,0,0,0,0,8,255,255,255
DATA 255,255,255,8,0,0,0,0,0,0,0,0,0,8,255,255
DATA 255,255,255,8,0,0,0,0,0,0,0,0,0,8,255,255
DATA 255,255,8,0,0,0,0,0,0,0,0,0,0,0,8,255
DATA 255,8,0,0,0,0,0,0,0,0,0,0,0,0,0,8

'map1
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
DATA 2,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,2
DATA 2,1,1,1,1,1,1,3,3,1,3,3,3,3,3,3,3,3,3,2
DATA 2,1,1,1,1,1,1,3,3,1,3,3,3,3,3,3,3,3,3,2
DATA 2,1,1,1,1,1,1,3,3,1,1,1,1,3,3,3,3,3,3,2
DATA 2,1,1,1,1,1,1,3,3,2,2,2,1,3,3,3,3,3,3,2
DATA 2,1,1,1,1,1,1,3,3,2,3,2,1,3,1,1,1,4,1,2
DATA 2,1,1,1,1,1,1,3,3,2,3,2,1,1,1,2,2,2,2,2
DATA 2,1,1,1,1,1,1,3,3,2,3,3,2,2,2,3,3,3,3,2
DATA 2,1,1,1,1,1,1,3,3,2,3,3,3,3,3,3,3,3,3,2
DATA 2,1,1,1,1,1,1,3,3,2,3,3,3,3,3,3,3,3,3,2
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2

'map2
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
DATA 2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,2
DATA 2,3,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2
DATA 2,3,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,2
DATA 2,3,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,2
DATA 2,3,3,2,3,1,1,1,2,1,1,1,1,1,1,1,1,1,1,2
DATA 2,2,3,3,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1
DATA 2,2,3,3,2,1,1,1,2,2,2,2,1,1,1,1,1,1,1,2
DATA 2,1,2,2,1,1,1,1,1,1,1,2,1,2,1,1,1,1,1,2
DATA 2,1,1,1,1,1,1,1,1,1,1,2,1,2,1,1,1,1,1,2
DATA 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2

SUB loadsprites

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), grass

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), wall

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), water

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), portal

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), guy

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), guymask

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), enemy

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), enemymask

FOR y = 1 TO 12
FOR x = 1 TO 20
READ map1(x, y)
NEXT x: NEXT y

FOR y = 1 TO 12
FOR x = 1 TO 20
READ map2(x, y)
RESTORE
NEXT x: NEXT y

END SUB

SUB map2load

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), grass

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), wall

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), water

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), portal

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), guy

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), guymask

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), enemy

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), enemymask

FOR y = 1 TO 12
FOR x = 1 TO 20
READ map1(x, y)
NEXT x: NEXT y

FOR y = 1 TO 12
FOR x = 1 TO 20
READ map2(x, y)
RESTORE
NEXT x: NEXT y

CLS
FOR y = 1 TO 12
FOR x = 1 TO 20
IF map2(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map2(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map2(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map2(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), portal, PSET
NEXT x: NEXT y

PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND
PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR

DO
a$ = INKEY$

IF a$ = "w" AND map2(guyx, guyy - 1) <> 2 THEN
IF map2(guyx, guyy - 1) <> 3 THEN
guyy = guyy - 1
END IF
END IF

IF a$ = "s" AND map2(guyx, guyy + 1) <> 2 THEN
IF map2(guyx, guyy + 1) <> 3 THEN
guyy = guyy + 1
END IF
END IF

IF a$ = "a" AND map2(guyx - 1, guyy) <> 2 THEN
IF map2(guyx - 1, guyy) <> 3 THEN
guyx = guyx - 1
END IF
END IF

IF a$ = "d" AND map2(guyx + 1, guyy) <> 2 THEN
IF map2(guyx + 1, guyy) <> 3 THEN
guyx = guyx + 1
END IF
END IF

IF map2(guyx, guyy) = 4 THEN END

IF oldguyx <> guyx OR oldguyy <> guyy THEN

oldguyy = guyy
oldguyx = guyx
FOR y = 1 TO 12
FOR x = 1 TO 20
IF map2(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map2(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map2(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map2(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), portal, PSET
NEXT x: NEXT y

PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND
PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR

END IF


LOOP UNTIL a$ = "q"

END SUB

SUB movement

IF a$ = "w" AND map1(guyx, guyy - 1) <> 2 THEN
IF map1(guyx, guyy - 1) <> 3 THEN
guyy = guyy - 1
END IF
END IF


IF a$ = "s" AND map1(guyx, guyy + 1) <> 2 THEN
IF map1(guyx, guyy + 1) <> 3 THEN
guyy = guyy + 1
END IF
END IF

IF a$ = "a" AND map1(guyx - 1, guyy) <> 2 THEN
IF map1(guyx - 1, guyy) <> 3 THEN
guyx = guyx - 1
END IF
END IF

IF a$ = "d" AND map1(guyx + 1, guyy) <> 2 THEN
IF map1(guyx + 1, guyy) <> 3 THEN
guyx = guyx + 1
END IF
END IF



IF oldguyx <> guyx OR oldguyy <> guyy THEN

oldguyy = guyy
oldguyx = guyx
END IF
END SUB

SUB redrawmap1
FOR y = 1 TO 12
FOR x = 1 TO 20
IF map1(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map1(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map1(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map1(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), portal, PSET
NEXT x: NEXT y

PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND
PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR

END SUB

SUB tileassign

FOR y = 1 TO 12
FOR x = 1 TO 20

IF map1(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map1(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map1(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map1(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), portal, PSET
NEXT x: NEXT y

'PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND
'PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR

'PUT (erow% * 16 - 16, ecol% * 16 - 16), enemymask, AND
'PUT (erow% * 16 - 16, ecol% * 16 - 16), enemy, AND

END SUB


there it all is.
you arn't sharing guyx and guyy so they are defaulted to 0 when you call teh sub

messes up on
guyx * 16 - 16
how do i share them?
same way as the arrays
DIM SHARED guyy

ect