Сейчас 19:51:43 Понедельник, 29 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Область лечения (Область для лечения юнитов)
Область лечения
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().

 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Область лечения (Область для лечения юнитов)
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz