Make a recall potion item and link it to a common event. When you enter a town, set 3 variables called player x and player y and map id to those specifics. Then in your common event set the item to transfer player to those variables. That way, what ever town you entered most recently will have the variables set, and will automatically be the one you jump to.
The event to set the variables should look like this.
Event Name - Set Recall Coordinates
Parallel Process
@>Control Variables: [0001: MAP ID] = Map ID
@>Control Variables: [0002: PLAYER X] = Player's Map X
@>Control Variables: [0003: PLAYER Y] = Player's Map Y
@>Erase Event
Put this event in every town. You want to use erase event so it will only set them once each time you enter this map. This event will respawn every time you enter the map, but it will set no matter where on the map you enter, so if you go in and out of buildings with seperate maps in that city, it will keep resetting the coordinates. If you want to avoid this, you could tie the event to an action, like staying at the local inn, or speaking to the town priest.
The recall common event should look like this.
Common Event - Recall Potion
Trigger None
@>Transfer Player:Variable [0001][0002][0003], Down
Then just make sure your item is linked to your common event. This should work just fine. If not, let me know.
-Rob