Сложнее да, но не учтено то, что по этим языкам много уроков, а вот язык Фо3 или Облы нужно изучать самому.
Да и по скриптингу уроков достаточно, один OSFM чего стоит. По сути всё что нужно знать: 1) Типы блоков Begin, 2) Принцип функционирования блока if, 3) Какие бывают переменные. Всё это есть в OSFM, ну а уж более сложные задачи - это творчество. Зависит от смекалки и опыта. Тут уж без копания в чужих скриптах никак.
Ладна чёто я не о том говорю, теперь по делу, возможно ли поменять текстуру глаз при одевании брони ? Ну а когда снимаешь броню, естественно текстура стает стандартной. Возможно ли это ?
Не занимался подобным, но советую посмотреть каким образом ближе к концу Point Lookout игроку меняют причёску на лысину со шрамом.
Теперь попробую понять на практике - для начало например на этом скрипте.
В указанном скрипте в случае выполнения условия "GetCurrentTime >= 22.00 || GetCurrentTime <= 8.00", проверка других условий уже не будет осуществляться. К тому же строчка else не требует условия в виде "GetCurrentTime >= 8.00 || GetCurrentTime <= 22.00", т.к. она подразумевает собой все варианты отличные от упомянутого в блоке if (и всех в вышестоящих блоках elseif, если они имеются) условия. Т.е. нужно писать просто else. Так же для связи "GetCurrentTime >= 22.00" и "GetCurrentTime <= 8.00" нужно использовать не "или" (||), а "и" (&&), чтобы читалось как "время больше или равно 22, но при этом меньше или равно 8", а не "время больше или равно 22 или меньше или равно 8".
В общем, не буду больше акцентировать внимание на недочётах и постараюсь объяснить как нужно делать.
Сначала нужно понять что должно получить в итоге (на выходе). В нашем случае вариант 2:
- дверь открыта;
- дверь закрыта.
Теперь думаем какие проверки нам необходимы.
По логике их 3:
- подходит ли время;
- есть ли в руках оружие;
- надет ли костюм.
Для решения задачи нам помогут такие операторы как || (или) и && (и). Дело в том что и отсутствие костюма и наличие оружия приведут к одному и тому же результату, так зачем нам лишние проверки, когда всё можно заключить в одну?
Получаем в итоге (отдельные условия советую заключать в скобки, для лучшего их восприятия человеком):
Для простоты восприятия, разные блоки if я разукрасил в разные цвета: 1 блок - красный, 2 - синий.
Begin GameMode
If (GetCurrentTime >= 8.00) && (GetCurrentTime <= 22.00) ; первый рубеж, проверяется соответствует ли время
if (player.IsWeaponOut == 1) && (player.GetEquipped Костюм c галстуком == 0) ; второй рубеж, определяет есть ли у игрока оружия и
; одет ли он в нужный костюм
BBBDoorRef.SetOpenState 0
else
BBBDoorRef.SetOpenState 1
endif
else
BBBDoorRef.SetOpenState 0
endif
End
Теперь переводим логику скрипта на русский:
1) На часах нужно время?
а) Да - задать следующий вопрос (следующая проверка)
б) Нет - закрыть дверь
2) Игрок с оружием в руках и НЕ одет в костюм с галстуком?
а) Да - закрыть дверь
б) Нет - открыть дверь
На самом деле в данном случае всё можно ещё сильнее упростить, используя переменную && (и):
Begin GameMode
If (GetCurrentTime >= 8.00) && (GetCurrentTime <= 22.00) && (player.IsWeaponOut == 0) && (player.GetEquipped Костюм c галстуком == 1)
BBBDoorRef.SetOpenState 1
else
BBBDoorRef.SetOpenState 0
endif
End
То есть по русски:
1) На часах нужное время, у игрока нет оружия и он в костюме с галстуком?
а) Да - открыть дверь
б) Нет - закрыть дверь