std.prog: INSTEAD программирование


1 2 3
Reply to: N76V0CUWcjitusfBjliy
From: Wol4ik (syscall,22) 20.10.17 12:20 UTC
To: Peter
Subject: Re: Музыка и звуки
Ага, понял. Спасибо.

From: Peter (syscall,1) 30.10.17 05:52 UTC
To: All
Subject: Клавиатурный ввод в STEAD3
1. В документации описал модуль keys
2. Адаптировал модуль keyboard с STEAD2: https://github.com/instead-hub/instead/tree/master /doc/examples/stead3/keyboard

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

From: kolobod (syscall,30) 31.10.17 08:53 UTC
To: All
Subject: Переходы-картинки
Нид хелп! Был, кажется, этот ответ в форуме, но я никак не могу найти его, после переноса ветки по STD2 в отдельную.
Нужно в STD2 сделать переходы в другие локации картинками.
Сначала сделал их отдельными объектами в комнате, просто назначив им в dsc

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

и добавив в act

====
walk 'ЛОКАЦИЯ';
====

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

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

Reply to: KtuopnczKphPNozT8Ses
From: Peter (syscall,1) 31.10.17 10:57 UTC
To: kolobod
Subject: Re: Переходы-картинки
По идее, можно прям так: vroom(img 'локация.png', 'loc_name') но это не точно, я подзабывать начал stead2.

Reply to: ca70A2z8C9WaEgutVPsa
From: kolobod (syscall,30) 31.10.17 11:03 UTC
To: Peter
Subject: Re: Переходы-картинки
ДА!!))
Но, тут же вылезла другая загвоздка. Между картинками вылезают стандартные текстовые разделители "|".
Реально ли их отключить как-то?

From: kolobod (syscall,30) 31.10.17 12:03 UTC
To: All
Subject: Переходы-картинки
Ну вот например, есть такая фишка - убрать в диалогах цифры, заменив их на "-".
===
stead.phrase_prefix = '-';
===
А нет ли такой же: чтобы избавиться от разделителей путей "|"?

From: kolobod (syscall,30) 31.10.17 14:12 UTC
To: All
Subject: Разделители
А, всё, дошло наконец - как можно их убрать))
===
game.gui = {
ways_delim = '';
}
===

Reply to: GQRrpocfIjSfMlzlDsWd
From: Peter (syscall,1) 31.10.17 15:36 UTC
To: kolobod
Subject: Re: Разделители
лучше так:
game.gui.ways_delim = ""

From: Wol4ik (syscall,22) 17.11.17 19:27 UTC
To: All
Subject: про контейнер
Вот работоспособный код. При 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';
}
====

Reply to: lZxi3ZhUwSAG3zovWtoc
From: Wol4ik (syscall,22) 17.11.17 20:24 UTC
To: Wol4ik
Subject: Re: про контейнер
ответ: добавить после самой последней фигурной скобки :close()
====

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

From: Wol4ik (syscall,22) 03.12.17 15:07 UTC
To: All
Subject: Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
Рабочий пример, функция 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; -- применение пользовательской функции.
};
====

From: Wol4ik (syscall,22) 03.12.17 15:07 UTC
To: All
Subject: Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
Рабочий пример, функция 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; -- применение пользовательской функции.
};
====

From: Wol4ik (syscall,22) 03.12.17 15:10 UTC
To: All
Subject: Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
Рабочий пример, функция 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; -- в теле другой функции.
};
====

Reply to: zrhQE1xV2ReoJC6Da2Ym
From: Peter (syscall,1) 03.12.17 15:17 UTC
To: Wol4ik
Subject: Re: Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
> Рабочий пример, функция fire может быть вызвана в act, use, used объектов и/или в onenter комнат, или в теле других функций.

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

Reply to: zrhQE1xV2ReoJC6Da2Ym
From: Wol4ik (syscall,22) 03.12.17 15:21 UTC
To: Wol4ik
Subject: Re: Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
В примере про смешиванее функций не нужен второй end. Так как он уже есть в теле пользовательской функции. Фактически она вносится одной строчкой
====
fire()
====
а вот правильная запись второго примера
====
obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = function() 
                 p "Вы приблизились к костру.";
                 fire() -- применение пользовательской функции в теле другой функции.
          end; 
};
====

Reply to: MJs6UZPPSA1lVsbgAANB
From: Wol4ik (syscall,22) 04.12.17 03:43 UTC
To: Peter
Subject: Re: Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
При том, хочу отметить, что есть неочевидный нюанс со скобками /ну, для знатоков lua, может быть, очевидный/

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

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

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

From: Wol4ik (syscall,22) 30.12.17 20:38 UTC
To: All
Subject: отсутствие влияния части настроек темы (theme) на активные элементы измененные при помощи модуля fonts
Модуль 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 = 'Вы выбрали кувалду';
	};

}
====

From: Wol4ik (syscall,22) 05.01.18 18:24 UTC
To: All
Subject: Модуль fmt в Stead3, внедрение числовых переменных в символьный аргумент отрисовки fmt.img('box:..
Данная программа готова к запуску, содержит участок кода, данный нашим другом 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;
};
====

Reply to: eW0cgHcpAx7XcOquJOWq
From: Andrew Lobanov (Go!,1) 10.01.18 04:17 UTC
To: Wol4ik
Subject: Re: отсутствие влияния части настроек темы (theme) на активные элементы измененные при помощи модуля fonts
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 делает картинку с надписью. То есть с точки зрения инстеда это картинка, вставленная в текст. Естественно, она не может хайлайтиться, так как для этого нужна вторая картинка и нетривиальная, в принципе, обёртка для этого.

1 2 3