Инструкции ввода/вывода

Следующие инструкции могут использоваться для взаимодействия игры с внешним миром:

inkey (string);
Получает ввод с клавиатуры в данную строку(string). Автоматически активизируется локальная раскладка клавиатуры. Инструкция ждет завершение ввода через [Enter] и только тогда продолжает работу. В процессе ввода не могут выполняться инструкции save/load. Клавишы [Esc], [Вверх], [Вниз], [PgUp], или [PgDn] позволяют прерывать ввод в любое время, при этом будет восстановлено предыдущее содержание строки. Текст ввода редактируется клавишами [BackSpace], [Del], [Right], [Left], [Home] and[End].
Если строка появляется в Тексте, показанном на экране (см. ниже), будет виден ввод вместе с курсором (мигающий символ с кодом #127 из соответствующего шрифта). Если достигнут конец строки (определяется из длины начальной строки при определения string), дальнейший ввод клавиатуры не будет принят. Завершающие пробелы обрезаются. После завершения ввода переменая result будет = 27, если вход был прерван клавишей [Esc], 72 -клавишей [Up], 73 — [PgUp], 80 — [Down] или 81 — [PgDn]. Если ввод завершен клавишей [Enter], result будет 13. Длина строки может быть определена предопределенной переменной str_len.

execute (string);
Выполняет содержание строки как инструкцию. Это может использоваться для отладки, чтобы выполнить инструкции в течение gameplay, изменять значения переменных или параметров и немедленно наблюдать результаты. Пример:
function console() {
inkey(exec_buffer);
if (result==13) { // terminated with RETURN?
execute(exec_buffer); } // will execute the string
}

exec (string1, string2);
Выполняет внешнюю .exe программу, которая должна быть в пределах path. String1 содержит имя программы, string2 — параметры командной строки.

screenshot («name», var);
Захватывает содержимое экрана и сохраняет его как .pcx файл. Имя файла составлено из данного name (макс. 5 символов, в кавычках) плюс число с 3 цифрами ( var) и расширения «.pcx». В 8-битовом режиме файл будет сохранен с 8-битовым цветом, в 16- или 32-битовом режиме- как 24-bit true colour pcx-файл.

inport (var, port);
Данный var получает значение из порта ввода — вывода с адресом, заданным в port. Этой инструкцией можно непосредственно обращаться к аппаратным средствам PC чтобы например управлять внешними устройствами или подключить новые устройства ввода. Обратите внимание: Это работает только под Win 95 или 98. Пример:
var input;
inport(input,372); // set input to the content of port #372 decimal

outport (var, port);
Байт из переменной var будет послан порту с адресом из переменной port. Работает только под Win 95 или 98. Допустимы только значения от 0 до 255.

handle (object);
Возвращает дескриптор объекта. Дескриптор — уникальное число, которое может быть назначено на любую переменную, и внутренне идентифицирует этот объект. Объект — это может быть сущность, действие, строка, bmap, панель, или указатель на них. Дескриптор подобен указателю, но это просто число и поэтому может быть назначен любой переменной или skill’у. После сохранения и загрузки игры дескриптор, полученный этой инструкцией, гарантирует всегда ссылку на тот же самый объект — это не гарантировано для параметров указателя. При использовании дескриптора для получения ссылки на объект он может быть преобразован в указатель следующей инструкцией.

ptr_for_handle (var);
Назначает указателю (pointer) объект, оределяемый данным дескриптором. Пример:
my.skill40 = handle(you); // сохранить дескриптор сущности YOU

you = ptr_for_handle(my.skill40) // вернуть указателю YOU ссылку на объект по сохраненному ранее дескриптору;
Таким образом произвольные объекты могут быть сохранены в skill’ах сущности или в массивах переменных.

select (dataview, field name, string);
unselect (dataview, field name, string);
and_select (dataview, field name, string);
or_select (dataview, field name, string);
Select выбирает все записи данного объекта dataview, если первые символы из строкового поля с данным именем соответствуют данной строке. Если строка пуста то выбираются все записи. Unselect наоборот, снимает выделение (deselects) найденных записей и не изменяет другие. And_select воздействует только на записи, которые уже выбранны, or_select — только на небыбранные записи dataview.

Добавить комментарий