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

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

Ответ
 
Gareth Emery
Passive Progressive^^
offline
Опыт: 9,874
Активность:
Несколько вопросов по триггерам
Сейчас делаю триггерам ИИ компьютеру. Так вот возникло пару вопросов:
  1. Как сделать, чтобы компьютер ходил качаться в определенные места прокачки (области)?
  2. Как сделать счетчик убийств в правом верху экрана?
  3. Как можно сопоставить прокачку компьютера и при этом чтобы периодически совершались рейды на замок врага?
Старый 08.03.2008, 10:58
Nethrez1m
Dat av doe
offline
Опыт: 2,123
Активность:
  1. самый простой вариант - создать лидерборд и периодически обновлять его значения в соответствии с целочисленным массивом в котором будут храниться количество войск, убитых каждым игроком. массив изменять триггером, считающим убийства.
Старый 08.03.2008, 11:22
Gareth Emery
Passive Progressive^^
offline
Опыт: 9,874
Активность:
Можно это наглядно как-то показать?
Старый 08.03.2008, 11:26
sleepw

offline
Опыт: 8,449
Активность:
1.
периодик ивент..
поделить например области на лвлы
тобишь например уровень компа меньше 5 ходит идти качацо в такуюто область есьо больше в такуюто.. ну тут массу идей можно придумать.. смотря как и что у тебя устроено:)

sleepw добавил:
Festert
открой карту
Angel Arena,любую... там есть самый обычный лидербоард
Старый 08.03.2008, 11:27
Gareth Emery
Passive Progressive^^
offline
Опыт: 9,874
Активность:
Да, карта поделена на области, но вот просто я не знаю какими действиями "отправлять" туда компьютера. Мне нужны примерчики :)
Какое нужно действие тут не могу найти что-то:
Событие: Боевая единица повышает уровень
Условие: Hero Level of Triggering Unit больше или равно 5
Действия: ???
Старый 08.03.2008, 11:37
Nethrez1m
Dat av doe
offline
Опыт: 2,123
Активность:
  1. Карту пример в данный момент не могу.
Триггер обновления массива. Создаешь целочисленный массив. Например, Kills[1-12].
Событие - Generic Unit Event - Unit Dies
Условие - Boolean Comparison - Unit type of (Dying Unit) не равно Герой
Действие - Set Variable - Kills[(Player Number(Get Owning Player (Killing Unit)))] = Arithmetic ( Kills[(Player Number(Get Owning Player (Killing Unit)))] + 1 )
Триггер обновления лидерборда. Нужна глобальная переменная, скажем LB_Kills (тип - Доска Лидерства).
Событие - Periodic Event - Every (XX) seconds
Действие - Loop - For each A from 1 to 12
Leaderboard - ConvertPlayerNumber(A) text for (LB_Kills) to Convert Integer to String (Kills[A])
endloop
Триггер создания лидерборда.
Событие - Time Elapsed (0.05 secs)
Действие - Leaderboard - CreateLeaderboard with title (Kills)
Set variable - Set LB_Kills = (Last Created Leaderboard)
Действие - Loop - For each A from 1 to 12
Leaderboard - Add ConvertPlayerNumber(A) to (LB_Kills)
endloop
Leaderboard - Set Item Style for (LB_Kills) to (Hide Icons) and (Show text)
P.S. пишу по памяти, так что вероятны ошибки. Но общий смысл правильный.
Старый 08.03.2008, 11:39
sleepw

offline
Опыт: 8,449
Активность:
Festert
нед..
щас сек настрочу шото.
Старый 08.03.2008, 11:43
YellowStar
poon
offline
Опыт: 15,144
Активность:
sleepw
Переодическое событие тупо.
Лучше тупо добавить к тригеру действия с триггера ( щас скажу как точно это пишеться ) при инилизации и не заморачиваться.
Плюс если тебе надо чтобы в зависимости от уровня ходил. На гуи проверяй уровень и если уровень равен 1-5 то топай сюда если 5-10 то сюда если 10-15 то сюда. Делается в один триггер без всяких переодических действий.
( Триггер > add to trigger queue ) вот такая вроде функция поможет отменить переодическое событие.
Старый 08.03.2008, 12:05
emperio

offline
Опыт: 185
Активность:
народ подскажите есть условие "отряд в радиусе" вместо мне юнита надо поставить переменную, а никакая преременная не ставится ЧЁ ДЕЛАТЬ????
Старый 08.03.2008, 12:18
Nethrez1m
Dat av doe
offline
Опыт: 2,123
Активность:
emperio, лучше создавать новую тему. по вопросу:
создай первый триггер, без событий, но с теми действиями, которые бы ты хотел провести с отрядом, входящим в радиус.
во втором триггере, там где определяется необходимая переменная, после её объявления добавь функцию: "Trigger - Add Action (Unit in range) to (Trigger1)". В этой функции уже можно использовать переменные.
Учти, что после такого добавления триггерно это событие уже не удалить. Поэтому, если это событие должно быть однократным, юзай Jass. Статьи Sergey'я есть в оффлайн базе.
Старый 08.03.2008, 12:41
sleepw

offline
Опыт: 8,449
Активность:
х3 вот шото типа такого:)
мегоаи ^_^

sleepw добавил:
emperio
я непонял шо ты написал О_О
Прикрепленные файлы
Тип файла: w3x ai.w3x (21.9 Кбайт, 16 просмотров )
Старый 08.03.2008, 13:04
Gareth Emery
Passive Progressive^^
offline
Опыт: 9,874
Активность:
Спасибо за примерчики, очень помогло. Теперь только вот не подскажете кто-нибудь как сделать чтобы компьютер бегал по локации в поисках мобов, а не стоял посреди Center Of Region.
Старый 08.03.2008, 15:08
sleepw

offline
Опыт: 8,449
Активность:
ну сморя как у тя там..
если такие же как в примере группки мобов то просто занести области этих группок в массив отослать его в одну область если он там всех перебил и бить больше некого рандомом выбрать одну из массива где есть мобы и отослать тудо:)
Старый 08.03.2008, 15:17
Gareth Emery
Passive Progressive^^
offline
Опыт: 9,874
Активность:
У меня чуть по-другому: область большая, компьютер убивает всех мобов в поле зрения и потом тупо стоит посреди области :((
Старый 08.03.2008, 15:20
Hexus
Looking for a victim
offline
Опыт: 19,166
Активность:
Код:
Событие: every 2 seconds of game time
Условие: Unit не равно (attacking unit)
Unit не равно (attacked unit)
Действие:
Order (unit) перейти, нападая на врагов (random point in (region))

Примерно так
Старый 08.03.2008, 15:21
Nethrez1m
Dat av doe
offline
Опыт: 2,123
Активность:
Цитата:
Код:
Событие: every 2 seconds of game time
Условие: Unit не равно (attacking unit)
Unit не равно (attacked unit)
Действие:
Order (unit) перейти, нападая на врагов (random point in (region))
Примерно так


кошмар.. откуда Attacking Unit в Periodic событии
Старый 08.03.2008, 15:24
Hexus
Looking for a victim
offline
Опыт: 19,166
Активность:
Проверка. твой вариант?
Старый 08.03.2008, 15:27
sleepw

offline
Опыт: 8,449
Активность:
Festert
мб попробовать периодом пикать юнитов в поле зрения героя еси количество пикед юнитов( мечинг кондишн там враги например ) =0 то отослать кудато там..
хотя лучше было бы и прикольней поделить мобов по областям если они у тя не двигаютсЯ)
Старый 08.03.2008, 15:28
Nethrez1m
Dat av doe
offline
Опыт: 2,123
Активность:
Мой вариант - запускать таймеры для групп юнитов. Проверять наличие приказа "attack" у капитана группы (отдельный юнит внутри группы, аттачим его к таймеру). Если такого приказа нет, то есть группа добралась до места назначения, перебив всех по пути - дать новый приказ
Order (unitgroup) перейти, нападая на врагов (random point in (region))
Старый 08.03.2008, 15:33
Gareth Emery
Passive Progressive^^
offline
Опыт: 9,874
Активность:
Вот такой респаун мобов я использую и вот так тупит компьютер когда идет на кач (стоит в центре области и ничего не делает). Посмотрите, может кто-то исправит это в примере. Мне надо чтобы он бегал по локации, а он стоит :(
Прикрепленные файлы
Тип файла: w3x My AI.w3x (34.2 Кбайт, 14 просмотров )
Старый 08.03.2008, 16:54
Ответ

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

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

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

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



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