Your sprite should not have ANY spofs that move it, other than your first spofs to put it in the middle of the screen.
Collision is hard, especially with BG, and it is very hard. You can check for the BG tile underneath you with
TILE=BGGET(<layer>, <player sprite x>, <player sprite y - 5 or a small number like that>, 1)
If TILE is a floor tile, then don't move the BG up and let him jump.
instructions:
drag elements together to combine, if possible.
press down to open element selector
press left to clear the bottom screen
press up to save your progress
press right to copy the currently-held element.
Attention:
In selector, not all elements are on the first screen, so try going right or left a bit more.
z, you're overcomplicating things.
Use SPSET id#,def# to create your sprite and tell how it looks.
def# is 0-511, you can see them in the SmileTOOL SPDEF section.
Not in DAT files, sadly. String arrays cannot be saved as DAT.
However, you can save a string array to a regular file, using PRGEDIT and PRGSET. You go through each item of the string array and save it to a line, then for loading, you use PRGGET$() and load each line back into a string array.