That's because you're setting lasttime as a global.
You need to have lasttime be specific for the player.
do calling_ply.lasttime
then first line after your else, do
if not calling_ply.lasttime then calling_ply.lasttime = CurTime() - 20 end
Ye I knew I was setting it as a global but I didn't think about doing that, thanks
Also about that "if not calling_ply.lasttime then calling_ply.lasttime = CurTime() - 20 end"
I had that (if not ... lasttime = 0 ) but I thought that lasttime or 0 was cleaner.
Any specific reason on why do it that way?