Start by making your own scripts.
Base Script:
class zbl_Example_Script : public ScriptImpClass
{
public:
void Created(GameObject *o);
void Timer_Expired(GameObject *o, int num);
void Killed(GameObject *o, GameObject *s);
};
void zbl_Example_Script::Created(GameObject *o)
{
Commands->Start_Timer(o, this, 300.0f, 123);
}
void zbl_Example_Script::Timer_Expired(GameObject *o, int num)
{
if ( num == 123 )
{
Console_Input("msg zbl_Example_Script::Timer_Expired has expired...continuing!");
Commands->Start_Timer(o, this, 300.0f, 123);
}
}
void zbl_Example_Script::Killed(GameObject *o, GameObject *s)
{
Console_Input("msg zbl_Example_Script::Killed called.");
}
ScriptRegistrant<zbl_Example_Script> zbl_Example_Script_Registrant("zbl_Example_Script", "");
Keep in mind, that when writing scripts, if you expect to release them, pick a prefix for your scripts. Mine is "zbl_" as those are my initials. jonwil's prefix is "JFW_" cos those are his initials. APB uses "RA_" and SCUD Storm uses "SCUD_" generally.
etc etc.
Just start by playing with the Scripts API and you'll learn more and more.
Some of the key stuff is in scripts.h and engine_*.h
Just explore the ScriptCommands struct ("Commands" variable; "Commands->_____")