jeD_wc3
Изучаю C++
offline
Опыт:
4,038Активность: |
AI - система выбора цели
Я тут пытаюсь сделать систему выбора целей у компа. По триггеру юнит(А) идет атаковать другого юнита(Б). Как возможно реализовать то, чтобы если другой юнит(В) атакует А, то А переключится на В, если у В приоритет( ну или какой либо другой параметр через который будет это определяться ) больше, чем у Б. Дело в том, что я немогу определить юнита Б. Желательно объяснить на гуи. В жассе я полный ноль.
|
04.05.2010, 23:01 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Отловить атаку. Прибавить к приоритету. Сравнить. Отдать приказ. Ах да на гуи лучше не пытаться. |
04.05.2010, 23:07 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
jeD_wc3
Изучаю C++
offline
Опыт:
4,038Активность: |
Цитата:
Всмысле не получится или утечек много будет? Кстати, одновременно таких операций будет происходить множество и тут понадобятся локальные переменные на жасс. Я прав? Получается мне остается либо учить жасс, либо делать мозг для врагов на гуи, определяя типы юнитов и т.п.) |
|
04.05.2010, 23:18 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
dave_wwid
offline
Опыт:
12,954Активность: |
Забить в базу всех юнитов согласно приоритета ( или взять за приоритет уровень крипа - если больше, то переключиться на атаку другого юнита + героев атакоать приоритетно согласно уровня героя)
|
04.05.2010, 23:18 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
jeD_wc3
Изучаю C++
offline
Опыт:
4,038Активность: |
dave_wwid, это то ясно, просто я не могу отловить юнита с которым сравнивать приоритет. Читай внимательнее.
|
04.05.2010, 23:20 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
dave_wwid
offline
Опыт:
12,954Активность: |
Если для сингла это элементарно- перменные "враг" и "новый враг" сранение герой/.негерой + по уровню (integer comparison) Если новый враг круче он становится врагом и каждый новый атакующий будет новым врагом и будет вновь сравниваться (Это по ивенту A unit is attacked)
|
04.05.2010, 23:25 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
bee
vjass.optimizer
offline
Опыт:
16,615Активность: |
если чудо произойдет и получится, то утечек будет много |
04.05.2010, 23:25 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
jeD_wc3
Изучаю C++
offline
Опыт:
4,038Активность: |
bee, проклятые утечки) Но думаю мне не стоит о них волноваться - не получится) тут вроде локалки нужны. Придется жасс учить. Без него я вижу технологичную карту не сделать =)
jeD_wc3 добавил: dave_wwid, 1) карта не сингл, случаев с определением врога будет много одновременно. 2) я всеже не понимаю, как определить юнита, которого собирается атаковать другой, определённый юнит(то есть "врага" в случае, который ты описал) |
04.05.2010, 23:33 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
dave_wwid
offline
Опыт:
12,954Активность: |
Ну на 12 героев это можно написать на ГУИ (что однако будет долго и муторно даже при использовании массива глобалок) И утечек при глобалках здесь не будет никаких. Локации не задействованы, группы не создаются 2 массива по 12 элементов- какие там утечки?
|
04.05.2010, 23:35 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Проверяй расстояние и отнимай дистанцию атаки. Можешь украсть у меня |
04.05.2010, 23:36 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
jeD_wc3
Изучаю C++
offline
Опыт:
4,038Активность: |
dave_wwid, сравнение идет не между героями, а между любыми юнитами. Их там... стопицот и
Цитата:
|
|
04.05.2010, 23:38 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
dave_wwid
offline
Опыт:
12,954Активность: |
PS-И я бы кстати тоже поучился как в этом случае с локалками код написать ...
|
04.05.2010, 23:38 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
1 глобалка для героев в любом случае нужна. |
04.05.2010, 23:43 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
jeD_wc3
Изучаю C++
offline
Опыт:
4,038Активность: |
DoctorGester, над этим я думал... кароче
Событие: Юнит аткован Условие: расстояние между атакованным и атакующим юнитом < расстояние между атакованным юнитом и юнитом, атакованным атакованным - дистанция атаки атакованного юнита Действие: Приказать атакованный юнит атаковать атакующий юнит. Как обратится к юниту атакованному атакованным? |
04.05.2010, 23:45 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
dave_wwid
offline
Опыт:
12,954Активность: |
Ну правильно + переменные (атакующий юнит становится "новым врагом" если "враг"
уже есть ) Первый раз атакован - переменная "враг " второй раз атакован - "новый враг" > сравнили оба юнита герой или нет исравнили уровень> враг круче > новый враг становится "врагом". Враг погиб set "враг" no unit Ну это простая схема - тут тебе спецы наверное и через таймеры могут процесс описать (через локальные) Я джассом крайне редко пользуюсь (только если иначе никак) сорри PS 1 сравнение герой или нет герой приоритетен дальше ветка для крипов сраниваем уровень для героев сравниваем уровеь или опыт Отредактировано dave_wwid, 04.05.2010 в 23:54. |
04.05.2010, 23:48 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
jeD_wc3
Изучаю C++
offline
Опыт:
4,038Активность: |
dave_wwid, но атакованный юнит каждый раз меняется. Их тоже стопицот, так что переменные должны быть каждый случай разные =(
DoctorGester, если ты делал на гуи, то как ты обращался к юниту, атакованному атакованным? Возможноли его определить, не занося его в переменную в отдельным триггрере? |
04.05.2010, 23:58 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Я не делаю систем на гуи. Без переменной наверное нет хотя я тебя не очень понимаю. |
05.05.2010, 00:02 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
jeD_wc3
Изучаю C++
offline
Опыт:
4,038Активность: |
Ну в триггерах можно определить без переменных аттакованного, атакующего, последнего созданного, перключающего и т.д. Можно определить юнита атакованного конкретным юнитом. Чтото типо Юнит атакованный юнитом (жирного надо указать)
|
05.05.2010, 00:07 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
dave_wwid
offline
Опыт:
12,954Активность: |
Цитата:
Нет только 2 переменных для одного героя "враг" это тот кто самый жирный и которого надо бить и "новый враг" претендент на то чтобы стать самым жирным (который им становится если он круче "врага") Переменная "новый враг" присваивается многократно разным гадам для их сравнения с "врагом" |
|
05.05.2010, 00:18 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
jeD_wc3
Изучаю C++
offline
Опыт:
4,038Активность: |
Да но 3ий юнит всегда разный. Получается для каждого нужны свои враги и новые враги, а их стопицот триллионов.
|
05.05.2010, 00:24 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|