My thought, and maybe I'm just over simplifying things and it won't actually work this way - is to have it when someone finishes the field, to load an item called something like "already worked field" or something. As long as that item is there, the field can't be work...
Every mud morning at, oh, say 7am, the script clears out any object of "already worked field" so they can be worked again.
So... let's say Jack works the field, at the end, the script would be changed to load the item.. which actually means, at the beginning of the script, we have to see if the room Jack is in has already been worked so it's looking for the object vnum of the room. I know you can look for a mob in a particular room, I'm just assuming you can also do it for objects. If that object is there, the script says, Sorry Jack, this field has already been plowed. If it's not there, it says, sure.. plow away (or whatever the script actually says).
So.. let's say that we make an object 3354 that is a worked field and, I'm not sure %rm.object(vnum)% works, but %rm.people(vnum)% does so I'm assuming it would - better scriptors would probably know. What I'm suggesting is to add this to before the plow script for the field:
Eval field %rm.object(3354)%
If %field%
%send% %actor% I’m sorry, this field has already been worked. Please come back tomorrow.
%else%
and after that else is the full plow/sow/whatever script for the field. And like I said, add another script for the room that's a time command for 7am or something. Sure, someone may be able to work the field and time it so they can turn around and do it again, but I think any solution would end up the same basic way. And, like I said, not 100% sure this would work as posted, but I'm making assumptions based on other things we can do.