--- title: PerformCrewExchange2 summary: Справочная запись интерфейса X4. Типы известны только в явно указанной области. section: reference kind: api status: reference updated: 2026-10-26 tags: ["API","X4"] sources: ["https://wiki.egosoft.com/X4%20Foundations%20Wiki/Modding%20Support/","https://www.lua.org/manual/5.1/manual.html","https://luajit.org/ext_ffi_api.html"] --- ## Возвращаемое значение | Тип | Значение | | --- | --- | | UICrewExchangeResult | Тип описывает объявленный интерфейс, а не успешный игровой эффект. | [Типы и методы](wiki:types) ## Объявление и параметры ```c UICrewExchangeResult PerformCrewExchange2(UniverseID controllableid, UniverseID partnercontrollableid, NPCSeed* npcs, uint32_t numnpcs, NPCSeed* partnernpcs, uint32_t numpartnernpcs, NPCSeed captainfromcontainer, NPCSeed captainfrompartner, bool exchangecaptains, bool checkonly); ``` | C-параметр | | --- | | `UniverseID controllableid` | | `UniverseID partnercontrollableid` | | `NPCSeed* npcs` | | `uint32_t numnpcs` | | `NPCSeed* partnernpcs` | | `uint32_t numpartnernpcs` | | `NPCSeed captainfromcontainer` | | `NPCSeed captainfrompartner` | | `bool exchangecaptains` | | `bool checkonly` | Результат-указатель является cdata, а не строкой Lua. C bool преобразуется в boolean; обычные числовые C-типы обычно в number, а 64-битные целые и структуры могут остаться cdata. void не возвращает значение напрямую, но функция может изменять выходные буферы. Перед вызовом нужно установить размер и срок жизни буфера, владение памятью и правильный UI-контекст. ## Пример и контекст Смотрите [основы языка](wiki:x4-code-basics), [типы и методы](wiki:types) и [события Lua / MD](wiki:md-lua-bridge). Там приведены самостоятельные учебные примеры. Исходные файлы проектов и фрагменты их внутренней реализации в этом справочнике не распространяются.