updated docs

This commit is contained in:
p.kosyh 2009-10-05 14:33:01 +00:00
parent f7e81bba7b
commit 503f2286dd
2 changed files with 165 additions and 2 deletions

View file

@ -381,6 +381,8 @@ Apart from adding and deleting objects from lists you may switch them on and off
“enable_all()” and “disable_all()” methods works (from 0.9.1) with embedded objects (objects in object).
From version 0.9.1 methods “zap” and “cat” can be used. zap() -- delete all elements. cat(b, [pos]) -- add all elements of list b to current list at position [pos].
== 12. Functions, that return objects ==
In STEAD several functions are defined, that return some frequently used objects. For example:
@ -690,6 +692,16 @@ home = room {
Of couce, “pic” may be a function. This enhaces the developer's capabilities.
If the current scene has no “pic” attribute defined, the “game.pic” attribute is taken. If “game.pic” isn't defined, no picture is displayed.
From version 0.9.2 you can use animated gif files.
From version 0.9.2 graphics can be embedded everywhere in text or inventory with img function. For example:
{{{
knife = obj {
nam = 'Knife'..img('img/knife.png'),
}
}}}
The interpreter cycles the current music defined by the function ”set_music(music file name)”.
For example:
@ -708,8 +720,80 @@ get_music() returns the current track name.
From version 0.7.7 the set_music() function can get an additional parameter — the number of playbacks. You can get the current counter with “get_music_loop”. -1 means that the playback of the current track is over.
From version 0.9.2 the set_sound() function lets to play sound file. get_sound() returns sound filename, that will be played.
== 18. Advices ==
=== Formatting ===
You can do simple text formatting with functions:
txtc() - center align;
txtr() - right align;
txtl() - left align;
For example:
{{{
main = room {
nam = 'Intro',
dsc = txtc('Welcome!'),
}
}}}
You can define text style with functions:
txtb() - bold;
txtem() - emboss;
txtu() - underline;
For example:
{{{
main = room {
nam = 'Intro',
dsc = 'You are in the room: '..txtb('main')..'.',
}
}}}
=== Menus ===
You can do menus in the inventory area, using menu constructor. Menu handler will be called after single mouse click. If handler have no return string the state of game will no change. For example, here is pocket realisation:
{{{
pocket = menu {
State = false,
nam = function(s)
if s.State then
return txtu('pocket');
end
return 'pocket';
end,
gen = function(s)
if s.State then
s:enable_all();
else
s:disable_all();
end
end,
menu = function(s)
if s.State then
s.State = false;
else
s.State = true;
end
s:gen();
end,
};
knife = obj {
nam = 'knife',
inv = 'This is knife',
};
inv():add(pocket);
put(knife, pocket);
pocket:gen();
main = room {
nam = 'test',
};
}}}
=== Player status ===
The engine code is in the stead.lua file. In your game you can redefine any lua function or object, getting whatever your creative concept needs. It is useful to know the peculiarities of the engine work. For example below is an implementation of player status as a text in the inventory, which cannot be picked.
@ -1004,4 +1088,3 @@ TODO
Full list of objects and methods.
Translation: vopros@pochta.ru

View file

@ -373,6 +373,8 @@ knife = obj {
Кроме добавления, удаления объектов из списков вы можете использовать выключение/включение объектов с помощью методов enable() и disable(). Например: knife:disable(). При этом объект knife пропадает из описания сцены, но в последствии может быть опять быть включен, с помощью knife:enable().
Начиная с версии 0.9.1 доступны методы zap и cat. zap() -- обнуляет список. cat(b, [pos]) -- добавляет в список содержимое b на позицию pos.
Начиная с версии 0.9.1 доступны методы disable_all и enable_all, выключающие и включающие вложенные в объект объекты.
== 12. Функции, которые возвращают объекты ==
@ -682,6 +684,14 @@ home = room {
Конечно, pic может быть функцией, расширяя возможности разработчика.
Если в текущей сцене не определен атрибут pic, то берется атрибут game.pic. Если не определен и он, то картинка не отображается.
Начиная с версии 0.9.2 вы можете использовать в качестве картинок анимированные gif файлы.
Начиная с версии 0.9.2 вы можете встраивать графические изображения в текст или в инвентарь с помощью функции img. Например:
{{{
knife = obj {
nam = 'Нож'..img('img/knife.png'),
}
}}}
Интерпретатор проигрывает в цикле текущую музыку, которая задается с помощью функции:
set_music(имя музыкального файла).
@ -701,7 +711,78 @@ get_music() возвращает текущее имя трека.
Начиная с версии 0.7.7 в функцию set_music() можно передавать второй параметр -- количество проигрываний. Получить текущий счетчик можно с помощью get_music_loop. 0 - означает вечный цикл. 1..n -- количество проигрываний. -1 -- проигрывание текущего трека закончено.
Начиная с версии 0.9.2 set_sound() позволяет проиграть звуковой файл. get_sound() возвращает имя звукового файла, который будет проигран.
== 18. Полезные советы ==
=== Форматирование ===
Вы можете делать простое форматирование текста с помощью функций:
txtc() - разместить по центру;
txtr() - разместить справа;
txtl() - разместить слева;
Например:
{{{
main = room {
nam = 'Intro',
dsc = txtc('Добро пожаловать!'),
}
}}}
Вы также можете менять оформление текста с помощью комбинаций функций:
txtb() - жирный;
txtem() - курсив;
txtu() - подчеркнутый;
Например:
{{{
main = room {
nam = 'Intro',
dsc = 'Вы находитесь в комнате '..txtb('main')..'.',
}
}}}
=== Меню ===
Вы можете делать меню в области инвентаря, определяя объекты с типом menu. При этом, обработчик меню будет вызван после одного клика мыши. Если обработчик не возвращает текст, то состояние игры не изменяется. Например, реализация кармана:
{{{
pocket = menu {
State = false,
nam = function(s)
if s.State then
return txtu('карман');
end
return 'карман';
end,
gen = function(s)
if s.State then
s:enable_all();
else
s:disable_all();
end
end,
menu = function(s)
if s.State then
s.State = false;
else
s.State = true;
end
s:gen();
end,
};
knife = obj {
nam = 'нож',
inv = 'Это нож',
};
inv():add(pocket);
put(knife, pocket);
pocket:gen();
main = room {
nam = 'test',
};
}}}
=== Статус игрока ===
Код движка расположен в файле stead.lua. В своей игре вы можете переопределять любую функцию или объект lua, добиваясь того, что нужно для вашего творческого замысла. Кроме того, полезно знать особенности работы движка. Например, ниже представлена реализация статуса игрока в виде текста, который появляется в инвентаре, но не может быть выбран.
@ -994,4 +1075,3 @@ Windows версия (>=0.8.7): Documents and Settings/USER/Local Settings/Appli
TODO
Полный список объектов и методов.