Как добавить активный элемент на экран.
Для начала надо открыть файл нужного нам экрана (он находятся в папке Assets\Python\Screens). Затем добавить объект с которым хотим взаимодействовать (addSlider - слайдер, setText - текст, setButtonGFC - кнопка плюс или минус, и т.д.).
Нужно иметь ввиду что для взаимодействия с объектом у этого объекта есть три параметра идущие друг за другом в функции создания оъекта: WidgetTypes (тип реакции объекта при взаимодействии), iData1 (число), iData2 (число) (например setButtonGFC("имя объекта", u"", "", X координата, Y координата, длинна, высота, WidgetTypes.WIDGET_GENERAL, -1, -1, ButtonStyles.BUTTON_STYLE_CITY_MINUS)).
Если хотим отделатся только питоном то достаточно указать WidgetTypes.WIDGET_GENERAL и написать алгоритм в функции def handleInput (self, inputClass) , которая находится в том же файле.
Но если питона не достаточно (напрмер сделать всплывающую подсказку в питоне у меня не получилось), то прийдется использовать SDK.
1) Открываем файлы CvEnums.h и CyEnumsInterface.cpp, ищем WidgetTypes и добавляем туда новый. Добавлять надо в конец списка перед , NUM_WIDGET_TYPES, .
2) Открываем файл CvDLLWidgetData.cpp
3) Ищем функцию void CvDLLWidgetData:: parseHelp(CvWStringBuffer &szBuffer, CvWidgetDataStruct &widgetDataStruct) - алгоритм подсказки при наведении курсора на объект. Добавляем туда наш widget и алгоритм подсказки (алгоритмы подсказок есть еще в файле CvGameTextMgr.cpp).
4) Ищем функцию bool CvDLLWidgetData:: executeAction( CvWidgetDataStruct &widgetDataStruct ) - клик по объекту. Добавляем туда наш widget и алгоритм действий.

Значения переменных widgetDataStruct.m_iData1 и widgetDataStruct.m_iData2 в функциях parseHelp и executeAction это наши iData1 и iData2 которые мы указывали при создании объектов.