Рассмотрим использование переменных в скриптах. Переменные это своего рода контейнеры для хранения чисел и знаков. Изменим пример используемый в предыдущей статье вывода на экран сообщения Hello World. Для того чтобы использовать переменную нужно написать знак доллара "$" и после него поставить имя переменной. Имя это любое слово или символ. К примеру создадим переменную myvalue и присвоим ей значение 5. И выведем это значение на экран.
строка $myvalue=5 означает что мы резервируем переменную и присваиваем ей значение равное 5. следующая строка выводит сообщение Hello World и через пробел написано имя переменной. Это означчает что на экран будет произведен вывод не слов myvalue а значение переменной. В нашем случае на экране должно появиться сообщение "Hello World 4"
С переменными можно производить различные операции. В первую очередь это математические операции. к примеру попробуем в программе увеличить нашу переменную в двое.
В начале нашего примера мы создали переменную $myvalue и присвоили ей значение равное 5. Далее мы вывели на экран сообщение Beforehands: и значение самой переменной. Следующая строка $myvalue=$myvalue*2 означает, что мы в нашу переменную записываем значение самой же нашей переменной но умноженной на 2. После выполнения команды msg"Afterwards: $myvalue"; На экране появится сообщение Afterwards: 10.
Для облегчения работы с переменными применяют специальную комбинацию математических символов.
++ увеличить значение переменной на 1. += прибавить к значению переменной величину стоящую после данных знаков. -- уменьшить значение переменной на 1. -= отнять от значения переменной величину стоящую после данных знаков.
Пример:
on:start { //Устанавливаем значение переменной 10 (-> 10) $var=10; //Вычитаем из переменной число 3 (-> 7) $var-=3; //Увеличиваем значение переменной на 1 (-> 8) $var++; //Прибавляем к значению переменной саму переменную (-> 16) $var+=$var; //Выводим на экран значение переменной msg $var; }
Вы могли заметить что в скрипте я использую две косые черты //. Они говорят интерпретатору не выполнять команды расположенные после этих символов. Такой способ очень эффективен для вставки комментариев. Если необходимо комментировать несколько строк то используют сначала сочетание символов /* и для окончания комментария */ в скриптах настоятельно рекомендуется использовать подобные комментария, т.к. они облегчают понимание кода.
Локальные и глобальные переменные
Все переменные создаваемые пользователем автоматически являются глобальными. Т.е. переменные написанные в одном скрипте будут доступны и в другом. Но это не всегда удобно. Часто приходится создавать локальные переменные действие которых ограничивается одним лишь скриптом. Рассмотрим пример:
Откройте файл "objects_palms.inf" в папке "mods\Stranded II\sys"
Вставьте следующий скрипт непосредственно под строкой "script=start":
on:hit { $hits++; msg "Hits on the palm: $hits"; }
Сохраните файл и запустите игру. Если игра была уже запущена то перезапустите ее. Создайте карту с несколькими пальмами типа 1 и запустите карту на тестирование.
Теперь подойдите к пальме и нанесите удар (левая кнопка мыши). На экране будет отображаться сообщение Hits on the palm: а далее число которое будет постоянно увеличиваться с каждым ударом. Теперь если мы перейдем к другой пальме и ударим счетчик продолжит увеличиваться.
Если в том же файле добавить еще одну строчку до строки $hits++;
local $hits;
То переменная станет локальной. Если теперь подойти к пальме и ударить ее то счетчик начнет увеличиваться. Перейдя к другой пальме счетчик начнется с нуля.
Временные переменные
В скриптах кроме локальных и глобальных переменных можно использовать временные переменные. Их отличие заключается в том что при загрузке и при сохранении карты они не сохраняются. Эти переменные создаются в момент начала игры и уничтожаются в момент закрытия программы.
Команды вывода
Эта тема, возможно, не фактически принадлежит переменным, но о ней также нужно здесь сказать, потому что команды, которые выдают значения вывода, ведут себя точно так же как переменные. Команды имеющие вывод как правило записываются с круглыми скобками. нормальной переменной заменено значением переменной. Примером может служить команда генерирования случайной величины random(100). Эта команда выводит случайным образом число от 0 до 99. Этот вывод можно записать непосредственно в переменную например $myvalue=random(100) но можно воспользоваться временной переменной. Вот, пример:
on:start { msg random(100); }
В памяти компьютера создалась переменная со случайным значением и команда вывела эту переменную на экран. После использования данной команды временная переменная удаляется т.к. она больше не нужна.
Итог
Скрипты в Stranded II могут использовать локальные и глобальные переменные. Эти переменные должны начинаться со знака доллара "$". Любая переменная может быть сохранена в "savegames". Кроме того существуют временные переменные обслуживающие скрипты в момент вывода на экран сообщений.