I'm Brazilian living in São Paulo ... just my surname is from Yugoslavia. lol
You have a good point when you say to call scripts on isolated events. I have exaggerated on the description. The game currently being developed will have around 30 entities being updated constantly (but I'm working on a personal project that could fall in the "hundred entities" case). Some entities can have their script designed to be executed just some times, but some cases like the camera control or some sort of FX behavior will have a much more complex script that probably would be executed every frame.
In most of the cases the script is just an expression to compute damages or change projectile speed over the time or based on other projectile attributes.
Anyway, I'm using this approach because most part of the game is controlled by the engine/framework itself, and the script should be used as slave just on some classes to allow the game designers to change sightly the entities behavior.
I've coded a test like you suggested, and the code is creating a context on the entity construction and releasing it on entity destruction, the Function ID is being get when the "behavior" is assigned (once in the entity lifetime), so the update code is doing something like this:
cxt->Prepare(mFnID);cxt->SetArgObject(0, this);cxt->Execute();
Is this the best way to do it?