LastUchiha, Да глобалки в начале триггера объявляешь. Функция HASH() просто для удобной интеграции в свою карту. В принципе этого можно не делать, а заставить картоделов самим менять твой H на свой.
globals
constant integer ABILITY_BLIZZARD = 'A000' //Способность (используется в условии)
hashtable H = InitHashtable()
...
endglobals
Для хеша используй отдельную функцию. В картах, в которых уже есть хеш нужно будет только подставить в функцию переменную своего хеша.
function HASH takes nothing returns hashtable
return udg_HASH
endfunction
Для нанесения урона по области используй функцию UnitDamagePoint или гуи функцию UnitDamagePointLoc "Приказать юниту атаковать область". В UnitDamagePoint куча страшных непонятных аргументов, я сам в них не разбераюсь, поэтому рекомендую второй вариант.
3 пункт в начале кода некорректен, нельзя воскресить то что и так живо.
У тебя какие то неправильные иллюзии. Щас потестил - с иллюзий голда не падает.
Также можно отлавливать смерть юнита, проверять что иллюзия - выкл награду за убийство и запустить таймер в 0.00 сек, который обратно включит награду за убийство.
Скорее всего не все импортировал, а может и не было текстур для синематики. Файлы синематики должны лежать по пути UI\Widgets\EscMenu\Human\human-cinematic-border.blp и UI\Widgets\EscMenu\Human\human-options-menu-border.blp.
Возможно тебе подойдет интерфейс старкрафта (там есть файлы для синематики). Можно экспортировать из крузеров
Я там корочи э карту делаю хощу играю и тут хабум бдыш ашыбка что делать помогите я хощу а там ашыбка что делать ПОМОГИТЕ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Обычный краш варика. Либо бекапы искать, либо смотреть при каких обстоятельствах вызван краш и изучать триггеры, которые могли бы сработать в этот момент.
Так в чем проблема? Уже кучу раз доп. кампании создавались, редактор удобный есть, ток модельки найти или самому создавать. Наверно лучше сборник из 54 кампаний. Дополнение как по мне это хрень, устанавливать мало кому будет охота, а доп кампанию закинул в папку и все - играй.
Это прожевали 100500 раз, почему нельзя просто в интернетике забить "ы как сделатъ чтобы крипы шли по линии как в доте варыкрафт тры". я реально так забил, на первом же сайте решение
Если у тебя нет интернета (ты не умеешь им пользоваться) то вот:
Событие - каждые 30 сек
Условие
Действие:
TempPoint = центр (твоя область)
Создать юнита ... в TempPoint
RemoveLocation(TempPoint)
TempPoint = центр (твоя область в которую ему надо идти)
Приказать (последний созданный юнит) перейти нападая в TempPoint
RemoveLocation(TempPoint)
Я нашел такую функцию в гуи за 15 секунд, хотя не пользовался ей никогда. В чем проблема просто поискать?
Если даже это не помогло тебе, и ты не допетрил, что нужно делать то вот:
добавляешь в РО рабочим оба здания и А, и Б
в инициализации запрещаешь строить Б для всех игроков
триггер "игрок сделал улучшение" -> сделанное улучшение == (твое улучшение) -> разблокировать строительство Б для (игрок триггера) и заблокировать строительство здания А для (игрок триггера)
Я не знаю как условить, что урон был нанесен именно заклинанием. У меня получилось поджигать юнита при любом нанесении урона. В событие добавил только паладина, чтобы работало на всех нужно сделать отдельный триггер "юнит вошел в область (вся карта) -> добавить событие триггеру (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
Для проверки фпс есть команда /fps - немного сверху в центре экрана будет надпись.
Лагает на каких картах? Если непонятные неоптимизированные кастомки, то естественно будет лагать.
Пуньк-сруньк, какии та англисикие букавы ничиво нипонятна.
Выбрать всех юнитов игрока (твой игрок) при условии (соответствующий юнит != рабочий) -> приказать (выбранный юнит) идти в (точка твоя) атакуя. Капец как сложно 2 строчки в ГУИ натыкать.
Drakemor_888, Сейчас проверил - карта работает. Скорее всего у тебя варик не патченный и имеет ограничение 8мб на карты. В интернете есть много способов его обойти, у меня кастомный гейм.длл. Кинуть в папку с вариком с заменой. Также можно использовать функционал коннектора Урины бот.
» WarCraft 3 / [JASS] - Буран
» WarCraft 3 / [JASS] - Буран
» WarCraft 3 / Убрать "награду" за убийство иллюзий
Также можно отлавливать смерть юнита, проверять что иллюзия - выкл награду за убийство и запустить таймер в 0.00 сек, который обратно включит награду за убийство.
» WarCraft 3 / Запрет существу атаковать призванных юнитов
Вот простое решение на гуи:
» WarCraft 3 / Вся карта это первое апреля
» WarCraft 3 / Интерфейс в режиме кинематики
» WarCraft 3 / Интерфейс в режиме кинематики
Возможно тебе подойдет интерфейс старкрафта (там есть файлы для синематики). Можно экспортировать из крузеров
» WarCraft 3 / Помогите (ошибка)
Обычный краш варика. Либо бекапы искать, либо смотреть при каких обстоятельствах вызван краш и изучать триггеры, которые могли бы сработать в этот момент.
» WarCraft 3 / Про перенос warhammer 40000: Horus heresy в warcraft III
Ред. IzobretatelBoom
» WarCraft 3 / Как сделать чтобы крипы бежали по указанной линии ?
Событие - каждые 30 сек
Условие
Действие:
TempPoint = центр (твоя область)
Создать юнита ... в TempPoint
RemoveLocation(TempPoint)
TempPoint = центр (твоя область в которую ему надо идти)
Приказать (последний созданный юнит) перейти нападая в TempPoint
RemoveLocation(TempPoint)
» WarCraft 3 / Как накренить декорацию?
» WarCraft 3 / Доисторическое Дерево
» WarCraft 3 / Даммик не кастует способность
» Блог им. human1 / Мои фантазии о событиях после warcraft III
» WarCraft 3 / Изменение типа доступности, замена зданий при строительстве
Ред. IzobretatelBoom
» WarCraft 3 / Как сделать триггерный поджог?
Вот код, карту также прикрепил ниже
» WarCraft 3 / Проседает фпс. Как лечить?
разрабы дауны» WarCraft 3 / Проседает фпс. Как лечить?
Лагает на каких картах? Если непонятные неоптимизированные кастомки, то естественно будет лагать.
» WarCraft 3 / Простой атаки приказ для всех юнитов
» WarCraft 3 / Как закинуть Jass в w3m файл с помощью сторонней программы или языка программирования?
» WarCraft 3 / Есть ли возможность развернуть юнита вокруг своей оси?
» WarCraft 3 / Cruiser Command
» WarCraft 3 / Cruiser Command