13

» WarCraft 3 / [JASS] - Буран

LastUchiha, Да глобалки в начале триггера объявляешь. Функция HASH() просто для удобной интеграции в свою карту. В принципе этого можно не делать, а заставить картоделов самим менять твой H на свой.
13

» WarCraft 3 / [JASS] - Буран

  1. Добавь объявление глобалок
globals
    constant integer ABILITY_BLIZZARD = 'A000' //Способность (используется в условии)
    hashtable H = InitHashtable()
	...
endglobals
  1. Для хеша используй отдельную функцию. В картах, в которых уже есть хеш нужно будет только подставить в функцию переменную своего хеша.
function HASH takes nothing returns hashtable
    return udg_HASH
endfunction
  1. Для нанесения урона по области используй функцию UnitDamagePoint или гуи функцию UnitDamagePointLoc "Приказать юниту атаковать область". В UnitDamagePoint куча страшных непонятных аргументов, я сам в них не разбераюсь, поэтому рекомендую второй вариант.
  1. 3 пункт в начале кода некорректен, нельзя воскресить то что и так живо.
Оценка: 51 комментариев из 48 строчек кода. Лайк
13

» WarCraft 3 / Убрать "награду" за убийство иллюзий

У тебя какие то неправильные иллюзии. Щас потестил - с иллюзий голда не падает.
Также можно отлавливать смерть юнита, проверять что иллюзия - выкл награду за убийство и запустить таймер в 0.00 сек, который обратно включит награду за убийство.
13

» WarCraft 3 / Запрет существу атаковать призванных юнитов

Прояви уважение и нормально вопрос напиши, бездарь
Вот простое решение на гуи:
Загруженные файлы
13

» WarCraft 3 / Интерфейс в режиме кинематики

Oleg9791, Ты в варкрафт не играешь видно, и кроме милишных карт ничего не видел. Давно патч на снятие ограничения на 8мб есть
13

» WarCraft 3 / Интерфейс в режиме кинематики

Принятый ответ
Скорее всего не все импортировал, а может и не было текстур для синематики. Файлы синематики должны лежать по пути UI\Widgets\EscMenu\Human\human-cinematic-border.blp и UI\Widgets\EscMenu\Human\human-options-menu-border.blp.
Возможно тебе подойдет интерфейс старкрафта (там есть файлы для синематики). Можно экспортировать из крузеров
13

» WarCraft 3 / Помогите (ошибка)

Я там корочи э карту делаю хощу играю и тут хабум бдыш ашыбка что делать помогите я хощу а там ашыбка что делать ПОМОГИТЕ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Обычный краш варика. Либо бекапы искать, либо смотреть при каких обстоятельствах вызван краш и изучать триггеры, которые могли бы сработать в этот момент.
13

» WarCraft 3 / Про перенос warhammer 40000: Horus heresy в warcraft III

Так в чем проблема? Уже кучу раз доп. кампании создавались, редактор удобный есть, ток модельки найти или самому создавать. Наверно лучше сборник из 54 кампаний. Дополнение как по мне это хрень, устанавливать мало кому будет охота, а доп кампанию закинул в папку и все - играй.
13

» WarCraft 3 / Как сделать чтобы крипы бежали по указанной линии ?

Принятый ответ
Это прожевали 100500 раз, почему нельзя просто в интернетике забить "ы как сделатъ чтобы крипы шли по линии как в доте варыкрафт тры". я реально так забил, на первом же сайте решение
Если у тебя нет интернета (ты не умеешь им пользоваться) то вот:
Событие - каждые 30 сек
Условие
Действие:
TempPoint = центр (твоя область)
Создать юнита ... в TempPoint
RemoveLocation(TempPoint)
TempPoint = центр (твоя область в которую ему надо идти)
Приказать (последний созданный юнит) перейти нападая в TempPoint
RemoveLocation(TempPoint)
Бинго!
13

» WarCraft 3 / Как накренить декорацию?

В РО есть строчка "угол крена"
человек 3 карты выпустил, а элементарщину не знает... А, точно - милишники.
Загруженные файлы
13

» WarCraft 3 / Даммик не кастует способность

Tredor46, дезинформируете, товарищ. Канал работает при событии "юнит применяет способность" EVENT_PLAYER_UNIT_SPELL_EFFECT
13

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

Принятый ответ
Я нашел такую функцию в гуи за 15 секунд, хотя не пользовался ей никогда. В чем проблема просто поискать?
Если даже это не помогло тебе, и ты не допетрил, что нужно делать то вот:
  1. добавляешь в РО рабочим оба здания и А, и Б
  2. в инициализации запрещаешь строить Б для всех игроков
  3. триггер "игрок сделал улучшение" -> сделанное улучшение == (твое улучшение) -> разблокировать строительство Б для (игрок триггера) и заблокировать строительство здания А для (игрок триггера)
  4. Бинго!
Загруженные файлы
13

» WarCraft 3 / Как сделать триггерный поджог?

Я не знаю как условить, что урон был нанесен именно заклинанием. У меня получилось поджигать юнита при любом нанесении урона. В событие добавил только паладина, чтобы работало на всех нужно сделать отдельный триггер "юнит вошел в область (вся карта) -> добавить событие триггеру (gg_trg_DetectFireDamage). В триггере сообщения для дебага есть, можешь удалить. Если есть вопросы, помощь в освоении жасса - контакты в профиле, пиши.
Вот код, карту также прикрепил ниже
function Trig_DetectFireDamage_Conditions takes nothing returns boolean
    return GetUnitTypeId(GetEventDamageSource()) == 'Hblm' //наш огненный... как там его... А, точно - еврей
endfunction

function TimerFire takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local unit u = LoadUnitHandle(udg_HASH, GetHandleId(t),StringHash("fireUnit"))
    local unit u2 = LoadUnitHandle(udg_HASH, GetHandleId(t),StringHash("fireSource"))
    local trigger trig = LoadTriggerHandle(udg_HASH, GetHandleId(t),StringHash("fireTrigger"))
    local integer count = LoadInteger(udg_HASH, GetHandleId(t),StringHash("fireСount"))
    local real damage = LoadReal(udg_HASH, GetHandleId(t),StringHash("fireDamage"))
    
    call DisplayTextToForce( GetPlayersAll(), "count" + I2S(count) )
    
    call DisableTrigger( gg_trg_DetectFireDamage ) //выключаем триггер, чтоб опять не сработал и горение не зациклилось
    //наносим урон. использую БЖ функцию, т.к. в нативке много непонятных страшных аргументов я не буду лезть в это дерьмо
    call UnitDamageTargetBJ( u2, u, damage, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FIRE )
    call EnableTrigger( gg_trg_DetectFireDamage ) //вкл триггер
    
    //какой нибудь эффект бахнуть к юниту
    call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\AIfb\\AIfbSpecialArt.mdl",u, "head" ))
    
    call SaveInteger(udg_HASH, GetHandleId(t),StringHash("fireСount"),count-1) //уменьшаем количество срабатываний
    if count <= 1 then
        call DisplayTextToForce( GetPlayersAll(), "destroy" )
        call FlushChildHashtable(udg_HASH, GetHandleId(t))//очищаем хеш
        call PauseTimer(t)
        call DestroyTimer(t) //удаляем наш таймер, мол все, гореть больше не будет
    endif
    set t = null
    set trig = null
    set u = null
    set u2 = null
endfunction

function Trig_DetectFireDamage_Actions takes nothing returns nothing
    local timer t = LoadTimerHandle(udg_HASH, GetHandleId(GetTriggerUnit()),StringHash("fireTimer")) //загружаем таймер который будет переодически бить поджегом
    call DisplayTextToForce( GetPlayersAll(), "1" )
    
    if t == null then //если такого таймера нет, то создадим его
        set t = CreateTimer()
        call SaveTimerHandle(udg_HASH, GetHandleId(GetTriggerUnit()),StringHash("fireTimer"),t)
    endif
    
    call SaveReal(udg_HASH, GetHandleId(t),StringHash("fireDamage"),20) //урон
    call SaveInteger(udg_HASH, GetHandleId(t),StringHash("fireСount"),3) //количество срабатываний
    call SaveUnitHandle(udg_HASH, GetHandleId(t),StringHash("fireUnit"),GetTriggerUnit()) //юнит которому наносим урон
    call SaveUnitHandle(udg_HASH, GetHandleId(t),StringHash("fireSource"),GetEventDamageSource()) //юнит от которого наносим урон
    call SaveTriggerHandle(udg_HASH, GetHandleId(t),StringHash("fireTrigger"),GetTriggeringTrigger())
    
    call TimerStart(t,1, true,function TimerFire) //переодический таймер в котором мы будем наносить урон
    
    set t = null
endfunction

//===========================================================================
function InitTrig_DetectFireDamage takes nothing returns nothing
    set gg_trg_DetectFireDamage = CreateTrigger(  )
    call TriggerRegisterUnitEvent( gg_trg_DetectFireDamage, gg_unit_Hpal_0001, EVENT_UNIT_DAMAGED )
    call TriggerAddCondition( gg_trg_DetectFireDamage, Condition( function Trig_DetectFireDamage_Conditions ) )
    call TriggerAddAction( gg_trg_DetectFireDamage, function Trig_DetectFireDamage_Actions )
endfunction
Загруженные файлы
13

» WarCraft 3 / Проседает фпс. Как лечить?

FDG89K, у тебя какой то странный варик, ты пробовал православный 1.26? Рефордж вроде у всех лагает, так как разрабы дауны
13

» WarCraft 3 / Проседает фпс. Как лечить?

Для проверки фпс есть команда /fps - немного сверху в центре экрана будет надпись.
Лагает на каких картах? Если непонятные неоптимизированные кастомки, то естественно будет лагать.
13

» WarCraft 3 / Простой атаки приказ для всех юнитов

Пуньк-сруньк, какии та англисикие букавы ничиво нипонятна.
Выбрать всех юнитов игрока (твой игрок) при условии (соответствующий юнит != рабочий) -> приказать (выбранный юнит) идти в (точка твоя) атакуя. Капец как сложно 2 строчки в ГУИ натыкать.
13

» WarCraft 3 / Cruiser Command

Drakemor_888, Если прям в списке карт выбрать нельзя, то скорее всего у тебя не та версия варика. У меня стоит 1.26, в рефе вроде тоже работает
13

» WarCraft 3 / Cruiser Command

Drakemor_888, Сейчас проверил - карта работает. Скорее всего у тебя варик не патченный и имеет ограничение 8мб на карты. В интернете есть много способов его обойти, у меня кастомный гейм.длл. Кинуть в папку с вариком с заменой. Также можно использовать функционал коннектора Урины бот.
Загруженные файлы