28

» WarCraft 3 / Насколько актуально делать упор на версию 1.29/1.30?

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

Ну связи между смертью патча 1.26 и смертью игры нет никакой. Патч умрёт, а игра нет.
28

» WarCraft 3 / Насколько актуально делать упор на версию 1.29/1.30?

Как быть, стоит рассчитывать что версия 1.26 канет в лету и все перейдут на более поздние версии в ближайшем времени?
Drulia_san, я вот что скажу. Делай пока на 1.26 без использования всяких багов и хаков, как это делаю я. Тогда карта будет совместима с последними версиями. По крайней мере менять придётся не много. 1.26 канет в лету с выходом ремастера, хотя бы из-за новых возможностей. Но выйдет ремастер ближе к концу 2019 года. То есть в ближайшее время никто не перейдёт. Потому рекомендую остаться на 1.26, но если позарез нужны новые функции, то тогда сиди на официальных патчах.
28

» WarCraft 3 / Приказ отмены улучшения здания

Я так понимаю, что ты улавливаешь улучшение по событию "Начинает улучшение"?
Это событие срабатывает ДО начала улучшения, потому приказ "Отмена" ничего не отменяет.
Есть два варианта.
1. В триггере с событием "Начинает улучшение" запустить таймер в 0.01 секунду в функцию, в которой будет приказываться "Отмена". Вместо таймера можно поставить паузу, но не рекомендую.
2. Или ловить улучшение по событию "Юнит получает приказ без цели".

function Trig_UpgradeStart_Actions takes nothing returns nothing
    local Wall t = GetUnitUserData(GetTriggerUnit())
    if not t.owner.spendGold(TowerData[t.uptype].goldcost) then  // Если не хватает ли триггерного золота на улучшение.
        call DisableTrigger(gg_trg_UpgradeCancel)
        call IssueImmediateOrderById(t.tower, Order_cancel)  // отдаём приказ "Отмена" башне. t.tower == GetTriggerUnit()
        call EnableTrigger(gg_trg_UpgradeCancel)
    endif
endfunction

function InitTrig_UpgradeStart takes nothing returns nothing
    set gg_trg_UpgradeStart = CreateTrigger()
    // Регистрация события происходит в другой функции. 
    // call TriggerRegisterPlayerUnitEvent(gg_trg_UpgradeStart, p, EVENT_PLAYER_UNIT_UPGRADE_START, null)
    call TriggerAddAction(gg_trg_UpgradeStart, function Trig_UpgradeStart_Actions)
endfunction
У меня это работает.
28

» WarCraft 3 / Приказ отмены улучшения здания

Дать приказ юниту триггера "отставить" не работает. В чем может быть проблема?
В руках. У меня этим приказом улучшения строений отменяются.
28

» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)

Кстати появилась новость, что обычный варкрафт перестал быть доступен для покупки.
Это верное решение, а то те, кто в танке, накупят стандартного, а потом начнут ныть "УУУ, зачем я тогда покупал, если мог купить ремастер и получить стандартный".
28

» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)

жесткий как некоторые уровни в Варкрафт 2
Если и есть, то только в 'Beyond the Dark Portal', но и там всё довольно просто.
28

» WarCraft 3 / Где лежат стандартные модели Warcraft 3.

Модельки я тебе уже кинул нужные, если что, могу дать необходимые .mpq архивы версии 1.26.
28

» WarCraft 3 / Где лежат стандартные модели Warcraft 3.

Наверное из-за того что у меня лицензия там нету этого файла
Походу я реально чего-то не понимаю, где должен находится этот архив? (P.S. Скорее всего я реально туплю потому-что делаю это в первый раз)
У тебя последняя версия игры? В ней нет .mpq файлов. Потому попроси скинуть тебе нужную модель.

Вот хижина мурлока.
Загруженные файлы
28

» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)

Переделан только тот ролик, который был показан на близконе, так что у кого были по этому поводу ожидаия -- сбавте обороты.
Вот разбор этой новости из того же паблика и почему так вышло.

Пожалуйста, дайте возможность менять оценку.
28

» WarCraft 3 / Region comparison?

Есть, как его может не быть?
Той же версии смысла нет.
А если делать в JNPG с включённым UMSWE, на версиях выше 1.27, могут быть проблемы.
Дело в том, что событие "Юнит входит в регион" скрытно создает новый регион, в который включает указанную область, и получить доступ к этому региону из GUI мы никак не можем.
Я уже это объяснил выше и сказал, что ему нужно регистрировать свой регион, а не через область в ГУИ.
pAxsIs:
Кстати вариант со сравнением юнита в регионе мне помог
Есть вариант сделать это без создания региона каждый раз при срабатывании триггера.

Триггер инициализации.
CS: local integer a = 0
CS: loop
CS: exitwhen a == RegionAmount
CS: set Regions = CreateRegion()
CS: endloop
CS: call RegionAddRect(Regions[0], <нарисованный тобой rect>)
CS: ...
CS: call RegionAddRect(Regions[RegionAmount - 1], <нарисованный тобой rect>)
CS: call TriggerRegisterEnterRegion(<нужный триггер>, Regions[0], null)
CS: ...
CS: call TriggerRegisterEnterRegion(<нужный триггер>, Regions[RegionAmount - 1], null)

В JNPG + FNWE всё это можно сделать в GUI.

Если у тебя единый триггер для всех регионов, то зарегистрировать их можно также циклом, внутри триггера находить нужный сравнением с GetTriggeringRegion().

Я ректы в ландшафте не рисую, делаю их в коде. Так гораздо удобнее для кода.
28

» WarCraft 3 / Region comparison?

Не хочу работать месяц над картой, а потом узнать, что навороченный редактор не дал мне запустить ее в варике. В общем такие опасения. Когда один раз врубал WE U, то мне сообщило, что карта типа устарела и предложил обновить ее для этого редактора, вот тогда я отказался и вернулся на стандартный редактор.
Редактор никак не влияет на совместимость, влияет только версия игры. Потому установи JNPG и аддон к нему FNWE, если нужна русификация.
А открывать сделанную в JNPG карту в стандартном редакторе нет смысла.
JNPG работает только в версиях до 1.27.
И да, если ты откроешь карту, сделанную в редакторе для предыдущей версии игры, в редакторе для новой версии, то сообщение о "старости" карты высветится в любом случае, а нажатие OK ничего не сломает. Главное не делать наоборот.

На какой версии карту делаешь?
28

» WarCraft 3 / Region comparison?

ScopteRectuS:
По идее, карта вообще не должна сохранятся. Потому что вы сравниваете rect ==region.
У него странный редактор, возможно, что у него либо нет JassHelper, либо он отключён. А при сравнении rect и region поток, скорее всего, обрубается.
pAxsIs:
Подскажите что не так?
Потому что ты регистрируешь событие на вход в rect. А оно работает так: создаётся новый регион, в который добавляется указанный rect. Переменной, в которой хранится ссылка на этот регион, нет, но GetTriggeringRegion() возвращает именно этот регион. Не говоря уже о том, что ты сравниваешь разные типы.
GetLocalPlayer:
Никак. Регионы и области не сравниваются параметрически
Ему нужно выяснить, какая ячейка массива содержит сработанный регион (если ему это действительно нужно). А это как раз и делается параметрически, ведь нужно сравнить ссылки.
Но можно узнать, находится ли точка в том или ином регионе.
native IsUnitInRegion               takes region whichRegion, unit whichUnit returns boolean
native IsPointInRegion              takes region whichRegion, real x, real y returns boolean
native IsLocationInRegion           takes region whichRegion, location whichLocation returns boolean
pAxsIs, если тебе нужно событие на вход или выход из region, то тебе нужны следующие функции.
native TriggerRegisterEnterRegion takes trigger whichTrigger, region whichRegion, boolexpr filter returns event
native TriggerRegisterLeaveRegion takes trigger whichTrigger, region whichRegion, boolexpr filter returns event
Тебе также пригодятся такие функции.
native CreateRegion             takes nothing returns region
native RemoveRegion             takes region whichRegion returns nothing

native RegionAddCell           takes region whichRegion, real x, real y returns nothing
native RegionAddCellAtLoc      takes region whichRegion, location whichLocation returns nothing
native RegionAddRect            takes region whichRegion, rect r returns nothing

native RegionClearCell         takes region whichRegion, real x, real y returns nothing
native RegionClearCellAtLoc    takes region whichRegion, location whichLocation returns nothing
native RegionClearRect          takes region whichRegion, rect r returns nothing
28

» WarCraft 3 / Возможно ли использовать переменные в событиях в JASS?

Их просто нет в выборе в событиях, так что я не могу выбрать переменную в событии
Какой редактор? JNPG и стандартный?
В стандартном region == rect, в JNPG это исправлено (вроде).
У меня вот так вот, но сейчас вопрос не про это
Либо у тебя стандартный редактор, либо у тебя удалён TESH, либо отключён.
pAxsIs:
На JASS возможно использовать массивы и переменные в событиях
Да, можно, но нужно понимать, что событие будет работать только для того значения, что было в переменной в момент регистрации события.
28

» WarCraft 3 / Возможно ли использовать переменные в событиях в JASS?

Событие, реагирующие на изменение переменной (real), есть. А проверить, работает ли оно с определённой ячейкой массив достаточно просто.
одноцветный с ужасным шрифтом JASS
У тебя TESH удалили?
28

» WarCraft 3 / Логистика и сохранение данных

Юзай XT + структуры.
Лично я ХТ использую только для связи инстанции структуры и таймера.
28

» WarCraft 3 / Способность "Взять дерево" у героя

если да, то есть ли какой-то способ показать её?
Она скрыта, потому что место для неё отведено для характеристик.
28

» WarCraft 3 / Мгновенное применение заклинание Канал

через шифт бежать в сторону, а кастующий юнит подбегает, ПРИОСТАНАВЛИВАЕТСЯ где то на пол секунды, кастует и только потом бежит дальше.
В таком случае, решением будет именно мой ответ, потому что в моей карте происходит следующее:
Юнит бежит -> отдаётся приказ кастовать -> он кастует -> по окончанию каста отдётся приказ бежать дальше.
Это происходит настолько быстро, что создаётся впечатление мгновенного каста.
28

» WarCraft 3 / Мгновенное применение заклинание Канал

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

» WarCraft 3 / Триггерное количество еды

структура в которой все поля и методы статичны?
за подобное даже в чисто ооп языках (наподобие джавы) бьют по рукам
А как бы ничего, что в самой Java таких классов уйма?
28

» WarCraft 3 / Дропнуть предметъ

нет, это удалит предмет из инвентаря, не путать с RemoveItem.
Действительно, я перепутал)
28

» WarCraft 3 / WE WARCRAFT3

есть брать концепцию возврата значения, то обнуление в данном случае невозможно.
Да, но это не отменяют того, что функция утечна. После удаления группы, локалка всё ещё будет ссылаться на удалённый объект, а из-за этого хендл не будет освобождён.
Решение этой проблемы очень простое.
function GetUnitsInRangeOfLocAll takes real radius, location whichLocation returns group
    return GetUnitsInRangeOfLocMatching(radius, whichLocation, null)
endfunction

function GetUnitsInRangeOfLocMatching takes real radius, location whichLocation, boolexpr filter returns group
    local bj_lastCreatedGroup =  CreateGroup()
    call GroupEnumUnitsInRangeOfLoc(bj_lastCreatedGroup, whichLocation, radius, filter)
    // call DestroyBoolExpr(filter)  // не нужна
    return bj_lastCreatedGroup
endfunction

Комментарий, что подтверждает, что функция в вопросе утечна.

И обновите ответ, дезинформируете людей.