It definitely recognizes that I have entered the zone (I got the message text you said to add, and also I have prevented it from dropping an item outside of a zone.) Still didn't complete the task.
However, I got it to work by adding the checking for all 3 items to the zone's OnExit method, dropping the item in the zone and then walking away. So I have a hunch:
I'm checking for task completion via a line like:
if zoneB:Contains(zitem1) and zoneB:Contains(zitem2) and zoneB:Contains(zitem3) then...
When I walk in with item 3, it's in my inventory. Perhaps WhereYouGo doesn't consider that a zone contains an item if that item is in the player's inventory, even if the player is within the zone. The emulator considers the player's inventory to be within the zone if the player is.