Инвентарь
Простейший вариант сделать объект, который можно брать -- определить обработчик 'tak'.
Например:
lua
obj {
nam = 'яблоко';
dsc = 'На столе лежит {яблоко}.';
inv = function(s)
p 'Я съел яблоко.'
remove(s); -- удалить яблоко из инвентаря
end;
tak = 'Вы взяли яблоко.';
};При этом, при действии игрока на объект "яблоко" (щелчок мыши на ссылку в сцене) -- яблоко будет убрано из сцены и добавлено в инвентарь. При действии игрока на инвентарь (двойной щелчок мыши на названии объекта) -- вызывается обработчик 'inv'.
В нашем примере, при действии игроком на яблоко в инвентаре -- яблоко будет съедено.
Конечно, мы могли бы реализовать код взятия объекта в ''act'', например, так:
lua
obj {
nam = 'яблоко';
dsc = 'На столе лежит {яблоко}.';
inv = function(s)
p 'Я съел яблоко.'
remove(s); -- удалить яблоко из инвентаря
end;
act = function(s)
take(s)
p 'Вы взяли яблоко.';
end
};Если у объекта в инвентаре не объявлен обработчик 'inv', будет вызван 'game.inv'.
Если обработчик 'tak' вернёт false, то предмет не будет взят, например:
lua
obj {
nam = 'яблоко';
dsc = 'На столе лежит {яблоко}.';
tak = function(s)
p "Оно же червивое!"
return false
end;
};