Reply to s6F2u1C0gk11gk11gk11


Класс объектов

Конструкторы объектов широко использовались в STEAD2. В STEAD3 obj/dlg/room реализованы как классы объектов. Класс объектов удобно создавать для тех случаев, когда поведение создаваемого объекта не укладывается в стандартные объекты obj/room/dlg и вы хотите поменять методы класса. Изменив метод класса, например, вы можете вообще изменить то, как выглядит предмет в сцене. В качестве примера, рассмотрим создание класса "контейнер". Контейнер может хранить в себе другие объекты, быть закрытым и открытым.

====
-- create own class container
cont = std.class({ -- создаем класс cont
    display = function(s) -- переопределяем метод показа предмета
	local d = std.obj.display(s)
	if s:closed() or #s.obj == 0 then
	    return d
	end
	local c = s.cont or 'Внутри: ' -- описатель содержимого
	local empty = true
	for i = 1, #s.obj do
	    local o = s.obj[i]
	    if o:visible() then
		empty = false
		if i > 1 then c = c .. ', ' end
		c = c..'{'..std.nameof(o)..'|'..std.dispof(o)..'}'
	    end
	end
	if empty then
	    return d
	end
	c = c .. '.'
	return std.par(std.space_delim, d, c)
    end;
}, std.obj) -- мы наследуемся от стандартного объекта
====

После этого, вы можете создавать контейнеры так:

====
cont {
    nam = 'ящик';
    dsc = [[Тут есть {ящик}.]];
    cont = 'В ящике: ';
}: with {
    'яблоко', 'груша';
}
====

Когда контейнер будет открыт, вы увидите описание ящика, а также содержимое ящика в виде строки ссылок: В ящике: яблоко, груша. dsc объектов яблоко и груша будут скрыты.

К сожалению, подробное описание классов выходит за рамки данного руководства, эти вещи будут описаны в другом руководстве для разработчиков модулей. А пока, для вашей первой игры, вам не стоит писать свои классы объектов.






Help

Code blocks

====
for i=1,10 do
    print "hello world"
end
====

Quotes

> Lorem ipsum dolor sit amet, consectetur adipiscing elit,
> sed do eiusmod tempor incididunt ut labore et dolore magna

Spoilers

Open text...
%%spoiler%%
Top secret! Till end of message...

Headers and splitters

== Chapter 1
A long time ago in a galaxy far, far away....
----
That's all!