Новые нативные функции в 1.29

» опубликован
В вышедшем сегодня патче для Warcraft III помимо огромного количества правок баланса и соревновательных карт была включена целая гора новых нативных JASS-функций (без малого почти сотня). Некоторые из них являются более удобными версиями уже бывшего доступным функционала, но большинство несут совершенно новые возможности, до сих пор бывшие недоступными простому смертному картоделу.
В общем, ознакамливайтесь и радуйтесь! Ну или не радуйтесь. Сами уж как-нибудь разберётесь.
type mousebuttontype extends handle

constant native GetBJMaxPlayers             takes nothing returns integer
constant native GetBJPlayerNeutralVictim    takes nothing returns integer
constant native GetBJPlayerNeutralExtra     takes nothing returns integer
constant native GetBJMaxPlayerSlots         takes nothing returns integer
constant native GetPlayerNeutralPassive     takes nothing returns integer
constant native GetPlayerNeutralAggressive  takes nothing returns integer

constant integer            PLAYER_NEUTRAL_PASSIVE              = GetPlayerNeutralPassive()
constant integer            PLAYER_NEUTRAL_AGGRESSIVE           = GetPlayerNeutralAggressive()

constant mousebuttontype    MOUSE_BUTTON_TYPE_LEFT              = ConvertMouseButtonType(1)
constant mousebuttontype    MOUSE_BUTTON_TYPE_MIDDLE            = ConvertMouseButtonType(2)
constant mousebuttontype    MOUSE_BUTTON_TYPE_RIGHT             = ConvertMouseButtonType(3)

constant playerevent        EVENT_PLAYER_MOUSE_DOWN             = ConvertPlayerEvent(269)
constant playerevent        EVENT_PLAYER_MOUSE_UP               = ConvertPlayerEvent(270)
constant playerevent        EVENT_PLAYER_MOUSE_MOVE             = ConvertPlayerEvent(271)

constant playerunitevent    EVENT_PLAYER_UNIT_SELL              = ConvertPlayerUnitEvent(272)
constant playerunitevent    EVENT_PLAYER_UNIT_CHANGE_OWNER      = ConvertPlayerUnitEvent(273)
constant playerunitevent    EVENT_PLAYER_UNIT_SELL_ITEM         = ConvertPlayerUnitEvent(274)
constant playerunitevent    EVENT_PLAYER_UNIT_SPELL_CHANNEL     = ConvertPlayerUnitEvent(275)
constant playerunitevent    EVENT_PLAYER_UNIT_SPELL_CAST        = ConvertPlayerUnitEvent(276)
constant playerunitevent    EVENT_PLAYER_UNIT_SPELL_EFFECT      = ConvertPlayerUnitEvent(277)
constant playerunitevent    EVENT_PLAYER_UNIT_SPELL_FINISH      = ConvertPlayerUnitEvent(278)
constant playerunitevent    EVENT_PLAYER_UNIT_SPELL_ENDCAST     = ConvertPlayerUnitEvent(279)
constant playerunitevent    EVENT_PLAYER_UNIT_PAWN_ITEM         = ConvertPlayerUnitEvent(280)

constant unitevent          EVENT_UNIT_SELL                     = ConvertUnitEvent(289)
constant unitevent          EVENT_UNIT_CHANGE_OWNER             = ConvertUnitEvent(290)
constant unitevent          EVENT_UNIT_SELL_ITEM                = ConvertUnitEvent(291)
constant unitevent          EVENT_UNIT_SPELL_CHANNEL            = ConvertUnitEvent(292)
constant unitevent          EVENT_UNIT_SPELL_CAST               = ConvertUnitEvent(293)
constant unitevent          EVENT_UNIT_SPELL_EFFECT             = ConvertUnitEvent(294)
constant unitevent          EVENT_UNIT_SPELL_FINISH             = ConvertUnitEvent(295)
constant unitevent          EVENT_UNIT_SPELL_ENDCAST            = ConvertUnitEvent(296)
constant unitevent          EVENT_UNIT_PAWN_ITEM                = ConvertUnitEvent(297)


//===================
// Player input
//===================

native GetTriggerPlayerMouseX               takes nothing returns real
native GetTriggerPlayerMouseY               takes nothing returns real
native GetTriggerPlayerMousePosition        takes nothing returns location
native GetTriggerPlayerMouseButton          takes nothing returns mousebuttontype


//===================
// Items UI
//===================

native SetItemName                          takes item whichItem, string name returns nothing
native SetItemDescription                   takes item whichItem, string name returns nothing
native SetItemTooltip                       takes item whichItem, string name returns nothing
native SetItemExtendedTooltip               takes item whichItem, string name returns nothing
native SetItemIconPath                      takes item whichItem, string name returns nothing

native GetItemDescription                   takes item whichItem returns string
native GetItemTooltip                       takes item whichItem returns string
native GetItemExtendedTooltip               takes item whichItem returns string
native GetItemIconPath                      takes item whichItem returns string


//===================
// Abils
//===================

    // Stats

native GetAbilityManaCost                   takes integer abilId, integer level returns integer
native GetAbilityCooldown                   takes integer abilId, integer level returns real

    // Text

native SetAbilityTooltip                    takes integer abilCode, string tooltip, integer level returns nothing
native SetAbilityOnTooltip                  takes integer abilCode, string tooltip, integer level returns nothing
native SetAbilityExtendedTooltip            takes integer abilCode, string ExtendedTooltip, integer level returns nothing
native SetAbilityOnExtendedTooltip          takes integer abilCode, string ExtendedTooltip, integer level returns nothing
native SetAbilityResearchTooltip            takes integer abilCode, string researchTooltip, integer level returns nothing
native SetAbilityResearchExtendedTooltip    takes integer abilCode, string researchExtendedTooltip, integer level returns nothing

native GetAbilityTooltip                    takes integer abilCode, integer level returns string
native GetAbilityOnTooltip                  takes integer abilCode, integer level returns string
native GetAbilityExtendedTooltip            takes integer abilCode, integer level returns string
native GetAbilityOnExtendedTooltip          takes integer abilCode, integer level returns string
native GetAbilityResearchTooltip            takes integer abilCode, integer level returns string
native GetAbilityResearchExtendedTooltip    takes integer abilCode, integer level returns string

    // Button

native SetAbilityIcon                       takes integer abilCode, string iconPath, integer level returns nothing
native SetAbilityOnIcon                     takes integer abilCode, string iconPath returns nothing
native SetAbilityPosX                       takes integer abilCode, integer x returns nothing
native SetAbilityPosY                       takes integer abilCode, integer y returns nothing
native SetAbilityOnPosX                     takes integer abilCode, integer x returns nothing
native SetAbilityOnPosY                     takes integer abilCode, integer y returns nothing

native GetAbilityIcon                       takes integer abilCode, integer level returns string
native GetAbilityOnIcon                     takes integer abilCode returns string
native GetAbilityPosX                       takes integer abilCode returns integer
native GetAbilityPosY                       takes integer abilCode returns integer
native GetAbilityOnPosX                     takes integer abilCode returns integer
native GetAbilityOnPosY                     takes integer abilCode returns integer


//===================
// Unit
//===================

    // Stats

native SetUnitArmor                         takes unit whichUnit, real armorAmount returns nothing
native SetUnitMaxHP                         takes unit whichUnit, integer hp returns nothing
native SetUnitMaxMana                       takes unit whichUnit, integer mana returns nothing
native SetUnitBaseDamage                    takes unit whichUnit, integer baseDamage, integer weaponIndex returns nothing
native SetUnitDiceNumber                    takes unit whichUnit, integer diceNumber, integer weaponIndex returns nothing
native SetUnitDiceSides                     takes unit whichUnit, integer diceSides, integer weaponIndex returns nothing
native SetUnitAttackCooldown                takes unit whichUnit, real cooldown, integer weaponIndex returns nothing

native GetUnitArmor                         takes unit whichUnit returns real
native GetUnitMaxHP                         takes unit whichUnit returns integer
native GetUnitMaxMana                       takes unit whichUnit returns integer
native GetUnitBaseDamage                    takes unit whichUnit, integer weaponIndex returns integer
native GetUnitDiceNumber                    takes unit whichUnit, integer weaponIndex returns integer
native GetUnitDiceSides                     takes unit whichUnit, integer weaponIndex returns integer
native GetUnitAttackCooldown                takes unit whichUnit, integer weaponIndex returns real

native GetUnitCollisionSize                 takes unit whichUnit returns real
native GetLocalUnitZ                        takes unit whichUnit returns real

native SetUnitName                          takes unit whichUnit, string name returns nothing
native SetUnitNameAll                       takes unit whichUnit, string name returns nothing
native SetHeroProperName                    takes unit whichUnit, string name returns nothing

    // Abils

native SetUnitAbilityCooldown               takes unit whichUnit, integer abilId, integer level, real cooldown returns nothing
native GetUnitAbilityCooldown               takes unit whichUnit, integer abilId, integer level returns real
native GetUnitAbilityCooldownRemaining      takes unit whichUnit, integer abilId returns real
native EndUnitAbilityCooldown               takes unit whichUnit, integer abilCode returns nothing

native GetUnitAbilityManaCost               takes unit whichUnit, integer abilId, integer level returns integer

native UnitHideAbility                      takes unit whichUnit, integer abilId, boolean flag returns nothing
native UnitDisableAbility                   takes unit whichUnit, integer abilId, boolean flag, boolean hideUI returns nothing
native DeleteHeroAbility                    takes unit whichUnit, integer abilCode returns nothing

    // Misc.

native UnitInterruptAttack                  takes unit whichUnit returns nothing
native UnitCancelTimedLife                  takes unit whichUnit returns nothing

native IsUnitSelectable                     takes unit whichUnit returns boolean
native IsUnitInvulnerable                   takes unit whichUnit returns boolean


//===================
// Special effect
//===================

    // Appearance

native SetSpecialEffectColorByPlayer        takes effect whichEffect, player whichPlayer returns nothing
native SetSpecialEffectColor                takes effect whichEffect, integer r, integer g, integer b returns nothing
native SetSpecialEffectAlpha                takes effect whichEffect, integer alpha returns nothing
native SetSpecialEffectScale                takes effect whichEffect, real scale returns nothing
native SetSpecialEffectHeight               takes effect whichEffect, real height returns nothing
native SetSpecialEffectTimeScale            takes effect whichEffect, real timeScale returns nothing
native SetSpecialEffectTime                 takes effect whichEffect, real time returns nothing

    // Position

native SetSpecialEffectX                    takes effect whichEffect, real x returns nothing
native SetSpecialEffectY                    takes effect whichEffect, real y returns nothing
native SetSpecialEffectZ                    takes effect whichEffect, real z returns nothing
native SetSpecialEffectPosition             takes effect whichEffect, real x, real y, real z returns nothing
native SetSpecialEffectPositionLoc          takes effect whichEffect, location loc returns nothing

native GetLocalSpecialEffectX               takes effect whichEffect returns real
native GetLocalSpecialEffectY               takes effect whichEffect returns real
native GetLocalSpecialEffectZ               takes effect whichEffect returns real

native SetSpecialEffectOrientation          takes effect whichEffect, real yaw, real pitch, real roll returns nothing
native SetSpecialEffectYaw                  takes effect whichEffect, real yaw returns nothing
native SetSpecialEffectPitch                takes effect whichEffect, real pitch returns nothing
native SetSpecialEffectRoll                 takes effect whichEffect, real roll returns nothing

    // Playback

native PlaySpecialEffect                    takes effect whichEffect, integer anim returns nothing
native PlaySpecialEffectWithTimeScale       takes effect whichEffect, integer anim, real timeScale returns nothing


//===================
// Misc.
//===================

native SetEventDamage                       takes real damage returns nothing

native AutomationTestStart                  takes string testName returns nothing
native AutomationTestEnd                    takes string testName returns nothing

constant native IncPlayerTechResearched     takes player whichPlayer, integer techid, integer levels returns nothing
constant native DecPlayerTechResearched     takes player whichPlayer, integer techid, integer levels returns nothing


//===================
// Not yet impl.
//===================

// native GetUnitMovementType               takes unit whichUnit returns integer
// native SetUnitMovementType               takes unit whichUnit, integer movementType returns nothing
// native GetUnitArmorType                  takes unit whichUnit returns integer
// native SetHeroStatEx                     takes unit whichHero, integer whichStat, integer statValue, boolean permanent returns nothing
// native GetHeroPrimaryStat                takes unit whichHero returns integer
// native GetHeroPrimaryStatById            takes unit whichHero returns integer
// native GetHeroStat                       takes unit whichHero, integer whichStat, boolean includeBonuses returns integer


Просмотров: 11 844



» Лучшие комментарии


PrincePhoenix #101 - 5 месяцев назад 0
Doc:
Каким образом это будет работать даже при камере смотрящей сверху вы можете мне объяснить? Хелло?
Начинаем с первого шага
делаем даммик в центре области экрана игрока
А теперь думаем каким же образом это мы так сделаем без кастомной камеры и зачем здесь вообще что-либо создавать. А с кастомной камерой в дгуи это уже и 8 лет назад было. Может я конечно упустил функцию с названием типа CreateUnitInTheCenterOfPlayerScreen?
Ору в голос, просто треш, прочитать это все с интонацией и можно захлебнуться колой.
Clamp #102 - 5 месяцев назад 1
CreateUnitInTheCenterOfPlayerScreen
GetCameraTargetPositionLoc
:D

зачем здесь вообще что-либо создавать
По фану, разумеется!
Doc #103 - 5 месяцев назад 0
Это замечательно и известно, при чем тут дамми юнит все еще непонятно. И даже наверное подобрать матрицу проекции можно, либо как уже заметили до этого использовать вид сверху. Синхронизировать придется в любом случае (если не сингл плеер) ну и про то что на небо и прочие внетеррейновые элементы указывать будет нельзя ты сам подметил. А еще и высота земли будет мешать, ага. Получаем синглплеерную игру с видом сверху под 90 градусов и плоской землей. Какой разгул.
Clamp #104 - 5 месяцев назад (отредактировано ) -2
Кроме автора идеи никто не знает зачем там юнит, забей.
Лучше поделись своими соображениями какими-нибудь на предмет "вот теперь это можно запилить". :3

» раскрыть
у тебя что-то случилось, что такое настроение жёсткое?
ты и в целом конечно не божий одуванчик, но сейчас как-то совсем токсично жаришь =/
Doc #105 - 5 месяцев назад (отредактировано ) 2
Что можно запилить - хз. Точно знаю что теперь можно убрать кучу ненужных систем типа всяких баз данных и систем урона и хаков с отловом мыши через форс юи кей, это круто. Все равно пока не будет нормальных функций для создания нового юи возможности будут ограничены имхо. Конечно все всегда можно впилить в мультиборд или полноэкранное юи, но это совсем не то и опять же костыли. Ничего не случилось, просто прочитал слишком много необдуманных постов еще до этого.
Вот хороший кейз где можно применить новые функции мыши как экранные координаты - это как раз полноэкранный интерфейс. Там центр экрана известен (ведь на него лочится камера) и камера направлена сверху вниз. Можно выкинуть тормозные трекаблы которые теперь непонятно зачем вообще нужны.
Clamp #106 - 5 месяцев назад 2
Конечно все всегда можно впилить в мультиборд или полноэкранное юи
Тут даже стало интересно, работает ли отлов координат при клике сквозь развёрнутый мультиборд.
Если кто-нибудь проверит - отпишитесь сюда. :3

Можно выкинуть тормозные трекаблы которые теперь непонятно зачем вообще нужны.
Ну это совсем уж суперочевидно, как мне кажется.
DarkLigthing #107 - 5 месяцев назад 0
Набросок альтернативной системы передвижения
прикреплены файлы
awesomesk1ll #108 - 5 месяцев назад 1
DarkLigthing:
Набросок альтернативной системы передвижения
Похоже что разрешение довольно сильно влияет на твою задумку.
Левая кнопка, центр осей сместился выше юнита, на скриншоте курсор наведён на центр, при нажатии раб стоит.
Аналогично и с телепортами, тоже сбились координаты.
Разрешение 1920х1080
прикреплены файлы
Clamp #109 - 5 месяцев назад -4
Клик по иконке незанятого раба в углу возвращает координаты за иконкой, забавно.
Ещё забавнее, что на семь if приходится девять endif, и при этом карта работает.

В смысле ЧТОО?!
Raised #110 - 5 месяцев назад 0
Ещё забавнее, что на семь if приходится девять endif, и при этом карта работает.
Wut?
Clamp #111 - 5 месяцев назад -2
Комплектный синтакс-чекер на голубом глазу пропускает такую функцию:
function BadJASS takes nothing returns nothing
    \test
    /testng
    if ()
    call
    endif
    exitwhen
    if (false)
        call BJDebugMsg("Still displayed...")
    else
        call BJDebugMsg("so is this")
endfunction
И карта с ЭТИМ спокойно запускается.
abidin #112 - 5 месяцев назад (отредактировано ) 0
Clamp #113 - 5 месяцев назад -4

Уже потестировал.

Думал было что совсем двинулся, когда лишние endif-ы насчитал, ан нет. Это пока что не я двинулся.
Raised #114 - 5 месяцев назад 0
Забавно.
abidin #115 - 5 месяцев назад 0
Может быть из за этой ошибки можно новые эксплойты обраружить
Clamp #116 - 5 месяцев назад (отредактировано ) -2
Тут даже стало интересно, работает ли отлов координат при клике сквозь развёрнутый мультиборд.
Если кто-нибудь проверит - отпишитесь сюда. :3
Проверил, работает.

Вот вам и кастомный интерфейс, чё.
DemonoiD #117 - 5 месяцев назад (отредактировано ) 0
Жду извинений за все вышенаписанные "ядовитые" глупости.
При любом углу наклона, создается в центре камеры юнит. Точка на плоскости у дамми юнита в мировых координатах есть. Точка камеры в мировых координатах есть. Точка мыши теперь в мировых координатах есть.
прикреплены файлы
Raised #118 - 5 месяцев назад 0
Без возможности узнавать ширину/высоту экрана это все ровно что оперировать вилкой.
awesomesk1ll #119 - 5 месяцев назад (отредактировано ) 3
Накидал за полчасика пример с отловом положения мыши.
Всё на гуи с кучей утечек, как бы для прототипа пофиг. Кому надо будет нормально сделает.
прикреплены файлы
DemonoiD #120 - 5 месяцев назад 0
GF RaiseD, зачем? если нужен только центр :( я не понимаю к чему мне ширина и высота экрана?
if mouse.position.x>cam.position.x then cam.position.x++
if mouse.position.y>cam.position.y then cam.position.y++
if mouse.position.x<cam.position.x then cam.position.x--
if mouse.position.y<cam.position.y then cam.position.y--
Raised #121 - 5 месяцев назад 0
DemonoiD, для нормального кастом UI
biridius #122 - 5 месяцев назад 0
я так и не понял зачем создавать юнита в центре камеры и медленно двигать камеру за мышью, и как это поможет рассчитывать координаты мыши на экране
знаю я дурак
Raised #123 - 5 месяцев назад 0
biridius, это чтоб вращать камеру мышью.
DemonoiD #124 - 5 месяцев назад (отредактировано ) 0
biridius, упрощенный вариант без "кренов", углов поворота и просмотра в небо. Но там полюбому тоже будет зависимость от игровых координат и функции типа "крен камеры игрока" или отбор у игрока возможности вращать камерой кроме нами установленных, тем самым полностью контролируя систему.
прикреплены файлы
awesomesk1ll #125 - 5 месяцев назад (отредактировано ) 6
прикреплены файлы
Doc #126 - 5 месяцев назад (отредактировано ) 3
А теперь поставь в центре экрана холмик. И может все же есть объяснение зачем конкретно нужен юнит?
И по поводу "упрощенного решения", учитывая каким должно быть полное решение, это - не решение совсем. Как раз с углом камеры и прочим начнутся сложности, потому что нужны матрицы камеры и проекции. Если камеру проекции еще можно подобрать (хотя здесь тоже проблемы с aspect ratio), то матрицу камеры просто так получить не получится. Честно говоря не помню можно ли получить угол наклона камеры в вк3.
DemonoiD #127 - 5 месяцев назад 0
Doc, если ты знаешь как отловить без юнита координату игровой камеры в мире, тогда не нужен. Тогда пропускаем этот пункт и переходим к следующим.
Можно каким-то образом заставлять игрока перенести мышь в правый нижний угол (например тыкнуть на иконку) и таким образом вычислять ширину экрана, если кому-то вдруг она понадобилась.
прикреплены файлы
Raised #128 - 5 месяцев назад 0
и таким образом вычислять ширину экрана, если кому-то вдруг она понадобилась.
Без возможности узнавать ширину/высоту экрана это все ровно что оперировать вилкой.
Sergarr #129 - 5 месяцев назад 4
awesomesk1ll:
Замена ModuloInteger
Если i действительно равно 4 после этой операции, то это не Modulo, а вполне себе Div.
DemonoiD #130 - 5 месяцев назад (отредактировано ) 0
прикреплены файлы
Doc #131 - 5 месяцев назад (отредактировано ) 2
Очевидно что результаты будут разные в зависимости от рельефа потому что рейкаст.
Steal nerves #132 - 5 месяцев назад 0
awesomesk1ll, ModuloInteger - это остаток от деления, что не так то? что добавили там? эта функция очень полезна
awesomesk1ll #133 - 5 месяцев назад (отредактировано ) 7
Steal nerves:
awesomesk1ll, ModuloInteger - это остаток от деления, что не так то? что добавили там? эта функция очень полезна
Wareditor там блескует предположениями просто, не пугайтесь, возможно баг нашёл даже :D.
прикреплены файлы
DemonoiD #134 - 5 месяцев назад (отредактировано ) 0
Doc, ты что-то у себя сломал. Ибо когда я центрирую камеру ниже холма, юниты появляются за холмом :(
прикреплены файлы
Steal nerves #135 - 5 месяцев назад 0
awesomesk1ll, да ладно. уж не страшно, это бж-функция, самому можно написать такую
DemonoiD #136 - 5 месяцев назад 0
прикреплены файлы
awesomesk1ll #137 - 5 месяцев назад (отредактировано ) 1
Лучшеб ракету глянули т.к спор потерял логическую нить уже где-то постов 5 назад..
И вот вообще
Clamp #138 - 5 месяцев назад 5
Замена ModuloInteger
СЛАВА ЯЙЦАМ!
Doc:
Честно говоря не помню можно ли получить угол наклона камеры в вк3.
Можно получить координаты таргета камеры и самой камеры ("глаза"), так что особых проблем тут нет.
DemonoiD #139 - 5 месяцев назад (отредактировано ) 0
awesomesk1ll, у него нет летающих бензопил за курсором. Плохая игра мини-игра:(
awesomesk1ll #140 - 5 месяцев назад (отредактировано ) 0
DemonoiD:
awesomesk1ll, у него нет летающих бензопил за курсором. Плохая игра мини-игра:(
Они могут там появиться, это же только WIP.
Raised #141 - 5 месяцев назад 2
Долбите близзов чтоб добавили возможность вращать камеру мышью. Долбите пока можно. Харе извращаться. 2018 год на дворе!
DemonoiD #142 - 5 месяцев назад 0
GF RaiseD, так её можно теперь теоретически вращать.
EVENT_PLAYER_MOUSE_MOVE
if MOUSE_BUTTON_TYPE_RIGHT = true then ВРАЩАТЬ.
Raised #143 - 5 месяцев назад (отредактировано ) 1
Гипотетически, зубы пломбировать можно и сквозь задницу, если тебе это доставляет.
Doc #144 - 5 месяцев назад 0
Я уже писал под видео что данная конкретная карта делается на трекаблах изи, слабый пример.
Увидел уже нативки для получения глаза - тогда ок.
Doc, ты что-то у себя сломал. Ибо когда я центрирую камеру ниже холма, юниты появляются за холмом :(
Если так тогда тем более ок.
DemonoiD #145 - 5 месяцев назад 4
GF RaiseD, вот видишь, главное научиться получать от процесса удовольствие, а остальное наладится ;)
Doc, Вы, кажется, забыли принести извинения.
ScorpioT1000 #146 - 5 месяцев назад 0
Побитовых операций как не было, так и нет, как обычно всё математикой делается)
P.S. Я клоню к AES и http request
PT153 #147 - 5 месяцев назад 0
Clamp:
Клик по иконке незанятого раба в углу возвращает координаты за иконкой, забавно.
Ещё забавнее, что на семь if приходится девять endif, и при этом карта работает.

В смысле ЧТОО?!
Кстати да. Скачал карту DarkLightning-а, увидел тоже это.
А кто Clamp минусы ставит?
DemonoiD #148 - 5 месяцев назад (отредактировано ) 1
А кто Clamp минусы ставит?
PT153, Я с телефона иногда мажу, простите ребят :(
ScorpioT1000 #149 - 5 месяцев назад (отредактировано ) 0
Про позиции камеры - у DGUI тоже aspect ratio задаётся вручную
Тест dgui
Интересно, что фпс вырос и обрабатывает довольно быстро период 0.00833333
прикреплены файлы
NazarPunk #150 - 4 месяца назад 2
Кастом UI прекрасно стандартными средствами реализуется
Смотрю близы начали доедать мёртвого оленя. Надеюсь они вкатят вразумительных функций, но что-то мне слабо верится. Пока что мемхак реализует бльше возможностей.
Думаю врятли дождёмся SetMouseX/Y (в координатах монитора), а уж тем более MouseHover event.
А шутан с мемхаком очень просто реализуется