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

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

Ответ
 
jeD_wc3
Изучаю C++
offline
Опыт: 4,038
Активность:
AI - система выбора цели
Я тут пытаюсь сделать систему выбора целей у компа. По триггеру юнит(А) идет атаковать другого юнита(Б). Как возможно реализовать то, чтобы если другой юнит(В) атакует А, то А переключится на В, если у В приоритет( ну или какой либо другой параметр через который будет это определяться ) больше, чем у Б. Дело в том, что я немогу определить юнита Б. Желательно объяснить на гуи. В жассе я полный ноль.
Старый 04.05.2010, 23:01
Doc

offline
Опыт: 63,163
Активность:
Отловить атаку. Прибавить к приоритету. Сравнить. Отдать приказ. Ах да на гуи лучше не пытаться.
Старый 04.05.2010, 23:07
jeD_wc3
Изучаю C++
offline
Опыт: 4,038
Активность:
Цитата:
Сообщение от DoctorGester
Ах да на гуи лучше не пытаться.

Всмысле не получится или утечек много будет? Кстати, одновременно таких операций будет происходить множество и тут понадобятся локальные переменные на жасс. Я прав?
Получается мне остается либо учить жасс, либо делать мозг для врагов на гуи, определяя типы юнитов и т.п.)
Старый 04.05.2010, 23:18
dave_wwid

offline
Опыт: 12,954
Активность:
Забить в базу всех юнитов согласно приоритета ( или взять за приоритет уровень крипа - если больше, то переключиться на атаку другого юнита + героев атакоать приоритетно согласно уровня героя)
Старый 04.05.2010, 23:18
jeD_wc3
Изучаю C++
offline
Опыт: 4,038
Активность:
dave_wwid, это то ясно, просто я не могу отловить юнита с которым сравнивать приоритет. Читай внимательнее.
Старый 04.05.2010, 23:20
dave_wwid

offline
Опыт: 12,954
Активность:
Если для сингла это элементарно- перменные "враг" и "новый враг" сранение герой/.негерой + по уровню (integer comparison) Если новый враг круче он становится врагом и каждый новый атакующий будет новым врагом и будет вновь сравниваться (Это по ивенту A unit is attacked)
Старый 04.05.2010, 23:25
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
Всмысле не получится или утечек много будет?
если чудо произойдет и получится, то утечек будет много
Старый 04.05.2010, 23:25
jeD_wc3
Изучаю C++
offline
Опыт: 4,038
Активность:
bee, проклятые утечки) Но думаю мне не стоит о них волноваться - не получится) тут вроде локалки нужны. Придется жасс учить. Без него я вижу технологичную карту не сделать =)

jeD_wc3 добавил:
dave_wwid, 1) карта не сингл, случаев с определением врога будет много одновременно.
2) я всеже не понимаю, как определить юнита, которого собирается атаковать другой, определённый юнит(то есть "врага" в случае, который ты описал)
Старый 04.05.2010, 23:33
dave_wwid

offline
Опыт: 12,954
Активность:
Ну на 12 героев это можно написать на ГУИ (что однако будет долго и муторно даже при использовании массива глобалок) И утечек при глобалках здесь не будет никаких. Локации не задействованы, группы не создаются 2 массива по 12 элементов- какие там утечки?
Старый 04.05.2010, 23:35
Doc

offline
Опыт: 63,163
Активность:
Проверяй расстояние и отнимай дистанцию атаки. Можешь украсть у меня
Старый 04.05.2010, 23:36
jeD_wc3
Изучаю C++
offline
Опыт: 4,038
Активность:
dave_wwid, сравнение идет не между героями, а между любыми юнитами. Их там... стопицот и
Цитата:
Сообщение от jeD_wc3
я всеже не понимаю, как определить юнита, которого собирается атаковать другой, определённый юнит(то есть "врага" в случае, который ты описал)
Старый 04.05.2010, 23:38
dave_wwid

offline
Опыт: 12,954
Активность:
PS-И я бы кстати тоже поучился как в этом случае с локалками код написать ...
Старый 04.05.2010, 23:38
Doc

offline
Опыт: 63,163
Активность:
1 глобалка для героев в любом случае нужна.
Старый 04.05.2010, 23:43
jeD_wc3
Изучаю C++
offline
Опыт: 4,038
Активность:
DoctorGester, над этим я думал... кароче
Событие: Юнит аткован
Условие: расстояние между атакованным и атакующим юнитом < расстояние между атакованным юнитом и юнитом, атакованным атакованным - дистанция атаки атакованного юнита
Действие: Приказать атакованный юнит атаковать атакующий юнит.

Как обратится к юниту атакованному атакованным?
Старый 04.05.2010, 23:45
dave_wwid

offline
Опыт: 12,954
Активность:
Ну правильно + переменные (атакующий юнит становится "новым врагом" если "враг"
уже есть )
Первый раз атакован - переменная "враг " второй раз атакован - "новый враг" > сравнили оба юнита герой или нет исравнили уровень> враг круче > новый враг становится "врагом". Враг погиб set "враг" no unit Ну это простая схема - тут тебе спецы наверное и через таймеры могут процесс описать (через локальные) Я джассом крайне редко пользуюсь (только если иначе никак) сорри

PS 1 сравнение герой или нет
герой приоритетен
дальше ветка для крипов сраниваем уровень
для героев сравниваем уровеь или опыт

Отредактировано dave_wwid, 04.05.2010 в 23:54.
Старый 04.05.2010, 23:48
jeD_wc3
Изучаю C++
offline
Опыт: 4,038
Активность:
dave_wwid, но атакованный юнит каждый раз меняется. Их тоже стопицот, так что переменные должны быть каждый случай разные =(

DoctorGester, если ты делал на гуи, то как ты обращался к юниту, атакованному атакованным? Возможноли его определить, не занося его в переменную в отдельным триггрере?
Старый 04.05.2010, 23:58
Doc

offline
Опыт: 63,163
Активность:
Я не делаю систем на гуи. Без переменной наверное нет хотя я тебя не очень понимаю.
Старый 05.05.2010, 00:02
jeD_wc3
Изучаю C++
offline
Опыт: 4,038
Активность:
Ну в триггерах можно определить без переменных аттакованного, атакующего, последнего созданного, перключающего и т.д. Можно определить юнита атакованного конкретным юнитом. Чтото типо Юнит атакованный юнитом (жирного надо указать)
Старый 05.05.2010, 00:07
dave_wwid

offline
Опыт: 12,954
Активность:
Цитата:
но атакованный юнит каждый раз меняется. Их тоже стопицот, так что переменные должны быть каждый случай разные =(

Нет только 2 переменных для одного героя "враг" это тот кто самый жирный и которого надо бить и "новый враг" претендент на то чтобы стать самым жирным (который им становится если он круче "врага") Переменная "новый враг" присваивается многократно разным гадам для их сравнения с "врагом"
Старый 05.05.2010, 00:18
jeD_wc3
Изучаю C++
offline
Опыт: 4,038
Активность:
Да но 3ий юнит всегда разный. Получается для каждого нужны свои враги и новые враги, а их стопицот триллионов.
Старый 05.05.2010, 00:24
Ответ

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

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

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

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



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