K.A.I.N.48, на самом деле любой язык программирования куда сложнее чем скриптовый язык обливион, ф3, вегаса. Поэтому для того чтобы его изучить и понять, не нужно разбираться в программировании. Правда нужно понимать что в скриптах используется не привычная нам, человеческая логика, а машинная. Т.е. что "сказано", то и будет сделано. Малейшая ошибка, неточность - скрипт не работоспособен или функционирует неправильно.
На самом деле if...endif - это один единый блок, как, например, begin...end. Только необходим он для задания условия, при котором выполнится команда внутри блока. Команды elseif и else - это дополнительные пристройки, "живущие" внутри блока и расширяющие его функциональность. Они не требуют окончания в виде endif, т.к. оно есть у самого блока.
По своей сути, блок:
аналогичен блоку:
Т.е. функционируют они практически одинаково. Разница лишь в написании. Само собой первый вариант более грамотный и, соответственно, предпочтительный. Да и со временем он становится родным и понятным.
K.A.I.N.48 написал(а):Как скрипт работает - проверяется первое условие и если совпало, то скрипт останавливается после endif
А если не совпало проверяется следующее и снова останавливается если совпало. И так далее.
Вот таким же образом функционирует и первый вариант. Только проверка скрипта в обоих случаях не прекращается, а начинается сначала. Но все строчки ниже (т.е. второй и третий вариант) не будут срабатывать, пока совпадает первое условие.
P.S. Сейчас вот подумал... во втором варианте все равно будут проверяться все блоки, так что, не совсем они одинаковые, но на деле чаще всего будут срабатывать аналогичным образом.
Вот пример:
Свернутый текст
1) Допустим, AAA = 1, BBB = 1 и CCC = 1. Начинается проверка AAA. Совпадение, выполнение условия записанного под AAA и скрипт начинает проверяться игрой сначала. Т.е. какими бы ни были значения BBB и CCC, их подблоки не сработают.
2) Допустим, AAA = 2, BBB = 1 и CCC = 1. Начинается проверка AAA. Не совпало, проверка BBB. Совпадение, выполнение условия записанного под BBB и скрипт начинает проверяться игрой сначала.
Со следующим блоком ситуация другая:
В данном случае условие CCC выполнится только если все значения совпадут. Т.е. как двери в какое-то хранилище: пока не откроется предыдущая, не будет возможности открыть следующую.
Чтобы было проще для восприятия, подобные блоки записывают так:
if (AAA == 1)
...
If (BBB == 1)
...
if (CCC == 1)
...
endif
endif
endif
Теперь видно какой if к какому endif относится и как вообще эта "матрёшка" устроена.