|
|
Contacts :: Login |
-- $Name: модуль fmt при работе box$
require "fmt"
global {
sizeX = 16;
}
--
room {
nam = 'main';
onenter = function ()
place 'vectes';
place 'modum';
end;
}
--
obj {
nam = 'modum';
dsc = '{^^нажать, чтобы изменить шкалу}';
act = function ()
sizeX = rnd (16,255);
return;
end;
};
--
obj {
nam = 'vectes';
dsc = function ()
p (fmt.img('box:' .. tostring(sizeX) .. 'x' .. tostring(32) .. ',red,255'));
p (fmt.img('box:' .. tostring(256-sizeX) .. 'x' .. tostring(32) .. ',blue,255')); -- внедрение числовой переменной в аргумент, пример данный techniX
return;
end;
};
obj {
nam = 'idti';
dsc = function ()
p ('{',fmt.img'data/idti.png','}'); -- кликабельная картинка кнопки.
end;
act = function ()
walk 'e0'; -- переход или любое действие по нажатию на картинку.
end;
}
act = function ()
-- тело текущей функции
fire() -- имя пользовательской ф-ции со скобками
end;
fire = function () -- пользовательсяка функция для многократного использования
p 'Вы находитесь рядом с источником тепла.';
-- еще здесть могут быть помещены формулы,
-- меняющие состояние игры
-- статус игрока, комнат и объектов.
end;
--
room {
nam = 'main';
obj = {'лес'};
}
--
obj {
nam = 'лес';
dsc = 'Вы в лесу, на опушке горит {костёр}.';
act = fire; -- применение пользовательской функции.
};
obj {
nam = 'лес';
dsc = 'Вы в лесу, на опушке горит {костёр}.';
act = function()
p "Вы приблизились к костру.";
Fire() end; -- применение пользовательской функции.
};
fire = function () -- пользовательсяка функция для многократного использования
p 'Вы находитесь рядом с источником тепла.';
-- еще здесть могут быть помещены формулы,
-- меняющие состояние игры
-- статус игрока, комнат и объектов.
end;
--
room {
nam = 'main';
obj = {'лес'};
}
--
obj {
nam = 'лес';
dsc = 'Вы в лесу, на опушке горит {костёр}.';
act = fire; -- применение пользовательской функции.
};
obj {
nam = 'лес';
dsc = 'Вы в лесу, на опушке горит {костёр}.';
act = function()
p "Вы приблизились к костру.";
Fire() end; -- применение пользовательской функции.
};
}: with {
'meal', 'wood', 'fuel';
}:close()
function round(num, numDecimalPlaces)
return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num))
end
obj {
nam = 'вычесть';
dsc = '{Вычесть.}';
act = function ()
hot = round(hot - 0.2, 2) -- округляем!
end;
}
global {
hot = 20;
hotmax = 20;
...
(иные числовые переменные)
}
function test() return 10 end print(test()) -- выведет 10 function test2() return end print() -- выведет пустоту
if s.burned then p "сгорел" end p "не сгорел"
if s.burned then p "сгорел" return -- мы вышли из функции end p "не сгорел"
if s.burned then p "сгорел" else p "не сгорел" end
-- 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 {
'яблоко', 'груша';
}