Hi Roy,
I think the most straightforward way to implement it would be to
customize the 3dsmax jobtype's frontend script, AND use it in
combination with a cmdline job that unzips the file on the farm.
Basically, when the user clicks the "submit" button, the front-end
should submit 2 jobs-- one is a "cmdline" job that unzips the archive,
and the other is a regular "3dsmax" job, that stays "blocked" until
the unzipping job completes.
You'd need to modify the front-end submit.ms script to call your
resource-collection and zipping routine, and then submit a separate
cmdline type job that will do the unzip operation when run on the farm.
The front-end script should still also submit a 3dsmax job, as it does
normally, but put a dependency on it. More specifically, the 3dsmax job
should be submitted as "blocked", but have an associated callback
that unblocks itself when the unzip job is complete.
I guess you could also implement it in a single job if you modify both
the front-end and the back-end to the 3dsmax jobtype, but that'll
be more work, I think.