32

» Dota 2 / Перенос карты.

Ага, еще бы запустил прямо там в карте варкравта. А учитывая всякие '"фишечки" варкравта и обилие импорта, максимум что есть - импорт ландшавта, как в старкрафт 2. Так что не думаю что кто то, что то подобное сделает в ближайшее десятилетие.

Нет, никак, ваще никак, совсем никак.
32

» WarCraft 3 / Таймер вместо вейта

NekoriDes:
KaneThaumaturge:
Хэш-таблица + эксплоит с таймером.
С использованием эксплоита хэш-таблица не очень-то и нужна в большинстве кейсов.
Этот експлоит нахер не усрался, ибо он не быстрее и ничем не лучше хештаблицы, вы особо ничего не выиграете, да и это дурь ни чуть не удобнее простого хт. Нет такого что хештаблица супер медленная и прочее, да она медленне чем обращение к переменным, но разница не колоссальна, в среднем одно обращение к хештаблице = 2 два обращения к массиву, исходя из этого все эти костыли никак не могут быть быстре чем просто запись значения в хт.
32

» WarCraft 3 / Пасивка с перезарядкой

Qulore, это не для тех кто вчера открыл редактор карт, и джаз тут никто не играет, язык сценариев варкравта JASS (жасс).
Детекция урона - Это отдельный триггер с событием - Юнит получает урон, туда заносятся все юниты на карте, без повторений, далее Нам нужно как то отличить физический урон от магического и прочего, по этому тут все сложно ( в 1.26 нет таких функций как узнать тип урона. Только в .1.31+ добавили но там много других сложностей + потребуется наличие рефорджа.
32

» WarCraft 3 / Аганим (апргейд способностей)

Yury13, ну запомни - технику нельзя вручать не героям, фатал. Поэтому в доте сделаны спеллбуки с техникой, которые вручаются конкретному герою при подборе аганима, и забираются при выбрасывании. Это на случай курьеров или кругов силы с инвентарем.
Ну и само собой, т.к часть способностей триггерные, они сами учитывают наличие аганима.
32

» WarCraft 3 / Пасивка с перезарядкой

Ну это нужно делать полностью кастомный аналог крита. Потребуется 1 из двух способностей пассивок с кулдаун индикатором ( эксгумация трубовозки или перерождение таурена), далее в зависимости от релизации запускаем на них кд с помощью триггеров ( в первом случае, вручение технической способности, во втором - мемхак), ну и естественно нам потребуется система детекта физического урона, чтобы определить когда юнит ударил врага, чтобы запустить кулдаун и убрать бонус к атаке ( или просто триггерно нанести эти 30 ед. урона).
Часть с кд сравнительно простая, часть с детектом урона - гораздо сложнее.
32

» WarCraft 3 / Игра подвисает при нажатии клавиши f9

Принятый ответ
Yury13, preloader, т.к в варкравте используется асинхронная подгрузка данных, то иконки и тексты меню задания не грузятся пока вы их не смотрите.
с помощью Preload (гугли статью) можно узнать что подгружает движок в момент открытия меню задания.
32

» WarCraft 3 / Массовая невидимость

Bergi_Bear, не стоит давать предметы на статы, не героям, прочим же юнитам с инвентарём можно, работает.

Я же писал статью ссылка
Там все описано и есть примеры, что надо делать. Руны прекрасно работают у любых типов юнитов, главное чтобы в них не оказались способности, требующие наличие красного плюса (Это отдельная абилка, которая есть лишь у героев) если юнит не герой, это все предметы на изменнение силы, ловкости и разума героев, это способность механика 'ANeg' = техника, все способности что взаимодействуют с опытом героя, или прочими чисто геройскими фишками.
Прочие же, вроде рун на повышение здоровья будут работать исправно, естественно нужно вручить инвентарь, дать руну, затем инвентарь удалить.


function UnitAddPowerUpItem takes unit u, integer id returns boolean // автор DracoL1ch, помогает безопасно вручать руны даже не героям.
    local item it
    local boolean invAdded = false
    local boolean added = true
    
    set it = CreateItem( id, GetUnitX( u ), GetUnitY( u ) )
    if GetUnitAbilityLevel(u, 'AInv') == 0 then     //AInv -> Inventory
        set invAdded = true
        call UnitAddAbility(u, 'AInv')              //AInv -> Inventory
    endif
    
    if UnitAddItem(u, it) == false then
        set added = false
    elseif GetWidgetLife(it) > 0.00 then
        set added = false
    endif
    
    call RemoveItem(it)
    
    if invAdded then
        call UnitRemoveAbility(u, 'AInv')           //AInv -> Inventory
    endif

    set it = null
    return added
endfunction

function IsUnitDead takes unit u returns boolean 
    return IsUnitType( u, UNIT_TYPE_DEAD ) or GetUnitTypeId( u ) < 1
endfunction
Вот код для вручения руны любому юниту, важно, проверяем жив ли юнит, чтобы не вручить способность сдохшему юниту и не словить фатал.
32

» WarCraft 3 / Игра подвисает при нажатии клавиши f9

Подгружать тексты надо прелоадер ом, или создавать в коде, иконки тоже надо подгружать.
32

» WarCraft 3 / Массовая невидимость

Ну а вручение руны никто чет не догадался? Не требует даммиков, мгновенное, можно сделать и виндвалк.
32

» WarCraft 3 / Работает ли GetItemTypeId

Я не зря скинул функцию, она требует предмет (именно указатель на реально существующий на карте предмет) и возвращает его ро код. в виде целого числа.
32

» WarCraft 3 / Работает ли GetItemTypeId

Ну покрайней мере работала, патч то какой? Скрина невидно.
native GetItemTypeId takes item i returns integer
32

» WarCraft 3 / Полное восстановление "поврежденного" листфайла карты.

Ikobot, в инструментах (tools), wc3namescaner, внизу будет пункт - запустить варкравт 3 и сканировать имена.
Unryze реализовал хук вара, который позволяет выуживать из оперативки, выделенной под вар, загруженный в карту импорт, так что было бы желание, даже из запрошенных микс архивов выудить можно данные.
32

» WarCraft 3 / Полное восстановление "поврежденного" листфайла карты.

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

» WarCraft 3 / Собственные характеристики для героя

Принятый ответ
Ничего дефолтного заменить нельзя, можно сделать свой аналог в редакторе триггеров, тут правда будет проблема с отображением этих характеристик, в какой-нить рпг их можно вывести в мультибор, и изменять вручением\удалением способностей, на скажем защиту, резист, скорость бега, и т.п
Урон от огня или чето подобное реализуется системой детекта урона.
32

» WarCraft 3 / Как отловить момент попадания снаряда

Extremator, Это мало вероятно, даже в течении игры, в лтд в среднем 150 юнитов раз в 2-3 минуты, это не "тысячи и сотни юнитов на карте" как вещает наш друг. Потом даже 1000 событий на триггер - ерунда, они расходуют очень мало озу, и триггер после волны можно удалить вместе с ивентами, когда все юниты подохнут.
32

» WarCraft 3 / Как сделать кастомную озвучку

Принятый ответ
Вам нужно изучить в редакторе звука как сделаны озвучки стандартных юнитов, тогда поймете по какому принципу формируются пакеты озвучки из отдельных файлов. Самый простой вариант - менять дефолт на импорт, карта Funny Bunny egg hunt от близзардов в помощь, это наглядное пособие по импорту озвучки и не только.
32

» WarCraft 3 / Как отловить момент попадания снаряда

Стандартными средствами особо никак, импакт отследить можно лишь делая хук на мемхаке, обычно просто отлавливают урон.
Особенно портит жизнь щиты и способности со снарядами, в спелл щит снаряд то может и прилететь но урона не нанести.
Про тысячи юнитов - ты это харе врать, у тебя на 500+ игра зависнет, детект через урон как раз быстрее ваших костылей с замахами и даммиками. Событие - юнит получает урон есть на мемхаке и на 1.31+ на всех юнитов на карте, т.е глобальное, но это не обязательно, нет ничего плохого что ты навшал сотню событий на триггер, если все юниты умерли (и не будут воскрешены) то триггер можно удалить, и создать заного, таким образом избежать утечек.
32

» WarCraft 3 / Lua или jass?

Ну для гуишника - что то, что то, едино для гуишника. На офф патчах полно багов и проблем, карту писать новичкам сложно будет.
32

» WarCraft 3 / Первый призванный юнит, не хочет выполнять приказ

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

» WarCraft 3 / как открыть карту ?

Открывать ненужно, ибо вам ничего это не даст, все в "перемолотом" виде и раз вы задаёте такие вопросы, изменить там вряд-ли что сможите, нужно найти читора который ломанет карту под вас или играть в старую версию.
32

» WarCraft 3 / Первый призванный юнит, не хочет выполнять приказ

local unit cast = GetSpellAbilityUnit()
local unit dummy = CreateUnit( GetOwningPlayer(cast),'hmtm', GetUnitX(cast), GetUnitY(cast), 270.00 ) // создаем юнита по принципу: игрок, ид, х, у, угол взгляда.
У тебя же все неправильно, глобалки какие то присваиваются перед локалками, такого быть не должно! Сначала идут локальные переменные, как в примере кода, сразу заносишь в них значения, это не гуи и всякие глупоконструкции тут никчему.
Далее что должен делать этот спелл, ибо судя по коду какая то ахинея и замысел не просматривается, опиши подробно словами что должно быть?
Далее использование точек и прочих BJ функций с ними вроде PolarProjectionBJ(GetRectCenter(RectFromCenterSizeBJ(GetUnitLoc(udg_Unitper) - плодят утечки, и нафиг ненужны, ибо координаты рулят.