20

» Unryze Jass API / UjAPI

А как луы всякие прикручивали к 1.26, вызовом этой функции из lualib?
Это вообще не связано с луа... я понимаю к чему ты ведёшь, но ты очень поверхностно судишь о реверс-инженерии, я бы даже сказал через-чур.
20

» Unryze Jass API / UjAPI

Ну, порядочные либы предоставляют возможность указать свои аллокаторы)
Ну, вот тебе один из примеров:
Удачи (тм)?
Загруженные файлы
20

» Unryze Jass API / UjAPI

это "маленькое" изменение потребовало более 1000 строк кода, что же я делаю со своей жизнью...
А как же protobuf или другие решения, в которых декларативно описываем форматы файлов и потом удобно достаем все что хотим?
Да... и мы удобно игнорируем методы выделения памяти, расширения памяти в том виде, который нужен игре, а так же оффсеты и т.д. и т.п. Это во всяких вебах +- всё открыто, а тут... ну ты понял.
20

» WarCraft 3 / Своя нативка на С++

Unryze, а если я память не освобожу в функции, то это будет утечка при __cdecl, когда я выйду из варкрафта?
Утечка памяти высвобождается при уничтожении процесса, ибо вся занятая ею память освобождается системой. (По крайней мере так утверждает Microsoft), ибо как ни как эти утечки stack/heap - часть программы, а у неё выделена память от 0x0 до 2GB (при патчере 4GB) памяти. Я не особо практиковал утечки памяти, потому не могу прямо утверждать, что всё так просто или нет, но думаю Microsoft как-то да и контролируют приложения. :D
20

» WarCraft 3 / Своя нативка на С++

Использование неправильной конвенции вызова приведет к повреждению памяти стэка.
Хранящиеся в нём локальные переменные и адреса возврата могут быть перезаписаны случайными значениями, что приведет к непредсказуемым последствиям.
Хотя, стоит отметить, что виртуальная машина JASS'а (по крайней мере на 1.26а версии) способна правильно вызывать нативки использующие как cdecl так и stdcall, что используется мемхаком.
Но, если такую неправильную нативку вызовет кто другой, то весьма вероятны баги и краши.
JassVM пушит на стэк через alloca и вызывает через cdecl, не знаю откуда ты взял stdcall там. Но опять же, не суть. А Мемхак использует std_call для вызова Storm функций, но опять же, эти нюансы на деле важны лишь паре землекопов, ибо большинство эти нюансы не знает и даже не пытается в них лезть (и слава богу).
20

» WarCraft 3 / Своя нативка на С++

Да ты прав GetJassNative, используют соглашение cdecl. Но RegisterJassNative я использую c stdcall.
Ну, и толку от этого почти никакого. stdcall используется для импортируемых/экспортируемых функций, как на том же примере Storm.dll, а сама игра использует cdecl/thiscall/fastcall, говоря короче, твой выбор != то как должно быть или же правильно. Вызовы stdcall можно вызывать и через __cdecl, только это чревато прикольными такими утечками хипа, а порой даже и стека, так что ну такое себе.
Загруженные файлы
20

» Unryze Jass API / UjAPI - Что нового?

Вышла новая версия! Прокрутить к ресурсу

v1.0.26.97

  1. Новые Типы:
    type mappedfield extends handle
    type mappedtype extends handle
    type attachmenttype extends mappedtype
    type bonetype extends attachmenttype
    type cursoranimtype extends mappedtype
  2. Новые Конверторы:
    constant native ConvertMappedField takes integer i returns mappedfield
    constant native ConvertAttachmentType takes integer i returns attachmenttype
    constant native ConvertBoneType takes integer i returns bonetype
    constant native ConvertCursorAnimType takes integer i returns cursoranimtype
  3. Новые Константы:
    constant mappedfield MAPPED_FIELD_ATTACHMENT = ConvertMappedField(0)
    constant mappedfield MAPPED_FIELD_BONE = ConvertMappedField(1)
    constant mappedfield MAPPED_FIELD_ANIMATION = ConvertMappedField(2)
    constant mappedfield MAPPED_FIELD_SUB_ANIMATION = ConvertMappedField(3)
    constant mappedfield MAPPED_CURSOR_SUB_ANIMATION = ConvertMappedField(4)

    constant attachmenttype ATTACHMENT_TYPE_CHEST = ConvertAttachmentType('ches')
    constant attachmenttype ATTACHMENT_TYPE_FEET = ConvertAttachmentType('feet')
    constant attachmenttype ATTACHMENT_TYPE_FOOT = ConvertAttachmentType('foot')
    constant attachmenttype ATTACHMENT_TYPE_HAND = ConvertAttachmentType('hand')
    constant attachmenttype ATTACHMENT_TYPE_HEAD = ConvertAttachmentType('head')
    constant attachmenttype ATTACHMENT_TYPE_ORIGIN = ConvertAttachmentType('orig')
    constant attachmenttype ATTACHMENT_TYPE_OVERHEAD = ConvertAttachmentType('over')
    constant attachmenttype ATTACHMENT_TYPE_SPRITE = ConvertAttachmentType('spri')
    constant attachmenttype ATTACHMENT_TYPE_WEAPON = ConvertAttachmentType('weap')
    constant attachmenttype ATTACHMENT_TYPE_ALTERNATE = ConvertAttachmentType('alte')
    constant attachmenttype ATTACHMENT_TYPE_LEFT = ConvertAttachmentType('left')
    constant attachmenttype ATTACHMENT_TYPE_RIGHT = ConvertAttachmentType('righ')
    constant attachmenttype ATTACHMENT_TYPE_MOUNT = ConvertAttachmentType('moun')
    constant attachmenttype ATTACHMENT_TYPE_REAR = ConvertAttachmentType('rear')
    constant attachmenttype ATTACHMENT_TYPE_SMART = ConvertAttachmentType('smar')
    constant attachmenttype ATTACHMENT_TYPE_FIRST = ConvertAttachmentType('firs')
    constant attachmenttype ATTACHMENT_TYPE_SECOND = ConvertAttachmentType('seco')
    constant attachmenttype ATTACHMENT_TYPE_THIRD = ConvertAttachmentType('thir')
    constant attachmenttype ATTACHMENT_TYPE_FOURTH = ConvertAttachmentType('four')
    constant attachmenttype ATTACHMENT_TYPE_FIFTH = ConvertAttachmentType('fift')
    constant attachmenttype ATTACHMENT_TYPE_SIXTH = ConvertAttachmentType('sixt')
    constant attachmenttype ATTACHMENT_TYPE_SMALL = ConvertAttachmentType('smal')
    constant attachmenttype ATTACHMENT_TYPE_MEDIUM = ConvertAttachmentType('medi')
    constant attachmenttype ATTACHMENT_TYPE_LARGE = ConvertAttachmentType('larg')
    constant attachmenttype ATTACHMENT_TYPE_GOLD = ConvertAttachmentType('gold')
    constant attachmenttype ATTACHMENT_TYPE_RALLYPOINT = ConvertAttachmentType('rall')
    constant attachmenttype ATTACHMENT_TYPE_EAT_TREE = ConvertAttachmentType('eatt')

    constant bonetype BONE_TYPE_CHEST = ConvertBoneType('ches')
    constant bonetype BONE_TYPE_FOOT = ConvertBoneType('foot')
    constant bonetype BONE_TYPE_HAND = ConvertBoneType('hand')
    constant bonetype BONE_TYPE_HEAD = ConvertBoneType('head')
    constant bonetype BONE_TYPE_TURRET = ConvertBoneType('turr')
    constant bonetype BONE_TYPE_ALTERNATE = ConvertBoneType('alte')
    constant bonetype BONE_TYPE_LEFT = ConvertBoneType('left')
    constant bonetype BONE_TYPE_RIGHT = ConvertBoneType('righ')
    constant bonetype BONE_TYPE_MOUNT = ConvertBoneType('moun')
    constant bonetype BONE_TYPE_SMART = ConvertBoneType('smar')

    constant cursoranimtype CURSORANIM_TYPE_NORMAL = ConvertCursorAnimType(0)
    constant cursoranimtype CURSORANIM_TYPE_SELECT = ConvertCursorAnimType(1)
    constant cursoranimtype CURSORANIM_TYPE_TARGET = ConvertCursorAnimType(2)
    constant cursoranimtype CURSORANIM_TYPE_TARGET_SELECT = ConvertCursorAnimType(3)
    constant cursoranimtype CURSORANIM_TYPE_INVALID_TARGET = ConvertCursorAnimType(4)
    constant cursoranimtype CURSORANIM_TYPE_HOLD_ITEM = ConvertCursorAnimType(5)
    constant cursoranimtype CURSORANIM_TYPE_SCROLL = ConvertCursorAnimType(6)
    constant cursoranimtype CURSORANIM_TYPE_LEFT = ConvertCursorAnimType(7)
    constant cursoranimtype CURSORANIM_TYPE_RIGHT = ConvertCursorAnimType(8)
    constant cursoranimtype CURSORANIM_TYPE_UP = ConvertCursorAnimType(9)
    constant cursoranimtype CURSORANIM_TYPE_DOWN = ConvertCursorAnimType(10)
  1. Удалённые Нативные Функции:
    native GetAnimationName takes animtype whichAnim returns string
  2. Новые Нативные Функции:
    native GetMiscDataString takes string sectionName, string optionName, integer index returns string
    native SetMiscDataString takes string sectionName, string optionName, integer index, string value returns nothing

    native GetSkinDataString takes string raceName, string sectionName, string optionName, integer index returns string raceName can be null
    native SetSkinDataString takes string raceName, string sectionName, string optionName, integer index, string value returns nothing raceName can be null

    native GetFDFDataString takes string sectionName, string optionName returns string
    native SetFDFDataString takes string sectionName, string optionName, string value returns nothing

    native GetMappedTypeName takes mappedfield whichField, mappedtype whichMapType returns string

    native TriggerCountEvents takes trigger whichTrigger returns integer
    native TriggerCountConditions takes trigger whichTrigger returns integer
    native TriggerCountActions takes trigger whichTrigger returns integer
    native TriggerRemoveEvent takes trigger whichTrigger, event whichEvent returns nothing
    native TriggerRemoveEventId takes trigger whichTrigger, eventid whichEventId, boolean removeAllOccurences returns nothing
    native TriggerClearEvents takes trigger whichTrigger returns nothing
    native TriggerClear takes trigger whichTrigger returns nothing

    native GetSpecialEffectCurrentAnimationName takes effect whichEffect returns string
    native GetTrackableCurrentAnimationName takes trackable whichTrackable returns string
    native GetWidgetCurrentAnimationName takes widget whichWidget returns string
    native GetDestructableCurrentAnimationName takes destructable whichDestructable returns string
    native GetItemCurrentAnimationName takes item whichItem returns string
    native GetUnitCurrentAnimationName takes unit whichUnit returns string
    native GetProjectileCurrentAnimationName takes projectile whichProjectile returns string
    native GetFrameSpriteCurrentAnimationName takes framehandle whichFrame returns string

    native CreateSimpleGlueFrame takes framehandle whichSimpleParent, framehandle whichSpriteFrame returns framehandle
    native SetFrameName takes framehandle whichFrame, string contextName returns nothing
    native GetFrameContext takes framehandle whichFrame returns integer
    native SetFrameContext takes framehandle whichFrame, integer createContext returns nothing
    native SetFrameContextName takes framehandle whichFrame, string contextName, integer createContext returns nothing
  3. Исправлен неправильный typeId поля ABILITY_IF_BUTTON_HOTKEY_RESEARCH's с aukh на arhk.
  4. Переименовано поле ABILITY_ILF_RESTORED_MANA__1_FOR_CURRENT в ABILITY_ILF_RESTORED_MANA_1_FOR_CURRENT.
  5. textfilehandle тип более не использует реальный менеджмент хендлов, теперь оно использует мнимые хендлы, как fogstate, то бишь теперь оно может быть использовано в локальном блоке.
  6. Добавлен новый экспериментальный парсер w3i, который умеет читать Reforged карты и отображать данные Сил/Игроков (слотов) и информацию карты. А также дать её запускать.
    Пометка: карты написанные на "чистом" луа всё ещё не будут работать, пока Ev3nt не исправит его war3_lua.dll.
    Пометка 2: это "маленькое" изменение потребовало более 1000 строк кода, что же я делаю со своей жизнью...
  7. Технически исправлена неправильная информация в структуре связанной с MemoryAllocation, которая относился к Jass стэку и так далее.
    Пометка: хотя ранее не было ошибок/проблем связанных с этой структурой, это было либо в виду везения, либо в виду малой популярности.
  8. Исправлены все функции связанные с SetAnimationOffsetPercent.
  9. Исправлена критическая ошибка от GetFrameName.
  10. Исправлена GetFrameName, которая ранее работала только со фреймами типа CFrame и его дочерними типами.
  11. Исправлена критическая ошибка, когда GetHandleId применялся на "слишком большие" значения.
  12. ClickFrameEx теперь использует mousebuttontype заместо булевого флага.
  13. Исправлено перекрытие стандартных действий фреймов Предметов/Заклинаний, после регистрации события FRAMEEVENT_MOUSE_DOWN.
  14. Исправлена критическая ошибка от GetFrameParent.
20

» Unryze Jass API / UjAPI

Вышла новая версия! Прокрутить к ресурсу

v1.0.26.97

  1. Новые Типы:
    type mappedfield extends handle
    type mappedtype extends handle
    type attachmenttype extends mappedtype
    type bonetype extends attachmenttype
    type cursoranimtype extends mappedtype
  2. Новые Конверторы:
    constant native ConvertMappedField takes integer i returns mappedfield
    constant native ConvertAttachmentType takes integer i returns attachmenttype
    constant native ConvertBoneType takes integer i returns bonetype
    constant native ConvertCursorAnimType takes integer i returns cursoranimtype
  3. Новые Константы:
    constant mappedfield MAPPED_FIELD_ATTACHMENT = ConvertMappedField(0)
    constant mappedfield MAPPED_FIELD_BONE = ConvertMappedField(1)
    constant mappedfield MAPPED_FIELD_ANIMATION = ConvertMappedField(2)
    constant mappedfield MAPPED_FIELD_SUB_ANIMATION = ConvertMappedField(3)
    constant mappedfield MAPPED_CURSOR_SUB_ANIMATION = ConvertMappedField(4)

    constant attachmenttype ATTACHMENT_TYPE_CHEST = ConvertAttachmentType('ches')
    constant attachmenttype ATTACHMENT_TYPE_FEET = ConvertAttachmentType('feet')
    constant attachmenttype ATTACHMENT_TYPE_FOOT = ConvertAttachmentType('foot')
    constant attachmenttype ATTACHMENT_TYPE_HAND = ConvertAttachmentType('hand')
    constant attachmenttype ATTACHMENT_TYPE_HEAD = ConvertAttachmentType('head')
    constant attachmenttype ATTACHMENT_TYPE_ORIGIN = ConvertAttachmentType('orig')
    constant attachmenttype ATTACHMENT_TYPE_OVERHEAD = ConvertAttachmentType('over')
    constant attachmenttype ATTACHMENT_TYPE_SPRITE = ConvertAttachmentType('spri')
    constant attachmenttype ATTACHMENT_TYPE_WEAPON = ConvertAttachmentType('weap')
    constant attachmenttype ATTACHMENT_TYPE_ALTERNATE = ConvertAttachmentType('alte')
    constant attachmenttype ATTACHMENT_TYPE_LEFT = ConvertAttachmentType('left')
    constant attachmenttype ATTACHMENT_TYPE_RIGHT = ConvertAttachmentType('righ')
    constant attachmenttype ATTACHMENT_TYPE_MOUNT = ConvertAttachmentType('moun')
    constant attachmenttype ATTACHMENT_TYPE_REAR = ConvertAttachmentType('rear')
    constant attachmenttype ATTACHMENT_TYPE_SMART = ConvertAttachmentType('smar')
    constant attachmenttype ATTACHMENT_TYPE_FIRST = ConvertAttachmentType('firs')
    constant attachmenttype ATTACHMENT_TYPE_SECOND = ConvertAttachmentType('seco')
    constant attachmenttype ATTACHMENT_TYPE_THIRD = ConvertAttachmentType('thir')
    constant attachmenttype ATTACHMENT_TYPE_FOURTH = ConvertAttachmentType('four')
    constant attachmenttype ATTACHMENT_TYPE_FIFTH = ConvertAttachmentType('fift')
    constant attachmenttype ATTACHMENT_TYPE_SIXTH = ConvertAttachmentType('sixt')
    constant attachmenttype ATTACHMENT_TYPE_SMALL = ConvertAttachmentType('smal')
    constant attachmenttype ATTACHMENT_TYPE_MEDIUM = ConvertAttachmentType('medi')
    constant attachmenttype ATTACHMENT_TYPE_LARGE = ConvertAttachmentType('larg')
    constant attachmenttype ATTACHMENT_TYPE_GOLD = ConvertAttachmentType('gold')
    constant attachmenttype ATTACHMENT_TYPE_RALLYPOINT = ConvertAttachmentType('rall')
    constant attachmenttype ATTACHMENT_TYPE_EAT_TREE = ConvertAttachmentType('eatt')

    constant bonetype BONE_TYPE_CHEST = ConvertBoneType('ches')
    constant bonetype BONE_TYPE_FOOT = ConvertBoneType('foot')
    constant bonetype BONE_TYPE_HAND = ConvertBoneType('hand')
    constant bonetype BONE_TYPE_HEAD = ConvertBoneType('head')
    constant bonetype BONE_TYPE_TURRET = ConvertBoneType('turr')
    constant bonetype BONE_TYPE_ALTERNATE = ConvertBoneType('alte')
    constant bonetype BONE_TYPE_LEFT = ConvertBoneType('left')
    constant bonetype BONE_TYPE_RIGHT = ConvertBoneType('righ')
    constant bonetype BONE_TYPE_MOUNT = ConvertBoneType('moun')
    constant bonetype BONE_TYPE_SMART = ConvertBoneType('smar')

    constant cursoranimtype CURSORANIM_TYPE_NORMAL = ConvertCursorAnimType(0)
    constant cursoranimtype CURSORANIM_TYPE_SELECT = ConvertCursorAnimType(1)
    constant cursoranimtype CURSORANIM_TYPE_TARGET = ConvertCursorAnimType(2)
    constant cursoranimtype CURSORANIM_TYPE_TARGET_SELECT = ConvertCursorAnimType(3)
    constant cursoranimtype CURSORANIM_TYPE_INVALID_TARGET = ConvertCursorAnimType(4)
    constant cursoranimtype CURSORANIM_TYPE_HOLD_ITEM = ConvertCursorAnimType(5)
    constant cursoranimtype CURSORANIM_TYPE_SCROLL = ConvertCursorAnimType(6)
    constant cursoranimtype CURSORANIM_TYPE_LEFT = ConvertCursorAnimType(7)
    constant cursoranimtype CURSORANIM_TYPE_RIGHT = ConvertCursorAnimType(8)
    constant cursoranimtype CURSORANIM_TYPE_UP = ConvertCursorAnimType(9)
    constant cursoranimtype CURSORANIM_TYPE_DOWN = ConvertCursorAnimType(10)
  1. Удалённые Нативные Функции:
    native GetAnimationName takes animtype whichAnim returns string
  2. Новые Нативные Функции:
    native GetMiscDataString takes string sectionName, string optionName, integer index returns string
    native SetMiscDataString takes string sectionName, string optionName, integer index, string value returns nothing

    native GetSkinDataString takes string raceName, string sectionName, string optionName, integer index returns string raceName can be null
    native SetSkinDataString takes string raceName, string sectionName, string optionName, integer index, string value returns nothing raceName can be null

    native GetFDFDataString takes string sectionName, string optionName returns string
    native SetFDFDataString takes string sectionName, string optionName, string value returns nothing

    native GetMappedTypeName takes mappedfield whichField, mappedtype whichMapType returns string

    native TriggerCountEvents takes trigger whichTrigger returns integer
    native TriggerCountConditions takes trigger whichTrigger returns integer
    native TriggerCountActions takes trigger whichTrigger returns integer
    native TriggerRemoveEvent takes trigger whichTrigger, event whichEvent returns nothing
    native TriggerRemoveEventId takes trigger whichTrigger, eventid whichEventId, boolean removeAllOccurences returns nothing
    native TriggerClearEvents takes trigger whichTrigger returns nothing
    native TriggerClear takes trigger whichTrigger returns nothing

    native GetSpecialEffectCurrentAnimationName takes effect whichEffect returns string
    native GetTrackableCurrentAnimationName takes trackable whichTrackable returns string
    native GetWidgetCurrentAnimationName takes widget whichWidget returns string
    native GetDestructableCurrentAnimationName takes destructable whichDestructable returns string
    native GetItemCurrentAnimationName takes item whichItem returns string
    native GetUnitCurrentAnimationName takes unit whichUnit returns string
    native GetProjectileCurrentAnimationName takes projectile whichProjectile returns string
    native GetFrameSpriteCurrentAnimationName takes framehandle whichFrame returns string

    native CreateSimpleGlueFrame takes framehandle whichSimpleParent, framehandle whichSpriteFrame returns framehandle
    native SetFrameName takes framehandle whichFrame, string contextName returns nothing
    native GetFrameContext takes framehandle whichFrame returns integer
    native SetFrameContext takes framehandle whichFrame, integer createContext returns nothing
    native SetFrameContextName takes framehandle whichFrame, string contextName, integer createContext returns nothing
  3. Исправлен неправильный typeId поля ABILITY_IF_BUTTON_HOTKEY_RESEARCH's с aukh на arhk.
  4. Переименовано поле ABILITY_ILF_RESTORED_MANA__1_FOR_CURRENT в ABILITY_ILF_RESTORED_MANA_1_FOR_CURRENT.
  5. textfilehandle тип более не использует реальный менеджмент хендлов, теперь оно использует мнимые хендлы, как fogstate, то бишь теперь оно может быть использовано в локальном блоке.
  6. Добавлен новый экспериментальный парсер w3i, который умеет читать Reforged карты и отображать данные Сил/Игроков (слотов) и информацию карты. А также дать её запускать.
    Пометка: карты написанные на "чистом" луа всё ещё не будут работать, пока Ev3nt не исправит его war3_lua.dll.
    Пометка 2: это "маленькое" изменение потребовало более 1000 строк кода, что же я делаю со своей жизнью...
  7. Технически исправлена неправильная информация в структуре связанной с MemoryAllocation, которая относился к Jass стэку и так далее.
    Пометка: хотя ранее не было ошибок/проблем связанных с этой структурой, это было либо в виду везения, либо в виду малой популярности.
  8. Исправлены все функции связанные с SetAnimationOffsetPercent.
  9. Исправлена критическая ошибка от GetFrameName.
  10. Исправлена GetFrameName, которая ранее работала только со фреймами типа CFrame и его дочерними типами.
  11. Исправлена критическая ошибка, когда GetHandleId применялся на "слишком большие" значения.
  12. ClickFrameEx теперь использует mousebuttontype заместо булевого флага.
  13. Исправлено перекрытие стандартных действий фреймов Предметов/Заклинаний, после регистрации события FRAMEEVENT_MOUSE_DOWN.
  14. Исправлена критическая ошибка от GetFrameParent.
20

» WarCraft 3 / WFE - Warcraft Feature Extender

Не хватает функции оставить градиент в полосках здоровья с кастомными полосками. Или хотя бы когда ставишь кастомные в тебя полоска из зеленого переходила в красных когда мало хп
Если оно очень надо, то за донат я готов эту фичу сделать в будущей версии. Ибо нишевые функции добавлять особо нет желания, а эта штука далеко не из простых, ввиду того, что нужно каждое состояние бара отслеживать.
20

» WarCraft 3 / FPS Unlocker

А в UjAPI он уже встроен или нет? Или этот идёт как отдельная утилита?
Отдельная утилита, большинство модификаций, которые не связаны с модемейкингом - это часть вфе и это всегда будет так. Скоро-скоро будет новый лаунчер, где это всё будет удобнее и через вкладки, но в любом случае, если я начну вшивать фишки ВФЕ в ужапи, то будет фьюжен-конфьюжен.
20

» WarCraft 3 / FPS Unlocker

Ну и?
То, что у тебя или у кого-то ещё монитор-картошка - ничего не значит. :D
Загруженные файлы
20

» WarCraft 3 / FPS Unlocker

Это сглаживает в целом изображение в виду герцовки
То есть, эта штука нужна тем, у кого герцовка монитора выше 60? Интересно, а бывают 4:3 мониторы с такой герцовкой? Ибо я не представляю зачем это "истинным варкрафтерам" 😅
А как относятся мониторы к снятию лимита? Большинство играет на 16:9 или же 21:9, и им как раз выше фпс полезен. Я просто не понимаю, чему ты удивляешься или что тебе непонятно.
Да и всяко лучше иметь "лишние фреймы", чем сидеть на 64 и банально страдать от дёрганий кадров.
20

» WarCraft 3 / FPS Unlocker

Значит ли это что варкрафт станет меньше лагать?
Это снимает ограничитель, буквально тоже самое, что и было сделано в рефе. Это сглаживает в целом изображение в виду герцовки.
Slonick:
Есть ли тут какие-то подводные камни?
Например может ли какое-то действие сработать иначе из-за более высокого фпс? (Пример - одной из игр серии РЕ разных фрейм рейт давал разный урон с ножа).
Могут ли тут ивенты с низким интервалом поплыть?
Что по совместимости? Есть ли шансы хоть на какую-то не совместимость с "дефолтом"?
Снятие лимита ФПС в Вар 3 никак не влияет на действия/триггеры и т.д. Ибо логика игры основана на локстепе, а не на герцовке.
20

» WarCraft 3 / FPS Unlocker

Механизмы снятия лимитов такие же, как в WFE?
Да, просто вынесен в упрощённый модуль.
20

» WarCraft 3 / FPS Unlocker

  • почему бы не добавить команду для выбора количества фпс - например максимум 100 или 200
Потому что это далеко не просто и даже во ВФЕ прямого числа нет.
  • почему бы не добавить рядом ini файл в котором можно автоматом задавать макс фпс при запуске варика без доп команд внутриигровых
т.е. возможность не только снять ограничение, но и явно задать вручную макс фпс
Лишние телодвижения, на то это и модуль, чтобы был простым.
интересует вопрос - на сколько макс фпс грузят видеокарту / проц / память ? (условно 400 против 64)
На каждом железе по-разному, никто не мешает взять и проверить. У меня лично не дикая разница, но у кого-то на картошке явно будут проблемы.
проц и видюха используются на максимум 95% или условно от них требуется примерно столько же производительности?
или это почти полностью зависит от самой карты?
Всё зависит от количества объектов, которые игра должна прорисовать. То бишь качество * количество.
20

» Unryze Jass API / UjAPI - Что нового?

Вышла новая версия! Прокрутить к ресурсу

v1.0.25.94

  1. Новые Нативные Функции:
    native ConsolePause takes string s returns nothing
    native GetTickCount takes nothing returns integer
    native GetSpecialEffectCurrentAnimationId takes effect whichEffect returns integer
    native GetTrackableCurrentAnimationId takes trackable whichTrackable returns integer
    native GetWidgetCurrentAnimationId takes widget whichWidget returns integer
    native GetDestructableCurrentAnimationId takes destructable whichDestructable returns integer
    native GetItemCurrentAnimationId takes item whichItem returns integer
    native GetUnitCurrentAnimationId takes unit whichUnit returns integer
    native GetProjectileCurrentAnimationId takes projectile whichProjectile returns integer
    native GetFrameSpriteCurrentAnimationId takes framehandle whichFrame returns integer
    native GetFrameColourEx takes framehandle whichFrame, integer textureId returns integer
    native SetFrameColourEx takes framehandle whichFrame, integer textureId, integer colour returns nothing
    native GetFrameColour takes framehandle whichFrame returns integer
    native SetFrameColour takes framehandle whichFrame, integer colour returns nothing
    native GetFrameAlphaEx takes framehandle whichFrame, integer textureId returns integer
    native SetFrameAlphaEx takes framehandle whichFrame, integer textureId, integer alpha returns nothing
  2. Исправлена ошибка при которой HideOriginFrames также скрывала и фреймы предметов, чего быть не должно.
  3. Исправлена неправильно работающая IsFrameVisible с CSimpleRegions/CSimpleFrames и с их дочерними фреймами.
20

» Unryze Jass API / UjAPI

Вышла новая версия! Прокрутить к ресурсу

v1.0.25.94

  1. Новые Нативные Функции:
    native ConsolePause takes string s returns nothing
    native GetTickCount takes nothing returns integer
    native GetSpecialEffectCurrentAnimationId takes effect whichEffect returns integer
    native GetTrackableCurrentAnimationId takes trackable whichTrackable returns integer
    native GetWidgetCurrentAnimationId takes widget whichWidget returns integer
    native GetDestructableCurrentAnimationId takes destructable whichDestructable returns integer
    native GetItemCurrentAnimationId takes item whichItem returns integer
    native GetUnitCurrentAnimationId takes unit whichUnit returns integer
    native GetProjectileCurrentAnimationId takes projectile whichProjectile returns integer
    native GetFrameSpriteCurrentAnimationId takes framehandle whichFrame returns integer
    native GetFrameColourEx takes framehandle whichFrame, integer textureId returns integer
    native SetFrameColourEx takes framehandle whichFrame, integer textureId, integer colour returns nothing
    native GetFrameColour takes framehandle whichFrame returns integer
    native SetFrameColour takes framehandle whichFrame, integer colour returns nothing
    native GetFrameAlphaEx takes framehandle whichFrame, integer textureId returns integer
    native SetFrameAlphaEx takes framehandle whichFrame, integer textureId, integer alpha returns nothing
  2. Исправлена ошибка при которой HideOriginFrames также скрывала и фреймы предметов, чего быть не должно.
  3. Исправлена неправильно работающая IsFrameVisible с CSimpleRegions/CSimpleFrames и с их дочерними фреймами.
20

» Unryze Jass API / Unryze Jass API

А как потом играть в мультиплеере в карты, созданные при помощи этого? Или это только для одиночных карт?
Разницы никакой, просто все пользователи должны запустить игру через UjAPI и всё и точно так же смогут играть по сети. Так и играют те же вьетнамцы. На ирине скоро будет обновление, где UjAPI будет интегрировано и всё.
20

» Unryze Jass API / UjAPI - Система Выбора Героев

А можно такое для Рефоржета?
Не интересуюсь рефоржедом. Да и на чистых симплфреймах там далеко не уедешь, а так - реализуемо. Использовать CBackdropFrame и эмулировать как кнопку и т.д. У меня есть планы на ещё пару примеров, но на деле данный пример показывает больше логику, а подстроиться под неё можно и другими фреймами.
20

» WarCraft 3 / Jass MythBusters

> Как вы видите, хендлов всё так же 10000, а это значит, что TriggerRemoveActions не работает. Но почему же? - спросите вы, чтобы ответить на этот вопрос нужно для начала посмотреть на TriggerRemoveConditions, почему же он работает?
Вот тут надо Remove на Clear заменить
Исправил, спасибо.
20

» WarCraft 3 / Jass MythBusters

PT153:
TriggerRemoveAction и TriggerRemoveCondition закомментированы, они не выполняются вообще. Весь смысл был показать, что они не делают ровно ничего для Actions.
А подпись скрина поправлю, забыл. Спасибо.
20

» Unryze Jass API / UjAPI

Вышла новая версия! Прокрутить к ресурсу

v1.0.24.92

  1. Новые Нативные Функции:
    native RemoveSound takes sound whichSound returns nothing
    native ReplaceSound takes sound whichSound, string fileName, boolean looping, boolean is3D, boolean stopwhenoutofrange, integer fadeInRate, integer fadeOutRate, string eaxSetting returns sound
    native ReplaceSoundWithLabel takes sound whichSound, string fileName, boolean looping, boolean is3D, boolean stopwhenoutofrange, integer fadeInRate, integer fadeOutRate, string SLKEntryName returns sound
    native ReplaceSoundFromLabel takes sound whichSound, string soundLabel, boolean looping, boolean is3D, boolean stopwhenoutofrange, integer fadeInRate, integer fadeOutRate returns sound
    native ReplaceMIDISound takes sound whichSound, string soundLabel, integer fadeInRate, integer fadeOutRate returns sound

    native TextFileExists takes string filePath returns boolean
  2. В очередной раз исправлена функция SetFrameTexture для CBackdropFrame.
  3. Исправлена критическая ошибка в GetStringField при использовании на пустое поле.
  4. TextFileErase переименовано в TextFileDelete.
  5. Исправлен не выполняющийся EVENT_WIDGET_DEATH.
  6. GetKillingUnit теперь работает с EVENT_WIDGET_DEATH.
  7. Исправлена критическая ошибка от HandleListEnumByTypeId.
  8. Исправлены частично-сломанные функции HandleListGetTYPEByIndex, теперь они работают как и должны.
    Пометка: HandleListGetHandleByIndex и HandleListGetAgentByIndex работали без каких-либо проблем.
  9. Исправлен Jass Logger Dev Mode не открывающий Дебаг Консоль.
20

» Unryze Jass API / UjAPI - Что нового?

Вышла новая версия! Прокрутить к ресурсу

v1.0.24.92

  1. Новые Нативные Функции:
    native RemoveSound takes sound whichSound returns nothing
    native ReplaceSound takes sound whichSound, string fileName, boolean looping, boolean is3D, boolean stopwhenoutofrange, integer fadeInRate, integer fadeOutRate, string eaxSetting returns sound
    native ReplaceSoundWithLabel takes sound whichSound, string fileName, boolean looping, boolean is3D, boolean stopwhenoutofrange, integer fadeInRate, integer fadeOutRate, string SLKEntryName returns sound
    native ReplaceSoundFromLabel takes sound whichSound, string soundLabel, boolean looping, boolean is3D, boolean stopwhenoutofrange, integer fadeInRate, integer fadeOutRate returns sound
    native ReplaceMIDISound takes sound whichSound, string soundLabel, integer fadeInRate, integer fadeOutRate returns sound

    native TextFileExists takes string filePath returns boolean
  2. В очередной раз исправлена функция SetFrameTexture для CBackdropFrame.
  3. Исправлена критическая ошибка в GetStringField при использовании на пустое поле.
  4. TextFileErase переименовано в TextFileDelete.
  5. Исправлен не выполняющийся EVENT_WIDGET_DEATH.
  6. GetKillingUnit теперь работает с EVENT_WIDGET_DEATH.
  7. Исправлена критическая ошибка от HandleListEnumByTypeId.
  8. Исправлены частично-сломанные функции HandleListGetTYPEByIndex, теперь они работают как и должны.
    Пометка: HandleListGetHandleByIndex и HandleListGetAgentByIndex работали без каких-либо проблем.
  9. Исправлен Jass Logger Dev Mode не открывающий Дебаг Консоль.
20

» WarCraft 3 / Jass MythBusters

Последние новости!
Добавлено опровержение мифа, что KillSoundWhenDone очищает sound хендл/очищает утечку.
20

» WarCraft 3 / Летняя распродажа у Blizzard

подарки же запретили?
Мне подарили давно диабло 3, еще наверн тогда не ввезли санкции. Но и она вроде бесплатной стала
Диабло 3 не стала ещё бесплатной, и вряд ли станет.
Загруженные файлы