На луа как раз и можно на прямую обращаться к directx и системным функциям без написания промежуточной dll.
Тем не менее, вот выдержка из справки по работе с плагинами
'
добавил поддержку плагинов. загружаются из 'Plugins\*.dll' при старте пилота. имя файла не должно содержать точек и других нелегальных для пилота символов. список функций всех загруженых плагинов расположен в соответствующем подпункте меню, вызываемому кликом правой кнопки мыши в скрипте. имя функции формируется из имени файла плагина и собственно имени самой функции, разделенных точкой. параметры указываются в следующих за именем круглых скобках. плагин возвращает одну строку, длиной до 32кб. символ с кодом '#00' является концом строки. комбинация символов с кодами '#0d0a' или '\n' являются управляющими, для увеличения первой размерности массива (строк). символ с кодом '#09' является управляющим, для увеличения второй размерности массива (столбцов). т.е. возвращаемое плагином значение вида '1#092#093\n4#095#096', где '#09' означает символ с кодом 9, создаст массив 2х3 следующего содержания.
1 2 3
4 5 6
пример:
set $a myPlugin.function1 (много много параметров) // в строковой переменной $a будет всё что вернет плагин
set %a myPlugin.function1 (много много параметров) // возвращаемое плагином значение будет преобразовано в массив %a
Там что-то неоднократно менялось, и учитывая, что это пережиток прошлого, лучше использовать луа.