...Каждая функция (или ресурс типа BHAV) это набор инструкций. Каждая инструкция это вызов или примитива или другой функции. Как я уже говорил, инструкция кодируется 12-ю байтами. Два байта задают номер примитива или функции. Еще два байта — номера переходов для Истины или Лжи. Восемь байтов — параметры. Теперь подробнее. Если в первых двух байтах стоит номер от 0 до 255, то это примитив. Если номер от 4096 до 8191, то функция приватная, (priv: ), искать ее нужно в том же файле. Если номер от 256 до 4095 — это глобальная функция. IFF Pencil 2 пишет перед ее именем (glob: ). Глобальные функции размещены в файле global.iff из global.far. Если номер от 8192 и старше, то функция полуглобальная, (semi: ), искать ее нужно в файле, который задан в ресурсе GLOB. Например, для файла Sofas.iff таким файлом будет SofaGlobals.iff...
...Начнем с main, он самый простой, и его номер (4096) общий для всех. В скрипте main задается поведение самого шкафа, чем он “занимается”, когда с ним не взаимодействуют симы...
...Перейдем теперь к init-ам. Эта функция вызывается в двух случаях: когда предмет появляется в игре при покупке (еще до того, как он будет поставлен на участок, сразу же после выбора его мышкой в каталоге) и после ошибок во время функционирования самого предмета (в случае шкафа эти ошибки могут быть только в функциях init, main и load и в функциях, которые они вызывают; при ошибках в других функциях должен выполняться reset для симов, но он, почему-то не выполняется, но это уже тонкости). Поэтому очень важно, чтобы init ошибок не содержал, иначе можно легко повесить игру...