hmmm...
Try this NBK
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function array(s)
	local t={}
	for i=1,s do
		t[i]=0
	end
end
--I removed the variable escaper, we will use an array instead
img=array(32) --We will use 32 sprites, actually, we are just storing the ID OF THE IMAGE in this array
addhook("attack","prisonert")
function prisonert(id)
	if (player(id,"team")==1) then
		prisongfx(id)
	end
end
function prisongfx(id)
	img[id]=image("gfx/escaper.bmp",1,1,200+escaper) --Load the image
	timer(
		1000*3, --Three seconds
		"escaperend", --Call this function, that will ERASE THE SPRITE
		tostring(id), --With this string as parameter, the PLAYER ID
		1 --And do it just ONCE
	)
end
function escaperend(id)
	freeimage( img[tonumber(id)] ) --Free the corresponding sprite
end
--I also removed the function to free timers, we don't need to free them because they are called only ONCE
Wilson:
math.randomseed initalizes the random number generator, you pass a number to it that will be multiplied, summed, diveded, etc, to get PSEUDO-random values. Because they aren't 100% random, that's what makes us better than machines
math.cos and sin: Easy, you pass an angle (I will specify later how you must pass it) to the function and the function returns a number that multiplied by certain number (this number is known as length for some reason) will return the carthesian coordinates, that is X (if you used math.cos) and Y (if used math.sin)
If you survived the last paragraph you will still have to know how must be the angle that you pass to math.sin and cos. The angle must be in radians, being -Pi the left side, 0 the right side and Pi the left side again :P. It's clockwise starting from the left.
Now, a small example in pseudo code
1
2
3
angle = math.pi/4 --This is the bottom right
speed = 4 --This will be the speed, the higher the value, the further u move
parse("setpos 1 "..math.cos(angle)*speed.." "..math.sin(angle)*speed)
Good luck