26

» WarCraft 3 / помощь с англ триггерами

Принятый ответ
Вот пример такой системы.
Сначала выбираешь всех играющих игроков в группу Players.
Потом после смерти юнита проверяешь, если находится в группе игроков Players (то есть не является нейтралом), и если у игрока не осталось юнитов - выдаем ему поражение и выкидываем из группы Players. Потом проверяем, если в группе Players остался 1 игрок - выдаем ему победу. Все.
Загруженные файлы
26

» WarCraft 3 / Как сделать FFA карту?

Принятый ответ
Я исправил смену цвета в твоей системе, а то ты оперировал не цветом там а числом...
Сделал как было у меня в моей системе, что уже скидывал тебе.
По поводу героев - еще раз подробнее, что ты хочешь? Чтобы оно как выглядело? По шагам опиши, как игрок должен увидеть рандом?
К примеру:
  1. В алтаре игрок может нанять героя который подписан как "Рандомный герой".
  2. После найма "рандомного героя" на его месте спавнится случайный герой из списка всех стандартных рас + таверны.
Так? Правильно я понял?
Загруженные файлы
26

» WarCraft 3 / как заставить юнит(танк) вращать свою башню при атаке через триггеры?

EugeAl, не знаю, не копал эту тему для движущихся объектов. Тип те-же орудийные башни или сторожевые древа стоят на месте а тут движущийся объект, надо тестить и разбираться.
26

» WarCraft 3 / как заставить юнит(танк) вращать свою башню при атаке через триггеры?

Есть триггер на поворот "головы". Вращай через это действие.
Но думаю, у тебя все сложнее и ты хочешь, чтобы юнит катался и прежде чем атаковать - он должен повернуться именно башней а не телом в нужную сторону и стрелять, да?)
26

» WarCraft 3 / Reforgerator 1.2.0 - Создание иконок Classic и Reforged

makkad, так посмотришь со стороны - и разницы нету)
Но кому что надо под свою версию, огонь, лаек!
26

» WarCraft 3 / Порченый/обычный рудник, как это работает?

Эта система рассчитана на то, что у тебя на карте не существует и не будет существовать 2 рудника в одной точке. Если как-то триггерно создаешь новые рудники - просто добавляй их в группу.
Так-же при постройке проклятого рудника рабочим альянса почему-то золото не передается с оригинального рудника, там просто 0 золота. Я не стал заморачиваться и искать в чем проблема, просто взял золото оригинального рудника и его ставил новому руднику.
26

» WarCraft 3 / Порченый/обычный рудник, как это работает?

Принятый ответ
Вот тебе полностью рабочая наработка такой системы.
Идея в том, что сначала записываем в группу все рудники при инициализации карты.
Далее рабочий может строить "улучшенный рудник" на руднике, который сам по себе работает как рудник нежити. Но, после постройки, заменяется на новый рудник, который уже добывается обычным способом. При этом оригинальный рудник прячется (ищем его в группе, что заранее создали, по равенству местоположения).
После уничтожения рудника, в зависимости от того, сломали его или добыли все золото - показываем оригинальный рудник или удаляем оригинальный рудник.
Вопрос остается лишь в другом - рудник со стрельбой коряво отображает урон и кол-во золота, они накладываются друг на друга. Но это уже другая проблема, которую мне сейчас лень решать. Механически все работает, как ты описал.
Загруженные файлы
26

» WarCraft 3 / Возможно ли отследить возврат древесины работником?

Принятый ответ
Вроде нет возможности напрямую отследить доставку древесины в тот миг получения ресурса рабочим.
у тебя есть возможность отследить приказы на доставку ресурсов на базу и приказ идти добывать:
За счет этого можно сделать костыль. А именно, когда рабочий приносит древесину на базу - ему сразу же выдается приказ harvest на добычу - а значит в этот момент можно и добавить +5 древесины. Однако такой-же приказ отдается и при сдаче золота - а значит надо будет еще проверить, а кто цель приказа? Если рудник - то рабочий принес золото, иначе дерево и можно дать +5 древесины.
Вот тебе наработка такой системы.

Но в системе выше есть еще одна проблема - а сколько рабочий принес дерева? Можно же заставлять рабочего таскать по 1 древесину и получать халявный кэш +5 дерева :D
Если надо убрать эту абузку- надо тотально отслеживать ресурс дерева игрока и проверять, если рабочий принес ровно 10 дерева - то тогда добавлять +5, иначе не давать. Это еще при условии, что у тебя нет прокачки по увеличению кол-ва дерева, иначе надо добавить еще проверки на исследования.

Вот люди со схожей проблемой решали через группы в этом вопросе.
Загруженные файлы
26

» WarCraft 3 / Отследить исследование у убийцы

mistwood, вот тебе пример для "выбранного юнита". Можешь тоже самое сделать над убийцей.
Вот эта карта для другой наработки когда-то делал. Можешь в ней посмотреть этот триггер.
Загруженные файлы
26

» WarCraft 3 / Отследить исследование у убийцы

Принятый ответ
Если что, вот порядок создания этого условия:
Загруженные файлы
26

» WarCraft 3 / Я не смог.

human1, вот часть твоего кода, который слегка переработал и не выдает ошибок
trigger gg_trg_Ab_Mimicr = null

function Trig_Ab_Mimicr_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000'
endfunction

function Trig_Ab_Mimicr_Actions takes nothing returns nothing
    local unit mim = GetSpellAbilityUnit()
    local unit copy
    local location p = GetUnitLoc( mim )
    local player vlad = GetOwningPlayer( mim )
    call ShowUnitHide( mim )
    call CreateNUnitsAtLoc( 1, GetUnitTypeId(GetSpellTargetUnit()), vlad, p, 1.35 )
    call SetUnitOwner( mim, Player(12), true )
    set copy = GetLastCreatedUnit()
endfunction

//===========================================================================
function InitTrig_Ab_Mimicr takes nothing returns nothing
    set gg_trg_Ab_Mimicr = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Ab_Mimicr, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Ab_Mimicr, Condition( function Trig_Ab_Mimicr_Conditions ) )
    call TriggerAddAction( gg_trg_Ab_Mimicr, function Trig_Ab_Mimicr_Actions )
endfunction
Но я не вдумывался, что он делает, я лишь сделал так, чтобы он компилировался и немного оптимизировал.
26

» WarCraft 3 / Я не смог.

human1, либо ты не скинул функцию на подобии InitTrig_Ab_MimicrDie
Как я понял такая должна быть, ибо есть условия и действия, но нету триггера
26

» WarCraft 3 / Я не смог.

human1, да и вообще, кто вызывает функцию Trig_MimicrDie_Actions? Она существует но никто ее не вызывает по твоему коду)
26

» WarCraft 3 / Я не смог.

human1, как уже написали ниже, ты объявил переменные в одной функции Trig_Ab_Mimicr_Actions, а пытаешься использовать в другой функции Trig_MimicrDie_Actions, где этих переменных не существует.
Если хочешь их там использовать - создавай глобальные переменные а не локальные.
26

» WarCraft 3 / Я не смог.

human1, ну вот к примеру тут:
function Trig_MimicrDie_Conditions takes copy returns boolean
    if ( not ( IsUnitAliveBJ( copy ) == false ) ) then
        return false
    endif
    return true
endfunction
Ты не указал тип переменной copy, поэтому эта функция ломается. Должен же указать тип unit, верно?
26

» WarCraft 3 / Я не смог.

human1, ты скинул 3 разных решения в одном файле? Какое из них ты хочешь проверить на ошибки?)
26

» WarCraft 3 / Я не смог.

Сложно читать эту кашу и понять где у тебя вызываются эти ошибки. Проще было бы в пустой карте потестить с твоим кодом, юнитами и тд.
А еще мне кажется, что вот тут что-то не так. Мб из-за копипасты случайно ты вставил.
Загруженные файлы
26

» WarCraft 3 / Как изменить никнеймы в редакторе карт?

PRO2, да, триггер в прикрепленной карте, можно копировать и вставить себе в карту :)
Ну как, разобрался как оно работает?