Добро пожаловать на форумы Боевого Народа (бывший форум Live.CNews.ru)!

ВАЖНЫЕ ТЕМЫ: FAQ по переезду и восстановлению учеток | Ошибки и глюки форума.
О проблемах с учетными записями писать СЮДА.
Variables - Форумы Боевого Народа
IPB

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
Variables, краткая характеристика и особенности применения.
сообщение 23.6.2010, 9:12
Сообщение #1





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Понятие переменной.
I) Variable (Var) - простая числовая переменная*.
Для использования переменной необходимо добавить её в F3 F9 var.
Раскрывающийся текст



Команды для применения:
1. set_i - вводит значение выбранной переменной, позволяет оперировать с ним числами и другими переменными.
По умолчанию значение переменной = 0
2. cmp_i - условие, позволяющее сравнивать значения переменной с другой переменной или определённым числом.


*Примечание
Характерно то, что параметры могут быть только простыми (в строке только одно число или одна переменная);
К примеру запись
set_i (var1 = 2*var2)
будет распознаваться как var1 = 2


II) Примеры простого применения варов:
Пример №1:
создать вары (v_1 и v_2)

триггер
условия
----
действия
set_i (((v_1)-название вара)=((3)- число))
(То есть вар v_1 = 3)
set_i (v_2 = 2)
set_i (v_1 - v_2)
if (cmp_i (v_1 = 1))
|
-actor_to_waypoint.


Вот несколько конкретных примеров простого применения переменных:
1)как слагаемое
Пример №2
У противника есть техника:
2 Тигра (тег ger_tiger1) 10 четвёрок (тег ger_pzer4) 5 PzIII (тег ger_pzer3)
действия: враг отступает при качественных и количественных потерях.
Примечания: в отличие от простого условия entity учитывается и качественная сторона потерь.
Для создания триггера необходимо ввести переменную (в F9 var). Пусть она будет называться vari_i1)
Теперь о расценке техники.
Пусть
тигр будет стоить 6 пз4 - 4 пз3 - 3
Смысл действий команд в триггере таков:
при подбитии танка к переменной добавляется соответствующее количество единиц (для тигра - 6, пз4 - 4 и т.д.)
тогда триггер будет выглядеть так:
Раскрывающийся текст


однако триггер будет перезапускаться, команды из if - происходить вновь и вновь, потому что сломанный тигр с тегом как
был, так и остался на месте.
Поэтому надо, чтобы при перезапуске триггера команды, сработавшие из-за одного и того же тигра, из-за него не работали вновь.
Следовательно у подбитого тигра надо убрать тег.
Раскрывающийся текст


Теперь об условиях отступления:
С каждым подбитым танком значение вара увеличивается. Допустим, враг потерял 1 PzVI 2 PzIV 3 PzIII
вар (переменная) будет равен 20.
Однако количественные потери могут показаться маловатыми, ведь 20 единиц - это всего-лишь 2 тигра и 2 панцера4, ил 5 пз3 и 1
тигр (с учётом того, что вар будет больше или равен 20), или половина пз4, или какой-нибудь другой вариант.
поэтому можно взять значение вара, при котором произойдёт отступление, равным 26.
То есть когда значение вара будет больше или равно 26, тогда начнёнтся исполнение команд по отходу немцев.
тогда условие отхода if будет выглядеть так:
Раскрывающийся текст

а весь триггер:
Раскрывающийся текст



2)Пример №3
(только для Лиса, в БПО не идёт)
У игрока есть ремкомплект, которым тот пользуется постоянно.Это ,может быть, и нравится игроку, но автору мода не хочется, чтобы
один ремкомплект работал постоянно.
В данном случае вар играет роль счётчика времени, в момент которого идёт починка чего-либо.
Вот - часть "действия":
Раскрывающийся текст

в delete прописан тэг ремкомплекта,вар только один.
Теперь нужно найти правильное условие, и, насколько помнится, оно было одно.
Раскрывающийся текст




Как условие
3)Пример №4
Необходимо, чтобы триггер перезапускался определённое количество раз.
Я думаю, что комментировать тут нечего:
Раскрывающийся текст


4)Пример №5
Необходимо, чтобы в перезапускающемся триггере какое-либо (какие-либо) действие произошло только один раз
Раскрывающийся текст

Тут же, если необходимо, чтобы команда исполнилась на х перезапуск триггера (если х=1, то на первый перезапуск, если 2 - на
второй и т.д.)
Раскрывающийся текст


II)Теперь о самом главном:
насколько вероятна возможность создания триггеров, глобально контролирующих поведение врага?
Скорее всего, равна нулю. Но это не значит, что контролировать поведение отдельных групп нельзя.
Довольно-таки легко создать триггеры, влияющие на простые действия группы,количество которой известно.
Например, сделать вар, отвечающий за мораль группы, и вычитать из него при потерях солдат, офицеров, пулемётчиков, отсутствии
боеприпасов, бронетехники и т.д.
Однако если количество солдат неизвестно?
Значит надо их посчитать. Обьяснение смысла триггеров и сами нормальные (не те, что я выкладывал в теме "Примеры скриптов") триггеры по подсчёту и сравнению будут во втором сообщении.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 24.6.2010, 17:53
Сообщение #2





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Вводная к Части №II
Подсчёт количества солдат игрока.
Каким образом можно точно подсчитать количество юнитов и связать это с переменной, так, чтобы её значение было бы равно
количеству юнитов?
Можно присвоить всем юнитам тэг, тогда
количество юнитов с тэгом будет равно количеству юнитов.
Теперь количество тэгов необходимо сравнить со значением переменной.
Я выбрал более простой путь сравнения и смысл его таков:
солдатам (в данном случае) присваивается тэг (пусть soldati_igroka),
затем у одного солдата с этим тегом тэг отнимается, а к переменной прибавляется 1.
Сколько тэгов отнято, столько солдат и таково значение переменной.
Это значит, что под один if (в результате пришёл к мнению, что лучше switch) нужно вставить команды entity_state (отнимает тэг у одного солдата с тэгом) и set_i.
Проблема заключалась в реализации задуманного, ведь громоздкую систему из 2 триггеров (1-присвоение тэга,2-подсчёт) организовать
сложнее, чем создать один завершённый триггер. Но если все действия поместить в один, возникнут сложности с тем, что триггер перезапускается,
и каждый раз солдатам присваивается тэг.

Раскрывающийся текст
В связи с необходимостью перезапуска триггера количество команд if нужно минимизировать, ведь перезапуск необходим
несколько раз - при подсчёте (пока считает, не должно выполняться сравнение третьей переменной со второй, а для этого пришлось
бы ввести очередную переменную), и при сравнении, с обнулением переменной №2 (если переменную не обнулить перед очередным
подсчётом, то её значение будет увеличиваться на количество живых солдат)


Пришлось вводить ещё одну переменную, ограничивающую постоянный повтор команды, присваивающей тэг всем солдатам игрока до их
подсчёта
В результате получился такой триггер:
Раскрывающийся текст






Кратко:
переменная v_1_ - отвечает за работу команды, присваивающей солдатам тэг.
переменная v_2_ - за подсчёт тэгов.
переменная v_3_ - приравнивается ко второй переменной.Именно её значение равно количеству живых солдат.

Возникнет очевидный вопрос: для чего это надо, и что отсюда использовать?
Вот пример использования триггера: вывод количества солдат на экран (текст в команде objective_progress должен выглядеть так:
%1% - осталось солдат.)
Раскрывающийся текст









Это лишь небольшая часть того, как можно использовать триггер.
Также вполне возможно его применение для улучшения поведения группы.

Теперь о недостатках:
характерная черта триггера - подсчёт по 1 единице. Большее число не подходит.
Из-за этого подсчёт при больших количествах юнитов (при ста, например) отстает от реальности на 25 секунд:
Раскрывающийся текст

Однако с этим недостатком почти удалось справиться. Триггер подсчитывает количество ста солдат за 5 секунд. При желании
можно довести до 2-3 секунд.
В следующем сообщении будут разобраны:
1) триггер по подсчёту солдат в самом совершенном виде, какой у меня есть;
2) триггер по подсчёту количества наших солдат и солдат противника (всё - в одном триггере);
3) триггер, позволяющий контролировать поведение неопределённой изначально по числу группы юнитов в зависимости от потерь;
4) сравнение количества;
5) может ещё что-нибудь, если вспомню.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
МеталлисТ
сообщение 24.6.2010, 20:51
Сообщение #3


Младший сержант
***

Группа: Старожилы
Сообщений: 1611
Регистрация: 13.8.2017
Из: Украина, Николаев
Пользователь №: 111335



Браво!Рассмотри,пожалуйста,пример атаки ИИ с помощью варов.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 24.6.2010, 21:09
Сообщение #4





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Цитата
Рассмотри,пожалуйста,пример атаки ИИ с помощью варов

Хорошо, сделаю пример, примерно 10 немцев на 5 наших солдат (думаю, хватит для начала), где будет учитываться пресловутая "мораль", а так же учет разнообразных факторов.
Параллельно делаю мод, в июле планирую отключиться на месяц, но попробую сделать пример в июне.

Сообщение отредактировал Dudkoff - 24.6.2010, 21:09
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 25.6.2010, 1:11
Сообщение #5





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Dudkoff

Пример бы бы очень кстати smile.gif на форуме конечно понятно, но вдруг, еще, подводные камушки есть ;)
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 25.6.2010, 10:27
Сообщение #6





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Цитата
Пример бы бы очень кстати smile.gif на форуме конечно понятно, но вдруг, еще, подводные камушки есть ;)

А как же, теория - вещь более лёгкая, чем применение её на практике. По применению тех же варов для подсчёта юнитов, например:
Раскрывающийся текст
идея появилась сразу после того, как стало понятно назначение варов,
рассчитана эта идея была за несколько секунд, а воплощена в жизнь - за несколько дней.
триггер пришлось доводить до рабочего состояния раз 20, и тот пример, что был в сообщении №2, являясь вроде бы завершённым, меня устроить не мог из-за отмеченной там же проблемы.
позавчера зародилась идея о том, как сделать
Цитата
1) триггер по подсчёту солдат в самом совершенном виде,

коорый частично был проверен, но это ничего ещё не означает.

Так что постараюсь сегодня выложить примеры
Цитата
1) триггер по подсчёту солдат в самом совершенном виде, какой у меня есть;
2) триггер по подсчёту количества наших солдат и солдат противника (всё - в одном триггере);
3) триггер, позволяющий контролировать поведение неопределённой изначально по числу группы юнитов в зависимости от потерь;
4) сравнение количества;

До июля - сделать пример, а мод, так и быть, отложить до августа.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
МеталлисТ
сообщение 25.6.2010, 22:03
Сообщение #7


Младший сержант
***

Группа: Старожилы
Сообщений: 1611
Регистрация: 13.8.2017
Из: Украина, Николаев
Пользователь №: 111335



Экспериментировал с варами.Создал клонирование пехотинца на вейп через каждые 2 секунды,в конце sеt_і с варом и 1.В другом триггере в условии сmр_і с этим варом и==5.Хотел добиться чтоб он склонировался 5раз,но не работает.Что не так?Цифра 1 в первом считает юниты или количество повторений команд?
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 26.6.2010, 10:05
Сообщение #8





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Цитата
Создал клонирование пехотинца на вейп через каждые 2 секунды,в конце sеt_і с варом и 1

Tриггер должен выглядеть вот так:
условие
сmp_i (вар) <5
действие
actor_to_waypoint
set _i (вар) +1
delay (время, проходящее между появлениями пехотинцев) 2
trigger off
То есть вар тут считает, сколько раз повторяется триггер.
Если расписывать, как он будет работать, то получется вот так:

Раскрывающийся текст
первый раз:
условие
сmp_i (вар) <5
действие
actor_to_waypoint (пошёл первый пехотинец)
set _i (вар) +1 (теперь равен 1)
delay (время, проходящее между появлениями пехотинцев) 2 секунды
trigger off перезапуск

второй раз:
условие
сmp_i (вар) <5
действие
actor_to_waypoint (пошёл второй пехотинец)
set _i (вар) +1 (теперь равен 2)
delay (время, проходящее между появлениями пехотинцев) 2 секунды
trigger off перезапуск

третий раз:
условие
сmp_i (вар) <5
действие
actor_to_waypoint (пошёл третий пехотинец)
set _i (вар) +1 (теперь равен 3)
delay (время, проходящее между появлениями пехотинцев) 2 секунды
trigger off перезапуск

четвёртый раз:
условие
сmp_i (вар) <5
действие
actor_to_waypoint (пошёл четвёртый пехотинец)
set _i (вар) +1 (теперь равен 4)
delay (время, проходящее между появлениями пехотинцев) 2 секунды
trigger off перезапуск

и !

пятый раз:
условие
сmp_i (вар) <5
действие ( команды исполняются поочереди и тут вар ещё равен 4, поэтому команды работают)
actor_to_waypoint (пошёл пятый пехотинец)
set _i (вар) +1 (теперь равен 5, но уже после того, как пошёл солдат)
delay (время, проходящее между появлениями пехотинцев) 2 секунды
trigger off перезапуск


шестой раз:
условие
сmp_i (вар) <5 вар теперь равен 5, следовательно
действие
actor_to_waypoint (пошёл шестой пехотинец)
set _i (вар) +1 (теперь равен 6)
delay (время, проходящее между появлениями пехотинцев) 2 секунды
trigger off перезапуск


Сообщение отредактировал Dudkoff - 26.6.2010, 10:08
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
МеталлисТ
сообщение 26.6.2010, 12:50
Сообщение #9


Младший сержант
***

Группа: Старожилы
Сообщений: 1611
Регистрация: 13.8.2017
Из: Украина, Николаев
Пользователь №: 111335



Не выходит.Все равно цикла нет,повторяется 2 раза,хоть в условии 5
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 26.6.2010, 13:04
Сообщение #10





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Хорошо, сейчас будет пример,
а это
Цитата
1) триггер по подсчёту солдат в самом совершенном виде, какой у меня есть;
2) триггер по подсчёту количества наших солдат и солдат противника (всё - в одном триггере);
3) триггер, позволяющий контролировать поведение неопределённой изначально по числу группы юнитов в зависимости от потерь;
4) сравнение количества;

пока что откладывается.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 26.6.2010, 13:25
Сообщение #11





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Вот, всё работает:
Раскрывающийся текст




сам пример:
23.7z
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
МеталлисТ
сообщение 26.6.2010, 13:36
Сообщение #12


Младший сержант
***

Группа: Старожилы
Сообщений: 1611
Регистрация: 13.8.2017
Из: Украина, Николаев
Пользователь №: 111335



Цитата(Dudkoff @ Суббота, 26 Июня 2010, 13:25:59) *
Вот, всё работает:
Раскрывающийся текст




сам пример:
23.7z

Яндекс не работает,лучше депозит.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 26.6.2010, 19:45
Сообщение #13





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Раскрывающийся текст
А по скринам? тэг есть, картинки есть, вар можно добавить, условие и 4 действия - тоже.
Залью на депозит, если надо.


Что касается
Цитата
1) триггер по подсчёту солдат в самом совершенном виде, какой у меня есть

наметились коррективы:
в условии entities количество юнитов можно сравнивать со значением вара.
Так что вносятся изменения для упрощения триггера.

Сообщение отредактировал Dudkoff - 26.6.2010, 19:48
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 28.6.2010, 14:36
Сообщение #14





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



МеталлисТ http://depositfiles.com/files/rk4ekqc6a

Часть II

Благодаря тому, что количество юнитов можно сравнивать со значением вара,
Раскрывающийся текст

для подсчёта количества юнитов открылись новые перспективы:
теперь подсчёт ведётся не по количеству тэгов, а непосредственно по количеству солдат.
Таким образом убран главный неудобный посредник - тэг.

Раскрывающийся текст
Почему тэг - неудобный посредник?
Вот триггер, почти мгновенно подсчитывающий количество солдат по тэгам:
№ строки в блокноте:
...................... 233 . . {trigger
. 234 {## "seriously_trigger"
. 235 {disabled}
.236 {condition
. .237 }
238 {actions
239 {"if"
240 {condition
241 {type cmp_i}
242 {var "v_1_$"}
... ... ... ... ... ... ... ... ... ...
3434 {"trigger"
3435 {name "seriously_trigger"}
3436 }
3437 }
... ... ... ... ... ... ... ... ... ...
3438 }
Итого: 3205 строк ! С учётом того, что триггер сделан на треть.]

Теперь триггер, созданный с учётом того, что подсчитывать количество юнитов можно и без тэгов:
№ строки в блокноте:
11625 {"апт11"
11626 {condition
11627 }
11628 {actions
11629 {"switch"
11630 {"case"
11631 {condition
11632 {type cmp_i}
11633 {var "м_7_$"}
... ... ... ... ... ... ... ... ... ...
12117 {"trigger"
12118 {name "апт11"}
... ... ... ... ... ... ... ... ... ...
12124 }
Итого: 499 строк. Триггер доведён до конца и работает. Отстаёт по времени от реальности на 0,5 - 1,5 секунды

Как же удалось без качественного ущерба сократить триггер в 6 раз ( а с учётом того, что первый (с тэгами) не завершён
на 60 %, в 19 раз)?


Смысл триггера подсчёта с тэгами:
Раскрывающийся текст
Группа солдат в зависимости от количеcтва подразделяется по тэгам на 10 или 20 подгрупп.
При этом сначала присваивается тэг первым 10 солдатам, потом второй десятке и т.д.
Это значит, что если есть солдаты с тэгом 4 группы, то есть в полном составе солдаты 1, 2 и 3 групп, а к вару прибавляется 30.
Далее идёт подсчёт солдат 4 группы.
Однако не должны выполняться условия "если солдат 3 группы > 0" и т.д., следовательно тэги солдат младших групп необходимо
убирать.
Команды entity_state с tag_remove и занимают основной обьём триггера.

В самом совершенном триггере по подсчёту юнитов без применения тэгов характерна такая же форма подсчёта:
сначала - десятки, потом - единицы.
В данном случае основной объём триггера занимают команды для определения количества десятков .

Смысл триггера такой:
1. Определяется количество десятков солдат игрока, к вару прибавляется соответствующее значение.
2. Подсчитывается количество единиц.
3. Сравнивается значение постоянной переменной и переменной, ведущей подсчёт юнитов.
4. Обнуляются рабочие* вары.

*Рабочими варами считать те вары, что отвечают за исполнение команд.
В примере вар v_6_ является единственным, который таким не является.

Вот сам триггер:
Раскрывающийся текст







теперь объяснение этим, на первый взгляд, непонятным командам:
Триггер состоит из 2 частей:
1 - подсчёт
2 - перезапуск

1)Итак, что необходимо для подсчёта:
а) Количество десятков
б) Количество единиц
Как узнать количество десятков?
Определить, в каком диапазоне десятков находится количество юнитов. Это можно сделать командами
if (entities ( player 1 human not dead) < 100)
|_
if (entities ( player 1 human not dead) >= 90)
|_
Set_i ((m_6_)+90)

И так для каждого десятка
Раскрывающийся текст







С таким обилием команд if (идут с уменьшением на 10) всё должно быть понятно. (если нет, задавать вопросы )

Теперь о единицах.
Подсчёт единиц начинается только после того, как определено количество десятков, поэтому команды, отвечающие за
подсчёт единиц, работают под if с условием (cmp_i (v_2_ =1))
Раскрывающийся текст


об этом - см. далее

Так как подсчёт ведётся в рамках одного case, а количество единиц необходимо считать несколько раз (их может быть одно,
если количество юнитов равно 91 (90 - десяток, единица - сверх десятка), а может быть несколько:
Например 95. Десяток должен считаться один раз. Единица - несколько раз, до тех пор, пока значение вара не станет равным
количеству юнитов)
то команды, отвечающие за подсчёт десятков, должны исполниться один раз до полного перезапуска триггера в default.
Иначе к вару будет постоянно прибавляться определяемое количество десятков.
Таким образом нужно ограничить повтор команд, отвечающих за определение десятков, до перезапуска триггера.
Это делает вар v_2_. В условии if, где вар v_2_ =0, собраны команды, подсчитывающие десятки. Когда количество десятков определено, то команда set _i (v_2_ = 1), стоящая в конце if, блокирует повтор этих команд.
Раскрывающийся текст


То есть когда будет вестись подсчёт единиц, команды, отвечающие за подсчёт десятков, работать не будут, ведь вар v_2_ =1.

Теперь работают только те команды, которые считают единицы.
Тут - простое сравнение:
если (количество юнитов) < (значение вара)
то
вар -1 (чтобы уровнять значения);

если (количество юнитов) > (значение вара)
то
вар +1 (чтобы уровнять значения);

подсчёт единиц ведётся , пока
если (количество юнитов) != (значение вара) != значит "не равен".
Раскрывающийся текст






когда
(количество юнитов) = (значение вара)
Раскрывающийся текст

вар m_7_ приравнивается к 1
Раскрывающийся текст




Так как в case условие m_7_ =0
а вар = 1,
то исполняется не case, а default.

2)Перезапуск - cамая короткая и не менее важная часть триггера.
все команды default собраны под одну "гребёнку" if с условием cmp_i (V_4_=1) - это для лишней безопасности от случайного
перезапуска триггера.
v_4_ =1 при подсчёте единиц.
а) Сравнивается значение постоянного вара v_3_ и рабочего m_6_. вар v_3_ всегда равен количеству юнитов.
б) Тут обнуляются рабочие вары для нормальной работы триггера.
в) Перезапускается триггер.
Раскрывающийся текст


вар v_3_ теперь равен количеству юнитов.
вар m_6_ обнуляется.
вар v_4_ обнуляется.
вар m_7_ обнуляется, иначе невозможен дальнейший подсчёт количества юнитов.
вар v_2_ обнуляется, иначе невозможен подсчёт десятков.
начинает работу event, с него и стартуют триггеры по сравнению количества, иные логические триггеры.
trigger off (полный перезапуск триггера)


Часть II
Вывод количества юнитов на экран.
В предыдущем примере аналогичного триггера использовались всего 2 вара и команда objective_progress.
Данный триггер более совершенен и позволяет прибавлять значения, выводимые на экран, не по 1, а по 10, 4 или 1, в зависимости от разницы между значением вара и цифрой на экране.
Иными словами, значения, выводимые на экран, более актуальны для складывающейся обстановки.
Присутствуют изначально два вара:
v_6_ и v_3_.
v_6_ равен значению, выводимому на экран,
v_3_ - количеству подсчитанных юнитов.
Сравнивается значение варов, и если
Раскрывающийся текст


то учитывается разница между варами.
С изначальными варами работать не рекомендуется (приравнивать, вычитать, прибавлять, особенно с v_3_),
поэтому вводятся два вара. Как видно на изображении, м_1_ = v_6_, м_2_ = v_3_
далее из м_2_ вычитается м_1_ (ведь м_2_, если v_6_ < v_3_, всегда больше м_1_)
а в switch выбирается:
1) больше или равно м_2_ по отношению к 10
Раскрывающийся текст


тогда к вару v_6_ прибавляется 10, как самое минимальное значение
к цифре на экране - тоже 10
Раскрывающийся текст


2)меньше или равно м_2_ по отношению к 3 (второй case)
тогда к v_6_ +1
к objective_progress add 1
3)Иначе, если от 4 до 9, (в default)
прибавляется к v_6_ 4
к objective_progress add 4

Теперь, если v_6_ больше v_3_
Раскрывающийся текст


в третьем set_i вычитается не м_2_ - м_1_, а наоборот, м_1_ - м_2_
сравнение идёт теперь с м_1_
и в аналогичных командах из case и default
выполняется не сложение, а вычитание.
После if (v_6_<v_3_) и if (v_6_>v_3_)
Отдельно ( не в командах if)
идёт команда
trigger off - триггер перезапускается.
Раскрывающийся текст
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 24.7.2010, 18:07
Сообщение #15





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Вот попытка реализовать в игре такие вещи, как перегрев двигателя и изношенность ходовой части (принцип одинаков - при долгом использовании - порегрев, поломка; в случае, если техника не движется - температура двигателя постепенно снижается):
Раскрывающийся текст

Скрипт есть, но он тяжеловат, и на 1 единицу техники приходется 3 вара (для сотни - соответственно 300).
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 17.10.2010, 17:46
Сообщение #16





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Ещё одна забавная вещь, связанная с переменными:
осв1.rar
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 21.10.2010, 10:32
Сообщение #17





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Цитата(Dudkoff @ Воскресенье, 17 Октября 2010, 17:46:59) *
Ещё одна забавная вещь, связанная с переменными:
осв1.rar

открой секрет
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 24.10.2010, 14:02
Сообщение #18





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Цитата(sturmtidhe @ Четверг, 21 Октября 2010, 14:32:04) *
Цитата(Dudkoff @ Воскресенье, 17 Октября 2010, 17:46:59) *

Ещё одна забавная вещь, связанная с переменными:
осв1.rar

открой секрет

Да вещь я тоже хочу. Выложи как ты это сделал пожалуйста.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 24.10.2010, 17:44
Сообщение #19





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



В течение ближайщего дня (или дней) раскрою, как это сделать, а так же все достоинства и недостатки.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 25.10.2010, 18:58
Сообщение #20





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Необходимы:
1. Соответствующие скрипты.
2. Изменения в файле vehicle.inc, которые отрицательно ни на что не повлияют.

Из видео видно, что:
-включение/выключение обеспечивается нажатием reinforcenment'a, который изменяется с "выключить" на "включить", и наоборот.
-оно применяется только для одного юнита или группы юнитов (в этом случае - включение/выключение распространяется на все юниты этой группы). Последнее можно несколько разнообразить, но с усложнением скрипта.
Итак, ПЕРВОЕ - скрипты:
Раскрывающийся текст
Архив со скринами - осв-триггеры.rar

+ скрины с объяснением здесь:
I.
вары

reinsforcenment'ы

эвенты
- вары, эвенты и reinforcenment'ы, используемые тут.

II.
первый триггер - отвечает за непосредственно возникновение визуального эффекта освещения (осв. - далее)
Раскрывающийся текст

Раскрывающийся текст

Раскрывающийся текст

Раскрывающийся текст

Раскрывающийся текст
-
смысл команд - определение того, работает осв. или нет в тот момент, когда происходит команда на его переключение, и действие на переключение в зависимости от того, работает осв. или нет.

III. триггер №2 - отвечает за переключение reinforcenment'a (reinf'a - далее) - т.е. сменяет "выключить" на "включить" и наоборот.
Раскрывающийся текст

Раскрывающийся текст

Раскрывающийся текст

Раскрывающийся текст

Раскрывающийся текст

Раскрывающийся текст

Раскрывающийся текст

Раскрывающийся текст

смысл команд - определение того, работает осв. или нет в тот момент, когда происходит команда на переключение rienf'a, и действие на переключение и переключение rienf'a в зависимости от того, какой rienf включен.
ВТОРОЕ: inc-файл.
Раскрывающийся текст
В скриптах можно заменить (нужно заменить), что есть эффекты, неизвестные до этого момента.
Это (!!!не реклама торговой марки, поймите правильно, сам только сейчас заметил, напечатал как рука пошла) fa2198, fa2188 и т.д.
Эти эффекты отвечают непосредственно за визуальный эффект - свет.
они прописываются в файле .inc, в частности тут - для техники.
Этот файл должен быть в этом моде:
http://xn----8sbbemc3a7aecex.xn--p1ai/foru...showtopic=65593
Перейти в начало страницы
Вставить ник
+Цитировать сообщение

2 страниц V   1 2 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 20.6.2024, 17:12
Консультации адвоката по уголовным делам. Бесплатно. По всей России