You define Zhit$ at the start of you programme when zsroll=0 so you will always get 0 even though zsroll is returning a random value in your subroutine.
Rather than having:
zhit$ = "You attack the human for "+str$(zsroll)+" damage!"
at the start of your code.
Try:
center text 320,160,"You attack the human for "+str$(zsroll)+" damage!"
in your Attack and defend subroutine.
EDIT:
Use:
randomise timer()
at the start of your code to ensure you get a different set of random numbers every time your programme runs.
For a random number between 1 and 5 you did this:
zs=5
zsroll=rnd(zs)
if zsroll < 1 then zsroll = 1
This will do the same:
Zs=4
Zsroll=rnd(zs)+1
EDIT2:
I missed this:
Quote: "I even added this to the code, as you can see:
If zsroll < 1 then zsroll = 1
But it still comes up as zero."
Sorry I just woke up in my comp chair with a stiff neck. I really must go to bed sometimes. Im told beds are quite comfortable.