28

» WarCraft 3 / Заклинание: Blink Strike

Как приаттачить: кину код через некоторое время.

Вот код. Добавил также функцию по дебагу, она не десинкает по сети.
раскрыть
globals
    key TimerParentKey
    constant hashtable Hash = InitHashtable()
endglobals

function DebugMsg takes string s returns nothing
    debug call DisplayTimedTextToPlayer(GetLocalPlayer(), 0., 0., 5., s)
endfunction

function GetCustomTimer takes nothing returns integer
    return LoadInteger(Hash, TimerParentKey, GetHandleId(GetExpiredTimer()))
endfunction

function BindTimerToStruct takes timer t, integer this returns nothing
    call SaveInteger(Hash, TimerParentKey, GetHandleId(t), this)
endfunction

function UnbindTimerFromStruct takes timer t returns nothing
    call PauseTimer(t)
    call RemoveSavedInteger(Hash, TimerParentKey, GetHandleId(t))
    call DestroyTimer(t)
endfunction

//! textmacro CustomTimer takes var, fname, name
    readonly timer $var$

    private method Init$fname$ takes nothing returns nothing
        set $var$ = CreateTimer()
        call BindTimerToStruct($var$, this)
        //call DebugMsg("$fname$ " + I2S(this) + " of $name$ is created.")
    endmethod
        
    private method Delete$fname$ takes nothing returns nothing
        call UnbindTimerFromStruct($var$)
        set $var$ = null
        //call DebugMsg("$fname$ " + I2S(this) + " of $name$ is deleted.")
    endmethod
//! endtextmacro

//! textmacro CustomTimerSafe takes var, fname, name
    readonly timer $var$

    private method Init$fname$ takes nothing returns nothing
        if $var$ == null then
            set $var$ = CreateTimer()
            call BindTimerToStruct($var$, this)
            //call DebugMsg("$fname$ " + I2S(this) + " of $name$ is created.")
        endif
    endmethod
        
    private method Delete$fname$ takes nothing returns nothing
        if $var$ != null then
            call UnbindTimerFromStruct($var$)
            set $var$ = null
            //call DebugMsg("$fname$ " + I2S(this) + " of $name$ is deleted.")
        endif
    endmethod
//! endtextmacro
Пример использования.
раскрыть
struct TowerAbility
    static Tower Caster

    TAD data
    Tower caster
    
    static method create takes Tower m, integer T returns thistype
        local thistype this = allocate()
        set data = TAD[T]
        set caster = m
        set m.abil = this
        call UnitAddAbility(m.tower, data.info_id)
        return this
    endmethod
    
    stub method incLevel takes nothing returns nothing
    endmethod
endstruct

struct AbilGoldMining extends TowerAbility
    static constant real period = 1.
    // Defaults
    static constant integer defincome = 1
    // Increments
    static constant integer incincome = 1
    // Additions
    static constant integer b1_income = 1
    static constant integer b2_income = 3
    
    integer income = defincome
    CustomPlayer owner

//! runtextmacro CustomTimer("t", "Timer", "AbilGoldMining")

    method onDestroy takes nothing returns nothing
        call DeleteTimer()
    endmethod
    
    method incLevel takes nothing returns nothing
        set income = income + incincome
        if caster.level == data.b1 then
            set income = income + b1_income
        elseif caster.level == data.b2 then
            set income = income + b2_income
            call caster.removeSelfUpgrade()
        endif
    endmethod
    
    static method addGold takes nothing returns nothing
        local thistype this = GetCustomTimer()
        call owner.addGold(income)
        call owner.createGoldTextUnit(I2S(income), caster.tower)
    endmethod
    
    static method init takes nothing returns nothing
        local Tower m = Caster
        local thistype this = allocate(m, AbilGoldMiningId)
        set owner = m.owner
        call InitTimer()
        call TimerStart(t, period, true, function thistype.addGold)
        call DebugMsg("AbilGoldMining " + I2S(this) + " is created.")
    endmethod
endstruct
28

» WarCraft 3 / Как убрать отключение столкновения в коде?

Не рекомендую использовать SetUnitPos, данная функция отдаёт приказ "Стоп" юниту, что перемещается. Если же это не важно, то можно ей использовать.
28

» WarCraft 3 / Как установить аглоязычный редактор на лицензию?

Всё, что не изменено, будет взято из файлов игрока. Если у него английская версия, то текст будет английским.
Все свои строки можно глянуть в Файл -> Экспортировать Строки.
28

» WarCraft 3 / Как убрать отключение столкновения в коде?

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

» WarCraft 3 / Как убрать отключение столкновения в коде?

Что значит "отключает столкновение у юнита-таргета"?
Код хендл каунтера можно было и не вставлять.
В чём прикол создавать триггер в локальную переменную?

Может всё дело в паузе?
28

» WarCraft 3 / Ошибка при загрузке карты в World Edit

Читают ли mdlvis с w3me стандартные текстуры игры?
А вот этого не знаю. Но у меня в папке с w3me всё равно есть все нужные архивы. В крайнем случае можно вытащить war.mpq из каска и сделать из этого .mpq.
28

» WarCraft 3 / Ошибка при загрузке карты в World Edit

Ну там же теперь casc
В CASC находятся лишь необходимые игре файлы, но сам формат файлов не поменялся. Делать им нечего, формат моделей и карт менять. Модели как были .mdx и .mdl, такими и остались.
28

» WarCraft 3 / Можно ли изменить ВЕСЬ текст в карте в пару кликов?

Принятый ответ
Да.
Открываешь карту MPQ Editor, извлекаешь оттуда файл war3map.wts, там хранится почти весь текст карты.
Найти описание юнита можно по его имени ли равкоду через поиск текста. Подробное описание называется Ubertip, подсказка (то, что над стоимостью юнита) - Tip. Там же можно изменить горячую клавишу (Hotkey).
Редактируешь и изменённый файл импортируешь назад в карту тем же MPQ Editor, перед этим лучше сохранить старую версию war3map.wts или всей карты.
Есть альтернативный способ: в самом редакторе Файл - Экспортировать Строки. Редактируешь и изменённый файл импортируешь аналогичным способом (в редакторе): Файл - Импортировать Строки.

war3map.wts имеет определённый формат, перенос строки через CRLF и кодирование UTF-8-BOM. Если что-то из этого изменить, то файл будет нечитабельным для карты, и при следующем сохранении редактор просто его перезапишет, обнуляя все текстовые изменения.

Ну и почему ресурс пропал из ленты проектов?
28

» WarCraft 3 / Ошибка при загрузке карты в World Edit

А с чего бы редакторам моделей не работать с новыми версиями? Модели и карты остались теми же. JNGP не работает только из-за того, что нельзя заинжектить что-то во время вызова game.dll.
28

» WarCraft 3 / Триггерный склон?

Можно сделать искусственную деформацию рельефа. Смотри в действиях Окружающая среда (вроде там). Также там есть поиск по действиям.
28

» XGM Конкурсы / Warcraft 3 Custom Maps Contest 2019

Пишу на 1.26, потому что тогда есть нормальная возможность потестить, плюс JNGP для меня удобен, а также просто проверенная временем версия. При этом совместимость сохраняется, проблема может быть такая (описал в 29 комментарии):
Основная проблема может быть в том, что в картах с фиксированным кланом, цвет определяет слот игрока (ранее при фиксированных кланах цвет выбирать нельзя было). То есть игрок красного цвета теперь будет Player(0), игрок синего цвета - Player(1).
Так вот, тут я немного наврал, цвет всё также выбирать нельзя, а потому данное изменение касается скорее для карт, где нет фиксированных кланов, потому что так и не понятно, что же такое arranged forces.
На этих выходных займусь этим вопросом, так как самому нужно узнать.
28

» Мир безумного / 23 февраля

8gabriel8,
Сидит здоровый и накачанный африканский негр-европейский мигрант в одних трусах на кровати и томным голосом медленно произносит:
  • Милый, сегодня у тебя мужской праздник. У меня приготовлен особый подарок для тебя, мой защитник!
GeneralElConsul:
Самое главное, чтобы он их заслужил не от парня/мужа.
В данной ситуации рекомендую следить за своей жизнью, и не лезть и даже не воображать, что творится в чужой.
Я знаю, что это шутки/троллинг.
28

» Мир безумного / 23 февраля

Тоже считаю
Ты не понял. Суть подарка сделать приятное человеку, подарок нельзя заслужить. А когда дарят "потому что надо\красный день" и так далее, то суть подарка теряется, ибо это уже просто формальность, которую ты "обязан" выполнить, и цель есть выполнить "обязанность", а не сделать приятное человеку.
28

» WarCraft 3 / Как отследить убивающего юнита в таймере?

никогда не обосновано
Бывает обоснованно, особенно если событие A unit comes withing range. Но для моих целей обработка местности каждую долю секунды вышла лучше.
28

» Мир безумного / 23 февраля

праздник надо дарить подарки
А что такого в этом дне? Дарить надо, когда хочется, а не когда в календаре написано.
28

» Мир безумного / 23 февраля

23 февраля - день образования Красной Армии, и каким образом сюда приплели "защитников", я не понимаю. Я также не понимаю, почему этот праздник исключительно мужской, ведь защитниками могут быть не только мужчины (вот только не надо тут про феменитивы). Если вам нужен день мужчины, то вот он, а вот ещё.
28

» Мир безумного / Сотрудники Blizzard «плачут и обнимаются»

Скажи это ребятам которые вылетали с учёбы играя в моба игры и прочее.
Это проблемы этих ребят и их родителей, а не разработчиков.
28

» Мир безумного / Сотрудники Blizzard «плачут и обнимаются»

В общем я не понимаю как можно говорить что игра сервис это хорошая игра.
Это уже вкусовщина, кому-то нравятся сингловые игры, кому-то мультиплеерные, кому-то и те, и эти. А если игра нравится, то человек будет звать её хорошей.
Это не ТЕ ИГРЫ которые хочется видеть от близов.
Кому как, мне вот всё равно. Играю в то, что нравится, и ничего суперкрутого от кого-либо не жду.

Вообще, бесплатные игры хороши тем, что можно без вреда для своих финансов выяснить, нравится эта игра или нет. А там, если игра понравилась, можно и разработчика поддержать.

По поводу "выкачки" денег: я не считаю выкачкой денег, если за донат можно приобрести только то, что никак не влияет на баланс.
28

» Мир безумного / Сотрудники Blizzard «плачут и обнимаются»

там в переменных были совсем другие номера событии записаны.
Я тоже это где-то видел, но я открыл файлы на последнем патче, и там такого не обнаружил. Скорее всего это было в планах, но либо по фидбеку поняли, что это плохо, либо пока ещё не сделали. Потому пока всё полностью совместимо, кроме одного момента с игроками.
И вроде из-за этого все сломали.
Нет, поломали внутри, на хайве даже кидали скриншоты, что в кампании десинкает. x