I'm gonna assume your issue is that you're using the default Snorlax script, but talking to it only gives the "A pokemon is sprawled out here" message whether or not you have a pokeflute. If it's something other than that then you need to clarify your problem.
Let's look at the default script for one of the Snorlax in Firered:
I've tried to mark all the terminating flags before Snorlax wakes up with **
The first is flag 0x23D, which is the only ordinary flag being checked. If you set this flag, it's not your problem.
The second is a special that is an error checker of some kind.
This is likely where your problem is. It could be that it's checking for the PokeFlute, but since this special is used in other parts of the game too, it's a progress checker whose functionality is a bit of an unknown to me. If it returns 0x2, your script ends.
The final one checks whether the player clicked "NO" to using the pokeflute. This is not your problem.
Pointing that out is about all the help I can offer since I've never messed with the Snorlax scripts. Now that you understand that, the easiest thing to do would be to stop just using that vanilla script and instead create your own script based on it. For starters, you could simply remove special 0x187 and replace it with a checkitem command that checks for the player's pokeflute. However, an even better thing to do would be to write a checkitem script from scratch so you no longer depend on the vanilla.
Hope this helps at least somewhat