Most of the Globals have been substituted with Hashtable.
Added new APIs:
CSpriteBase.
CSpriteMini.
CSpriteUber.
Fixed CAbilityBase API functions having wrong offsets/not working properly with spells higher than level 1.
Added new functions in CAbilityBase API.
Additional optimisation.
Update 1
Fixed SetFrameSize function, it was causing a fatal error.
Fixed CAbilityBase offsets for HeroDuration and NormalDuration.
Fixed CAbilityBase offset for SummonedUnit.
Added Hide/ShowCSimpleRegion along with SetCSimpleRegionVisibility.
Update 2
CSimpleFrameAPI Additions:
HideCSimpleFrame
ShowCSimpleFrame
SetCSimpleFrameVisibility
IsCSimpleFrameVisible
CLayerAPI Additions:
SetCLayerVisibility
IsCLayerVisible
SetCLayerPriority
Added new Trigger APIMemoryFrameData, now it will contain FrameMap with vtables/layouts.
Changed: GetFrameLayoutByType to directly check if Layout exists, aka if layout vtable != 0
Added: GetFrameTypeName, will return CBackdropFrame if CBackdropFrame type frame was checked, etc.
Changed most of the checks for frame type, to frame typename, so it's easier for the eyes + easier to modify and the order won't matter anymore.
Modified: AddFrameType to save data not only by vtable/layout vtable address but also by frame index, so data can be extracted both ways.
Update 3
Added GetSmartPositionEx function in CGameData API.
Added SetSmartPositionEx/SetSmartPosition function in CGameDataAPI.
Added SetSmartPositionEx call in SetObjectX/SetObjectY and SetObjectPosition.
Fixed bug with effect position change, causing it to not being drawn if it was moved too far from the creation point.
Note: this is fixed due to the usage of SetSmartPositionEx, so don't touch it, even though it will "hinder" the performance slightly.
Update 4
Increased OPLimit to 0xEFFFFFFF, maximum allowed amount of operations.
Unryze, код всегда кидай в форматировании, у тебя строки кода из C++ без него из-за чего текст в мифе про TriggerAddAction нечитаем.
Поправлю, не ожидал что так поплывёт.
И я так и не понял, почему мы смотрели код TriggerRemoveCondition, а не TriggerRemoveAction.
Ну, для начала это были TriggerClearConditions и TriggerClearActions, и как раз разница в 1 строчку (отсутствие деструктора агента внутри TriggerClearActions), что и вызывает эту проблему. TriggerRemoveAction не имеет проблемы, но я его опустил, ибо кто будет сохранять triggeraction в переменную, чтобы потом её удалить?
Как вы видите, хендлов всё так же 10000, а это значит, что TriggerRemoveActions не работает.
Так конечно функция не работает, ведь она закоментированна.
Немного не тот скрин, но DestroyTrigger удаляет Conditions, но не Actions, ибо вызываются TriggerClearConditions и TriggerClearActions, но ради правильности добавлю правильный скрин, а то да, путаница.
Вообще рекомендую каждый пункт разбить на подстатьи, так будет намного проще исправлять их.
Есть такое, но мне этот txt2 уничтожает глаза и так, я привык к старому доброму BB-code. :(
Ruti Ragnason:
Ну, люди всё ещё думают, что граф движок как-то связан с синхом и прочим, хотя на деле игре дико до шляпы, прорисовалось ли что-то или нет. Фактически моя ВФЕ тому прямое доказательство, я могу рисовать локально фреймы, модели и т.д. и всё нормально. По желанию можно как в RenderEdge вообще отключить те или иные прорисовки и опять же не будет никакого эффекта.
Shortened the name print of heroes down to normal Name (instead of name + proper name), this should help with non-English maps that have long hero names along with long spell/item names.
Removed PLAYER_NEUTRAL_PASSIVE from allowed players for Ally Skill View drawing, as technically it's not an ally.
Note: in case a lot of people will want it to be returned, I will return it, however it felt as too much of a cheat to be honest.
Fixed fatal error with 1.27.1 (1.27b) when Movie/Cinematic finished/was skipped.
*NEW FEATURE* Unlock Frame Buffer in Display settings, this is Direct-X only and will free up reserved memory and slightly boost FPS.
Note: this will have greater effect if New/Legacy status modes are enabled, as they remove the FPS limit.
Refresh Rate setting in Display will now also affect Cinematic Refresh Rate.
Версия 1.27b
При запуске игры через WFE 3.0.1.6, после просмотра либо скипа (клавишой Esc) синематика, у меня игра вылетает (закрывается полностью). Что в RoC, что в TFT. По последующему входу в игру, просмотр синематика оказывается "незасчитанным", т.е. если начать кампанию "Исход орды" (пролог за орков) или "Ужас из глубин" (TFT, за ночных эльфов), то снова сперва запускается именно синематик, как если бы он был непросмотренным.
При запуске игры безо всякого WFE, после просмотра / скипа синематика – всё норм как и задумано. В т.ч. можно запускать игру опять через WFE, и начинать проходить "Исход орды" и "Ужас из глубин", поскольку синематики будут просмотренными.
В моём случае в качестве Game Path (Путь Игры) нужно указывать "war3.exe". Но так запускается лишь TFT. А чтобы запустить RoC, нужно Game Path менять на "Warcraft III.exe". Правильно ли я понимаю?
Как же не во время ответ, я уже папку Movies удалил, поищу опять. 1.27а и выше патчи очень кривые, тесты я все делаю на 1.26а и таких приколов не наблюдалось. Для запуска RoC нужно запускать именно Warcraft III.exe либо в параметрах запуска war3.exe указывать (я не помню точно какой текст), чтобы оно запустило RoC.
На 1.27b вылетает при запуске синематика и не важно пропустил или нет, возврат не срабатывает, то есть когда окно восстанавливается, оно просто отваливается. Немного попинаю, но скорее всего я забью на 1.27а+ болт, ибо эти мёртвые патчи уже и так кровь выпили. Поправка, косячит лишь 1.27b, в общем гляну. Вот и зачем они это вообще трогали, лишний блин геморрой.
Редактирование: Исправлено в 3.0.1.7, либо сегодня, либо завтра релизну.
Fixed fatal error with cargo units when entering a unit with smaller cargo count, compared to the previous cargo carrier.
Fixed error that caused WFE to fully break after cinematic was played. In short, the screen would be drawn fully black, and no binds/functions of WFE would respond.
S1nTech спасибо за пояснение бага, всё исправлено, теперь не нужно ничего удалять/менять. :)
Глянул, оно не из-за Widescreen отваливается, после множества экспериментов, оказалось, что оно всю библиотеку будто "замораживает" и ломаются почти все функции. Потому, если хочется играть в кампании без геморроя, (можно не удалять папку Movies, а переназвать её допустим в MoviesIgnore), чтобы синематики не запускались.
JackFastGame, значит, с этим модом полноценно проходить компанию невозможно? Просто я набрёл на него, как на замену Widescreen Fix, но похоже, он с RenderEdge одинаково работают. Невозможность (по крайней мере, я не нашёл способа, может ужасно невнимателен) запустить ROC и воспроизвести синематики, следовательно, этот мод предназначен только для схваток против ботов/людей?
Что за странные проблемы, гляну позже, возможно пересчёт матрицы (что и делается для Widescreen) это ломает, такой уж извините пустяк, с которым за столько лет столкнулось 2 человека (один толком и не пояснил что там у него сломалось) и во второй вы, потому эта проблема и не была решена. Да и кто смотрит эти синематики в 2022 году то... >_>
Fixed UI Console Upper Left Menu Bar blocking upward camera movement via mouse.
Note: this was caused by the buttons having higher priority level than the bar itself, which I did to 100% nullify them being behind the bar itself, apparently it is not needed anymore.
Fixed Ally Skill View feature being ON by default, when no config was generated, now the default option is OFF as it was supposed to be.
Fixed Custom Bars Player Colour feature, now it reads ColourId from player correctly, instead of using PlayerId directly.
Added WFEGameColours.ini, this file allows you to change "default" player colours for the Custom Bars Player Colour feature.
Added Percentage option in Custom Health/Mana Text.
Fixed issue with Player Colours affecting Mechanical Critter in Custom Stat Bar, that was drawing owner's colour even for enemies, when it should use Neutral Passive colour instead.
Ну, десинх происходит, ибо вызываемый код не вызывается у других (так как кнопка не нажата), как именно делается обработка нажатий и есть ли общий триггер под это, как это делал допустим ENAlexey для RenderEdge? Если нет, то советую изучить: github.com/ENAleksey/RenderEdge/blob/master/RenderEdge/Source/Cu...
А точнее TriggerRegisterKeyEvent.
Благодарю за наводку с репозиторием. Имеете ввиду под общим триггером, нативный ли он? В целом, даже с идентичным кодом от render edge результат не меняется, если судить по логике, то код события должен выполнятся у всех, реагируя лишь на команды локального игрока и возвращая нужные данные именно ему (нажатия), в правильную сторону копаю?
Unryze, разве Алексей делал данное событие синхронным?
Ну, оно по-крайней мере построенно правильно, но вроде и оно не синхронное, просто гадать как реализовано у автора - тяжеловато.
Так ничего же не поменяется по сути, даже если взять то или иное исполнение, проблема ведь общая - нету синхронизации
Нажатая кнопка не синхронизируется сама по себе, представь ситуацию, вот ты нажал кнопку Q, это сработало у тебя локально, то бишь состояние кнопки на твоей клавиатуре изменилось. А вот другой игрок ничего не нажал, собственно тебе нужно как-то сообщить другим игрокам, что именно ты нажал кнопку Q - это и есть понятие синхронизации.
Можно конечно через геймкеш или синком на юнитах это делать, но простого решения пока что нет, я и Ev3nt работаем над полноценным новым патчем, куда мы планируем завести почти всё от рефа, включая синх кнопок и так далее, но пока что придётся шаманить. :(
Ну, десинх происходит, ибо вызываемый код не вызывается у других (так как кнопка не нажата), как именно делается обработка нажатий и есть ли общий триггер под это, как это делал допустим ENAlexey для RenderEdge? Если нет, то советую изучить: github.com/ENAleksey/RenderEdge/blob/master/RenderEdge/Source/Cu...
Again, I have no clue how you manage to do it, but I can't replicate it no matter the case, can't help you. Check with GetEffectX/Y if it even moved it at all.
function Init takes unit u returns nothing
set t = CreateTimer()
set e = AddSpecialEffect("Units\\Human\\Footman\\Footman.mdx",GetUnitX(u),GetUnitY(u))
call TimerStart(t,0.01,true,function MoveEffect)
function
function MoveEffect takes nothing returns nothing
call SetEffectPosition(e,GetUnitX(u),GetUnitY(u),150)
function
The effect will not be visible when it leaves the place where it was created
SetEffectPosition takes Z in consideration, and it is NOT autocorrecting via terrain Z, hence it's most likely under the ground:
So, for the future, first test things properly, before thinking it's a bug. :D
Use GetLocationZ to get proper Z and then add it to your needed Z, so it will be GetLocationZ( Location( GetUnitX(u), GetUnitY(u) ) ) ) + 150.
Also, it's very important to add "." to numbers of type real, so the game doesn't constantly use i2r opcode, as to not waste game's resources for no real need.
1.pPreselectUI = ReadRealMemory( pUnit + 0x50 ), pStatBar = ReadRealMemory( pPreselectUI + 0x0C ) is 0
2.SetEffectPosition() or SetEffectX(),SetEffectY() , Special effects will disappear after leaving the birth point,Maybe the model vision box hasn't been updated
If "Always show healthbars" is disabled and you don't have mouse over unit, correct, it doesn't exist. Meaning statbar needs to "exist" for the address to work.
Never had that issue, if you don't have vision over the area where effect is being move, you won't see it. Since by default effects do not have "ImageFogged" flag, if that flag exists, only then it will be drawn even while fogged.
Если сборка вар 3 не имеет фонта (который будет поддерживать русский язык), то будут либо кривые символы, либо вообще пустота. Скачать мою сборку можешь тут: disk.yandex.ru/d/HVmg4DlfFCv1cQ хотя даже в моей английской версии, проблемы с кириллицей нет, если даже после скачивания моих сборок будет тоже самое - сообщи.
Ограничения на кол-во аргументов нет, есть лишь ограничение строки в 1023 символа (это лимит того, что парсится).
Однако, ни при каком условии такое большое кол-во аргументов не может иметь смысла (по крайней мере в Вар 3, да и как сказали выше, лучше тогда записывать в хештаблицу).
Ответ выше был дан, разница будет в наносекундах, ты её не почувствуешь, но она конечно же есть. Любое дополнительное действие = больше времени на обработку. Даже длина названия функций и переменных влияет на скорость обработки.
» WarCraft 3 / MemoryHackAPI
Note: this is fixed due to the usage of SetSmartPositionEx, so don't touch it, even though it will "hinder" the performance slightly.
Ред. Unryze
» WarCraft 3 / Jass MythBusters
» WarCraft 3 / WFE - Warcraft Feature Extender
Github: github.com/UnryzeC/WFE-Release/releases
» WarCraft 3 / Jass MythBusters
» WarCraft 3 / Jass MythBusters
Ну, люди всё ещё думают, что граф движок как-то связан с синхом и прочим, хотя на деле игре дико до шляпы, прорисовалось ли что-то или нет. Фактически моя ВФЕ тому прямое доказательство, я могу рисовать локально фреймы, модели и т.д. и всё нормально. По желанию можно как в RenderEdge вообще отключить те или иные прорисовки и опять же не будет никакого эффекта.
Ред. Unryze
» WarCraft 3 / Jass MythBusters
Ред. Unryze
» WarCraft 3 / WFE - Warcraft Feature Extender
Github: github.com/UnryzeC/WFE-Release/releases
Note: in case a lot of people will want it to be returned, I will return it, however it felt as too much of a cheat to be honest.
Note: this will have greater effect if New/Legacy status modes are enabled, as they remove the FPS limit.
Ред. Unryze
» WarCraft 3 / WFE - Warcraft Feature Extender
» WarCraft 3 / WFE - Warcraft Feature Extender
Ред. Unryze
» WarCraft 3 / WFE - Warcraft Feature Extender
» WarCraft 3 / WFE - Warcraft Feature Extender
» WarCraft 3 / WFE - Warcraft Feature Extender
» WarCraft 3 / WFE - Warcraft Feature Extender
Github: github.com/UnryzeC/WFE-Release/releases
Note: this was caused by the buttons having higher priority level than the bar itself, which I did to 100% nullify them being behind the bar itself, apparently it is not needed anymore.
» WarCraft 3 / MemoryHackAPI
» WarCraft 3 / MemoryHackAPI
Ред. Unryze
» WarCraft 3 / MemoryHackAPI
» WarCraft 3 / Вызов функции в jass из Dll = десинхронизация
» WarCraft 3 / Вызов функции в jass из Dll = десинхронизация
Ред. Unryze
» WarCraft 3 / Вызов функции в jass из Dll = десинхронизация
Ред. Unryze
» WarCraft 3 / MemoryHackAPI
Ред. Unryze
» WarCraft 3 / MemoryHackAPI
Ред. Unryze
» WarCraft 3 / MemoryHackAPI
» WarCraft 3 / MemoryHackAPI
» WarCraft 3 / Проблема с кодировкой (?) при наборе текста в чате
» WarCraft 3 / Много параметров в функции или часть параметров глобалками?