Автор |
Сообщение |
zak-at
Неизвестный
Пришел: 16.01.2009
Сообщения: 2
|
Добавлено: 16 января 2009, 01:17 |
|
|
Есть ли скрипт с помощью которого можно узнать количество монстров на карте? Или по заданному монстру определить, сколько раз он встречается на карте. Заранее спасибо. |
|
|
Снайпер
Зеленый гипатский зануда
Пришел: 18.01.2004
Сообщения: 3420
Откуда: Кызыл
|
Добавлено: 16 января 2009, 03:45 |
|
|
Добрый день. К сожалению, такого скрипта нет. Правда, его можно написать :)
Код: | GlobalVars(
//...
All : group,
Alive : group,
monster : object,
count : float,
//...
)
DeclareScript AllMonsters()
Script AllMonsters
// Скрипт пихает в группу All всех монстров на карте, кроме принадлежащих игроку 0
(
if
(
)
then
(
KillScript()
GroupAdd(All, GetPlayerUnits(1))
GroupAdd(All, GetPlayerUnits(2))
GroupAdd(All, GetPlayerUnits(3))
//...
GroupAdd(All, GetPlayerUnits(31))
For(monster, All)
(
AddObject(All, GetObject(Mul(IsAlive(monster),GetObjectId(monster))))
)
count = GroupSize(All)
)
)
WorldScript
(
AllMonsters()
ConsoleString("Hello, moto! Count of monsters on map: ")
ConsoleFloat(count)
) |
Не самый изящный по ряду причин способ - но уж точно даст всех монстров на карте. С типами сложнее - для игры они все едины, и без специальных скриптово-мобовых извращений узнать тип монстра не получится Извращения - это фильровать монстров при создании карты по диапазонам ID, игрокам, координатам... _________________ Я желаю всем счастья! |
|
|
Cheater
Привратник
Пришел: 08.01.2002
Сообщения: 378
Откуда: Russia
|
Добавлено: 16 января 2009, 04:21 |
|
|
Вообще то некоторые юниты на карте могут быть у игрока 0, не только персонажи. Пятачок.
То есть, игрока 0 тоже надо считать, за минусом GroupSize(Heroes).
В WorldScript надо в начале Sleep(2) ставить.
Как я заметил, все запущенные скрипты выполняются параллельными потоками одновременно.
Это значит, что при запуске
AllMonsters()
ConsoleString("Hello, moto! Count of monsters on map: ")
ConsoleFloat(count)
Когда выполнятся ConsoleFloat(count), к этому моменту AllMonsters() может еще не завершится полностью.
Поэтому надо две последние команды ConsoleString и ConsoleFloat вставить не в WorldScript, а в конце AllMonsters. |
|
|
zak-at
Неизвестный
Пришел: 16.01.2009
Сообщения: 2
|
Добавлено: 16 января 2009, 20:05 |
|
|
Ребята, большое спасибо. |
|
|
Снайпер
Зеленый гипатский зануда
Пришел: 18.01.2004
Сообщения: 3420
Откуда: Кызыл
|
Добавлено: 16 января 2009, 23:16 |
|
|
Cheater, совершенно верно. Не учёл многопоточность, как обычно. _________________ Я желаю всем счастья! |
|
|
|
Вы не можете создавать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы Вы можете скачивать выложенные файлы
|
Часовой пояс: GMT +4:00
|
|