ping II/IDEC networks :: std.prog :: INSTEAD программирование | Contacts :: Login |
БАЗА = room { pic = function(s) pr 'pic/ГОРЫ.jpg' --общий фон картинки для этой локации if СЛУЧИЛОСЬ_СОБЫТИЕ then pr ';pic/АЛАРМ.jpg@500,100' --показать поверх общей картинки локации табличку "у нас событие!" end; end; click = function(s, x, y) if x > 500 and x < 700 and y > 200 and y < 30 and СЛУЧИЛОСЬ_СОБЫТИЕ and ГОТОВ_ДИАЛОГ then --клик на табличку отправляет в диалог walk 'НУЖНЫЙ_ДИАЛОГ'; return true; end; end; }Собственно, такая штука. Есть комната. Для иллюстрации происходящего в ней - задана картинка. При срабатывании условия СЛУЧИЛОСЬ_СОБЫТИЕ = true; поверх этой картинки появляется другая (табличка с приглашением запустить некое событие). И если при этом включено условие ГОТОВ_ДИАЛОГ = true; то клик на табличку запускать диалог НУЖНЫЙ_ДИАЛОГ.... [ Read it >> ]
win.col.fg = black win.col.link = #b02c00 win.col.alink = #606060Не влияют на подсветку активных элементов obj, если шрифт их dsc видоизменен при помощи модуля fonts. Вот пример, на котором проводилось тестирование. Это немного видоизмененный пример из репозитория с модулями для stead3... [ Read it >> ]
obj { nam = 'idti'; dsc = function () p ('{',fmt.img'data/idti.png','}'); -- кликабельная картинка кнопки. end; act = function () walk 'e0'; -- переход или любое действие по нажатию на картинку. end; }
fire = function () -- пользовательсяка функция для многократного использования p 'Вы находитесь рядом с источником тепла.'; -- еще здесть могут быть помещены формулы, -- меняющие состояние игры -- статус игрока, комнат и объектов. end; -- room { nam = 'main'; obj = {'лес'}; } -- obj { nam = 'лес'; dsc = 'Вы в лесу, на опушке горит {костёр}.'; act = fire; -- применение пользовательской функции. };... [ Read it >> ]
fire = function () -- пользовательсяка функция для многократного использования p 'Вы находитесь рядом с источником тепла.'; -- еще здесть могут быть помещены формулы, -- меняющие состояние игры -- статус игрока, комнат и объектов. end; -- room { nam = 'main'; obj = {'лес'}; } -- obj { nam = 'лес'; dsc = 'Вы в лесу, на опушке горит {костёр}.'; act = fire; -- применение пользовательской функции. };... [ Read it >> ]
fire = function () -- пользовательсяка функция для многократного использования p 'Вы находитесь рядом с источником тепла.'; -- еще здесть могут быть помещены формулы, -- меняющие состояние игры -- статус игрока, комнат и объектов. end; -- room { nam = 'main'; obj = {'лес'}; } -- obj { nam = 'лес'; dsc = 'Вы в лесу, на опушке горит {костёр}.'; act = fire; -- применение пользовательской функции. };... [ Read it >> ]
obj { nam = 'искать'; state = 1; dsc = function(s) local dsc = { '{> Попытаться исследовать лес, несмотря на холод.^}', '> Лес исследован.{^}' --- !!! вот эта строчка, про нее доклад. }; p(dsc[s.state]) end; act = function (s) p [[Исследовав лес... (длинное описание найденного)]]; s.state = 2; hot = hot - 5; return; end; }Представим, что таких объектов, подобных этому несколько. И если они помещены на сцену, то их dsc располагаются в столбик, так как присутствует символ ^. Почему я сделал '> Лес исследован.{^}' вместо того, чтобы сделать '> Лес исследован.^' ??? Дело в том, что dsc объектов типа obj игнорирует символ ^ если он не помещен в фигурные скобки {}. Возможно, так задумано. Я просто отчитался.... [ Read it >> ]
function round(num, numDecimalPlaces) local mult = 10^(numDecimalPlaces or 0) return math.floor(num * mult + 0.5) / mult end -- obj { nam = 'тепло'; pri = -100; disp = function (s) p ('тепло ', string.format("%.3f", hot),'/', hotmax); end; }Вышеуказанное при вычитании из 24 чисел по 0.6 - при чистом нуле hot выводит -0.000... [ Read it >> ]
p ('тепло ', round(hot,2)); -- округление вывода hot c аргументом 2 по совету Петра.В примере Петра, работало округление round (переменная, 2) при шаге вычитания не более 0.2. Но при шаге вычитания 0.4 округление ...,2 выдает при чистом нуле "-0" (минус ноль). Снимается это установкой избыточного округления ...,3 вместо 2.... [ Read it >> ]
pl.obj:add ’нож’А как добавлять way на сцену? Так?:... [ Read it >> ]