Well for the random of locations try this. Use the thoery base and not literal.
Create sprites to be spawn locations. These should be the same sprite, but instances. ie copy and paste or created at specific lcoations
on every X seconds
->system.pick instance spawnsprite object, random(0, spawnSprite.count)
->create monster (layer, X=spawnSprite.x, Y=spawnSprite.y)
----
for Drag and Drop towers and stuff
create a row of Icons(which you probably have)
create a Drag and Drop Tower for each icon(as you probably have)
put the D&D towers over the icons and set to invisible
on MouseDown on D&DTower
set D&D Tower to visible
on Release of Mouse
check to validate tower position
if true
-> create game play tower at XY location
->set D&DTower invisible
->set D&DTower position to ojbect(icon)
-----------------
as for fighting
here is my suggestion
put a invisible sprite sensor over each tower(this is the range)
for each enemy
collision with sensor
-> rotate tower(that belongs to the sensor) towards angle(tower, enemy)
->check angle change. If angle change = 0. Shoot
sorry that I'm not going to do a tutorial. but doing this is most of the core game play. I'll help people to get on the right track, but not one to make the game for them :D