Цитата(Quaid @ 27.9.2016, 11:20)
Во блин... для меня с занесением чисел в ячейки это вообще темный лес, но вроде кажется я начал понимать смысл
Вот описание принципа их работы:
"Ячейки памяти
Их нигде нельзя видеть - это математическая операция. Пример: при появлении юнита А в зоне 1 срабатывает сктипт дать залп гаубицей. При повторном появлении юнита А в той же зоне скрипт уже не работает. Для того, чтоб сработал дважды в действии скрипта записываешь занести в ячейку 1 число 1. В условиях следующего скрипта пишешь - юнит А в зоне 1 и число в ячейке 1 равно1, дать залп гаубицей. Это самый простой пример.
---------------------------
Цитата:
Самолет прилетает 2 раза. Так дейчтвие может выполняться только 2 раза?
Ничего удивительного! Ты же сам поставил условие: Выключить...
Ячейки - одна сплошная математика. И НИКАКОГО отношения к Вашим скриптам они не имеют. Их можно складывать, вычитать, увиличивать на произвольное число, сравнивать и пр.
В данном случае будет правильно так:
Скрипт1
юнитов в зоне больше или звенит будильник 1 …
занести в ячейку число 1.
Скрипт2
юнитов в зоне меньше
… занести в ячейку число 0.
Скрипт3
Число в ячейке равно 1.
... Отправить самолеты в зону.
... Ячейку увеличить на 1 (или занести..)
... Завести будильник 1 на...
Скрипт работает столько времени, сколько выполняется заданное в нём условие (если не выключен, тогда один раз). в данном случае если при вылете самоля не увеличивать число в ячейке, то полетят они нескончаемой вереницей Можно, кстати, изменить так:
Скрипт2
Число в ячейке меньше 5.
... Отправить самолеты в зону.
... Ячейку увеличить на 1 (или занести..)
Тогда в зону вылетит 4 самоля.
Что тут сказать в ответ можно?
А зачем математика нужна?
Число в ячейке - это то же самое условие. Например, можно при выполнении целого ряда условий (юнитов в зоне, юнитов в группе, разницы например и пр.) занести в ячейку число и потом не перечислять всю эту массу, а сопоставить выполнение нужных действий с одним лишь значением. Более того, сама структура скриптов станет легче и возможности перекрёстных ссылок многократно возрастут.
Словом. всё зависит от гибкости ума и фантазии.
Бомбить занятый игроком город
Рассмотрим некий условный городок, обозначенный зоной 1. Прежде всего, определимся с его принадлежностью. Для этого пишем такой блок:
1. <юнитов игока 1 в зоне 1 точно 0 и юнитов игока 2 в зоне 1 точно 0 и неверно, что число в ячейке 1 точно 0> => <занести в ячейку 1 число 0>
(ячейка 1 будет у нас индикатором принадлежности города в зоне 1)
2. <юнитов игока 1 в зоне 1 больше 0 и юнитов игока 2 в зоне 1 точно 0 и неверно, что число в ячейке 1 точно 1> => <занести в ячейку 1 число 1>
3. <юнитов игока 1 в зоне 1 больше 0 и юнитов игока 2 в зоне 1 больше 0 и неверно, что число в ячейке 1 точно 2> => <занести в ячейку 1 число 2>
4. <юнитов игока 1 в зоне 1 точно 0 и юнитов игока 2 в зоне 1 больше 0 и неверно, что число в ячейке 1 точно 3> => <занести в ячейку 1 число 3>
Теперь мы всегда знаем:
с1=0 - в городе никого нет
с1=1 - город в руках игрока
с1=2 - в городе бой
с1=3 - город занят врагом
Пример реакции компа на занятие города игроком:
1.<число в ячейке 1 точно 1 и число в ячейке 2 точно 0> =>
<отправить подкреп Х игроку 2 через флаг А в зону 2>
<установить группе поведение...> (отправляем подкреп штурмовать город)
<занести в ячейку 2 число 1> (изменяем исходное условие, чтобы действие выполнилось только один раз в ДАННЫЙ момент)
(ячейка 2 будет у нас индикатором ответных действий)
2.<число в ячейке 1 точно 1 и число в ячейке 2 больше 0 число в ячейке 2 меньше 5> =>
<добавить игроку 2 бомберов 1>
<добавить игроку 2 вылетов для бомберов 1>(дабы не париться с количеством самолей и вылетов в дальнейшем)
<отправить 1 бомбардировщик игрока 2 в зону 1>
<число в ячейке 2 увеличить на 1>(накручиваем счётчик с каждым вылетевшим самолётом)
3.<число в ячейке 1 точно 1 и число в ячейке 2 точно 5> =>
<добавить игроку 2 разведчиков 1>
<добавить игроку 2 вылетов для разведчиков 1>
<отправить 1 разведчик игрока 2 в зону 1>
<завести будильник 1 на 2 мин>(даём время подкрепу и разведчику добраться ло места)
<занести в ячейку 2 число 6>
4.<звенит будильник 1 и число в ячейке 2 точно 6> =>
<добавить игроку 2 истребителей 3>
<добавить игроку 2 вылетов для истребителей 3>
<отправить 3 истребителя игрока 2 в зону 1>
<завести будильник 1 на 20 мин>(даём время компу на разборки)
<занести в ячейку 2 число 7>
5.<звенит будильник 1 и число в ячейке 2 точно 7> =>
<занести в ячейку 2 число 0>(цикл завершён и мы готовы к новой реакции)
Теперь пишем нечто подобное, но для с1=2 (скажем, бомберы у нас в этом случае не летят - не бомбить же своих!) и для с1=3. Тут всё зависит только от Ваших фантазий.
Особо оговорюсь: это пример, и цепочка может быть сколь угодно длинной. Более того, можно запустить дочерние цепи, дробить реакции по незначительным отличиям (% соотношение сил, состояние на других участках и пр.) Можно в условия всех скриптов ввести ещё одно значение - число в ячейке 3 (например, положение в городе Плюевске - тогда кол. скриптов кратно увеличится, но соответственно увеличится и разнообразие прохождения).
В заключение повторюсь - нет предела совершенству!
и в самом начале задать обнуление этих ячеек так
Не обнуление, а занесение в ячейку числа 0!"
http://www.forum.modplanet.net/index.php?s...=2102&st=20