Public exportsΒΆ
In order to use an instance or procedure from another script file, you can declare it as public by listing it in the public section of the script:
(script# MYSPECIALSCRIPT) ; MYSPECIALSCRIPT is a number defined in game.sh, say.
(public
SomeProcedure 0
AngryTalker 1
)
(procedure (SomeProcedure param1)
)
(instance AngryTalker of Talker
(properties)
...
)
If the above script was called FooBar.sc, then you could “use” FooBar in another script in order to call the public procedures in FooBar.sc:
(use FooBar)
(procedure (SomeProc)
(SomeProcedure 6) ; Because we declared we were using FooBar, we can call public procedures in FooBar.sc
)
In the rare cases where you need to use a public instances, it is a little more complicated. For this, we need to use the ScriptID kernel. It will return the object ID for the object located at a particular index in a particular script number:
(procedure (SomeProc &tmp theTalker)
(= theTalker (ScriptID MYSPECIALSCRIPT 1)) ; export 1 of script# MYSPECIALSCRIPT
(Printf {The talker's name is %s} (theTalker name:))
)