Это прожевали 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мб на карты. В интернете есть много способов его обойти, у меня кастомный гейм.длл. Кинуть в папку с вариком с заменой. Также можно использовать функционал коннектора Урины бот.
Если варик выдал тебе ошибку, то в чем проблема ее прочесть? Тебе черным по белому написано - нет такой функции Sleep(). В джассе есть функция TriggerSleepAction(), которая триггер на паузу ставит, скорее всего ее имеет ввиду автор. Такое могло произойти если автор на другой версии варкрафта сделал гайд.
Самым простым способом будет в РО в "графика - шкала выбора" поставить минусовое значение. это делается через шифт, может кто не знал. Хпбары будут скрыты у всех юнитов выбранного типа, поэтому он не подходит, если надо удалить хпбар только отдельного юнита.
Используй JNGP, там есть список всех функции с поиском, подсветка кода ну и много других плюх для кодинга. Также доступны всякие дополнения типо vJass'a для еретиков.
Лучше всего делать на 1.26, а еще лучше на ужапи. Почему именно эти версии? - это самые популярные версии на урина бот.
Ред. 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
» WarCraft 3 / Cruiser Command
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
» WarCraft 3 / Как начать писать свой код ИИ?
» WarCraft 3 / Не запускает карты свыше 8мб. по локальной сети.
» WarCraft 3 / Как сделать полоску хп у юнита/здания невидимой?
» WarCraft 3 / Запрос актуальной информация по моддингу warcraft 3 TFT
Ред. IzobretatelBoom
» WarCraft 3 / Запрос актуальной информация по моддингу warcraft 3 TFT
Лучше всего делать на 1.26, а еще лучше на ужапи. Почему именно эти версии? - это самые популярные версии на урина бот.
» WarCraft 3 / ИИ
- если скилл наносит урон (молоток гнома например) - в радиусе от юнита есть враг, то применить к врагу скилл
- если скилл лечит (свет палыча) - в радиусе есть союзник и у союзника меньше 50%хп - применить способность к союзнику.
Ну и так далее к другим скиллам прописывать