You should always leave an open listener if you want to control your object with a HUD. But make sure not to use the public channel 0 as the others mentioned. Because the listener will check every chat on its' targetchannel.
I use to generate the listener channels from the object owner key.
Add integer channel; to your script header.
Then in your state_entry()- event add this:
channel=-(integer)("0x"+llGetSubString((string)llGetOwner(),0,7));
Make sure to reset the script either on owner changes or better on rez or it will always use the old channel for every owner.