Nelloy #51 - 1 year ago (изм. ) 2
Голосов: +2 / -0

» WarCraft 3 Reforged / [lua] Фрэймы

Отличный набор инфы по UI !
Прикрепленные файлы
Nelloy #52 - 1 year ago (изм. ) 0
Голосов: +0 / -0
Nelloy #53 - 1 year ago 0
Голосов: +0 / -0
Nelloy #54 - 1 year ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Триггеры

NazarPunk, потому что так реализация систем выглядит проще, соответственно проще потом доработать. Особенно, когда количество ненативных функций для какого-то типа данных начинает переваливать за три десятка.
Nelloy #55 - 1 year ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Триггеры

PT153, отсутсвие вара под рукой
Пока оставлю так, если доберусь до теста, напишу...
Trigger - обертка над нативным триггером
function runFuncInDebug(func, ...)
    if Settings.debug then 
        local success, result = pcall(func, ...)
        if success then
            return result
        else
            Debug(result) -- print to local player
            return nil
        end
    else
        return func(...)
    end
end

function Trigger:execute()
    local original = _G.GetTriggeringTrigger
    GetTriggeringTrigger = function() return self.__trigger_obj end
    runFuncInDebug(TriggerExecute, self.__trigger_obj)
    GetTriggeringTrigger = original
end
Nelloy #56 - 1 year ago 1
Голосов: +1 / -0

» WarCraft 3 Reforged / Какими способами может быть отменено прицеливание способностью?

Bergi_Bear, патч 1.31 мультиплеер с муи.
1 - это определяю легко. У юнита стоит способность-пустышка с мгновенным применением и тем же хоткеем, что у оригинала. При использовании пустышки выдается событие "Targeting start", пустышка меняется на оригинал и прожимается соответсвующий хоткей для владельца юнита локально. Событие выдано, игрок целится - цель достигнута.
2 - да, примерно так и делаю. Для эффектов нет необходимости синхронизировать положение, поэтому заранее создаю пул эффектов для всех игроков и манипулирую нужными локально.
3 - при использовании оригинальной способности все действительно тривиально.
4 - упустим возможноть игровой отметы прицеливания, такие как сайленс, с ними проблем возникнуть не должно. Пока выяснил, что целящийся игрок может отменить прицеливание клавишей Esc и ПКМ (f10 и другие системные пока не проверял). Патч 1.31 позволяет это отслеживать, так что дело за тестами, чтобы выловить все возможности отмены.
Дело в общем-то в том, что я не делаю какую-то конкретную способность, а пилю свою систему каста, которой должно хватить на любые мои хотелки. Пока думаю должно хватить следующих событий:
  • UnitStartTargetingSpell
  • UnitTargetingSpell (вызывается по таймеру с периодом 0.03125)
  • UnitFinishedTargetingSpell
  • UnitStartCastingSpell
  • UnitCastingSpell (вызывается по таймеру с периодом 0.03125)
  • UnitCancelCastingSpell (отмена применения игроком)
  • UnitInterruptedCastingSpell (прерывание противником, например, сайленс, стан)
  • UnitFinishCastingSpell
Nelloy #57 - 1 year ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Какими способами может быть отменено прицеливание способностью?

Bergi_Bear, 8gabriel8, Сделал через отслеживание нажатия Esc, ПКМ и еще нескольких событий, в том числе храню выбранных юнитов. Отследить наличие кнопки Cancel не смог.
Nelloy #58 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Какими способами может быть отменено прицеливание способностью?

quq_CCCP, или заранее подготовить пул эффектов и делать все локально
Nelloy #59 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Какими способами может быть отменено прицеливание способностью?

Jack-of-shadow, а как подбераешь время для таймера? Кто-то быстрее кликнет, кому-то и 15 сек мало
Nelloy #60 - 1 year ago (изм. ) 2
Голосов: +2 / -0

» WarCraft 3 Reforged / Какими способами может быть отменено прицеливание способностью?

Появилась идея по отслеживанию прицеливания наличием кнопки "Cancel"
NazarPunk, дамми и реальная имеют один хоткей, у юнита есть дамми способность (мгновенная без цели), при ее применении меняем на настоящую и нажимаем хоткей для владельца юнита. Зрительно разницы не видно. Кто-то на xgm описывал такой метод.
8gabriel8, на данный момент делаю способность, которая собирает саммонов в некотором построении, например в ширенгу. Хочу чтобы при наведении отображались будующее положение юнитов. В дальнейшем - реализация способностей с указанием 2-х точек, например, трещина из точки А в точку В. Или телекинез: выбираешь противника, затем куда его толкнуть. Или отображение области поражения в виде конуса, вариантов более чем достаточно.
Nelloy #61 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Какими способами может быть отменено прицеливание способностью?

Версия 1.31
8gabriel8, отлавливаю начало прицеливания через дамми абилку, хочу отловить завершение прицеливания
Nelloy #62 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / О критических ударах и уклонениях...

В 1.31 BlzSetAbilityRealField, способность мастера клинка. Там есть и крит и уклонение, Крит устанавливается в %, уклонение в %/100. Можно положить в спеллбук и его спрятать, чтобы место на панели не занимать
Nelloy #63 - 1 year ago -2
Голосов: +0 / -2

» WarCraft 3 Reforged / Увеличение запаса здоровья героя

easypeasy, вполне рабочее решение. Нельзя установить уровень способности до того как она будет получена юнитом. Поэтому сначала вручаем способность, потом устанавливаем ее уровень у данного юнита.
Nelloy #64 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / lua-wc3

Обновил, добавил исполняющий файл
Nelloy #65 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Неужели триггерно нельзя удалять и двигать декорации вида камни?

Jack-of-shadow, Bergi_Bear, а если расширить world_frame то возможно эффекты и разрушаемые не будут выпадать из рендера
Nelloy #66 - 2 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Официально стал доступен PTR 1.31

Doc, сложно поспорить. Было бы неплохо заиметь IDE с луа и функционалом прекомпиляции из wurst.
Nelloy #67 - 2 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Официально стал доступен PTR 1.31

PornoMishka, например так я генерировал способности на основе канала в либе:
» Код
public function createDummyAbility (int     abil_id,
                                    string  name,
                                    KEY     key,
                                    string  icon,
                                    real    cast_range,
                                    real    area,
                                    string  targets_allowed,
                                    Targettype target_type) returns DummyAbility
    if compiletime
        KeyPos pos = getKeyPos(key)
        let _tmp_abil = new ChannelAbilityPreset (abil_id, 1, true)
        ..setName (name)
        ..presetIcon (icon)
        ..presetButtonPosNormal (pos.x, pos.y)
        ..presetHotkey (getKeyString(key))
        ..setHeroAbility (false)
        ..presetManaCost (lvl -> 0)
        ..presetCastingTime (lvl -> 0.05)
        ..presetCooldown (lvl -> 600)
        ..presetCastRange (lvl -> cast_range)
        ..presetOption (Option.TARGETIMAGE, area > 0 ? true : false)
        ..presetTargetTypes (target_type)
        ..presetTargetsAllowed (lvl -> targets_allowed)
        ..presetAreaofEffect(lvl -> area)
        
    return DummyAbility(abil_id, target_type)
Nelloy #68 - 2 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Официально стал доступен PTR 1.31

prog, wurstscript в ближайшее время переезжает на lua backend. И как по мне главный плюс wurst'а - возможность из кода создавать новые объекты редактора не заморачиваясь с WE.
Nelloy #69 - 2 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Официально стал доступен PTR 1.31

ScorpioT1000, на 4pda допиливают exagear (ныне покойный), так что все может быть... Год наза "запускал" на телефоне, но без аппаратного ускорения там делать нечего. На RPi тоже запускали, но тормозит оч сильно, хотя уже немного играбельно (там частично аппаратное ускорение).
Nelloy #70 - 2 years ago 1
Голосов: +1 / -0
Nelloy #71 - 2 years ago 1
Голосов: +1 / -0

» WarCraft 3 Reforged / Официально стал доступен PTR 1.31

Cancel, в луа , как писал prog, ограничений на строки не обнаружено. Поэтому можно ижектить xml/json в виде lua string переменной, например, при помощи маленького скрипта
PornoMishka, скорее всего близы пока не придумали как ограничить io lua в пределах архива карты.
Nelloy #72 - 2 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Официально стал доступен PTR 1.31

prog, а за многопоточность луа еще не щупал?
Nelloy #73 - 2 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / lua-wc3

Для меня главная преграда - отсутствие нормального require с автозаменами. Не думаю что этот плагин таким располагает
PT153, за 2 года было к vscode 1 нарекание. Баг на линуксе был, вместо переключения языка выделял главное меню и не лечилось для ctrl+alt
Nelloy #74 - 2 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / lua-wc3

ScorpioT1000, ага, но я не умею ни в js ни в ts) Если есть опыт и желание, я в деле. Думаб никогда не поздно поизучать новый язык
H, когда начинал - не было. Надо потестить
Nelloy #75 - 2 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Официально стал доступен PTR 1.31

ScorpioT1000, начал разрабатывать вот такую вещь, если есть опыт разработки плагинов под IDE можем попробовать скооперироваться.
Nelloy #76 - 2 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / lua-wc3

Bergi_Bear, Сейчас нет поддержки команды require, которая позволяет подлючать и использовать другие файлы, поэтому приходися использовать костыль метод для объединения всех файлов в архив карты. Последний файл содержит не только создание нового юнита (2 футманов), но и внедрение нового класса "Unit" со всеми функциями (почти), доступными в Jass функциями для unit.
local id = 1751543663 --'hfoo'
local f = Unit.new(Player(0), id, 0, 0, 0)
f = Unit.new(Player(0), id, 0, 0, 0)
local angle = 180
f:setFacing(angle)
То есть можно использовать синтаксис как в последней строчке, более свойственный ООП.
Nelloy #77 - 2 years ago 1
Голосов: +1 / -0
Nelloy #78 - 2 years ago 0
Голосов: +0 / -0

» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III

ENAleksey, хм... Если надумаю поковырят исходники, где мне их найти? Или можно в личку написать?
Nelloy #79 - 2 years ago 0
Голосов: +0 / -0

» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III

ENAleksey, подскажите, планируется ли вводить многопоточность?
Nelloy #80 - 2 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Спецэффекты.

Jack-of-shadow, ага с порядком рендера тоже были проблемы, но грешил на мой корявый z-буффер. Попробую
Jack-of-shadow, на всем стоит Transparent, с Blend - хуже
Такой фон получается если поставить на фон Blend
Получается для спецэффектов рендер совсем по-другому работает?
Потому что когда та же система была на юнитах таких проблем не было.
Прикрепленные файлы
Nelloy #81 - 2 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Спецэффекты.

8gabriel8, проблема в горизонтальных светлых полосах. И нет, не минимизировать) Регулировка размера
Nelloy #82 - 2 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Спецэффекты.

prog, объясните, что значит другой тип прозрачности? По расчетам они и не пересекаются. Без прозрачности никак
Nelloy #83 - 2 years ago 0
Голосов: +0 / -0
Nelloy #84 - 2 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Синхронизация.

DracoL1ch, хм... Попробую лепить все неквадратные элементы из нескольких эффектов, раз без очередных костылей никак.
DracoL1ch, еще вопрос немного не в тему. Спецэффекты намного легче деструбов?
Nelloy #85 - 2 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Синхронизация.

8gabriel8, не нашел в статье ничего про перемещение юнитов.
public class UI_Dummy extends UI_Object
protected unit instance = CreateUnit(dummy_owner, ui_dummy2d_id, 0, 0, 0)
override function setPos (vec3 world_pos)
this.instance.setPosFly(vec3(world_pos.x, world_pos.y, world_pos.z - world_pos.toVec2().getTerrainZ()))
Если закомментить последнюю строку, то десинка нет
Nelloy #86 - 2 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Синхронизация.

Steal nerves, мне не нужно отслеживать выделение, есть нативные функции для получения мыши в глобальных координатах в 1.29+. Проецирую их на экран. Например, на скриншоте все слоты инвентаря - спецэффекты.
Nelloy #87 - 2 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Синхронизация.

PyCCKuu_4eJl, завезти то завезли, но не до конца
native BlzSetSpecialEffectScale takes effect whichEffect, real scale returns nothing
не дает изменить соотношение сторон.
BlzPlaySpecialEffect - вообще нет в common.j
Nelloy #88 - 2 years ago 3
Голосов: +3 / -0

» WarCraft 3 Reforged / Тест на десинк.

Steal nerves, спасибо за наводку, сижу на версии 1.30.2 без напрягов заработало с Sandboxie
Nelloy #89 - 2 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Динамическое создание ландшафта (Wurst)

Clamp, сделано, но не нашел как прятать под спойлер
Nelloy #90 - 2 years ago -6
Голосов: +2 / -8

» WarCraft 3 Reforged / Динамическое создание ландшафта (Wurst)

ApEJI, ресет хранит только последнее изменение.
Рандомный ландшафт сделать играбельным в большем масштабе намного сложнее, а еще сложнее сделать его интересным, многообразным и логичным. Честно говоря, не увидел чего-то необычного в наработке. Тем более на гуи... Фу-фу-фу, простите...
Nelloy #91 - 2 years ago 4
Голосов: +4 / -0

» WarCraft 3 Reforged / Как добавить наработку на сайт?

PyCCKuu_4eJl, здесь уже выложил, можно баловаться. Пока оформляю статейку.
Nelloy #92 - 2 years ago (изм. ) 0
Голосов: +0 / -0

» Мир безумного / WarCraft III Reforged - WE (что хотите увидеть?)

Стандартные контейнеры, типо связанного списка.
Расширение возможностей code
Wurst-подобный язык и другой синтаксический сахар
Nelloy #93 - 2 years ago 0
Голосов: +0 / -0

» Мир безумного / WarCraft III Reforged - WE (что хотите увидеть?)

Стоит ввести возможность работать с графическим конвеером, при должной реализации со стороны близардов это может породить кучу универсальных и не очень библиотек.
Nelloy #94 - 2 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Как копировать данные ландшфат?

Делал подобное с его помощью, достаточно геморно. Создавал отдельную карту с которой надо скопировать, там все выставлял кастомными декорациями. Потом прогонял программу и в карте куда хочу записать этот ландшафт нужно создать такие же разрушаемые объекты как декорации в первой с теми же id. Работало замечательно
Nelloy #95 - 3 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Blizzard готовят Producer Update для Warcraft 3

Менять поля абилок на лету было бы полезно
Nelloy #96 - 3 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Как сделать что бы мобы бегали за тобой и юзали спелы

Solo, "Отдать приказ - тип цель/точка/без цели" там находишь спелл, из которого сделал свой нестандартный. На джасе проще
Nelloy #97 - 3 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Игровой интерфейс

|c00BDD0F4Атака:|r попробуйте
Nelloy #98 - 3 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Использование предмета на предмет

avuremybe, через EVENT_PLAYER_UNIT_ISSUED_UNIT_ORDER удалось получить предмет-цель, но не предмет-кастер
Все получилось
EVENT_PLAYER_UNIT_ISSUED_UNIT_ORDER
цель:
GetOrderTargetItem()
слот в котором использованный:
slot = GetIssuedOrderId() - 852008
Nelloy #99 - 3 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Предметы(memhach)

function InitTrig_UseItem takes nothing returns nothing
set gg_trg_UseItem = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_UseItem, EVENT_PLAYER_UNIT_ISSUED_ORDER )
call TriggerAddAction( gg_trg_UseItem, function Trig_UseItem_Actions )
endfunction
Что не так?
function Trig_UseItem_Actions не вызывается при использовании предмета
А, разобрался
Nelloy #100 - 3 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Предметы(memhach)

Расскажите раку)