Перед запуском скрипта поставьте каллбек, как на примере:
void ExecuteScript() { DWORD timeOut; ctx->SetLineCallback(asFUNCTION(LineCallback), &timeOut, asCALL_CDECL); int status = asEXECUTION_SUSPENDED; while( status == asEXECUTION_SUSPENDED ) { // Позволяем выполнятся 10мс timeOut = timeGetTime() + 10; status = ctx->Execute(); // Выполнение прервано, теперь мы можем сделать что-то еще прежде чем продолжить выполнение вызовом Execute(). ... } } void LineCallback(asIScriptContext *ctx, DWORD *timeOut) { // If the time out is reached we suspend the script if( *timeOut < timeGetTime() ) ctx->Suspend(); }
Чтобы получше разобраться как это работает, взгляните на пример Events.