Область лечения
|
|
MonStar | Дата: Воскресенье, 25 Ноября 2012, 16:39:16 | Сообщение # 1 |
2 уровень
Группа: Пользователи
Сообщений: 32
Награды: 0
Репутация: 6
Блокировки:
| Задача такая, что бы каждую секунду в определенной области находящийся там союзный юнит лечился на некоторое количество жизней и маны, а вражеский получал урон (определение игроков по цвету). Альтернативный вариант колодца, но тогда нужно как-то увеличить его восстановление и уменьшить, что бы он занимал меньше физического места (желательно).
И глобальный вопрос о выборе юнитов, часто использую Triggering unit, или Picked unit, но не могу понять, в каком случае и как определяется, что за юнит в данный момент действует. Например юнит заходит в область, с какого момента он привязывается, к чему привязывается и по какому принципу. Если кто-нибудь поможет в этом вопросе, мне будет значительно легче и буду очень благодарен.
АДМИН МУДАК!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
SirNikolas | Дата: Воскресенье, 25 Ноября 2012, 17:11:21 | Сообщение # 2 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (MonStar) Например юнит заходит в область, с какого момента он привязывается, к чему привязывается и по какому принципу. В текущем потоке функция Triggering unit будет возвращать вошедшего юнита. В общем, можешь считать, что внутри одного запуска триггера. Так будет понятнее.
|
|
|
|
MonStar | Дата: Воскресенье, 25 Ноября 2012, 17:31:56 | Сообщение # 3 |
2 уровень
Группа: Пользователи
Сообщений: 32
Награды: 0
Репутация: 6
Блокировки:
| Quote (SirNikolas) В текущем потоке функция Triggering unit будет возвращать вошедшего юнита. В общем, можешь считать, что внутри одного запуска триггера. Так будет понятнее. А как тогда можно получить юнита, не используя событие. К примеру если событие происходит каждую секунду и мне нужно что-то делать с героем, в зависимости от условия.
АДМИН МУДАК!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
SirNikolas | Дата: Воскресенье, 25 Ноября 2012, 17:33:35 | Сообщение # 4 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Нужно записать героя в переменную.
|
|
|
|
MonStar | Дата: Воскресенье, 25 Ноября 2012, 17:42:04 | Сообщение # 5 |
2 уровень
Группа: Пользователи
Сообщений: 32
Награды: 0
Репутация: 6
Блокировки:
| Quote (SirNikolas) Нужно записать героя в переменную.
Т. е. если герой входит в область, я проверяю его по своим условиям, добавляю в переменную и уже из неё делаю с ним что угодно. При выходе удаляю из переменной. Отлично. Если героев несколько мне создавать массив, я полагаю.
А нет какой нибудь функции, определяющей всех находящихся в одном регионе, что бы я циклом пробежал, проверил условия для каждого и раздал им действия?
p.s. блин, я на Java программирую, этот Jass такой непонятный для меня пока что, но понемногу привыкаю ))
АДМИН МУДАК!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
SirNikolas | Дата: Воскресенье, 25 Ноября 2012, 17:48:07 | Сообщение # 6 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Есть.Code local unit u call GroupEnumUnitsInRect(udg_G, gg_rct_Rect_000, null)//Забиваем в глобальную группу G всех юнитов из Rect 000, без всяких условий (null). loop set u = FirstOfGroup(udg_G) exitwhen u == null call GroupRemoveUnit(udg_G, u) //... endloop На GUI - Отряд - Pick every unit in (<Your rect>) and do (Actions). Посмотри, здесь много интересного.
Добавлено (25 Ноября 2012, 17:48:07) --------------------------------------------- Quote (MonStar) p.s. блин, я на Java программирую, этот Jass такой непонятный для меня пока что, но понемногу привыкаю )) Используй vJASS и cJASS (мануал немного устарел, советую почитать коды других людей, посмотреть новые возможности).
|
|
|
|
MonStar | Дата: Воскресенье, 25 Ноября 2012, 18:11:49 | Сообщение # 7 |
2 уровень
Группа: Пользователи
Сообщений: 32
Награды: 0
Репутация: 6
Блокировки:
| Спасибо, столько всего. Еще один вопрос вне основной темы. Один игрок покупает в таверне героя, а остальные после этого должны стать недоступны. http://warcraft3ft.info/board/kak_sdelat_tavernu_s_gerojami/14-1-0-1155 делал точно по гайду, но проблема в том, что пока герой мертв, можно нанять другого. Хотелось бы закрывать таверну после выбора.
АДМИН МУДАК!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
SirNikolas | Дата: Воскресенье, 25 Ноября 2012, 18:15:44 | Сообщение # 8 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Code constant native SetPlayerTechMaxAllowed takes player whichPlayer, integer techid, integer maximum returns nothing При передаче maximum = 0 будет запрещен найм, при maximum = -1 ограничения будут сняты.
|
|
|
|
MonStar | Дата: Воскресенье, 25 Ноября 2012, 18:22:17 | Сообщение # 9 |
2 уровень
Группа: Пользователи
Сообщений: 32
Награды: 0
Репутация: 6
Блокировки:
| Сори, я не понимаю что дает эта строка и как с ней работать. Лучше снести алтарь игрока рядом с таверной мне кажется, только я пока что не нашел как
АДМИН МУДАК!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
SirNikolas | Дата: Воскресенье, 25 Ноября 2012, 18:25:50 | Сообщение # 10 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Code call SetPlayerTechMaxAllowed(Player(0), 'Hpal', 0) Запретить найм Паладина для игрока 1 (красного). Типы героев можно забить в массив. Тогда проходим по всем игрокам и запрещаем взятого героя, потом проходим по всем героям и запрещаем их для игрока, который только что выбрал.Quote (MonStar) Лучше снести алтарь игрока рядом с таверной, мне кажется, только я пока что не нашел, как Code call RemoveUnit(u)//Мгновенно удалить юнита из игры. call KillUnit(u)//Убить юнита. Проигрывается анимация смерти.
|
|
|
|
MonStar | Дата: Воскресенье, 25 Ноября 2012, 18:34:07 | Сообщение # 11 |
2 уровень
Группа: Пользователи
Сообщений: 32
Награды: 0
Репутация: 6
Блокировки:
| Quote (SirNikolas) call RemoveUnit(u)//Мгновенно удалить юнита из игры. call KillUnit(u)//Убить юнита. Проигрывается анимация смерти. Сами методы я видел и пользуюсь, просто не могу выбрать в качестве конкретного юнита алтарь. В GUI он не отображается, а прямо в код я боюсь пока что сильно углубляться
АДМИН МУДАК!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
SirNikolas | Дата: Воскресенье, 25 Ноября 2012, 19:15:42 | Сообщение # 12 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Если событие - *_UNIT_SELL, то реакцией будет GetBuyingUnit().
|
|
|
|