RSS
# Читшит с функциями INSTEAD
std.prog
hugeping(ping,1) — All
2020-10-11 21:10:23


Lucky_Ook некоторое время назад запилил читшиты с функциями INSTEAD. Чтобы не потерять, оставлю здесь: https://github.com/luckyuk/Instead-cheatsheet
P.S. Edited: 2020-10-11 21:10:56

# Re: Unicode строки в Instead
std.prog
hugeping(ping,1) — Frost
2020-09-22 15:00:55


> print(std.game.codepage)

Конечно, так не сработает, в этот момент game ещё нет. Но в моём коде std.game проверяется внутри функции, запуск которой предполагается в момент, когда игра уже запущена. Например, в start() и позже...

# Re: Unicode строки в Instead
std.prog
Frost(ping,10) — hugeping
2020-09-22 14:54:41


Файл с игрой называется main3.lua
P.S. Edited: 2020-09-22 14:59:01

Содержимое файла main3.lua

require 'sprite'
sprite.direct(true)
print(std.game.codepage)

# Re: Unicode строки в Instead
std.prog
hugeping(ping,1) — Frost
2020-09-22 14:36:39


> выяснилось, что std.game приводит к ошибке. Мне пришлось удалить фрагмент

Файл с игрой называется main3.lua или main.lua? Нужно, чтобы было main3.lua -- это новое INSTEAD API, старое API больше не поддерживается.

> Файл с кодом игры ведь обязан быть в кодировке UTF-8 (разве не так?). Зачем тогда эта проверка?

Формально, не обязан. Дело в том, что до сих пор есть поддержка разных кодировок, но по факту -- никто кроме utf-8 ничего не использует. И это хорошо.

# Re: Unicode строки в Instead
std.prog
Frost(ping,10) — hugeping
2020-09-22 14:17:47


Огромное спасибо за оперативную помощь! Мне ваши ответы действительно помогли. При анализе кода
local utf8 = (std.game.codepage == 'UTF-8' or std.game.codepage == 'utf-8')

выяснилось, что std.game приводит к ошибке. Мне пришлось удалить фрагмент

local utf8 = (std.game.codepage == 'UTF-8' or std.game.codepage == 'utf-8')
if not utf8 then return 1 end

Файл с кодом игры ведь обязан быть в кодировке UTF-8 (разве не так?). Зачем тогда эта проверка?

# Re: Unicode строки в Instead
std.prog
hugeping(ping,1) — Frost
2020-09-22 13:34:27


> Спасибо. Я благодарен за уделенное внимание моему вопросу. Однако на текущем этапе мне сложно разбираться в коде метапарсера.

Так там были готовые функции. Просто скопировать в свою игру.

local function utf_ff(b, pos)
	if type(b) ~= 'string' or b:len() == 0 then
		return 0
	end
	local utf8 = (std.game.codepage == 'UTF-8' or std.game.codepage == 'utf-8')
	if not utf8 then return 1 end
	local i = pos or 1
	local l = 0
	if b:byte(i) < 0x80 then
		return 1
	end
	i = i + 1
	l = l + 1
	while b:byte(i) and b:byte(i) >= 0x80 and b:byte(i) <= 0xbf do
		i = i + 1
		l = l + 1
		if i > b:len() then
			break
		end
	end
	return l
end

local function utf_chars(b)
	local i = 1
	local s
	local res = {}
	local ff = std.rawget(_G, 'utf8_next') or utf_ff
	while i <= b:len() do
		s = i
		i = i + ff(b, i)
		table.insert(res,  b:sub(s, i - 1))
	end
	return res
end

Вот это реализация utf_chars, которая сделает массив с литерами из строки:

local a = utf_chars("привет")

Мне просто неизвестно, какие функции нужны.

> Вытекающий вопрос: можно ли перевести Instead на работу с LUA версии 5.3, в которой есть встроенная поддержка Юникода?

ИНСТЕД и так работает (может быть собран) с Lua от 5.1 до 5.4. Но если нужно, чтобы игра работала на всех видах установок (не только на собственной версии), нужно пользоваться 5.1. В основном это связано с тем, что бинарные сборки используют LuaJit, который 5.1 (с расширениями).

# Re: Unicode строки в Instead
std.prog
Frost(ping,10) — Frost
2020-09-22 13:04:52


Спасибо. Я благодарен за уделенное внимание моему вопросу. Однако на текущем этапе мне сложно разбираться в коде метапарсера. Многое в ответе мне не ясно, например вы говорите, что "в последней версии INSTEAD есть и C реализация"; или "А вот как определяется, какую из реализаций брать - на Lua или на C. Чтобы работало и со старым и с новым INSTEAD". Это меня приводит в замешательство. Поэтому я продолжал искал ответ, который будет мне понятен на моем уровне изучения LUA. Кое что мне удалось найти. Ниже приведу несколько ссылок для тех, кто как и я имеет начальный уровень знаний.

Статья "Могу ли я использовать строки Юникода? Lua поддерживает Юникод?" http://lua-users.org/wiki/LuaUnicode" (на английском) в конце статьи даны ссылки на разные библиотеки для работы с Юникодом. Для себя я выделил две:

https://github.com/alexander-yakushev/awesompd/blob/master/utf8.lua самый простой вариант и

https://github.com/wikimedia/mediawiki-extensions-Scribunto/tree/master/includes/engines/LuaCommon/lualib/ustring имеет больший функционал
P.S. Edited: 2020-09-22 13:09:07

Вытекающий вопрос: можно ли перевести Instead на работу с LUA версии 5.3, в которой есть встроенная поддержка Юникода?

# Re: UTF8 строки в Instead
std.prog
hugeping(ping,1) — Frost
2020-09-21 19:03:05


> Приветствую, друзья. Подскажите пожалуйста как можно работать с кириллицей в Instead. Я имею ввиду функции len; sub и другие, работающие с однобайтовой кодировкой символов.

Привет!

На самом деле, в метапарсере есть такой код. Он написан на Lua. Но, в последней версии INSTEAD есть и C реализация, которая помогает этому Lua коду.

Наверное, проще всего посмотреть как это сделано в МП. Даю наводку: https://github.com/instead-hub/metaparser/blob/master/parser/mp.lua#L87

Функция, которая из строки делает массив литер.

Рядом есть более примитивные функции: utf_len, utf_char, utf_ff и utf_bb.

А вот как определяется, какую из реализаций брать -- на Lua или на C. Чтобы работало и со старым и с новым INSTEAD:

utf = {
    bb = std.rawget(_G, 'utf8_prev') or utf_bb;
    ff = std.rawget(_G, 'utf8_next') or utf_ff;
    len = std.rawget(_G, 'utf8_len') or utf_len;
    char = std.rawget(_G, 'utf8_char') or utf_char;
};

Прототипы функций если надо я могу вспомнить, но наверное есть смысл сначала посмотреть код, может быть там и так всё будет понятно. Навскидку:

utf_len, очевидно, возвращает число литер;
utf_char(строка, номер) - возвращает литеру по позиции;
utf_ff(строка, смещение) - возвращает смещение следующей литеры;
utf_bb(строка, смещение конца) - возвращает смещение предыдущей литеры;

# Unicode строки в Instead
std.prog
Frost(ping,10) — All
2020-09-21 15:14:58


Приветствую, друзья. Подскажите пожалуйста как можно работать с кириллицей в Instead. Я имею ввиду функции len; sub и другие, работающие с однобайтовой кодировкой символов. Имеет ли ядро движка встроенную поддержку и если да, то как получить доступ к UTF8 функциям. Если нет, подскажите наиболее оптимальную (проверенную) библиотеку для работы с юникодом. Заранее спасибо.
P.S. Edited: 2020-09-22 12:39:51 [изменено название]

# Re: еще вопросец (СТИД 2)
std.prog
Peter(syscall,1) — kolobod
2020-02-01 15:39:12


> Осилить бы это))) Если добью наконец игру (стыдно сказать, 5 лет уже прошло - 5, КАРЛ! ПЯТЬ!!) попробую поразбираться в стид3.

Новый попроще. )

# Re: еще вопросец (СТИД 2)
std.prog
kolobod(syscall,30) — Peter
2020-02-01 15:04:33


Ууииии! Это просто волшебная опция, буду знать теперь. Спасибо!

>"P.S. Забыл я уже старое API. Переходи на новое потом"
Осилить бы это))) Если добью наконец игру (стыдно сказать, 5 лет уже прошло - 5, КАРЛ! ПЯТЬ!!) попробую поразбираться в стид3.

# Re: еще вопросец (СТИД 2)
std.prog
Peter(syscall,1) — kolobod
2020-02-01 14:17:40


Ну там у тебя стоит [[ ]] - это и есть пустая реакция. Убери ее, а слудующую строку явно пометь как code =
		{ tag = 'ВЫЙТИ', 
		    'ВЫЙТИ', 
			code = [[ pon 'ВЫЙТИ'; walkback(); ]] --walkback(); walk 'groop_camp';	
		},					
P.S. Забыл я уже старое API. Переходи на новое потом. )

# Re: еще вопросец (СТИД 2)
std.prog
kolobod(syscall,30) — Peter
2020-02-01 14:00:13


http://instead-games.ru/forum/index.php?p=/discussion/706/glupye-voprosy-ot-kolobod#latest
Удалось прикрепить - только переименовав в main.txt. Как lua - почему-то не прикреплялся.

# Re: еще вопросец (СТИД 2)
std.prog
Peter(syscall,1) — kolobod
2020-02-01 12:49:08


> В общем на данный момент проблема только в одном. Как сделать - чтобы при выходе из диалога в комнату без каких-либо комментариев - в изначальном описании комнаты не добавлялась пустая строка?

Вот и нужен от тебя пример. Вообще не понятно что там происходит. В стед3 никаких лишних строк быть не должно. В стед2, который я заюбыл, тоже можно их спрятать, но что именно у тебя происходит без кода примера понять невозможно.

# Re: еще вопросец (СТИД 2)
std.prog
kolobod(syscall,30) — kolobod
2020-02-01 11:36:24


В общем на данный момент проблема только в одном. Как сделать - чтобы при выходе из диалога в комнату без каких-либо комментариев - в изначальном описании комнаты не добавлялась пустая строка? Пустая строчка - все равно сдвигает вниз описание комнаты, что рушит созданное оформление.

# Re: еще вопросец (СТИД 2)
std.prog
kolobod(syscall,30) — kolobod
2020-02-01 11:14:10


А, нет. Это была walkout(); но она не вызывает enter комнаты в которую возвращаешься, а его нужно вызвать - в нем важные условия прописаны.

# Re: еще вопросец (СТИД 2)
std.prog
kolobod(syscall,30) — Peter
2020-02-01 10:14:33


Уже разобрался. Внезапно дошло, что я как обычно туплю и не вижу очевидного - на выходе из диалога я вывод дополнительной картинки действительно отключал!
Но при этом - условия для ее "включения" вывода таблички были выше по коду, и все еще оставались актуальными. То есть - они одновременно "включали" все обратно. Вроде совершенно простая вещь, но мне понадобилось несколько часов чтобы допереть.

Теперь заткнулся с другим моментом. Я из диалога выхожу через walkback(); и это создает мне в описании комнаты лишнюю пустую строчку - игра думает, что там должна быть какая-то фраза финализирующая диалог, а ее по задумке - нет. Вроде была еще одна команда возврата в предыдущую локацию, без вывода описания - но я ее вспомнить никак не могу, и не могу найти в старых файлах и доках примеры с ней.

# Re: еще вопросец (СТИД 2)
std.prog
Peter(syscall,1) — kolobod
2020-02-01 09:52:30


Ты понимаешь, сложно из описаний понять что происходит. Нужен законченный демо-пример который можно запустить и исправлять. Сделай такой тест в виде запускаемого мейна тогда можно помочь. Если некуда залить, можно на форум http://instead-games.ru (сверху ссылка на форум)

# Re: еще вопросец (СТИД 2)
std.prog
kolobod(syscall,30) — kolobod
2020-02-01 08:50:09


Опечатался в своих путанных пояснениях) На выходе из диалога false ставлю везде. То есть и СЛУЧИЛОСЬ_СОБЫТИЕ = false; ГОТОВ_ДИАЛОГ = false;

# еще вопросец (СТИД 2)
std.prog
kolobod(syscall,30) — All
2020-01-31 21:17:02


Доброй ночи всем, кто не спит) Есть еще дурацкий вопрос.
БАЗА = 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; то клик на табличку запускать диалог НУЖНЫЙ_ДИАЛОГ.
В заданной конструкции все работает прекрасно. Но вот диалог заканчивается и я выпускаю из него игрока, ставя при выходе [[ СЛУЧИЛОСЬ_СОБЫТИЕ = false; ГОТОВ_ДИАЛОГ = true; walkback(); return true; ]]
То есть, на выходе я полностью убираю все условия и для отображения таблички, и для перехода снова в этот диалог. Но табличка не убирается и висит на месте, а если кликнуть на нее - снова попадаешь в диалог из которого вышел. Не могу понять почему?

# Re: Перемещение через... dsc - в СТИД 2
std.prog
kolobod(syscall,30) — Peter
2019-10-11 21:49:43


Я просто добавил маленькую прослойку: когда создается нужное условие, в становится true событие - которое само по себе переход не дает, но делает его возможным из другого места)))
Вообще, конечно, я изначально пошел по очень неверному пути. Надо было проще эти переходы организовать, как это предусмотрено в инстиде. Но нет, захотелось пооригинальничать, повыпендриваться) И это при отсутствии-то навыков программирования))) Вот и расхлебываю...

# Re: Перемещение через... dsc - в СТИД 2
std.prog
Peter(syscall,1) — kolobod
2019-10-11 21:00:27


А, я понял! То-есть мы хотим после какого-то действия сделать walk. Чтобы была функция, которая следит за событиями.
Ну да, тогда life в теории -- рабочий вариант. Но там нюансы были, в документации по STEAD2 было что то о том, как надо делать переходы из life метода.
Я могу посмотреть, но нужен демо-пример небольшой.

# Re: Перемещение через... dsc - в СТИД 2
std.prog
kolobod(syscall,30) — Peter
2019-10-11 18:15:43


Да, насчет dsc я уже осознал свой изначальный просчет)))
По enter пробовал - не получилось, насколько я понимаю он проверяет все при заходе в комнату, а там в ней дальше идут события. В общем перенос в enter
      if global_nnn == 10 and global_yyy == 20 then		   
         walk 'action_room_2'; 
         return true;
      end;
не срабатывает, потому что нужные условия достигаются игроком уже в ходе манипуляций в комнате, а не при заходе в нее.

Переход я все же сделал) Очень криворуким способом, но он работает)) Впрочем у меня все криворукое, и как благородный INSTEAD еще терпит мои дилетантские издевательства - я искренне не понимаю))))))

# Re: Перемещение через... dsc - в СТИД 2
std.prog
Peter(syscall,1) — kolobod
2019-10-11 17:24:23


Тут такое дело, я совсем уже не помню STEAD2 и не хочется в нем снова разбираться, так как STEAD2 больше не развивается.
Но дам такой совет:
- в dsc игровую логику не делать;
- игровкую логику сделать в enter;
- если есть вопрос по life - нужен рабочий пример, который я смогу запустить и отладить. Тогда смогу помочь.

# Re: Перемещение через... dsc - в СТИД 2
std.prog
kolobod(syscall,30) — kolobod
2019-10-11 17:11:34


В общем, я представляю как ржут программисты читая мой бред))
Потыкав свой "код" я уже понял, что корректно и красиво те переходы что я прописал - работают только если переход вызван:
-кликом по картинке в комнате (не подходит в моем случае),
-кликом по объекту в комнате, через act (опять же, не подходит в силу геймплея),
-кликом по предмету инвентаря (тоже не подходит, надо из комнаты),
-из диалога (аналогично)

Через life = function и dsc комнаты мой переход со сменой тем не пашет. Либо нельзя, либо неправильно прописываю.

# Re: Перемещение через... dsc - в СТИД 2
std.prog
kolobod(syscall,30) — kolobod
2019-10-11 16:14:36


Все даже еще загадочнее. Сделал для эксперимента - что игрок переходит не напрямую из bunker в action_room_2, а сначала идет в другую комнату (и все при этом отлично работает, тема комнаты bunker меняется на тему выбранной комнаты, переход проходит нормально). Потом уже только переходим в action_room_2 - и снова все отлично: и переходим, и тема меняется правильно. Но вот стоит только вернуть переход обратно напрямую, из bunker в action_room_2 - как оформление крашится.
И тут моя логика начала сходить с ума.
Ибо если проблема в комнате bunker - то почему из нее отлично работают переходы в другие комнаты?
Если проблема в комнате action_room_2 - то почему в нее нормально переходим из любой другой комнаты, кроме bunker?
Буду дальше копать))) Прям самому интересно)

# Re: Перемещение через... dsc - в СТИД 2
std.prog
kolobod(syscall,30) — kolobod
2019-10-11 15:34:05


Вроде решил проблему перехода в другую комнату убрав это из dsc в
lifeon (check); 
check = obj {
    life = function(s)
           if global_nnn == 10 and global_yyy == 20 then		   
           walk 'action_room_2'; 
           return true;
    end;
end;
};
Но радовался недолго)) Ибо игрок перемещаться-то перемещается из bunker в action_room_2 - но тема при этом не меняется, как сделано у меня при переходах в другие комнаты. И все оформление рушится. Реально не могу понять в чем засада, поскольку смена тем для всех комнат сделана через тот же check, и для всех один и тот же код, заставляющий тему меняться. При входе в комнату она идентифицируется по номеру, а под каждый номер прописано как меняется тема, типа такого:
===
if location == 4 then
theme.gfx.bg('theme/5.jpg');
theme.win.geom(700, 300, 600, 500);
end;
Везде это работает, а вот при переходе конкретно в action_room_2 почему-то нет.  

# Перемещение через... dsc - в СТИД 2
std.prog
kolobod(syscall,30) — All
2019-10-11 14:19:15


Ох, еще такой вопрос. Может знает кто? Заранее прошу прощения)
В общем, загнал я себя в ловушку. Забыл слова Петра о том, что dsc (в отличие от act) не предназначен для внесения каких-то глобальных изменений в игровой процесс, это только описательная часть. В итоге столкнулся с тем, что завязал часть игрового процесса на dsc все-таки. До какого-то момента все исправно работало. До тех пор, пока не понадобилось организовать "переход" в другую комнату нетрадиционным образом. Сделал так:
bunker = room {
...
dsc = function(s)
...
      if global_nnn == 10 and global_yyy == 20 then		   
         walk 'action_room_2'; 
         return true;
      end;	
...	
end;
}
Суть, если отбросить лишние детали: в комнате bunker можно переключать два параметра (условно nnn и yyy) и когда они доходят до значений "10" и "20" соответственно, игрок автоматически перемещается в другую комнату (происходят еще разные изменения в сюжете, в интерфейсе, но тут это не важно). В нынешнем виде, такая попытка перемещения не работает. Игрок, судя по всему остается в текущей комнате.

Вопрос: возможен ли в принципе walk из dsc (другие способы перехода именно в этом, конкретном случае не желательны) или про это можно сразу забыть?

# Re: Рандом в СТИД 2
std.prog
kolobod(syscall,30) — Peter
2019-09-26 09:12:27


Супер! Похоже это вот именно то, что надо было!! Сегодня после работы сяду пробовать в деле)
Большущее спасибо.

# Re: Рандом в СТИД 2
std.prog
Peter(syscall,1) — kolobod
2019-09-25 20:32:27


Если я верно понял вопрос, то что то вроде этого?
Я просто не понял что такое "событие" и зачем столько переменных.
local -- это для временной переменной
Но у тебя random_action_on видимо глобальная переменная.
А так можно было сделать локальную, она бы существовала только во время работы act

act = function(s)
    if got_bunker_key then
        bunker_door_open = true; --дверь открывается, если есть нужный ключ
        random_action_on = rnd(3); --включается "разрешение" для запуска 1 из 3 рандомных событий

        if random_action_on == 1 then dead_attack = true --срабатывает условие для запуска монстров
        elseif random_action_on == 2 then dead_blind = true --срабатывает условие при котором монстры игрока не видят
        elseif random_action_on == 3 then poison_on = true --срабатывает условие при котором персонаж получает отравление
        end
    end;
end

# Re: Рандом в СТИД 2
std.prog
kolobod(syscall,30) — Peter
2019-09-25 19:23:10


Всё запускается из act.
То есть мне надо сделать так, верно понял?
local n = rnd(3) --Этот блок прописывается просто в любом месте кода, или его надо вставлять куда-то конкретно? 
if n == 1 then dead_attack = true --срабатывает условие для запуска монстров
elseif n == 2 then dead_blind = true --срабатывает условие при котором монстры игрока не видят
elseif n == 3 then poison_on = true --срабатывает условие при котором персонаж получает отравление
else
end
act = function(s)
if got_bunker_key then
bunker_door_open = true; --дверь открывается, если есть нужный ключ
random_action_on = rnd(3); --включается "разрешение" для запуска 1 из 3 рандомных событий
end;



# Re: Рандом в СТИД 2
std.prog
Peter(syscall,1) — kolobod
2019-09-25 14:28:03


Привет!
Не совсем понял, что тут имеется в виду:

act = function(s)
      if got_bunker_key then 
		        random_action_on = true; -- кто анализирует эту переменную?
      end;

То-есть, не понятно, какой именно код запускает событие? life метод? Или непосредственно в act?
Так-то, сам random делается просто:

local n = rnd(3)

if n == 1 then
-- 1
elseif n == 2 then
-- 2
else
-- 3
end

Ну или в твоем примере можно сразу:

random_action_on = rnd(3) -- от 1 до 3

# Рандом в СТИД 2
std.prog
kolobod(syscall,30) — All
2019-09-25 11:14:53


Всем огромный привет! Сразу приношу извинения, если вдруг пишу не в тот раздел. Давно не заходил, подзабыл что-как.
Вдруг кто еще помнит свои наработки по стид2?
Запнулся на таком моменте. Надо, что бы при срабатывании условия - в ответ РАНДОМНО включалось ОДНО из нескольких возможных событий.
Если конкретно: у меня игрок в какой-то момент делает персонажем действие, открывает найденным ключом дверь в бункер.
act = function(s)
      if got_bunker_key then 
                        bunker_door_open;        --дверь открывается, если есть нужный ключ
		        random_action_on = true; --включается "разрешение" для запуска 1 из 3 рандомных событий
                        p [[Из темного коридора раздается рычание. В воздухе витает какой-то мерзкий запах.]]; 						
end;
И есть три условия для запуска трех разных событий, одно из которых должно включится СЛУЧАЙНЫМ ОБРАЗОМ, после того как сработает random_action_on.
Это:
dead_attack --атака монстрами игрока
dead_blind --монстры не замечают, как игрок проник в бункер
poison_on --игрок получает отравление
Как сделать рандомный запуск одного из трех событий?

# Re: Использование аудиозаписей
std.prog
vmg(syscall,52) — Andrew Lobanov
2019-08-28 08:20:21


> У нас тут уютно и лампово
На самом деле, радость, что у нас есть такой добрый гостеприимный дом и люди, которые дали ему появиться.

# Re: Использование аудиозаписей
std.prog
Peter(syscall,1) — vmg
2019-08-28 07:00:42


> Пётр, большое спасибо — теперь всё нашёл. Я въезжаю постепенно и иногда могу просить о помощи (в том числе) для моральной поддержки. Надеюсь, у нас это не возбраняется. До встречи в песочнице.

Да пиши свободно, конечно!

# Re: Использование аудиозаписей
std.prog
Andrew Lobanov(tavern,1) — vmg
2019-08-28 04:38:30


vmg> Пётр, большое спасибо — теперь всё нашёл. Я въезжаю постепенно и иногда могу просить о помощи (в том числе) для моральной поддержки. Надеюсь, у нас это не возбраняется. До встречи в песочнице.

У нас тут уютно и лампово. Так что отвечаем на любые вопросы. Правда не всегда оперативно, но Пётр вон быстро сработал =)

# Re: Использование аудиозаписей
std.prog
vmg(syscall,52) — Peter
2019-08-27 20:56:29


Пётр, большое спасибо — теперь всё нашёл. Я въезжаю постепенно и иногда могу просить о помощи (в том числе) для моральной поддержки. Надеюсь, у нас это не возбраняется. До встречи в песочнице.

# Re: Использование аудиозаписей
std.prog
Peter(syscall,1) — vmg
2019-08-27 20:22:04


> Допустим, надо, чтобы на определённом шаге пользователь услышал запись речи.

Ну, это вроде бы просто проиграть звуковой файл? По идее, и базовых функций достаточно.

> И подскажите, пожалуйста (извините за тупёж), где читать описание модулей.

snd описан в той-же документации.

Здесь: https://github.com/instead-hub/instead/blob/master/doc/stead3-ru.md#%D0%BC%D1%83%D0%B7%D1%8B%D0%BA%D0%B0

И здесь (расширенные возможности): https://github.com/instead-hub/instead/blob/master/doc/stead3-ru.md#%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C-snd

Кратко, можно играть звук в определенном канале с определенной громкостью и проверять - играет ли он ещё или уже перестал.

> А ещё спрошу, в какой программе лучше преобразовывать разные форматы записи в ogg.

Если хочется с gui, то audacity. Если консоль - то oggenc (vorbis-tools) или ffmpeg.

# Использование аудиозаписей
std.prog
vmg(syscall,52) — All
2019-08-27 19:19:50


> Если вам не достаточно описанных здесь функций по работе со звуком,используйте полное описание модуля “snd”.

Допустим, надо, чтобы на определённом шаге пользователь услышал запись речи. Есть ли в дополнительном описании модуля "snd" что-нибудь о такой возможности? И подскажите, пожалуйста (извините за тупёж), где читать описание модулей.
А ещё спрошу, в какой программе лучше преобразовывать разные форматы записи в ogg. Большинство профессиональных диктофонов сохраняет записи в wav.

# Re: А как сделать, чтобы...
std.prog
Peter(syscall,1) — Пэ
2019-06-16 10:34:15


В моей игре есть реализация класса path. https://github.com/gl00my/instead-game-summerday

Но вообще, стороны света - это удобная и абстрактная система перемещений. Ей и пользоваться удобно и в голове карту держать. Так что я бы ей не пренебрегал.

# Re: А как сделать, чтобы...
std.prog
Пэ(syscall,48) — Peter
2019-06-16 03:00:55


Скажите, пожалуйста, Пётр, как сделать, чтоб перемещения в игре были не по сторонам света, а по названиям комнат? Когда персонаж находится в помещении, перемещение по сторонам света выглядят странно. Хотелось бы иметь возможность идти не на север и юг, а к примеру, в гостиную или в детскую.

Похоже, что это - не тот вариант (перемещаться через объекты):
obj {
    -"детская";
    nam = "nursery";
    before_Walk = function(s)
        move(pl, 'room3')
end; 
}

# Re: А как сделать, чтобы...
std.prog
Пэ(syscall,48) — Peter
2019-06-14 22:13:42


Спасибо. Попробую.

# Re: А как сделать, чтобы...
std.prog
Peter(syscall,1) — Пэ
2019-06-13 20:48:42


Привет, не могу развернуто сейчас ответить (с телефона не удобно) но можно прочитать про daemon метод. Грубо говоря, метод дергается каждый ход у объекта. А там уже можно делать что угодно. Для запуска StartDaemon кажется используется. В примерах должно быть и в существующих играх.

# А как сделать, чтобы...
std.prog
Пэ(syscall,48) — All
2019-06-13 08:31:13


Здравствуйте!
Простите, если я не в ту тему пишу :)

Вот заинтересовался я МЕТАПАРСЕРОМ3 (за что огромное спасибо Петру) и пробую что-то в нём написать. Кое-что даже получается. Программист с меня никакой и мне нужна помощь. Не откажите в любезности.

Есть задача использовать счётчик ходов в игре. Чтоб определённое событие случилось в определённый ход. Как этого добиться?
К примеру, на 50-м ходу игры Нео получает срочной бандеролью телефон, а через 10 ходов ему должен позвонить на этот телефон Морфеус. То же должно сработать и если Ное получит телефон на 39-м ходу и тот зазвонит через 10 ходов.

Спасибо.

# Re: instead-js или instead-em
std.prog
lnp3(syscall,35) — techniX
2018-09-04 10:08:39


> По скорости загрузки - instead-em загружает около 10 мегабайт при первом запуске, потом чуть быстрее из кэша. А instead-js "весит" меньше 1 мегабайта.
> Кроме того, в instead-js есть два режима загрузки. Можно загружать игру из zip-файла - но тогда нужно ждать пока вся игра целиком загрузится в клиентский браузер. А можно из каталога - тогда она практически мгновенно запускается, а картинки потом в фоне подгрузятся.

Вот это ценнейшая информация, спасибо большое! Положу в копилку.

# Re: instead-js или instead-em
std.prog
techniX(syscall,26) — lnp3
2018-09-04 09:47:21


Да, keyboard работает. Ну или по крайней мере должен работать :)
По скорости загрузки - instead-em загружает около 10 мегабайт при первом запуске, потом чуть быстрее из кэша. А instead-js "весит" меньше 1 мегабайта.
Кроме того, в instead-js есть два режима загрузки. Можно загружать игру из zip-файла - но тогда нужно ждать пока вся игра целиком загрузится в клиентский браузер. А можно из каталога - тогда она практически мгновенно запускается, а картинки потом в фоне подгрузятся.

# Re: instead-js или instead-em
std.prog
lnp3(syscall,35) — Peter
2018-09-04 07:38:20


> Исправил модуль, ё должно вводиться. :)
О, Великий и Могучий, слава тебе! А мне стыдно - так всё оказалось просто.

# Re: instead-js или instead-em
std.prog
Peter(syscall,1) — lnp3
2018-09-04 05:40:48


> Да уже в стандартном примере не работает: https://github.com/instead-hub/stead3-modules/tree/master/keyboard

Исправил модуль, ё должно вводиться. :)

# Re: instead-js или instead-em
std.prog
lnp3(syscall,35) — Peter
2018-09-03 21:30:52


> Дай пример кода (законченный пример с main3.lua и модулем)
Да уже в стандартном примере не работает: https://github.com/instead-hub/stead3-modules/tree/master/keyboard

# Re: instead-js или instead-em
std.prog
Peter(syscall,1) — lnp3
2018-09-03 17:15:06


> И что-то не пойму, почему не вводится с клавиатуры буква Ё. Вроде, обрабатывается, но ввести не могу, а ограничивать себя не хочется.
Дай пример кода (законченный пример с main3.lua и модулем) -- я проверию и исправлю.

# Re: instead-js или instead-em
std.prog
lnp3(syscall,35) — techniX
2018-09-03 16:26:54


> Вопрос в том, чего конкретно ты хочешь :)

Не знаю, что захочу в будущем, но сейчас нужно простое - примерно, как в квантовом коте. Хорошо бы два канала аудио, но могу обойтись одним в крайнем случае. Графика статичная, но её много. Ничего пока вызывать из игры не собираюсь, а вот сохранение нужно. Если всё это работает в instead-js, буду использовать его, поскольку быстрее грузится. Кстати, насколько быстрее?
У меня будет неоднократно запрос ввода произвольной текстовой строки. Работает ли в instead-js модуль keyboard? И что-то не пойму, почему не вводится с клавиатуры буква Ё. Вроде, обрабатывается, но ввести не могу, а ограничивать себя не хочется.

# Re: instead-js или instead-em
std.prog
techniX(syscall,26) — lnp3
2018-09-03 14:56:00


Вопрос в том, чего конкретно ты хочешь :)

Если тебе нужно запускать в вебе инстед-игру точно в таком же виде, как она выглядит на десктопе - тебе однозначно нужен instead-em. Единственный минус - долго загружается :)

Если же ты хочешь какую-то хитрую интеграцию с JS - например, вызывать JS-код из игры на инстеде, поменять базовое поведение визуальной части движка или вообще выводить текст сцены в HTML-формате - тогда имеет смысл посмотреть в сторону instead-js. Минус - поддерживается не вся функциональность десктопного инстеда.

# Re: instead-js или instead-em
std.prog
Peter(syscall,1) — lnp3
2018-09-02 20:09:17


lnp3> Оба этих предмета поддерживаются? Не забросят ли их авторы? Что в перспективе, какое развитие?

Instead-em это часть исходного кода Instead. Так что он будет поддерживаться одновременно с Instead.

Instead-js пока, по крайней мере, поддерживается. Надеюсь, что techniX будет его обновлять.

Но в обоих случаях, код игр это обычные инстед игры, так что даже если instead-js будет дропнут, ты ничего не теряешь.

# Re: instead-js или instead-em
std.prog
lnp3(syscall,35) — Peter
2018-09-02 18:12:14


> в instead-em zip файле есть readme, где есть что то вроде инструкции.
Спасибо, прочитал, изучаю файлы.

> Насчет instead-js, techniX, уверен, поможет. Может и МП3 заработает в instead-js. МП2 же работает...
Замечательно! Обязательно его помучаю :)

Оба этих предмета поддерживаются? Не забросят ли их авторы? Что в перспективе, какое развитие?

# Re: instead-js или instead-em
std.prog
Peter(syscall,1) — lnp3
2018-09-02 16:39:10


> Видимо, всё же придётся instead-em пробовать. Есть где-нибудь хорошее описание работы и настройки этой связки?
С instead-em довольно просто - в instead-em zip файле есть readme, где есть что то вроде инструкции. Просто распаковать и положить zip с игрой рядом.

Насчет instead-js, techniX, уверен, поможет. Может и МП3 заработает в instead-js. МП2 же работает...

# Re: instead-js или instead-em
std.prog
lnp3(syscall,35) — Peter
2018-09-02 15:20:28


Спасибо! Я уже нашёл ветку instead-js на форуме, правда, там не всё ясно, но поспрашиваю у автора. Надеюсь, не отфутболит. Отсутствие в instead-js метапарсера удручает - очень хочется с ним кое-что попробовать. Видимо, всё же придётся instead-em пробовать. Есть где-нибудь хорошее описание работы и настройки этой связки?

# Re: instead-js или instead-em
std.prog
Peter(syscall,1) — Peter
2018-09-02 12:56:26


Да, наверное я ошибся. Спрайты в каком-то виде все-таки поддерживаются, так как инстедоз 3 работает и на instead-js.

# Re: instead-js или instead-em
std.prog
Peter(syscall,1) — lnp3
2018-09-02 12:55:31


> Спасибо, Пётр! То есть, если большой объём графики, то лучше Instead-js? И где можно почитать о его ограничениях?

Тут дело не в объемах как таковых, а в методах игры.

Смотри, когда инстед только только начинался, он был рассчитан на очень простые игры. Ну как "возвращение кванотового кота".
То-есть: текст, картинки, музыка...

Но постепенно, в нём стали появляться возможности, которые скорее относятся просто к 2d движкам. Где можно на низком уровне работать с графикой и звуком.
Так вот instead-js поддерживает только базовые функции.

Функции, которые не поддерживает instead-js: sprite и pixels, sound, явное управление затуханием, множественные темы игр. Еще, вроде бы instead-js не поддерживает метапасрер 3.

Ты можешь посмотреть как выглядят игры на http://instead-games.ru.

Игры отсюда: http://instead-games.ru/index.php?online=1 -- доступны как в instead-js так и instead-em. Все игры вообще доступны на instead-em.

# Re: instead-js или instead-em
std.prog
lnp3(syscall,35) — Peter
2018-09-02 10:30:49


> Instead-em полная копия инстед. Работает все, но требуется webgl. На медленных машинах или мобильных могут быть проблемы.
>
> Instead-js - базовые возможности, но плеер лёгкий, работает везде. Автор instead-js доступен на форуме и в телеграмм, если что -- может помочь советом.

Спасибо, Пётр! То есть, если большой объём графики, то лучше Instead-js? И где можно почитать о его ограничениях?

# Re: instead-js или instead-em
std.prog
Peter(syscall,1) — lnp3
2018-09-02 09:21:46


lnp3> Друзья, прошу помощи. Подскажите, что лучше использовать в www: instead-js или instead-em? Что надёжнее, перспективнее, менее проблемное?

Instead-em полная копия инстед. Работает все, но требуется webgl. На медленных машинах или мобильных могут быть проблемы.

Instead-js - базовые возможности, но плеер лёгкий, работает везде. Автор instead-js доступен на форуме и в телеграмм, если что -- может помочь советом.

# instead-js или instead-em
std.prog
lnp3(syscall,35) — All
2018-09-02 08:25:35


Друзья, прошу помощи. Подскажите, что лучше использовать в www: instead-js или instead-em? Что надёжнее, перспективнее, менее проблемное?

# Re: Работа с текстовой строкой
std.prog
Peter(syscall,1) — lnp3
2018-07-11 15:22:17


> Спасибо, Пётр! Немного не то, что хотелось, но работает. Я предполагал сделать всплывающие окна для вопросов и ответов или получать ответ сразу в тексте, чем-то вроде <input>.

Такие варианты тоже возможны. Но только готового модуля под STEAD3 нет. А для сейфов традиционно делаются просто ссылки с числами прямо в тексте локации. Нажимая на цифры - щелкаем их.

> Существующий вариант со специальной комнатой пока устраивает, буду ориентироваться на него, но в будущем постараюсь решить иначе ввод текста. Кстати, замечательная буква "Ё" не обрабатывается. Почему? И будет ли модуль работать в Instead-js? Я хочу поместить детектив на своём сайте, там у меня тысяча загадок с обработкой логики на php.

Должен работать на instead-js и нв instead-em. Про ё сходу не скажу, надо смотреть модуль.

# Re: Работа с текстовой строкой
std.prog
lnp3(syscall,35) — Peter
2018-07-11 11:10:53


Спасибо, Пётр! Немного не то, что хотелось, но работает. Я предполагал сделать всплывающие окна для вопросов и ответов или получать ответ сразу в тексте, чем-то вроде <input>. Существующий вариант со специальной комнатой пока устраивает, буду ориентироваться на него, но в будущем постараюсь решить иначе ввод текста. Кстати, замечательная буква "Ё" не обрабатывается. Почему? И будет ли модуль работать в Instead-js? Я хочу поместить детектив на своём сайте, там у меня тысяча загадок с обработкой логики на php.

# Re: Работа с текстовой строкой
std.prog
Peter(syscall,1) — lnp3
2018-07-10 22:02:00


Привет!

В документации есть ссылка на репозиторий с модулями instead.

stead3-modules

Там есть модуль keyboard. Он в данном случае поможет. Если нужна помощь конкретней, поможем...

# Работа с текстовой строкой
std.prog
lnp3(syscall,35) — All
2018-07-10 17:44:36


Здравствуйте, прошу помочь новичку. Документацию прочитал, но не могу понять, как мне принять текстовую строку для последующей обработки. У меня есть отличный детективный сценарий, в котором часто надо будет вводить произвольный текст. Например, код сейфа или пароль. Выбор из готовых вариантов исключается, играющий сам должен разгадать загадку и ввести верный пароль. В остальное время играть будет мышкой, переходя из комнаты в комнату, манипулируя предметами и т.д. Здорово, если такой текстовый ввод можно сделать стандартными средствами Instead. С Lua я только начал заниматься, а до этого были только ассемблер и Си.
Направьте, пожалуйста, очень хочется написать игру-детектив на этом замечательном движке.

# Re: EMACS-вопрос
std.prog
Andrew Lobanov(tavern,1) — Anotheroneuser
2018-03-29 05:28:32


Anotheroneuser> Смотрел инструкцию по адресу:
>>  https://habrahabr.ru/post/105300/
Anotheroneuser> и нашёл там раздел «Ссылки в другие места», где написано «Для того что бы создать ссылку достаточно использовать такой шаблон — [[ссылка][описание]]»
Anotheroneuser> Одним из главных головных головняков в работе является необходимость связывать данные между собой: лица, факты, даты, различные объекты и прочее. Есть необходимость в устройстве целых перечней (справочников, если угодно) лиц, групп лиц и так далее, чтобы можно было делать ссылки на конкретные части этих справочников. Например, на конкретных людей или объекты.

Если под справочником понимать plain text файл, и нужно встать на определённую его точку, то попробуй [[ссылка::строка][описание]].

Anotheroneuser> Возможно ли это в EMACS или разумнее использовать для этих целей другие решения?

Штука в том, что emacs можно использовать для чего угодно. Вот вопрос удобства это другой разговор, но это дело индивидуальное. Потому затрудняюсь ответить. Как я себе представил реализацию вышеобозначенной штуки, то emacs org-mode прекрасно справится с этой задачей.

>>  Вот с обозреванием Сети не очень ясно.
Anotheroneuser> Слово какое-то.. странное, да? )) Обозрение, может?

Ну у меня как раз образование сугубо техническое, а словесность никогда не была моей сильной стороной. Так разве что, иногда гранями мерцаю %)

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

Безусловно. Эту тему поднимали много раз в самых разных местах. Больше всего мешают продуктивности соц. сети и чаты, КМК.

Anotheroneuser> Текстовый обозреватель Сети, встроенный в EMACS, я уже пробовал — очень здорово. Единственно, с помощью него мне не удалось зайти, скажем, в управление яндекс-почты. Но это, видимо, нормально.

Ну он без поддержви JavaScript. Потому может показывать только статичные странички, но шука весьма неплохая.

>>  Для упомянутых целей есть уже готовые решения. Их нужно только установить и настроить...
Anotheroneuser> Сам EMACS уже установил. Приятная среда. Хотя, пока ни черта почти не понятно.

Ну в его поставку уже много чего входит. Просто оно не настроено.

>>  Хорошая штука. Лучше и проще в использовании я системы вёрстки не встречал. Конечно, достаточно сложно создавать шаблоны, очень сложно верстать таблицы, но тексты и формулы набирать в LaTeX одно удовольствие.
Anotheroneuser> Там, если не ошибаюсь, тоже есть возможность связывать материалы и их части перекрёстными ссылками? Но, кажется, для анализа данных по мере вёрстки он не очень подходит. Только для оформления. Шаблон набил и дальше просто вставляй в нужные места этого шаблона новые данные — отлично.
Anotheroneuser> Наконец-то, можно будет забыть про капризные текстовые процессоры.

Пётр тут меня поправил, что возможно для набора текстов использовать markdown. Он более простой в работе, но нужно настроить соответствующее ПО. Ещё можно набирать прямо в org-mode и тоже конвертировать в PDF, кстати =)

Anotheroneuser> А нужно иметь возможность именно для анализа данных.
Anotheroneuser> Чтобы можно было... как бы писать книгу, снабжая её фото- видео- аудио- материалами, увязывая эти материалы и их части между собой и так далее.
Anotheroneuser> Чтобы в пятницу закрыть книгу, а в понедельник — открыть и сразу вспомнить, на чём ты остановился и, главное — куда тебе идти дальше. Но это так, образно ))

Вот тут нужно что-то более мощное. Но в любом случае, поиграться по теме с emacs стоит. Будет более чётко понятно что можно и нужно. По крайней мере мне так кажется.

# EMACS-вопрос
std.prog
Anotheroneuser(syscall,27) — All
2018-03-28 22:49:01


Можно для ясности рассказать подробнее о системе?
Итак, жили мы жили и тут — раз — что-то случилось…

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

Любая задокументированная (диктофон, рукописи, видео, фото, а в идеале — смс, электронные письма и данные журнала соединений) информация по определённому режиму направляется тобой в машину и начинается самое интересное.

Осматривая фотографии, отсматривая видеозаписи, прослушивая аудио, ты начинаешь думать и приходить к разнообразным выводам. Чтобы не забивать себе голову, ты эти выводы набиваешь в той самой операционной среде, о которой мы говорим.

Допустим, у нас в качестве операционной среды выступает среда разработки, вроде Geany. Там есть прикольнейшие функции поиска, сортировки, выделения и всего остального. Чего стоит одна Ctrl+Shift+D по ключевому слову, которая позволяет в окне «Сообщения» видеть перечень вхождений этого слова и фактически получить содержание документа, если такое ключевое слово ставить в начале соответствующих строк (для прикола можете попробовать открыть в Geany какой-нибудь Уголовный Кодекс Российской Федерации и сделать Ctrl+Shift+D на слове «Статья».

Так вот, материалов немало, мыслей ещё больше и ты не устаёшь набивать их в редакторе, но..
Они следуют друг за другом, требуя всё большей ответственности с твоей стороны. Тебе приходится придумывать и соблюдать всё новые стандарты обращения со своими данными и постепенно ты начинаешь в них путаться.
Всякий раз, обращаясь к своим записям, ты понимаешь, что напрягаешься, пытаясь найти нить.

Кроме того, было бы неплохо иметь возможность обращаться к дополнительному видео или иному материалу, просто указывая на ссылку в тексте. Хотя, это блажь, конечно... Но, блин, если у нас есть такая возможность, то какого хрена?

Вот и всё.
И пределов совершенству нет, что подразумевает расширение. Поэтому и пришёл логический вывод о необходимости изучения EMACS. Теперь после ваших советов начинаю понимать, что игра стоит свеч.

# Re: EMACS-вопрос
std.prog
Anotheroneuser(syscall,27) — Andrew Lobanov
2018-03-28 21:45:17


> В имакс есть org-mode. Замечательная штука, которая посредством plain text позволяет систематизировать данные, делать ссылки на разные файлы, как org, так и самые более другие, составлять TODO-листы и расписания. Последние при этом можно выводить в буфер в виде таймлайна с задачами и тометкой текущего времени. По этому расширению, которое уже давно входит в стандартную поставку, есть отдельная книга, но азы можно почерпнуть из вот этих источников:

Смотрел инструкцию по адресу:
> https://habrahabr.ru/post/105300/
и нашёл там раздел «Ссылки в другие места», где написано «Для того что бы создать ссылку достаточно использовать такой шаблон — [[ссылка][описание]]»
Одним из главных головных головняков в работе является необходимость связывать данные между собой: лица, факты, даты, различные объекты и прочее. Есть необходимость в устройстве целых перечней (справочников, если угодно) лиц, групп лиц и так далее, чтобы можно было делать ссылки на конкретные части этих справочников. Например, на конкретных людей или объекты.

Возможно ли это в EMACS или разумнее использовать для этих целей другие решения?

> Вот с обозреванием Сети не очень ясно.
Слово какое-то.. странное, да? )) Обозрение, может? Короче, есть одна субъективная теория, согласно которой ограниченный доступ к Сети способствует экономии сил при работе с ней и повышению результативности. Текстовый обозреватель Сети, встроенный в EMACS, я уже пробовал — очень здорово. Единственно, с помощью него мне не удалось зайти, скажем, в управление яндекс-почты. Но это, видимо, нормально.

> Ещё есть неплохой режим doc-view, позволяющий просматривать документы.
Обязательно надо посмотреть..

> LISP язык замечательный, но если ты хочешь зарабатывать деньги, то просто не найдёшь себе работу с лиспом.
У меня гуманитарное образование :( Так что, пока зарабатывать суждено иными путями. Но эти пути будут путями вникуда, если не прибегнуть к программным средствам, которые позволят разгрузить сознание от рутины и нахрен ненужных впечатлений. Lisp-машина так Lisp-машина.

> Здесь тебе могут подсказать кое что с настройкой (я и Peter как минимум)
Большое вам спасибо! Очень приятно.

> Для упомянутых целей есть уже готовые решения. Их нужно только установить и настроить...
Сам EMACS уже установил. Приятная среда. Хотя, пока ни черта почти не понятно.

> Хорошая штука. Лучше и проще в использовании я системы вёрстки не встречал. Конечно, достаточно сложно создавать шаблоны, очень сложно верстать таблицы, но тексты и формулы набирать в LaTeX одно удовольствие.

Там, если не ошибаюсь, тоже есть возможность связывать материалы и их части перекрёстными ссылками? Но, кажется, для анализа данных по мере вёрстки он не очень подходит. Только для оформления. Шаблон набил и дальше просто вставляй в нужные места этого шаблона новые данные — отлично.
Наконец-то, можно будет забыть про капризные текстовые процессоры.

А нужно иметь возможность именно для анализа данных.
Чтобы можно было... как бы писать книгу, снабжая её фото- видео- аудио- материалами, увязывая эти материалы и их части между собой и так далее.
Чтобы в пятницу закрыть книгу, а в понедельник — открыть и сразу вспомнить, на чём ты остановился и, главное — куда тебе идти дальше. Но это так, образно ))

# Re: EMACS-вопрос
std.prog
Anotheroneuser(syscall,27) — Peter
2018-03-28 21:03:47


> В качестве органайзера и прочего подобного - org mode в emacs. Я правда не пользуюсь, но все хвалят.
Вот, да. Смотрел демонстрационные ролики на Youtube — org mode выглядит очень подходяще.

В качестве лирического отступления могу добавить, что подобные демонстрационные ролики на тему «Как я отказался от VIM и начал пользоваться EMACS» несколько типичны:
- худощавый парнишка;
- в майке с наименованием чего-нибудь opensource-ного;
- потрёпанная ПЭВМ с наклейкой(ами) на тыльной стороне монитора;
- крупная проекция экрана этой ПЭВМ для зрителей
Руководствуясь намеченным планом, парни непрофессионально рассказывают и весьма профессионально показывают, как работать в программах, программировать и проч. Бывает, просто восхищаешься тем, что на самом деле можно сделать в том же терминале или, как в нашем случае, в Org-Mode.

> Lisp, для того чтобы пользоваться emacs не обязательно учить.
Это подойдёт! Потому что, необходимость расширять границы сознания назрела уже давно, работу необходимо продолжать, а изучение языка программирования мне даётся крайне небыстро. Так что, норм.

> Для документов может хватить даже не latex, а markdown.
Пробовал Markdown. Ни хрена не понял, конечно же ) Ghostwriter очень приятен и философия Markdown кажется верной, но шило в одном месте не даёт покоя приобщиться к EMACS.. Хочется одной операционной среды для всех задач.

> Зависит от задач.
Ты проснулся однажды, открыл красные линуксоидные глаза, посмотрел ими на медленно плывущие по синему весеннему небу белые пушистые облака и понял, что оперировать зоопарком форматов больше не в силах.
Куча .doc, .odt, .md, .hzchtoescho и описание процесса (дневник, журнал событий, типа того) в .txt — это больше не выход, а ничем не оправданные трудовременные <s>затраты</s> растраты.

Вечно утомительно роешься в этих данных, вместо того, чтобы сходу вспомнить всё и «get your ass to Mars... get your ass to Mars... get your ass to Mars...»

Ты, лёжа приподнялся на локте и, рассматривая проекцию собственных мыслей, косо падающую на стену комнаты, произнёс:

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

> Изучение нового это хороший способ держать мозги в тонусе. Так что в любом случае - начинание хорошее.
Ты знаешь, вот прямо сейчас я нахожусь в таких условиях, когда становится понятно, что изучение нужного нового — это хороший способ и хороший мозго-тонус, а вынужденное изучение нового — это нездоровый тонус.. Такой, своего рода, перетонус. Так что, сейчас вылезу из него и примусь за нужное новое.
Большое спасибо за советы )

# Re: EMACS-вопрос
std.prog
Peter(syscall,1) — Andrew Lobanov
2018-03-28 08:37:20


> Значит у меня руки ниже талии растут =) Я не смог добиться от pandoc приемлемого результата.

pandoc или multimarkdown фактически генерируют просто подмножество latex (если говорим о производстве pdf). Ты можешь свои шаблоны написать tex и вставлять latex конструкции итд.
Но сам текст его структура по прежнему примитивный markdown. Очень часто, кмк, этого вполне достаточно. Конечно, не всегда. Но вот если, к примеру, сравнить подход Lyx и markdown, то сейчас я выбрал бы второе. Это такой своеобразный способ постепенного вникания в том числе и в latex. :)

# Re: EMACS-вопрос
std.prog
Andrew Lobanov(tavern,1) — Peter
2018-03-28 06:56:44


>> Только вот вёрстка документов в таком случае становится неудобной. Именно набор при этом весьма прост и для веба очень хорошее решение. Но на бумагу я бы верстал в LaTeX. Хотя порог вхождение и общая сложность его высоки, конечно.

Peter> Я не согласен. У нас на работе, например, wiki+markdown. В итоге вся наша документация по госту прекрасно генерируется из md. Получается 600 страничный документ с таблицами, листингами, картинками и перекрестными ссылками. Я даже не знаю, что там еще хотеть. :) Да и диссер свой наверное я мог бы сделать на md. Так что не понимаю, что значит "верстка становится неудобной" :)

Значит у меня руки ниже талии растут =) Я не смог добиться от pandoc приемлемого результата.

# Re: EMACS-вопрос
std.prog
Peter(syscall,1) — Andrew Lobanov
2018-03-28 05:59:46


> Только вот вёрстка документов в таком случае становится неудобной. Именно набор при этом весьма прост и для веба очень хорошее решение. Но на бумагу я бы верстал в LaTeX. Хотя порог вхождение и общая сложность его высоки, конечно.

Я не согласен. У нас на работе, например, wiki+markdown. В итоге вся наша документация по госту прекрасно генерируется из md. Получается 600 страничный документ с таблицами, листингами, картинками и перекрестными ссылками. Я даже не знаю, что там еще хотеть. :) Да и диссер свой наверное я мог бы сделать на md. Так что не понимаю, что значит "верстка становится неудобной" :)

# Re: EMACS-вопрос
std.prog
Andrew Lobanov(tavern,1) — Peter
2018-03-28 05:53:45


Peter> Для документов может хватить даже не latex, а markdown. Зависит от задач. Latex - придется изучать. Markdown - можно поставить pandoc/latex и сразу начать писать тексты.

Только вот вёрстка документов в таком случае становится неудобной. Именно набор при этом весьма прост и для веба очень хорошее решение. Но на бумагу я бы верстал в LaTeX. Хотя порог вхождение и общая сложность его высоки, конечно.

# Re: EMACS-вопрос
std.prog
Andrew Lobanov(tavern,1) — Anotheroneuser
2018-03-28 05:51:16


Anotheroneuser> Хочется единой информационной среды.

Это как раз к нам - к имаксерам %)

Anotheroneuser> Хотелось бы овладеть операционной средой, которая позволила бы:

Anotheroneuser> - единообразие работы с данными;

Вообще максимальное единообразие это про имакс.

Anotheroneuser> - операции с plain text, включая возможность создавать перекрёстные ссылки и ссылки на материалы, хранящиеся как на машине, так и за её пределами в Сети;

В имакс есть org-mode. Замечательная штука, которая посредством plain text позволяет систематизировать данные, делать ссылки на разные файлы, как org, так и самые более другие, составлять TODO-листы и расписания. Последние при этом можно выводить в буфер в виде таймлайна с задачами и тометкой текущего времени. По этому расширению, которое уже давно входит в стандартную поставку, есть отдельная книга, но азы можно почерпнуть из вот этих источников:

* http://welinux.ru/post/5478/
* https://habrahabr.ru/post/105300/

Anotheroneuser> - обозревание Сети, почты с помощью тех же инструментов;

Вот с обозреванием Сети не очень ясно. В принципе, при некотором усердии можно и браузер на webkit внутри имакса использовать, но не нужно. А вот почта, irc, jabber, usenet это пожалуйста. Причём, кроме jabber всё прямо из коробки есть уже. jabber же можно начать использовать, установив jabber.el.

Anotheroneuser> короче, и так далее.

Ещё есть неплохой режим doc-view, позволяющий просматривать документы. Причём для рендера он может использовать разные бэкенды. Например, одно время я его настроил на просмотр doc/docx с помощью бэкенда в виде libreoffice. То есть сам офис я даже не видел, а видел уже отрендеренные документы в окне имакса.

Anotheroneuser> Единственная среда, которая показалась пригодной для этих целей — EMACS.
Anotheroneuser> Других не нашёл. Наверное, плохо искал... VIM, возможно, классный, но он только редактор. Тем более, EVIL позволяет VIM-ить и внутри EMACS, если я не ошибаюсь.

Да. Vim это просто редактор, а emacs это, если верить официальной документации, вычислительная среда. Если отложить разнообразные красивые и непонятные слова в сторону, то emacs это lisp-машина, в которой есть много чего, начиная с текстового редактора и заканчивая мультимедийными системами.

Anotheroneuser> Парни, с которыми мне довелось пообщаться на данную тему, говорили, что LISP — нераспространённый язык и учить его может оказаться тратой времени. Но они говорили с точки зрения программистов, которые стремятся делать деньги, программируя. Меня же подобный заработок не интересует.

LISP язык замечательный, но если ты хочешь зарабатывать деньги, то просто не найдёшь себе работу с лиспом. Вакансии есть, но их очень мало. Но для общего развития он хорош. Имеет ровно то же преимущество, что и emacs - единообразие во всём. К слову, интерфейс emacs вдохновлён операционной системой Genera, которая крутилась на аппаратных лисп-машинах компании Symbolics. Лично я считаю этот интерфейс и подход очень классным и крайне удобным для лисп-систем.

Для твоих нужд изучать же лисп не обязательно. Здесь тебе могут подсказать кое что с настройкой (я и Peter как минимум), а для использования emacs и вовсе не обязательно его знать. Если нет проблем с английским языком, то можно почитать официальное руководство, доступное прямо в этой среде. Для этого достаточно нажать C-h i (Ctrl+H и потом i) и выбрать в списке "Emacs". Отличный документ, раскрывающий практически все возможности emacs для пользователя. Туториал, раскрывающий самые азы работы с редактором, доступен по нажатию C-h t.

Anotheroneuser> Вообще, программу изучения языков программирования и п/о наметил такую:
Anotheroneuser> 1. LUA — для игр INSTEAD

Хорошее дело, но для этого особо lua и не надо. Я так и не изучил этот язык =)

Anotheroneuser> 2. EMACS — для упомянутых целей

Ну тут именно в вопросы программирования можно и не лазить. Для упомянутых целей есть уже готовые решения. Их нужно только установить и настроить. По большей части для этого достаточно в любом пособии по LISP вычитать что такое атом, список, функция, переменная. Этих знаний за глаза хватит для настройки редактора. Зачастую вопросы по некоторым функциям и переменным решаются простым нажатием C-h f и C-h v соответственно. Ну и автодополнение команд, вводимых через M-x помогает понять куда нужно двигаться порой.

Anotheroneuser> 3. LATEX — для оформления процессуальных документов (это, возможно, не лучший способ объявить бойкот текстовым процессорам, но мне ужасно хочется это сделать)

Хорошая штука. Лучше и проще в использовании я системы вёрстки не встречал. Конечно, достаточно сложно создавать шаблоны, очень сложно верстать таблицы, но тексты и формулы набирать в LaTeX одно удовольствие.

Anotheroneuser> Если есть, что подсказать, буду признателен.

По emacs, вроде, подсказал. Если будут вопросы, обращайся.

# Re: EMACS-вопрос
std.prog
Peter(syscall,1) — Anotheroneuser
2018-03-28 05:38:34


Anotheroneuser> Вообще, программу изучения языков программирования и п/о наметил такую:
Anotheroneuser> 1. LUA — для игр INSTEAD
Anotheroneuser> 2. EMACS — для упомянутых целей
Anotheroneuser> 3. LATEX — для оформления процессуальных документов (это, возможно, не лучший способ объявить бойкот текстовым процессорам, но мне ужасно хочется это сделать)
Anotheroneuser> 4. Да и всё, пожалуй..

Anotheroneuser> Если есть, что подсказать, буду признателен.

В качестве органайзера и прочего подобного - org mode в emacs. Я правда не пользуюсь, но все хвалят.

Емакс хороший. Вим тоже. В пределе хорошо уметь пользоваться обоими. :) Хотя бы поверхностно. Emacs да - хорошая текстовая среда.

Lisp, для того чтобы пользоваться emacs не обязательно учить.

Для документов может хватить даже не latex, а markdown. Зависит от задач. Latex - придется изучать. Markdown - можно поставить pandoc/latex и сразу начать писать тексты.

Изучение нового это хороший способ держать мозги в тонусе. Так что в любом случае - начинание хорошее.

# EMACS-вопрос
std.prog
Anotheroneuser(syscall,27) — All
2018-03-27 21:36:13


Парни, а можно вопрос по поводу EMACS?

== Что надо

Хочется единой информационной среды.

== В чём проблема

Мне, как и многим сегодня, приходится работать с немалым объёмом данных, включая всевозможные нормативно-правовые акты, процессуальные документы и так далее.

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

Материалы с описанием, НПА, проекты и исходный текст всевозможных документов, обеспечивающих процесс, громоздятся друг на друге в каталогах и, как их ни называй/номеруй, занимают место в голове, мешая думать о прекрасном.

Уже давно мне повезло/не повезло (нужное подчеркнуть на своё усмотрение) отвернуться от стандартных текстовых процессоров и пользоваться средой разработки (Jeany в настоящее время) для составления любых plain_text-материалов. Быстро, понятно, моноширинно, стерильно, операгенно.

Но, возвращаясь к работе после перерыва (видишь вкладки с текстом и т.д.), ловишь себя на мысли, что мысль отсутствует, поскольку энергия для её генерирования ушла на процесс вспоминания где-что лежит, чем всё кончилось, как дела и прочее.

У меня долго не выходила из головы идея забацать что-то такое с помощью локальной DokuWiki, но немного повертев её я понял, что это — тупик.

== Какие идеи?

Хотелось бы овладеть операционной средой, которая позволила бы:
- единообразие работы с данными;
- операции с plain text, включая возможность создавать перекрёстные ссылки и ссылки на материалы, хранящиеся как на машине, так и за её пределами в Сети;
- обозревание Сети, почты с помощью тех же инструментов;
короче, и так далее.

Единственная среда, которая показалась пригодной для этих целей — EMACS.
Других не нашёл. Наверное, плохо искал... VIM, возможно, классный, но он только редактор. Тем более, EVIL позволяет VIM-ить и внутри EMACS, если я не ошибаюсь.

Парни, с которыми мне довелось пообщаться на данную тему, говорили, что LISP — нераспространённый язык и учить его может оказаться тратой времени. Но они говорили с точки зрения программистов, которые стремятся делать деньги, программируя. Меня же подобный заработок не интересует.

Поэтому, хочу попросить совета у вас.
Вообще, программу изучения языков программирования и п/о наметил такую:
1. LUA — для игр INSTEAD
2. EMACS — для упомянутых целей
3. LATEX — для оформления процессуальных документов (это, возможно, не лучший способ объявить бойкот текстовым процессорам, но мне ужасно хочется это сделать)
4. Да и всё, пожалуй..

Если есть, что подсказать, буду признателен.

# Re: отсутствие влияния части настроек темы (theme) на активные элементы измененные при помощи модуля fonts
std.prog
Andrew Lobanov(Go!,1) — Wol4ik
2018-01-10 04:17:24


Wol4ik> Модуль fonts на beta-сборке 3.2 работает нормально. Единственно, такие настройки стандартной или собственной темы игры как:
Wol4ik> ====
Wol4ik> win.col.fg = black
Wol4ik> win.col.link = #b02c00
Wol4ik> win.col.alink = #606060
Wol4ik> ====
Wol4ik> Не влияют на подсветку активных элементов obj, если шрифт их dsc видоизменен при помощи модуля fonts. Вот пример, на котором проводилось тестирование. Это немного видоизмененный пример из репозитория с модулями для stead3
Wol4ik> ====
Wol4ik> require "fonts"
Wol4ik> local fnt = _'$fnt'
Wol4ik> fnt:face ('sans', 'sans.ttf', 20)
Wol4ik> room {
Wol4ik> nam = 'main';
Wol4ik> decor = [[Текст описания локации.]];
Wol4ik> }:with {
Wol4ik> obj {
Wol4ik> nam = 'r1';
Wol4ik> dsc = '{ бутерброд }'; -- стандартный шрифт темы
Wol4ik> act = 'Вы выбрали бутерброд';
Wol4ik> };
Wol4ik> obj {
Wol4ik> nam = 'r2';
Wol4ik> dsc = '{{$fnt sans| кувалда }}'; -- шрифт заданный при помощи модуля fonts, не имеет подсветки, хотя кликабелен.
Wol4ik> act = 'Вы выбрали кувалду';
Wol4ik> };
Wol4ik> }
Wol4ik> ====

Дело в том, что модуль fonts делает картинку с надписью. То есть с точки зрения инстеда это картинка, вставленная в текст. Естественно, она не может хайлайтиться, так как для этого нужна вторая картинка и нетривиальная, в принципе, обёртка для этого.

# Модуль fmt в Stead3, внедрение числовых переменных в символьный аргумент отрисовки fmt.img('box:..
std.prog
Wol4ik(syscall,22) — All
2018-01-05 18:24:31


Данная программа готова к запуску, содержит участок кода, данный нашим другом techniX. Демонстрирует создание графической шкалы прогресса для разных параметров в играх (здоровье, тепло, сытость и т.п.).
-- $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;
};

# отсутствие влияния части настроек темы (theme) на активные элементы измененные при помощи модуля fonts
std.prog
Wol4ik(syscall,22) — All
2017-12-30 20:38:20


Модуль fonts на beta-сборке 3.2 работает нормально. Единственно, такие настройки стандартной или собственной темы игры как:
win.col.fg = black
win.col.link = #b02c00
win.col.alink = #606060
Не влияют на подсветку активных элементов obj, если шрифт их dsc видоизменен при помощи модуля fonts. Вот пример, на котором проводилось тестирование. Это немного видоизмененный пример из репозитория с модулями для stead3
require "fonts"
local fnt = _'$fnt'
fnt:face ('sans', 'sans.ttf', 20)
room {
	nam = 'main';
	decor = [[Текст описания локации.]];
}:with {
	obj {
		nam = 'r1';
		dsc = '{ бутерброд }'; -- стандартный шрифт темы
		act = 'Вы выбрали бутерброд';
	};
	obj {
		nam = 'r2';
		dsc = '{{$fnt sans| кувалда }}'; -- шрифт заданный при помощи модуля fonts, не имеет подсветки, хотя кликабелен.
		act = 'Вы выбрали кувалду';
	};

}

# Создание кликабельной картинки, кнопки
std.prog
Wol4ik(syscall,22) — All
2017-12-23 21:19:03


Требуется подключить модуль fmt. Помещаем на сцену объект, имея для него произвольную картинку по заявленному пути
obj {
	nam = 'idti';
	dsc = function ()
		p ('{',fmt.img'data/idti.png','}'); -- кликабельная картинка кнопки.
	end;
	act = function ()
		walk 'e0'; -- переход или любое действие по нажатию на картинку.
	end;
}

# Re: Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
std.prog
Wol4ik(syscall,22) — Peter
2017-12-04 03:43:33


При том, хочу отметить, что есть неочевидный нюанс со скобками /ну, для знатоков lua, может быть, очевидный/

1. Если мы приравнивает весь act (use, и т.п.) к пользовательской функции, то пишем ее имя обязательно без скобок: act = fire;

2. А если добавляем в тело другой функции, как дополнение, то обязательно со скобками:
act = function ()
      -- тело текущей функции
         fire() -- имя пользовательской ф-ции со скобками
      end;

# Re: Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
std.prog
Wol4ik(syscall,22) — Wol4ik
2017-12-03 15:21:16


В примере про смешиванее функций не нужен второй end. Так как он уже есть в теле пользовательской функции. Фактически она вносится одной строчкой
fire()
а вот правильная запись второго примера
=====
obj {
nam = 'лес';
dsc = 'Вы в лесу, на опушке горит {костёр}.';
act = function()
p "Вы приблизились к костру.";
fire() -- применение пользовательской функции в теле другой функции.
end;
};
=====

# Re: Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
std.prog
Peter(syscall,1) — Wol4ik
2017-12-03 15:17:21


> Рабочий пример, функция fire может быть вызвана в act, use, used объектов и/или в onenter комнат, или в теле других функций.

Убрал лишний end во втором фрагменте кода

# Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
std.prog
Wol4ik(syscall,22) — All
2017-12-03 15:10:09


Рабочий пример, функция fire может быть вызвана в act, use, used объектов и/или в onenter комнат, или в теле других функций.
fire = function () -- пользовательсяка функция для многократного использования
	p 'Вы находитесь рядом с источником тепла.';
	-- еще здесть могут быть помещены формулы, 
	-- меняющие состояние игры
	-- статус игрока, комнат и объектов.
end;
--
room {
	nam = 'main';
	obj = {'лес'};
}
--
obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = fire; -- применение пользовательской функции.
};

При смешивании текущей функции с ранее заявленной пользовательской функцией, например в act:

obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = function() 
             p "Вы приблизились к костру.";
             fire() -- применение пользовательской функции 
        end; -- в теле другой функции.
};

# Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
std.prog
Wol4ik(syscall,22) — All
2017-12-03 15:07:47


Рабочий пример, функция fire может быть вызвана в act, use, used объектов и/или в onenter комнат, или в теле других функций.
fire = function () -- пользовательсяка функция для многократного использования
	p 'Вы находитесь рядом с источником тепла.';
	-- еще здесть могут быть помещены формулы, 
	-- меняющие состояние игры
	-- статус игрока, комнат и объектов.
end;
--
room {
	nam = 'main';
	obj = {'лес'};
}
--
obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = fire; -- применение пользовательской функции.
};

При смешивании текущей функции с ранее заявленной пользовательской функцией, например в act:

obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = function() 
             p "Вы приблизились к костру.";
 Fire() end; -- применение пользовательской функции.
};

# Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
std.prog
Wol4ik(syscall,22) — All
2017-12-03 15:07:46


Рабочий пример, функция fire может быть вызвана в act, use, used объектов и/или в onenter комнат, или в теле других функций.
fire = function () -- пользовательсяка функция для многократного использования
	p 'Вы находитесь рядом с источником тепла.';
	-- еще здесть могут быть помещены формулы, 
	-- меняющие состояние игры
	-- статус игрока, комнат и объектов.
end;
--
room {
	nam = 'main';
	obj = {'лес'};
}
--
obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = fire; -- применение пользовательской функции.
};

При смешивании текущей функции с ранее заявленной пользовательской функцией, например в act:

obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = function() 
             p "Вы приблизились к костру.";
 Fire() end; -- применение пользовательской функции.
};

# Re: про контейнер
std.prog
Wol4ik(syscall,22) — Wol4ik
2017-11-17 20:24:58


ответ: добавить после самой последней фигурной скобки :close()

}: with {
	'meal', 'wood', 'fuel';
}:close()

# про контейнер
std.prog
Wol4ik(syscall,22) — All
2017-11-17 19:27:29


Вот работоспособный код. При act контейнер закрывается, если открыт, и отрывается, если закрыт. Вопрос в следующем, как заранее задать какой будет контейнер открытый или закрытый? Он про умолчанию изначально открыт. А как это изменить до помещения его на сцену?
cont { -- пример контейнера
	nam = 'box';
	dsc = [[Тут есть {ящик}.]];
	act = function (s)
				if closed(s) == true then 
						open(s);
						return;
				else
						close(s);
						return;
				end;
		   end;
	cont = 'В ящике: ';
}: with {
	'meal', 'wood', 'fuel';
}

# Re: Разделители
std.prog
Peter(syscall,1) — kolobod
2017-10-31 15:36:38


лучше так:
game.gui.ways_delim = ""

# Разделители
std.prog
kolobod(syscall,30) — All
2017-10-31 14:12:06


А, всё, дошло наконец - как можно их убрать))
===
game.gui = {
ways_delim = '';
}
===

# Переходы-картинки
std.prog
kolobod(syscall,30) — All
2017-10-31 12:03:12


Ну вот например, есть такая фишка - убрать в диалогах цифры, заменив их на "-".
===
stead.phrase_prefix = '-';
===
А нет ли такой же: чтобы избавиться от разделителей путей "|"?

# Re: Переходы-картинки
std.prog
kolobod(syscall,30) — Peter
2017-10-31 11:03:46


ДА!!))
Но, тут же вылезла другая загвоздка. Между картинками вылезают стандартные текстовые разделители "|".
Реально ли их отключить как-то?

# Re: Переходы-картинки
std.prog
Peter(syscall,1) — kolobod
2017-10-31 10:57:02


По идее, можно прям так: vroom(img 'локация.png', 'loc_name') но это не точно, я подзабывать начал stead2.

# Переходы-картинки
std.prog
kolobod(syscall,30) — All
2017-10-31 08:53:31


Нид хелп! Был, кажется, этот ответ в форуме, но я никак не могу найти его, после переноса ветки по STD2 в отдельную.
Нужно в STD2 сделать переходы в другие локации картинками.
Сначала сделал их отдельными объектами в комнате, просто назначив им в dsc

p (txtc ''..img('PIC/ЛОКАЦИЯ.png'));

и добавив в act

walk 'ЛОКАЦИЯ';

Все работало, жмешь на картинку - уходишь в нужную комнату. Но. Если описание локации большое, при проматывании, картинки локации "уходят" из видимости, вместе с верхним текстом. А надо - чтобы они были всегда оставались сверху, как в традиционном INSTEAD-квесте. То есть, надо картинки как-то вставить в

way = { 
	vroom('ЛОКАЦИЯ', 'loc_name')    
};

# Клавиатурный ввод в STEAD3
std.prog
Peter(syscall,1) — All
2017-10-30 05:52:35


1. В документации описал модуль keys
2. Адаптировал модуль keyboard с STEAD2: https://github.com/instead-hub/instead/tree/master/doc/examples/stead3/keyboard

Единственный нюанс, в модуле keyboard на текущей версии STEAD3 после возврата из клавиатуры в комнату, поле from будет изменено у комнаты, а вот в новой версии инстеда это будет не так.
Причина: walkback функция, которая появится только в следующей версии.

# Re: Музыка и звуки
std.prog
Wol4ik(syscall,22) — Peter
2017-10-20 13:20:21


Ага, понял. Спасибо.

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


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

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

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


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

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


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

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

# 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;
}