Noesis API

Status
Not open for further replies.

Reg1oxeN

Administrator
Staff member
Messages
1,451
Основная документация интерфейса: [ССЫЛКА]

cm.scoreboard.?

ТипНазваниеОписание
colorColorsTНик Т игрока
colorColorsCTНик КТ игрока
colorColorsDeadНик мертвого игрока



colorColorsMoneyTДеньги Т игроков
colorColorsMoneyCTДеньги КТ игроков
colorColorsMoneyDeadДеньги мертвых игроков



colorColorsClanTКлан Т игрока
colorColorsClanCTКлан КТ игрока
colorColorsClanDeadКлан мертвого игрока



stringServerNameНазвание сервера
stringMapNameНазвание карты
stringWinConditionУсловия для завершения карты
intSTVSpectatorsКоличество спектаторов на STV сервере
-1 если бота нет на сервере



stringTeamNameTНазвание Т команды
stringTeamNameCTНазвание КТ команды
intTeamScoreTСчет Т команда
intTeamScoreCTСчет КТ команды



intPlayersCountSpecКоличество спектаторов
intPlayersCountTКоличество Т игроков
intPlayersCountCTКоличество КТ игроков
intPlayersAliveTКоличество живых Т игроков
intPlayersAliveCTКоличество живых КТ игроков



boolSpectatorsMutedНаходятся ли все спектаторы в муте
stringMouseEnableBindКнопка отвечающая за включение курсора



командаPlayerToggleMuteПереключить мут спектаторов
командаSpectatorsToggleMuteЗамутить игрока по индексу переданному в параметре
listPlayersListКоллекция из 64 игроков

Cтруктура игроков из cm.scoreboard.PlayersList
ТипНазваниеОписание
intIndexИндекс игрока
intUserIDUserID игрока



stringAvatarОтдает название аватара, которое можно использовать для добавления в качестве пути для изображения.
Пустая строка означает что аватара нет.
stringNameИмя игрока
stringClanКлан игрока



intOnlineСтатус индикатора онлайна
(см. расшифровку внизу)
intMoneyКоличество денежной валюты
-1 если неизвестно
intScoreКоличество фрагов
intDeathsКоличество смертей
intPingПинг игрока
-1 если бот
intTeamКоманда игрока
0 - Не выбрал команду
1 - Спектатор
2 - КТ
3 - Т



boolIsConnectedИгрок подключен и о нем доступна информация
boolIsLocalЛокальный игрок
boolIsAliveИгрок живой
boolIsBotИгрок бот (сюда входит и STV бот)
boolIsBotSTVИгрок STV бот
boolHasSpecialИмеет бомбу или щипцы



boolIsVoiceAudibleИгрок может говорить
boolIsVoiceSpeakingИгрок говорит
boolIsVoiceBlockedИгрок в муте



командаToggleMuteПереключить мут игрока
ЗначениеТип индикатораОписание
-1БелыйОбычный игрок
0КрасныйПодозрительный игрок или читер
1СинийОффлайн
2ЗеленыйОнлайн
3Красный щитИгрок запустил античит, но был кикнут защитой из-за сбоя системы или обнаружения благополучной среды способствующей использованию читов
4Синий щитИгрок в состоянии авторизации в античите
5Зеленый щитАнтичит полностью активен

XML:
//подключаем пространство имен ClientMod
xmlns:clientmod="clr-namespace:ClientMod"

//первым делом сортируем игроков
<clientmod:ScoreboardSortBehavior x:Name="ScoreboardSort" ItemsSource="{Binding cm.scoreboard.PlayersList}"/>

//далее сортированных игроков раскидываем по командам
<clientmod:ScoreboardFilterBehavior x:Name="ScoreboardFilterSpec"    Team="1" ItemsSource="{Binding SortedItems, ElementName=ScoreboardSort}"/>
<clientmod:ScoreboardFilterBehavior x:Name="ScoreboardFilterT"        Team="2" ItemsSource="{Binding SortedItems, ElementName=ScoreboardSort}"/>
<clientmod:ScoreboardFilterBehavior x:Name="ScoreboardFilterCT"        Team="3" ItemsSource="{Binding SortedItems, ElementName=ScoreboardSort}"/>

//в 1 команду входят все игроки из спектаторов
//даже если они только что зашли и не выбрали команду
//STV бот в этот список никогда не попадает

//в конце можем создать список спектаторов
<ItemsControl    ItemsSource="{Binding FilteredItems, ElementName=ScoreboardFilterSpec}"
                ItemTemplate="{StaticResource PlayerTemplateSpec}"
                ItemContainerStyle="{StaticResource SpecPlayerItemStyle}"/>
cm.screen.?

ТипНазваниеОписание
doubleWidthШирина
doubleHeightВысота
doubleWidthMultiШирина разделенная на 100
doubleHeightMultiВысота разделенная на 100
doubleAspectСоотношение сторон исходя из деления ширины на высоту
doubleIdealFontИдеальный размер шрифта для конвертора (смотрите формулу в спойлере конверторов)
panel.?

ТипНазваниеОписание
boolIsMouseEnabledВключен курсор
boolIsKeyboardEnabledВключена клавиатура
boolHasFocusВ фокусе



intWidthШирина
intHeightВысота



командаSetWidthЗадать ширину через параметр
командаSetHeightЗадать высоту через параметр



командаClosePanelЗакрыть
cm.?

ТипНазваниеОписание
doubleCurrentTimeВремя прошедшее после запуска игры
boolEveryFrameЗначение обновляющееся каждый фрейм и всегда имеет значение True

cm.cache.?
Кеширование рекомендуется использовать в эвенте Loaded документа

ТипНазваниеОписание
командаTextureПередать в параметр команды путь до текстуры, которую нужно кешировать

Все конверторы находятся в пространстве имен ClientMod.
Пример объявления и использования обычного конвертора [ССЫЛКА]

НазваниеТипОписание
UppercaseConverterОбычныйСтроку в верхний регистр.
LowercaseConverterОбычныйСтроку в нижний регистр.
MultiplierConverterОбычныйУмножение значения на параметр.
MultiMultiplierConverterМульти, любое количество параметровМульти умножение значения на множество параметров.
IdealFontConverterОбычныйФормула идеального размера шрифта, где значением всегда передается cm.screen.IdealFont, а параметром размер шрифта.
MultiIdealFontConverterМульти, любое количество параметровИдеальный размер шрифта, все то же самое, только все последующие параметры умножают результат.
ThicknessConverterМульти, 4 параметраПреобразование 4 параметра в Thickness тип, который используется в Margin или Padding. (альтернатива?)
TranslateConverterОбычныйПеревод строки, в параметр можно добавить одно значение, если перевод его требует.
MultiTranslateConverterМульти, любое количество параметровМульти перевод строки.
ToStringConverterОбычныйПреобразование любого значения в строку.
AbsoluteConverterОбычныйПреобразование значения в абсолютное. (убирает минус)
(cm.screen.IdealFont + размер_шрифта) * 0.01 * высота_экрана * общий_множитель(в случае мульти конвертора) * общий_множитель(в случае мульти конвертора)

Обычный конвертор - всегда через Binding.
Мульти конвертор - всегда через MultiBinding.

В игру встроена своя поддержка svg файлов.
Поскольку данный тип имеет динамический размер и плохо себя проявляет при попытке отрендерить его в векторном формате, то для наилучшего качества отображения используется генерация изображения из представленного svg файла.
Для загрузки svg файла достаточно указать его в качестве изображения и добавить в конце расширения файла вопросительный знак с указанием необходимо размера для отображения его в качестве изображения.
Например icon.svg?32x16 создаст изображения размера 32 по ширине и 16 по высоте.
Если оба числа планируются одинаковыми, то название можно сократить до icon.svg?32
Игра поддерживает автоматическую конвертацию изображений в текстуры.
Доступны следующие форматы: jpg, jpeg, png, bmp, tga
Изображения должны находиться в папке noesis.

Текстуры vtf должны находиться в папке materials/noesis.
Если текстура не найдена, происходит поиск в папке materials без префикса noesis.

Рекомендуется использовать vtf текстуры, поскольку они являются самым быстрым методом загрузки.
Если используете обычные изображения, позаботьтесь об их кешировании, иначе при первом показе изображения могут возникать фризы.
Для оптимального использования оперативной памяти рекомендуется использовать размеры изображений кратные 4. (если число делится на 4 без остатка, это то что нужно)
Не рекомендуется использовать слишком большие размеры текстур.

 
Last edited:
Расширения поведений
ТипНазваниеСтандартное значениеОписание
boolSmoothEnabledfalseВключить плавную прокрутку
floatSmoothTime0.2Время анимации плавного прокрутки




boolTouchEnabledfalseВключить прокрутку касанием
intTouchThreshold5Порог начала прокрутки
floatTouchMultiplier2.0Множитель прокрутки
boolTouchSmoothfalseВключить плавную прокрутку касанием
floatTouchSmoothTime0.1Время плавной прокрутки касанием




boolFrictionEnabledfalseВключить скольжение после прокрутки касанием
intFrictionThreshold5Порог начала скольжения
floatFrictionMultiplier0.5Множитель скольжения
floatFrictionTime0.5Время анимации скольжения

XML:
//сперва объявляем пространство имен
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"

//далее вкладываем наше расширение в ScrollViewer
<ScrollViewer>
    <b:Interaction.Behaviors>
        <b:SmoothScrollBehavior SmoothEnabled="True"
                                TouchEnabled="True" TouchMultiplier="1"
                                TouchSmooth="True" TouchSmoothTime="0.1"
                                FrictionEnabled="True"/>
    </b:Interaction.Behaviors>
</ScrollViewer>
 
Last edited:
Панели

Портированная панель из CSS [ССЫЛКА]
Не полностью, но необходимый минимум, который требовался, присутствует.
Не стоит злоупотреблять этой панелью, используйте ее в крайнем случае, когда нельзя обойтись штатными средствами.
Если вам нужен какой-то нереализованный функционал, то оставьте запрос на добавление.

ТипНазваниеЗначенияОписание
НЕ РЕАЛИЗОВАНОOrderНЕ РЕАЛИЗОВАНООпределяет порядок вывода флексов внутри флекс-контейнера. Элементы располагаются согласно значениям свойства order от меньшего к большему
НЕ РЕАЛИЗОВАНОGrowНЕ РЕАЛИЗОВАНОЗадает коэффициент роста flex для заданного числа
НЕ РЕАЛИЗОВАНОShrinkНЕ РЕАЛИЗОВАНОЗадает коэффициент сжатия flex с заданным числом
string перечислениеAlignSelfNotSet
Start
End
Center
Baseline
Stretch
Выравнивает флекс-элементы текущей строки, переписывая значение AlignItems
doubleBasisОпределяет основу флекса, которая является начальным размером элемента. Похоже на свойства width и height, к которым добавляется содержимое элемента
string перечислениеDirectionRow
RowReverse
Column
ColumnReverse
Задаёт направление основных осей в контейнере и тем самым определяет положение флексов в контейнере
НЕ РЕАЛИЗОВАНОWrapНЕ РЕАЛИЗОВАНОУказывает, следует ли флексам располагаться в одну строку или можно занять несколько строк
string перечислениеJustifyContentStart
End
Center
SpaceBetween
SpaceAround
SpaceEvenly
Определяет, как распределяется пространство вокруг флекс-элементов вдоль главной оси контейнера
string перечислениеAlignItemsNotSet
Start
End
Center
Baseline
Stretch
Выравнивает флекс-элементы внутри контейнера в перпендикулярном направлении
НЕ РЕАЛИЗОВАНОAlignContentНЕ РЕАЛИЗОВАНОЗадаёт тип выравнивания строк внутри flex контейнера по поперечной оси при наличии свободного пространства
XML:
<FlexBox JustifyContent="SpaceEvenly">
    вкладываем сюда любое количество элементов
</FlexBox>

Панель для создания круглых меню.
Все подпанели находятся в пространстве имеет RadialMenu

Что делают параметры я не знаю, поскольку еще не разбирался.
Если кто-то захочет разобраться и рассказать о них, то можете создать тему с соответствующим содержимым.​

RadialPanel
ТипНазваниеОписание
floatAngle
floatAngleOffset
boolIsClockwise
floatCenterX
floatCenterY
floatAngleStart
floatAngleDelta

Arc
ТипНазваниеОписание
floatCenterX
floatCenterY
floatInnerRadius
floatOuterRadius
floatOffset
floatAngleStart
floatAngleDelta
floatPadding
brushFill
brushStroke
floatStrokeThickness

RadialItem
ТипНазваниеОписание
floatCenterX
floatCenterY
floatRadius
floatOffset
floatAngleStart
floatAngleDelta

Примеры можно найти ЗДЕСЬ и ЗДЕСЬ
 
Last edited:
Шейдеры

Все шейдеры находятся в пространстве имен ClientModShaderEffects
Пример использования Brush шейдера [ССЫЛКА]
Пример использования Effect шейдера [ССЫЛКА]
Представленные в примерах документации стандартные шейдеры не имплементированы в игру.

Конверсия брашей в оттенки серого, например ImageBrush

ТипНазваниеОписание
floatAlphaСтепень серого оттенка

Эффект позволяющий покрасить например Image, лучше всего работает с белыми элементами

ТипНазваниеОписание
colorColorЦелевой цвет
 
Last edited:
Status
Not open for further replies.
Back
Top