XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Ranger21
I love beatiul days XD
offline
Опыт: 13,274
Активность:
а я сделал очень хитро... выбираю всех вражеских юнитов вокруг наших героев... (у меня мультиплеерная мапа) на расстоянии с всю карту... и они нормально ходят...
Честно говоря сам долго мучался и пытался найти более рациональный способ... вроде вышло)))))
Ещё у меня зомбаки терь спавнятся рядом с героями в районе 4000 и ближе... так что настоящее мясо... ))))))
Загрызают не сразу... мобы постепенно поднимают улучшения со временем и становятся крепче... а за каждое улучшение дают больше экспы за моба...
во как)))))
Мне интересно... как менять модель или размер юнита при его улучшении?
Старый 11.03.2009, 11:00
MF
Что-то вокруг не так
offline
Опыт: 26,594
Активность:
ahm, он и в группе остается. Где-то уже это обсуждали. При смерти, по идее, и оттуда и оттуда можно юнита кикнуть.

MF_Andreich добавил:
Ranger21, менять самого юнита.
Старый 11.03.2009, 13:04
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
а я сделал очень хитро... выбираю всех вражеских юнитов вокруг наших героев... (у меня мультиплеерная мапа) на расстоянии с всю карту... и они нормально ходят...
самый худший выариант из всех
Старый 11.03.2009, 13:06
ahm

offline
Опыт: 111
Активность:
Цитата:
Сообщение от Ranger21
а я сделал очень хитро... выбираю всех вражеских юнитов вокруг наших героев... (у меня мультиплеерная мапа) на расстоянии с всю карту... и они нормально ходят...

Честно говоря сам долго мучался и пытался найти более рациональный способ... вроде вышло)))))

Извени, конечно, но это бред. Если не бред, то хоть по продробнее опиши;)
Цитата:
Сообщение от MF_Andreich
ahm, он и в группе остается. Где-то уже это обсуждали. При смерти, по идее, и оттуда и оттуда можно юнита кикнуть.

А можно ссылочку?:-)
Старый 11.03.2009, 15:02
alexkill

offline
Опыт: 18,872
Активность:
вариант с группами оптимальный.
код удаления воина из группы при его гибели:
Код:
function Actions takes nothing returns nothing
   if IsUnitInGroup(GetTriggerUnit(),gr) then // проверка на присутствие воина в группе 
     call GroupRemoveUnit(GetTriggerUnit()) // и его удаление из группы
   endif
endfunction

//===========================================================================
function InitTrig_rem takes nothing returns nothing
    set gg_trg_rem = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_rem, EVENT_PLAYER_UNIT_DEATH )
    call TriggerAddAction( gg_trg_rem, function Actions )
endfunction

В коде:
gr - сформированная заранее группа воинов.
Старый 11.03.2009, 15:11
Ranger21
I love beatiul days XD
offline
Опыт: 13,274
Активность:
Ну незнаю... через массивы или группы это геморно же...
В группе же ток макс 12 мобов... а у меня куча мобов передвигается и каждый раз хз их скок... хотя макс ограничение есть, но получается надо кучу проверок делать и кучу действий для того, чтобы рассортировать по группам созданных юнитов...
И у меня разные юниты атакуют... xD
Старый 11.03.2009, 15:59
SRes
1110101000
offline
Опыт: 9,997
Активность:
А почему не сделать массивом ? Юнит умирает - в массиве его "ячейка" = null, потом проходимся по всем "ячейкам" (конечно, нужна еще переменная "Сколько элементов в массиве"), если какая-то == null - "кладем" туда юнита, если нету "пустых" - "создаем" новую "ячейку", т.е. +1 элемент массива. И там уже извращаемся над ними =)
Старый 11.03.2009, 16:44
MF
Что-то вокруг не так
offline
Опыт: 26,594
Активность:
SRes
Тогда уж при смерти юнита переносим последнего в освободившуюся, последнюю заnullяем и уменьшаем количество юнитов в массиве.
Старый 11.03.2009, 16:53
SRes
1110101000
offline
Опыт: 9,997
Активность:
Это уже по вкусу, слава богу, что мы можем сделать по сути одно и тоже (со стороны обычного геймера,который смотрит на карту "в обортке") разными способами.
Старый 11.03.2009, 17:00
ahm

offline
Опыт: 111
Активность:
Цитата:
Сообщение от SRes
Это уже по вкусу, слава богу, что мы можем сделать по сути одно и тоже (со стороны обычного геймера,который смотрит на карту "в обортке") разными способами.

Суть сути рознь, один код стабильнее, другой лучше оптимизорован, а вследствии затрачивает меньше ресурсов. Обертка,есть обертка, но начинка важнее.Я согласен что есть уйма вариантов написать тотже "Hello‚ world", но каждый может это сделать поразному, в этом и заключается самовыражение программиста.
Цитата:
Сообщение от SRes
А почему не сделать массивом ? Юнит умирает - в массиве его "ячейка" = null, потом проходимся по всем "ячейкам" (конечно, нужна еще переменная "Сколько элементов в массиве"), если какая-то == null - "кладем" туда юнита, если нету "пустых" - "создаем" новую "ячейку", т.е. +1 элемент массива. И там уже извращаемся над ними =)

Хотелось бы узнать, как ты собираешься сопоставить каждому юниту свое место в массиве.В моем случае это не целесообразно, у меня на каждой волне появляетя 10*8*8=640юнитов, а волн около 30-40, по самым скромным подсчетам 30*640=19200.
Допустим идея хороша, но чисто фактически у тебя массив не уменьшается, а сидит в памяти,постоянно увеличиваясь, т.к. ты просто не удаляешь юнит, а перезаписываешь его значение.
Можно конечно при каждой новой волне перезаписывать массив, но с точки зрения оптимизации идея не очень.


Зы: возможно, что-то в моем посте бред, сильно не пинайте, тяжелый день.
Старый 12.03.2009, 23:30
SRes
1110101000
offline
Опыт: 9,997
Активность:
640 юнитов - ужаснейшие лаги, с которыми вар будет их обрабатывать, т.е. для массива (а он ограничивается ~8200) 640 юнитов будет тяжелым грузом, я не думаю, что твой комп сможет вырисовать 640 юнитов вара одновременно, я не думаю что интернет синхронизация вара одобрит 640 юнитов, т.е. она будет тормозить не только сильно, а "офигенно много".
+ Пока ты их создашь (если в один момент времени) я успею попить чаю.
Старый 12.03.2009, 23:41
ahm

offline
Опыт: 111
Активность:
Главное свойство программиста-> лаг преврадить в достоинство, я так и сделал, все пашет;)
Скоро презентую карту)
Старый 14.03.2009, 09:10
Vellear
ху, ху, хуорн!
offline
Опыт: 16,688
Активность:
ahm я бы несказал что JASS это язык програмирования.
Старый 14.03.2009, 11:20
ahm

offline
Опыт: 111
Активность:
Цитата:
Сообщение от Burn to shadow
ahm я бы несказал что JASS это язык програмирования.

INHO: Полноценным его не назовешь, но это так и есть.
Цитата из вики:
Цитата:
JASS (Продвинутый редактор триггеров Warcraft 3) — событийно-ориентированный скриптовый язык программирования, созданный компанией Blizzard Entertainment. Используется в играх, таких как Warcraft и Starcraft. В отличие от триггеров GUI, которые также доступны в редакторе, Jass обладает большими возможностями. Кроме того, существуют специальные программы, которые упрощают работу с Jass-скриптами (Например, JSP). С помощью этих программ можно создавать шаблоны для триггеров, функций и оптимизировать код.
Старый 14.03.2009, 14:10
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 15:11.