RSS
Pages: 1 2 3 4 5
[>] Re: Очистка всего и вся, полный рестарт игры
std.prog
Wol4ik(syscall,22) — Wol4ik
2017-08-10 08:43:24


p.s. выкладывал только что код с красивым разбиением и отступами как ты советовал, но в сообщении все отступы с'елись и все ушло влево. (Редактирую и пишу на планшете, редактор Jota++).

[>] Re: Очистка всего и вся, полный рестарт игры
std.prog
Andrew Lobanov(tavern,1) — Wol4ik
2017-08-10 10:27:56


Wol4ik> p.s. выкладывал только что код с красивым разбиением и отступами как ты советовал, но в сообщении все отступы с'елись и все ушло влево. (Редактирую и пишу на планшете, редактор Jota++).

Потому что код должен обрамляться строками, состоящими из "====", а не "--".

[>] Re: Очистка всего и вся, полный рестарт игры
std.prog
Wol4ik(syscall,22) — Andrew Lobanov
2017-08-10 16:03:28


Peter> А так, смотри сам. При вставке кода используй 4 символа =, примерно так:


Да, спасибо, теперь понял. Пётр говорил, но я тогда не так понял (что это именно про вставку в сообщение). Буду знать. Может шпаргалку повесить? И про спойлеры в game. например тоже, а то сообщения рано или поздно утопятся новыми и кто не в курсе опять будет спрашивать одно и тоже. Вообще, я рад здесь находиться, и поучаствую материально по силам.

[>] Re: Очистка всего и вся, полный рестарт игры
std.prog
Peter(syscall,1) — Wol4ik
2017-08-10 17:31:04


> Может шпаргалку повесить?
А как ты сюда пишешь? У меня прямо под кнопкой отправить целый раздел ПОМОЩЬ.

Ну и снова не правильно.

[>] Re: Очистка всего и вся, полный рестарт игры
std.prog
Wol4ik(syscall,22) — Peter
2017-08-10 17:54:49


Пишу ответить (символ повернутой стрелочки) или новое сообщение. У меня мобильная версия.

[>] Re: Очистка всего и вся, полный рестарт игры
std.prog
Wol4ik(syscall,22) — Wol4ik
2017-08-10 17:56:43


P.S. Ааааа. Вижу. При создании нового сообщения внизу справка, я ее просто не видел, так как не прокручивал вниз, а просто писал в окне ввода. Прошу прощения за невнимательность.

[>] Re: Очистка всего и вся, полный рестарт игры
std.prog
Peter(syscall,1) — Wol4ik
2017-08-10 17:57:30


> Пишу ответить (символ повернутой стрелочки) или новое сообщение.
Вот проскроллируй вниз до самого конца. На странице, где пишешь текст. Там подсказка.

[>] События точскрина в INSTEAD
std.prog
Peter(syscall,1) — All
2017-08-12 14:39:51


Обновил демку модуля finger. Находится демка тут:
https://github.com/gl00my/stead3/tree/master/tests/fingers

Если что, спрашивайте.
Обычно модуль не нужен, так как нажатия на экран ловятся и модулем click, но для аркад и поддержки одновременного нажатия на экран в нескольких местах -- пригодится модуль finger.

[>] Синтаксис работы с way
std.prog
Wol4ik(syscall,22) — All
2017-08-15 16:38:00


Вопрос про то, как кодом добавлять и убирать со сцены переходы в зависимости от условий. Вот есть прямое добавление в инвентарь предмета
pl.obj:add ’нож’
А как добавлять way на сцену? Так?:
way():add 'локация5'

p.s. и еще вопрос, из учебника не совсем понял, как любое прямое стоковое значение dsc/way представлять в виде переменной? Например
global {
        rrt = 'локация5';
        }

room   {
        nam = 'локация4';
        way = { ..... здесь как-то должно быть значение переменной rrt....?????}
        }
========

[>] Re: Синтаксис работы с way
std.prog
Peter(syscall,1) — Wol4ik
2017-08-15 17:20:23


> А как добавлять way на сцену?
В way может быть сама комната, и в этом случае можно просто добавить саму эту комнату:

ways():add 'локация'
Но есть и другие способы. Во первых, вместо добавления-удаления, можно делать open/close или disable/enable локации:

room {
    nam = 'дом';
...
}:close() -- закрытый дом

room {
    nam = 'main'
    way = { 'дом' }; -- переход невидим
}
где то в коде:

open 'дом' -- открыли дом -- появился переход

И, наконец, можно использовать path:

way = { path { nam = '#дом', 'В дом', 'дом'}:disable() };  -- выключенный переход

enable 'вдом' -- включили переход.

Можно еще создавать path на лету new и добавлять их... Но это лишнее...

Насчет переменных, не совсем понял вопрос, но вот варианты:

a = path('Выход', 'exit')
И вставляем везде где хотим:

way = { a };
Еще вариант:

exitroom = room {
    nam = 'exit';
....
}
И вставляем где хотим:
way = { exitroom };

В твоем примере с rtt, просто везде в момент загрузки игры в way вставится слово 'локация5', если это то, что тебе нужно - можно и так. Но изменение переменной rtt ничего не изменит в уже созданных комнатах.

[>] Re: Синтаксис работы с way
std.prog
Wol4ik(syscall,22) — Peter
2017-08-15 20:44:36


Спасибо! Ответы исчерпывающи.

[>] Докладываю
std.prog
Wol4ik(syscall,22) — All
2017-10-07 21:55:26


v 3.1.2
При ошибках в расстановке круглых скобок синтаксис сыпется не только в случае с "наружным" кодом типа room {}, но и когда забыта вторая скобка в строковом значении, правильно выделенном знаками '' . Пример
obj {
	nam = 'уйти1';
	dsc = '{^> Выбраться наружу.'; -- вторая фигурная скобка отсутствует.
...
... }
При запуске игры сообщений об ошибке синтаксиса нет, как если бы это было в наружном коде (описание room или obj), но сам факт перехода на сцену, куда помещен такой объект приводит к зависанию игры (под Windows). Что снимается только закрытием этого окна.

[>] p.s. еще
std.prog
Wol4ik(syscall,22) — All
2017-10-08 07:06:30


Вопрос вот в чём, что я делаю не так во здесь. У меня есть глобальная переменная, которая меняется от событий с объектами и на сценах - hot. hotmax - тоже глобальная переменная, но проблема не в ней. Изначальное значение hot задается перед игрой и оно не равно нулю. Допустим, = 20. hotmax тоже 20. Их значение отображается постоянно в инвентаре при помощи объекта Статуса тепла.

obj {
	nam = 'тепло';
	pri = -100;
	disp = function ()
		  p ('тепло ', hot,'/', hotmax);
	       end;
}
У меня много что на hot воздействует, но при вычитании десятичных дробей из hot (например hot = hot - 0.2) всё идет и отображается хорошо, но между нулём и единицей, а особенно когда вычитание ведёт к hot к чистому нулю - hot начинает отображаться в инвентаре некорректно. Измучившись в поисках своей ошибки, я создал объект который КОНТРОЛИРУЕМО и прозрачно вычитает из hot дробные значения. И положил его на сцену.
obj {
	nam = 'вычесть';
	dsc = '{^> Вычесть.}';
	act = function ()
			hot = hot - 0.2;
		  end;
}
Он имитирует падение тепла персонажа по нажатию. Вычитание и отображение hot в инвентаре происходит корректно пока не достигает единицы. Т.е. (19.8 ... 19.6 ... 19.4 ... ... 1.2 ...). Далее, при вычитании из единицы отображается уже число в каком-то некрасивом длинном виде и неточно. пишу в порядке убывания:
1.2 - норм. вычитаю еще 0.2
1 - норм. вычитаю еще 0.2
0.80000000000004- уже не норм. вычитаю еще 0.2
0.60000000000004- уже не норм. вычитаю еще 0.2
0.40000000000004- уже не норм. вычитаю еще 0.2
0.20000000000004- уже не норм. вычитаю еще 0.2
3.7581049383562e-014 - не норм.

Это касается случаев не только с десятыми, но и с сотыми (то есть при вычитании 0.02). В чём моя ошибка, что я сделал не так? Я хочу, чтобы, когда вес предметов (при их отсутствии) был равен нулю, то и объект статуса выводил ноль.

[>] Re: p.s. еще
std.prog
Wol4ik(syscall,22) — Wol4ik
2017-10-08 07:23:21


п.с. При многократном вычитании из целого по 0.5 - Всё отображается корректно и адекватно начинает уходить и отображаться в отрицательных значениях.
2
1.5
1
0.5
0
-0.5
-1
и т.д. всё нормально в общем.
----
Но уже при вычитании 0.4 проблемы (начал последовательно вычитать из двадцати, чтоб к нулю всё было ровно).
20
19.6
19.2
...
...
1.2
0.8
0.4 - далее вычитаю из этой оставшейся 0.4 еще 0.4 и по идее должен получиться чистый ноль, но следующее значение такое...
4.1078251911131

Возможно я не знаю всех свойств переменных и выбрал не тот тип.
У меня она задается так
global {
        hot = 20;
        hotmax = 20;
        ...
        (иные числовые переменные)
        }

[>] Вот. сделал отдельный код для запуска, прошу проверить непосредственно в игровом режиме
std.prog
Wol4ik(syscall,22) — All
2017-10-08 07:46:31


Нажимать придется подольше, идти с 20 по кусочкам в 0.2, и я бы сделал не с 20, а с 2-х, чтобы облегчить тест программы, но обнаружил, что если изначальное число не 20, а например 2 или 3, то характер некрасивого отображения числа в инвентаре меняется. Даю полный текст файла main3.lua
-- $Name:Программа теста дробей$
-- $Version: 0.1$
-- $Author: Wol4ik$

require "fmt";

global {
             hotmax = 20;
             hot = 20;
       }
--
obj {
	nam = 'вычесть';
	dsc = '{Вычесть.}';
	act = function ()
			hot = hot - 0.2;
		  end;
     }
--
obj {
	nam = 'тепло';
	pri = -100;
	disp = function (s)
				p ('тепло ', hot,'/', hotmax);
		   end;
	}
--
room {
		nam = 'main';
		onenter = function (s)
					pl.obj:add 'тепло'; -- помещение в инвентарь статуса тепла.
				  end;
		decor = [[Для уменьшения тепла на 0,2 нажать на "вычесть".]];
		obj = {'вычесть'};
      }
-- конец кода.

[>] Округление чисел в Lua
std.prog
Peter(syscall,1) — Wol4ik
2017-10-08 08:24:33


Это "фича" Lua. Если нужно отображать с заданной точностью числа, придется их округлять при вычислении, или при выводе.
Примеры функций округления тут:
http://lua-users.org/wiki/SimpleRound

Я взял одну из них и немного поменял код.
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;
     }

[>] Re: Докладываю
std.prog
Peter(syscall,1) — Wol4ik
2017-10-08 08:25:35


> При ошибках в расстановке круглых скобок синтаксис сыпется не только в случае с "наружным" кодом типа room {}, но и когда забыта вторая скобка в строковом значении, правильно выделенном знаками ''

Спасибо, изучу!

[>] Re: Докладываю
std.prog
Peter(syscall,1) — Wol4ik
2017-10-08 08:45:30


Wol4ik, я исправил в git, я очень прошу обновить *.lua файлы из каталога stead3 и работать уже с ними.

Конкретно это исправление вот:
https://github.com/instead-hub/instead/commit/61d4e10b2ce2719bd17381a71bbd21060ebb6350

Теперь не должен зависать, а должен показать фрагмент текста с непарной {

[>] Re: Докладываю
std.prog
Wol4ik(syscall,22) — Peter
2017-10-08 09:27:15


Пётр, спасибо. Всё сделал. И то, и то заработало, как надо.

[>] Делюсь
std.prog
Wol4ik(syscall,22) — All
2017-10-08 19:57:42


...в продолжение выше опубликованных сообщений. Если идет работа с выводом дробной переменной, то я понял, что лучше ставить округление заведомо больше.
p ('тепло ', round(hot,2)); -- округление вывода hot c аргументом 2 по совету Петра.
В примере Петра, работало округление round (переменная, 2) при шаге вычитания не более 0.2. Но при шаге вычитания 0.4 округление ...,2 выдает при чистом нуле "-0" (минус ноль). Снимается это установкой избыточного округления ...,3 вместо 2.
p ('тепло ', round(hot,3)); -- округление вывода hot c аргументом 3. Если результат вычитания 
                            -- равен нулю, то выводится чистый обычный ноль без всяких знаков.

[>] Re: Делюсь
std.prog
Peter(syscall,1) — Wol4ik
2017-10-09 05:32:47


Гм. А если взять 1й пример для round по той ссылке? Можешь попробовать?

[>] Re: Делюсь
std.prog
Peter(syscall,1) — Wol4ik
2017-10-09 05:44:19


Ну то-есть вот эту попробуй? Я ее в git версию добавил как math.round:
function round(num, numDecimalPlaces)
  local mult = 10^(numDecimalPlaces or 0)
  return math.floor(num * mult + 0.5) / mult
end

[>] Re: Делюсь
std.prog
Wol4ik(syscall,22) — Peter
2017-10-09 06:48:58


Проверил на другом компьютере, там минус ноль не выводилось при старых параметрах. Странно. Обновленный Инстед и код ношу на флешке с собой. Проверю вечером на прежнем ПК, с новой функцией и без нее. Но совершенно точно вчера выдодился минус ноль при нуле и я это устранил изменением аргумента округления с 2 на 3. Тщательно перепроверю все, чтобы исключить неверное понимание.

[>] Re: Делюсь
std.prog
Peter(syscall,1) — Wol4ik
2017-10-09 07:16:07


Это особенности float. Давай попробуем с другой функцией, а я еще полумаю.

Так то можно делать вывод с помощью string.format(), но это как то сложновато. Может быть я встрою ее в p функцию. Надо подумать.

[>] Re: Делюсь
std.prog
Wol4ik(syscall,22) — Peter
2017-10-09 10:02:33


Пётр, а вдруг не у всех будет Инстед3 обновленный из гита. Я вот пока думаю переделать механику игры и не выводить само число тепла. А сделать так, вычисления с дробями проводить, как и раньше, но выводить результат словами - «холодно», «очень холодно», «прохладно», «жарко» и т.п.

Вопрос вот в чем, если я не вывожу на экран и никак не округляю результаты вычислений с дробями, они эти вычисления остаются точными? Ну то есть если результат вычитания равен нулю, то я могу этот ноль поймать в условии заданном if ... then... ?

П.с. все ранее оговоренные проверки функций я сделаю.

[>] Re: Делюсь
std.prog
Peter(syscall,1) — Wol4ik
2017-10-09 10:34:30


> Пётр, а вдруг не у всех будет Инстед3 обновленный из гита.
Не обязательно инстед из гита, просто раз ты столкнулся с проблемой я хочу ее решить в будущих версиях.

Я думаю, что вычисления точные.

round другой интересно попробовать и сравнить результаты.

По идее можно округлять рез-т только при вывроде: p(string.format("%02f", myvar)), но мне хотелось бы попробовать с round...

[>] Re: Делюсь
std.prog
Wol4ik(syscall,22) — Peter
2017-10-09 11:13:25


Да, конечно. Займусь сегодня. Раз мы это обсуждаем, спрошу еще одно на будущее. Как сделать вывод фиксированного количества знаков после запятой в дроби, даже если там нули? Да так, чтобы round работал при выводе? (Понял, что round проще делать только для вывода p, pn)
0.2 => 0.200

[>] Re: Делюсь
std.prog
Peter(syscall,1) — Wol4ik
2017-10-09 13:23:34


> Как сделать вывод фиксированного количества знаков после запятой в дроби, даже если там нули?
По идее, так: p(string.format("%.2f", 0.01234))
Вот это и надо как то упростить в след версиях, это lua конструкция форматированного вывода.

[>] результваты
std.prog
Wol4ik(syscall,22) — All
2017-10-09 19:19:20


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
Далее, всё то же самое только заменена сторочка:
p ('тепло ', string.format("%.3f", round(hot,2)),'/', hotmax);
При достижении чистого нуля выводится всё корректно, т.е. 0.000

[>] Re: результваты
std.prog
Peter(syscall,1) — Wol4ik
2017-10-09 19:26:13


Понял. Я подумаю, как это сделать удобным, а пока используй string.format. можно обернуть ее в функцию для удобства.

[>] Re: результваты
std.prog
Wol4ik(syscall,22) — Peter
2017-10-09 19:41:19


Если бы я был как-бы пользователем очередной новой функции или версии Stead 3.x.x, чисто гипотетически. Мне было бы проще задавать так. Если я хочу, чтобы данная переменная выводилась с нужной постоянной детализацией знаков после запятой, то при первичном присвоении значения сразу их и прописать. Например.
global {
         биткоины = 0.000; -- при любых вычислениях вывод p будет всегда с 3-мя знаками после запятой.
         выстота = 0.00; -- при любых вычислениях вывод p будет всегда с 2-мя знаками после запятой.
         тепло = 0; -- вывод будет иметь столько знаков после запятой,сколько нужно,
                    --- но без лишних нулей: 1.2 ... 1.000000002 ... 1 ... 6 .... 0 ....
        }
Это, разумеется не в плане советов, а на правах вольной фантазии.

[>] Re: Докладываю
std.prog
Wol4ik(syscall,22) — Peter
2017-10-09 21:06:58


На всякий случай, вот еще наблюдение. Stead никак не реагирует на ошибки в фигурных скобках, но теперь уже в случае:
decor = [[...бескрайнее белое поле.^^
	{@ walk e38|> Отправиться к маленькому участку леса.]]; -- вторая фигурная скобка отсутствует.
Ранее же мы обсуждали то же самое но в одинарных кавычках. В этом же аналогичном случае ничего страшного не происходило. Не было зависаний. Просто вместо активной ссылки "> Отправиться..." , на экране отображалась неактивная ссылка "{@ walk e38|> Отправиться к маленькому участку леса."

Сообщений от ошибке синтаксиса @ walk внутри [[]] не выводилось.

[>] Re: результваты
std.prog
Peter(syscall,1) — Wol4ik
2017-10-10 05:44:51


> Если бы я был как-бы пользователем очередной новой функции или версии Stead 3.x.x, чисто гипотетически,
Согласен, но мы не все можем сделать, так как язык -- стандартный Lua. Я думал о том, чтобы вносить изменения в него и таскать измененную версию с инстедом, но пока решил так не делать.

Я вспомнил, в инстеде есть pf. Для начала, замени p(string.format( на:

pf("%.02f", переменная).

Хоть какое то упрощение. :)

[>] Re: Докладываю
std.prog
Peter(syscall,1) — Wol4ik
2017-10-10 05:50:06


> Сообщений от ошибке синтаксиса @ walk внутри [[]] не выводилось.
Спасибо. Это разные ситуации с тз инстеда. Обработка dsc объекта и общего вывода. Хорошо, что не виснет. :)
Детектирование незакрытых скобок в данном случае неудобно делать, но буду иметь в виду.

[>] Re: результваты
std.prog
Wol4ik(syscall,22) — Peter
2017-10-10 07:04:56


pf станно себя ведет. Вот старый вид, он выводит смесь строковых заготовок и переменных.
p ('тепло ', string.format("%.3f", round(hot,2)),'/', hotmax);
Выводится следующее ..... тепло 19.600/24
При pf же с кодом
p ('тепло ', pf("%.3f", round(hot,2)),'/', hotmax);
"тепло и hot меняются местами, а то, что после hot, вообще не выводится. Выглядит вывод теперь так:
19.4000тепло

[>] Re: результваты
std.prog
Peter(syscall,1) — Wol4ik
2017-10-10 07:20:26


Вот так надо:
pf ('тепло %.3f / %d',hot, hotmax);

Надо бы мне в документации написать.

[>] Re: результваты
std.prog
Wol4ik(syscall,22) — Peter
2017-10-10 07:30:46


Ага, теперь красиво. Только я пробелы убрал около слэша. То есть есть некие служебные меры
1. %d
2. %.3f
3. еще что-то...
Более мене пончл как их настраивать 3f 2f и тд.

[>] Об'екты на сцене и в инвентаре
std.prog
Wol4ik(syscall,22) — Peter
2017-10-11 13:07:27


Добрый день. Возник еще один вопрос. При создании obj есть такой параметр pri. Он работает не только в инвентаре, но и на сцене. Вопрос вот в чем, если у двух и более выложенных на сцену об!ектов (drop или place) совпадают pri, то как происходит их визуальная компановка при добавлении новых?

То есть например "Лежит {коробка конфет}" (pri = -100) я на нее кликнул и на сцене появляется еще один об!ект "{конфета}" (тоже pri = -100). Вывод динамической части Инстед, что, сдвинет коробку и перед ней слева поставит конфету? Но она вроде позже по времени появилась.... Или как? Мне нужно, чтобы добавляемый об!ект помещался всегда слева перед предыдущими ранее выложенными об!ектами. Возможно ли это?

Вопрос2. Работает или как сделать чтоб заработал act об!екта, уже лежащего в инвентаре? Это лишает его use и inv, ну и пусть.

[>] Re: Об'екты на сцене и в инвентаре
std.prog
Peter(syscall,1) — Wol4ik
2017-10-11 14:03:00


> То есть например "Лежит {коробка конфет}" (pri = -100) я на нее кликнул и на сцене появляется еще один об!ект "{конфета}" (тоже pri = -100). Вывод динамической части Инстед, что, сдвинет коробку и перед ней слева поставит конфету?

Я думал, что конфета будет после, если это не так - давай тест и я изучу.

> Работает или как сделать чтоб заработал act об!екта, уже лежащего в инвентаре? Это лишает его use и inv, ну и пусть.

Вопрос не понял. Предмет лежит и в сцене и в инвентаре одновременно? А так, в общем, и act и use и inv могут быть у любого объекта.

[>] Re: Об'екты на сцене и в инвентаре
std.prog
Wol4ik(syscall,22) — Peter
2017-10-11 14:59:07


Второй вопрос был про предмет, который лежит только в инвентаре. Я не нашел способ сделать реакцию игры на единичное нажатие на него в инвентаре. act это позволяет сделать, но только когда об!ект лежит на сцене.

Про конфеты, ты, к сожалению, прав. При разном значении pri об!екты на сцене конкурируют и двигают порядок. Но при одинаковом pri, вывод идет как ты сказал, то что позже, то после тгго что было выведено ранее.

[>] Re: Об'екты на сцене и в инвентаре
std.prog
Peter(syscall,1) — Wol4ik
2017-10-11 15:11:15


> Второй вопрос был про предмет, который лежит только в инвентаре. Я не нашел способ сделать реакцию игры на единичное нажатие на него в инвентаре. act это позволяет сделать, но только когда об!ект лежит на сцене.

В доке про menu прочитай. Это реакция единичная как раз.

> Про конфеты, ты, к сожалению, прав. При разном значении pri об!екты на сцене конкурируют и двигают порядок. Но при одинаковом pri, вывод идет как ты сказал, то что позже, то после тгго что было выведено ранее.

Так это вроде и есть желательное поведение? Если pri одинаковы, то позиция определяется последовательностью? А так, в список objs() можно добавлять по конкретной позиции.
Но как то это сложновато. local o, i = objs():lookup('предмет'); obj():add('другой предмет', i) -- добавили другой предмет перед предметом

[>] Re: Об'екты на сцене и в инвентаре
std.prog
Wol4ik(syscall,22) — Peter
2017-10-11 15:14:18


Спасибо. Теперь мне понятно.

[>] Докладываю
std.prog
Wol4ik(syscall,22) — All
2017-10-14 17:07:31


Обнаружил вот что. Возможно это баг, а возможно это я нарушаю правила использования объектов типа obj. Вот код.
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 игнорирует символ ^ если он не помещен в фигурные скобки {}. Возможно, так задумано. Я просто отчитался.

[>] Re: Докладываю
std.prog
Peter(syscall,1) — Wol4ik
2017-10-14 19:35:26


> Возможно это баг, а возможно это я нарушаю правила использования объектов

Вот ответ на вопрос:
ii://QV3PP7JKESPHRWCF74RA

[>] Re: Переводы строк в конце dsc/decor и др. методов
std.prog
Wol4ik(syscall,22) — Peter
2017-10-15 10:11:30


Понял. Буду иметь в виду. Был не прав.

[>] Музыка и звуки
std.prog
Wol4ik(syscall,22) — All
2017-10-19 20:26:41


Прошу прощения, но я не нашел способ воздействия кодом на громкость музыки (music). Делал ее при помощи snd.play.

[>] Re: Музыка и звуки
std.prog
Wol4ik(syscall,22) — Wol4ik
2017-10-19 22:48:45


p.s. Вот, набросал программку.
snd.pan не действует на громкость проигрывания music (оно и логично, так как канал неизвестен),
в документации не сказано, как задавать громкость music. Может есть недокументированная команда для этого?
require "snd" -- модуль музыки и звуков
-- требуется два *.ogg файла с музыкой в корне папки с игрой и файлом main3.lua,
-- для этой программы их имена заданы как 'ice1.ogg' и 'basketcase.ogg'
--
global {
	volume = 50;
}
--
room {
	enter = function()
				put ('Включить музыку');
				put ('Отлючить музыку');
				put ('Включить звук');
				put ('Отлючить звук');
				put ('Увеличить');
				put ('Уменьшить');
				pl.obj:add 'громкость';
			end;
	nam = 'main';
	decor = 'Тест музыки и звуков';
}
--
obj {
	nam = 'Включить музыку';
	dsc = '{Play music^}';
	act = function()
			snd.music('ice1.ogg');
		  end;
}
--
obj {
	nam = 'Отлючить музыку';
	dsc = '{Stop music^}';
	act = function()
			snd.stop_music();
		  end;
	
}
--
obj {
	nam = 'Включить звук';
	dsc = '{Play sound^}';
	act = function()
			snd.play('basketcase.ogg', 1, 0);
		  end;
}
--
obj {
	nam = 'Отлючить звук';
	dsc = '{Stop sound^}';
	act = function()
		    snd.stop(1);
		  end;
}
--
obj {
	nam = 'Увеличить';
	dsc = '{+ volume^}';
	act = function()
		    volume = volume + 10;
		    snd.pan (1, volume, volume);
		    return;
		  end;
	
}
--
obj {
	nam = 'Уменьшить';
	dsc = '{- volume^}';
	act = function()
		    volume = volume - 10;
		    snd.pan (1, volume, volume);
		  end;
}
--
obj {
	nam = 'громкость';
	disp = function()
		    p (volume);
		    return;
		  end;
}

[>] Re: Музыка и звуки
std.prog
Peter(syscall,1) — Wol4ik
2017-10-20 06:30:45


> p.s. Вот, набросал программку.
Здорово, ее можно теперь показывать для демонстрации функций.

К сожалению, нет такой возможности. Есть только vol, которая меняет общую громкость.
С другой стороны, для проигрывания музыки можно использовать и звуки (правда, грузиться они будут дольше, чем музыка).

[>] Re: Музыка и звуки
std.prog
Wol4ik(syscall,22) — Peter
2017-10-20 07:39:07


Еще эта программа доказыват возможность управление громкостью заданного звука прямо во время его проигрывания. Это можно использовать например при создании эффекта приближения и удаления от источника звука, а также для плавного "перекатывания" звука с левого на правый динамик и обратно. Можно даже писать трекерную музыку из сеплов при помощи кода Инстед)))
Спасибо за пояснения про music, а то я думал, что опять что-то упустил в докумнтации.

[>] Re: Музыка и звуки
std.prog
Peter(syscall,1) — Wol4ik
2017-10-20 12:44:45


Кстати, pl.obj:add 'громкость';
можно заменить на take 'громкость'

:) На всякий случай написал.

Pages: 1 2 3 4 5