да действительно, есть лимит 64, связано с событием. но вряд ли у тебя там свыше 64 кокона.
вот так вот выглядит наше событие
TriggerRegisterDestDeathInRegionEvent - функция регистрирует события в регионе с помощью нативки EnumDestructablesInRect. EnumDestructablesInRect - типа что-то пика декора
RegisterDestDeathInRegionEnum - функция перебирает каждую декорацию.
function RegisterDestDeathInRegionEnum takes nothing returns nothing
set bj_destInRegionDiesCount = bj_destInRegionDiesCount + 1
if (bj_destInRegionDiesCount <= bj_MAX_DEST_IN_REGION_EVENTS) then
call TriggerRegisterDeathEvent(bj_destInRegionDiesTrig, GetEnumDestructable())
endif
endfunction
function TriggerRegisterDestDeathInRegionEvent takes trigger trig, rect r returns nothing
set bj_destInRegionDiesTrig = trig
set bj_destInRegionDiesCount = 0 //обнуляем
call EnumDestructablesInRect(r, null, function RegisterDestDeathInRegionEnum)
endfunction
bj_destInRegionDiesCount и bj_MAX_DEST_IN_REGION_EVENTS - целочисленные переменные
bj_destInRegionDiesCount - что-то типа счетчика
bj_MAX_DEST_IN_REGION_EVENTS = 64 максимум 64 декора
RegisterDestDeathInRegionEnum - можно переделать, чтобы снять ограничение. Еще можно при пике декора, в самой EnumDestructablesInRect в фильтр добавлять нужные декорации, но это все исключительно от привычки
not_name, не дичь. знаю что работает, я о другом. какой смысл проверять то какая эта декорация, если ты сам же ее указал? не хочу с тобой спорить, у тебя повышенное ЧСВ, знаю таких
Viktor19, ну так как у тебя на скрине, то смысла не было в условии. Так как ссылаешься на одну декорацию. Короче посмотрел, и понял, что ошибся: GetTriggerDestructable и GetDyingDestructable - одна и та же переменная (GetDyingDestructable можно раскрыть и увидеть). Просто думал, что это как с юнитами GetTriggerUnit и GetDyingUnit
бреее
Есть два события: общее и единичное. Единичное ссылается на одну декорацию, общее действует в регионе. Если общее раскрыть, то можно увидеть, что оно выделяет все декорации и регистрирует (создает) событие на каждую выделенную декорацию. Если создашь триггерно новую декорацию, то надо на нее тоже надо регистрировать событие.
так как GetDyingDestructable не точно (для этого тогда другое событие нужно, общее, то которое "декорация умирает" без ссылки на одну единственную декорацию)
не проще ли сделать изменить одно ли событие на общее "декорация умирает". И точку удали.
посмотри статьи, юзай поиск
по факту ловят применение скила:
событие - юнит применяет способность
условие - применяемая способность == твоя способность
действия - действия твои (много чего можно написать в триггерах, зависиит от фантазии)
Информации мало! Скинул бы пример этого спела. Случаем cjass или vjass не используешь? Есть предположение, что не сохраняется что-то правильно. Нужен jngp и сохранять два раза. Проверяешь карту. Потом закидываешь в архив кампании мб не видит, ибо код не скомпилировался норм, а если и видит, то мб и не запустит. Хотя чего гадать-то
выводи значения переменных на экран, есть такая замечательная функция дебаг BJDebugMsg. хотя это на jass. Попроще на гуи можно просто выводить на экран, в разделе игра там есть эта команда
на ноль делить нельзя (и делитель тоже нулем не должен быть)
может быть так, что переменная не содержит никаких значении. Короче ты не присвоил -ла переменных никаких значении.
у целочисленных переменных значения округляются в меньшую сторону при делении. "6 / 5 = 1,2" или "8 / 5 = 1.6" или "9 / 5 = 1,8", но округляется до 1. Засомневался что-то я в своих словах, поэтому проверил 1-ым способом. Вывел дебагом. В большую сторону не хочет округляться. Покопался по хгм, нашел норм функции округления
и др. неизвестные обстоятельства
все вопросы надо задавать на сайте. не стесняемся и не боимся
Действительно, нужно собрать всех на форуме, кто шарит в программировании, в дизайне и прочее. Кламп, Док, Адольф, Скорп и Диод, Злая Тыща и пусть пилят игру с мощным редактором) оплата 100 рублей в месяц, и это на всю команду. Ну что поддержка. Если каждый школьник вложится в это, мощная финансовая поддержка. Вот почему не объединятся то? таланта много
была тема о том что нативки которые начинают с GroupEnum....могут не выделять москитов в группу xgm.guru/p/wc3/187447#lastpost
правда не все
с помощью нативок GroupEnum... фильтр отсеивает не нужных. Короче берет всех кто попал, и фильтром отсеивает. Если вернет true, то юнита зачисляют в группу, иначе отсеивают
у вас фильтр странный. Владелец GetFilterUnit враг владельца GetEnumUnit. Мне кажется лучше GetEnumUnit в переменную засунуть. Ведь варкрафтоская переменная мб не надежной, так как GetEnumUnit работает только в ForGroup. Неизвестно существует ли ссылка, пуста ли переменная. На кого ты ссылаешься? Существует ли этот юнит? мб его и не сущестует
что бы определять какие таймеры запущены, тебе их нужно где то запоминать, естественно.
Можно запоминать логическую переменную (true), ее можно сохранить по хэндлу кастера. Если будешь юзать скилл, проверяй сначала логическую. Иначе, если ничего не сохранял, выдаст false.
код
local unit u = GetSpellTargetUnit()
local integer id = GetHandleId(u)
local boolean b = LoadBoolean(hash,id,1)
if not b then
call UnitAddAbility( u, 'A06B' )
call SaveBoolean(hash,id,1,true)
endif
Необязательно сохранять логическую. Можно проверять наличие абилки (уровень абилки > 0)
Сохранить таймер по хэндлу кастера, чтобы ссылаться на таймер (когда будешь юзать скилл). Чтобы перезапустить и прочее. Также можно выгружать из хэша в локалку, и проверять локалку пуста ли она и прочее
код
function MyAbility takes nothing returns nothing
local unit u = GetSpellTargetUnit()
local integer id = GetHandleId(u)
local timer t = LoadHandleTimer(hash,id,1)
local integer h = GetHandleId(t)
local real timerX = TimerGetRemaining(t)
if t == null then //если таймер пуст, то ...
set t = CreateTimer() //создаем таймер
set h = GetHandleId(t)
call UnitAddAbility( u, 'A06B' ) //добавляем абилку
call SaveHandleTimer(hash,id,1,t)
call SaveUnitHandle(hash,h,1,u) //запоминаем таймер
call TimerStart(t, 25.00, false, function TimerFunc) //запускаем таймер
elseif t != null then //тут еще уровень абилки можно проверить
call PauseTimer(t)
call TimerStart(t, 25.00 + timerX, false, function TimerFunc)
endif
call SaveUnitHandle(hash,h,1,u) //сохраняем юнита
set u = null
set t = null
endfunction
TimerGetElapsed:- сколько прошло (увеличивается до заданного значения)
TimerGetRemaining - сколько осталось (уменьшается до нуля)
TimerGetTimeout - на сколько запущен таймер (заданное значение не меняется короче)
ZlaYa1000, то что ты скинул, открылось))
я имею в виду тему xgm.guru/p/wc3/189638 (это как к примеру) здесь скрин как открыть? сорри, блин туплю конечно, можно через "открыть изображение" и браузер покажет изображение
не знал, что есть такая кнопочка, если тыкнуть правой кнопкой мыши. все время скачивал
А можно увеличить изображение картинки? Просто пользователи часто скидывают скрины, тем более с широкими размерами. И иногда не видно что там изображено (мелкий текст, например скрин триггеров), поэтому часто приходится скачивать изображение, чтобы у себя на компе рассмотреть. Потом мусор надоедает удалять. Мб сделать так, тыкнул и изображение увеличилось, еще раз тыкнул еще раз увеличил, не скачивая ничего
mishanka122, забыл уже, только сейчас вспомнил. Ты не можешь отследить застройщика по событиям юнит начинает/завершает строительство, не предусмотрено. совсем запутался
а так да можно и через каст отследить, но тебе же нужно здание отловить верно? вот подходит события "юнит начинает/завершает строительства" (описал выше, скинул карту с примером и с отладкой). Но тут надо связать как-то это с кастом (все продумать итд).
дебагом
У игрушечного замка, точнее способность очень похожа на обычную стройку.
приказ, как только получил и побежал строить
событие - юнит получиил приказ в точку
условие - твой ид приказ (обычно четырех-значный равкод здания, а в случае с игрушечным замком, наверное ид-абилки)
начало строительство, как только здание начинает строится
Событие - "юнит начинает строительство" или "юнит входит в рект"
И тут находишь юнита с помощью переменных:
GetTriggerUnit()
GetConstructingStructure() юнит входит в рект на эту переменную не работает
завершает строительство, здание готово
Событие - "юнит завершает строительство"
И тут находишь юнита с помощью переменных:
GetTriggerUnit()
GetConstructedStructure() юнит входит в рект на эту переменную не работает
строителя не реально отследить в конце постройки, ведь нет ссылки. Можно вначале узнать, когда приказ получает на строительство или начинает строительство.
Hanabishi, спасибо. короче скачивал exe-шник и обычный архив Rebuild - не сработало, что-то не запускает USM и не сохраняет норм. скачал архив в режиме совместимости (Rebuild Combat), заработало. У меня семерка.
Использую Jass New Gen Pack 5d Exp2
пробовал использовать xgm.guru/p/wc3/data-manager
сохраняю мапу, выдает кучу ошибок при компиляции, то cjass то vjass
Ред. MpW
» WarCraft 3 / Кокон разрушает, но не выполняет функции
TriggerRegisterDestDeathInRegionEvent - функция регистрирует события в регионе с помощью нативки EnumDestructablesInRect. EnumDestructablesInRect - типа что-то пика декора
RegisterDestDeathInRegionEnum - функция перебирает каждую декорацию.
bj_destInRegionDiesCount - что-то типа счетчика
bj_MAX_DEST_IN_REGION_EVENTS = 64 максимум 64 декора
https://www.xgm.guru/forum/showthread.php?t=59606
https://www.xgm.guru/forum/showthread.php?t=58763
https://www.xgm.guru/forum/showthread.php?t=33682
https://www.xgm.guru/forum/showthread.php?t=53667
Ред. MpW
» WarCraft 3 / Кокон разрушает, но не выполняет функции
Ред. MpW
» WarCraft 3 / Кокон разрушает, но не выполняет функции
Ред. MpW
» WarCraft 3 / Кокон разрушает, но не выполняет функции
попробуй ссылаться на эту переменную
Ред. MpW
» WarCraft 3 / Как использовать способность "Канал" тригерно?
по факту ловят применение скила:
Ред. MpW
» WarCraft 3 / Карты, в которых есть триггеры на джассе не запускаются.
мб не видит, ибо код не скомпилировался норм, а если и видит, то мб и не запустит. Хотя чего гадать-то
Ред. MpW
» WarCraft 3 / Можно ли убрать "сбор" и как это сделать?
Rally-point of unit сборный пункт юнита (точку) можно указывать с помощью триггеров
Ред. MpW
» WarCraft 3 / Как проверить есть ли в области ратуша?
Ред. MpW
» WarCraft 3 / Переменные (практика)
Ред. MpW
» Он вам не клоун! / Брейншторм по контентной стратегии XGM
Ред. MpW
» WarCraft 3 / Важная информация об обновлении 1.28
Ред. MpW
» WarCraft 3 / Объясните функцию(Строчку)
правда не все
» WarCraft 3 / Способность: Похищение Маны\Здоровья
» WarCraft 3 / DGUI и альтернативы.
Ред. MpW
» WarCraft 3 / Стражница Кровавых Эльфов
Ред. MpW
» WarCraft 3 / Не работает триггер выбора
Ред. MpW
» WarCraft 3 / Конфликт нескольких таймеров для юнита
TimerGetRemaining - сколько осталось (уменьшается до нуля)
TimerGetTimeout - на сколько запущен таймер (заданное значение не меняется короче)
Ред. MpW
» Он вам не клоун! / По ux/usability сайта / дизайн
я имею в виду тему xgm.guru/p/wc3/189638 (это как к примеру) здесь скрин как открыть? сорри, блин туплю конечно, можно через "открыть изображение" и браузер покажет изображение
не знал, что есть такая кнопочка, если тыкнуть правой кнопкой мыши. все время скачивал
Ред. MpW
» Он вам не клоун! / По ux/usability сайта / дизайн
Ред. MpW
» WarCraft 3 / Нужны движения юнита через клавиши w,a,s,d
Ред. MpW
» WarCraft 3 / "Игрушечный замок"
а так да можно и через каст отследить, но тебе же нужно здание отловить верно? вот подходит события "юнит начинает/завершает строительства" (описал выше, скинул карту с примером и с отладкой). Но тут надо связать как-то это с кастом (все продумать итд).
Ред. MpW
» WarCraft 3 / "Игрушечный замок"
У игрушечного замка, точнее способность очень похожа на обычную стройку.
условие - твой ид приказ (обычно четырех-значный равкод здания, а в случае с игрушечным замком, наверное ид-абилки)
И тут находишь юнита с помощью переменных:
GetTriggerUnit()
GetConstructingStructure() юнит входит в рект на эту переменную не работает
И тут находишь юнита с помощью переменных:
GetTriggerUnit()
GetConstructedStructure() юнит входит в рект на эту переменную не работает
» WarCraft 3 / Как отследить автоматическое применение способности?
» Hanabishi's Blog / Jass New Gen Pack - Rebuild
» Hanabishi's Blog / Jass New Gen Pack - Rebuild
пробовал использовать xgm.guru/p/wc3/data-manager
сохраняю мапу, выдает кучу ошибок при компиляции, то cjass то vjass