Герою отнимается здоровье днем.
У героя 12 игрока должно отниматься здоровье днем,ночью нет. (с 6:00 - утро,ночь - 18:00) Есть специальные зоны,в которых он будет жить днем. Как такое сделать? И юнитами 12-того игрока,если не там они.

Лучший ответ:
Таймер , проверки на текущее время суток + находится ли герой в безопасной области . Если время суток находится в дневном интервале и герой находится вне области - то отнимаешь хп. В противном случае do nothing :)



Просмотров: 770

» Лучшие комментарии


KPOKODIL #1 - 11 месяцев назад 0

Таймер , проверки на текущее время суток + находится ли герой в безопасной области . Если время суток находится в дневном интервале и герой находится вне области - то отнимаешь хп. В противном случае do nothing :)
quq_CCCP #2 - 11 месяцев назад 0
Очень просто, брать всех юнитов на карте подходящих под условие - жив, принадлежит 12 игроку, не здание (ну те кто недолжен терять хп).
Проверять принадлежат ли их текущие координаты некой зоне где хп не снимается, если не принадлежат то наносить урон, так каждую секунду.
Или при выходе из безопасной зоны, юнит добавляется в глобальную группу юнитов, которую перебирает таймер каждую секунду и наносит урон каждому юниту. При входе в безопасную зону, юнит удаляется из этой группы, при смерти тоже удаляй юнита из группы.
При респауне (если это герой), респаунь его в безопасной зоне.
Включать и выключть таймер будешь в зависимости от наступления времени суток.
Daniil33 #3 - 11 месяцев назад 0
На UI
quq_CCCP #4 - 11 месяцев назад 0
Daniil33:
На UI
Чего, чего? Причем тут User Interface?
KPOKODIL #5 - 11 месяцев назад 0
Daniil33, я бы тебе советовал залезть на форум , и покопаться в архивах академии . Там много чего познавательного и полезного для новичка .
quq_CCCP, очевидно, что речь идёт о gui :)
quq_CCCP #6 - 11 месяцев назад 6
Причем тут гуи если он спрашивает как сделать? Если он просит готовый код - это плохая затея,пусть сам разбирается, скинет сюда что у него не получается, хоть сам чуть чуть научится..
Diaboliko #7 - 11 месяцев назад 0
Более костыльный вариант: Днем подвергаем юнитов или отрицательному регену хп или ауре такого регена. Ночью блочим эту ауру игроку - владельцу даммика. Все остальное по аналогии.
ClotPh #8 - 11 месяцев назад 1
Ну кстати GUI - это по идее как раз UI для WE )))
По сабжу: день/ночь отлавливается по текущему игровому времени (если оно не менялось в константах), поищи, тут уже точно ответы были.
Точнее так будет в гуишном варианте:
  • событие - периодический таймер
  • условия для времени дня такие-то
  • действия - твои действия
quq_CCCP #9 - 11 месяцев назад 0
Автор, разобрался? Или еще есть вопросы?
Daniil33 #10 - 11 месяцев назад 0
quq_CCCP:
Автор, разобрался? Или еще есть вопросы?
Потом попробую,времени нет
quq_CCCP:
Автор, разобрался? Или еще есть вопросы?
quq_CCCP:
Причем тут гуи если он спрашивает как сделать? Если он просит готовый код - это плохая затея,пусть сам разбирается, скинет сюда что у него не получается, хоть сам чуть чуть научится..
Сделал,но он не работает. Как отнимать ,хз
прикреплены файлы
avuremybe #11 - 11 месяцев назад 0
Как отнимать ,хз
call SetUnitLife(u, UNIT_STATE_LIFE, GetUnitState(u, UNIT_STATE_LIFE)-n)
Hate #12 - 11 месяцев назад (отредактировано ) 0
Как отнимать ,хз
call SetUnitLife(u, UNIT_STATE_LIFE, GetUnitState(u, UNIT_STATE_LIFE)-n)
даже так триггер не будет работать с таким гениальным условием
quq_CCCP #13 - 11 месяцев назад 0
Для начала создай триггер, с событием время истекло, периодический, никаких условий в него не ставь, изначально триггер должен быть отключен.
Создай новую переменную типа "отряд" (название по вкусу). В действиях триггера, вносишь действие для каждого юнита в группе, сделать действие - нанести урон юниту GetEnumUnit(), сколько урона и какого типа по вкусу.
Потом делаешь второй триггер, у него событие время изменилось, ну и действия включить или выключить первый триггер.
Третий триггер, событие - юнит игрока умирает. Условие юнит находится в группе юнитов (та переменная что ты создал в первом триггере)
Действие - удалить юнита из группы.
Третий триггер - событие юнит выходит из области, условие - юнит принадлежит игроку 12, действие добавить юнита в группу (переменную из первого триггера)
Ну и еще для входа обратно, думаю догадаешься.
Daniil33 #14 - 11 месяцев назад 0
quq_CCCP:
Для начала создай триггер, с событием время истекло, периодический, никаких условий в него не ставь, изначально триггер должен быть отключен.
Создай новую переменную типа "отряд" (название по вкусу). В действиях триггера, вносишь действие для каждого юнита в группе, сделать действие - нанести урон юниту GetEnumUnit(), сколько урона и какого типа по вкусу.
Потом делаешь второй триггер, у него событие время изменилось, ну и действия включить или выключить первый триггер.
Третий триггер, событие - юнит игрока умирает. Условие юнит находится в группе юнитов (та переменная что ты создал в первом триггере)
Действие - удалить юнита из группы.
Третий триггер - событие юнит выходит из области, условие - юнит принадлежит игроку 12, действие добавить юнита в группу (переменную из первого триггера)
Ну и еще для входа обратно, думаю догадаешься.
Ладно,а если сделать так,когда наступает 6:00 ,то игрок 12-тый проиграл? Не убив других героев 11 игроков
quq_CCCP #15 - 11 месяцев назад 0
Есть такое соыбытие - время настало, ну или переодически проверяешь игровое время, больше 6.00 и меньше 17.59 , условие значение в целочисленной переменной меньше 1, дейсвтие - CustomDefeat вроде называется эта функция в гуи, кароче установить поражение игроку 12 и выпнуть его из игры.
PT153 #16 - 11 месяцев назад 0
quq_CCCP:
Для начала создай триггер, с событием время истекло, периодический, никаких условий в него не ставь, изначально триггер должен быть отключен.
Зачем же делать периодический триггер? Не лучше ли сделать периодический таймер?
quq_CCCP #17 - 11 месяцев назад 0
PT153, в гуях? Ок, делай...
Нет если серьезно можно все делать на одном таймере и триггере, но как бы тут гуи ясельного уровня, поэтому надо попроще...
KingMaximax #18 - 10 месяцев назад (отредактировано ) 0
У героя 12 игрока должно отниматься здоровье днем,ночью нет. (с 6:00 - утро,ночь - 18:00) Есть специальные зоны,в которых он будет жить днем. Как такое сделать? И юнитами 12-того игрока,если не там они.
Мне кажется, что вы видели подобное в кампании "Возвращение Короля Мёртвых", где была миссия доставить послание Траллу. Но конце посла с его отрядом ждёт засада нежити. Там как раз был триггер имитации жары пустыни, которое мучает жаждой и медленно снимает здоровье. Но действует это на опр. области.
Это можно сделать периодически, проверяет одно условие, и два триггера, которые переключают друг-друга, а периодический триггер выбирает воинов игрока, уменьшая им здоровье.
Но в вашем случае это только одного героя, ну тут проще Как я говорил два триггера, +триггер отниматель хп с проверкой условной перемененной.
avuremybe:
call SetUnitLife(u, UNIT_STATE_LIFE, GetUnitState(u, UNIT_STATE_LIFE)-n)
Лучше:
call SetUnitLife(u, UNIT_STATE_LIFE, GetWidgetLife(u)-n)