Жизнь в стиле RPG

08.04.20

Задачи пользователя - Разное

Работа выполнялась на платформе 8.3.16.1148. Пока мой город на карантине, появилось чуть больше свободного времени (процентов на 15) - решил попробовать сделать для себя в 1С то, что давно хотел. У меня на телефоне есть приложение "RPG in real life", оно мне помогает в мотивации важных дел, но кажется немного неудобным. Решил сделать что-то похожее в 1С, с моими основными "хотелками". Данная разработка позволяет получать миссии, за выполнение которых начисляются баллы, влияющие на повышение уровней своих навыков.

Скачать файлы

Наименование Файл Версия Размер
1С "Жизнь в стиле RPG"
.cf 140,19Kb
1
.cf 1.2.2.7 140,19Kb 1 Скачать

Бывает, что даже деньги не до конца мотивируют на выполнение каких-либо задач. И хочется найти дополнительный импульс. А тут есть возможность представить себя персонажем RPG-игры и прокачаться по полной.

Т.к. привык вести учет всего, что только можно в своей "самописке" на 1С (деньги, планирование, клиенты и т.д.) - решил добавить туда идею из приложения "RPG in real life".

Создал всего 2 справочника, 2 регистра сведений, один объект задач и форму. Получилось минималистично, но пока устраивает. В дальнейшем планирую добавить в конфигурацию чуть больше хотелок и перенести эту конфу на андроид.

Если нужно подробно, то:

1. Я использовал платформу 8.3.16.1148, там обещали новые "вкусности" по мобильной разработке, но до них я еще не дошел. Но в свойствах конфигурации поставил на будущее галку "Приложение для мобильной платформы".
Создаём справочник RPG_Навыки, в предопределенные можно сразу добавить - "Карьера и деньги", "Здоровье", "Обустройство дома", "Интеллект", "Спорт", "Помощь другим людям" и т.д. (настраивайте справочник проецируя на себя).

2. Я создал еще справочник "Клиенты", т.к. основная направленность миссий, думаю, будет по навыку "Карьера и деньги".

3. Добавим непериодический регистр сведений, не подчиненный регистратору RPG_СоответствияБалловИУровней. Измерения - Навык и УровеньНавыка, ресурс - НеобходимыйБалл. После заполнения он будет выглядеть примерно так:



4. Создадим задачу RPG_Миссии. Я добавил реквизиты ДатаИсполнения, СрокИсполнения, Клиент. И табличную часть "Навыки", т.к. одна миссия может усилить несколько навыков. Я создал ещё форму для активных задач, чтобы на рабочую область 1С вывести.
Далее, добавим регистр сведений RPG_Баллы. Измерения "Навык", Миссия" (тип ЗадачаСсылка.RPG_Миссии, Ведущее). Ресурс "Балл". В этот регистр мы будем делать записи при выполнении задачи (миссии). Знаю, что здесь лучше подойдёт оборотный регистр накопления, но придётся создавать еще вспомогательный документ в качестве регистратора, а сейчас мне хочется минимализма и огромного объема записей, чтобы сильно замедлить базу - не предвидится.



5. Создаём общую форму "Уровень персонажа и навыки". Общий уровень персонажа считается, как в Oblivion - когда произошло 10 повышений навыков - повышается основной уровень. Значения навыков определяем запросом к регистрам RPG_СоответствийБалловИУровней и RPG_Баллы.
Вот процедура, которая вызывается при открытии или обновлении формы:


//Получаем массив навыков и создаем реквизиты и поля для уф
&НаСервере
Процедура СоздатьРеквизитыИПоляУФ()
	
	МассивНавыков = Новый Массив;
	
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	RPG_Навыки.Наименование КАК Наименование,
	|	RPG_Навыки.ИмяПредопределенныхДанных КАК Имя,
	|	СУММА(RPG_Баллы.Балл) КАК Балл,
	|	RPG_Навыки.Код КАК Код,
	|	RPG_Навыки.Ссылка КАК Ссылка
	|ПОМЕСТИТЬ ВТСпрИСуммаБаллов
	|ИЗ
	|	Справочник.RPG_Навыки КАК RPG_Навыки
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.RPG_Баллы КАК RPG_Баллы
	|		ПО RPG_Навыки.Ссылка = RPG_Баллы.Навык
	|ГДЕ
	|	RPG_Навыки.ПометкаУдаления = ЛОЖЬ
	|
	|СГРУППИРОВАТЬ ПО
	|	RPG_Навыки.Наименование,
	|	RPG_Навыки.ИмяПредопределенныхДанных,
	|	RPG_Навыки.Код,
	|	RPG_Навыки.Ссылка
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ВТСпрИСуммаБаллов.Ссылка КАК Ссылка,
	|	ВТСпрИСуммаБаллов.Имя КАК Имя,
	|	ВТСпрИСуммаБаллов.Наименование КАК Наименование,
	|	ЕСТЬNULL(ВТСпрИСуммаБаллов.Балл, 0) КАК Балл,
	|	МАКСИМУМ(RPG_СоответствийБалловИУровней.УровеньНавыка) КАК УровеньНавыка,
	|	ВТСпрИСуммаБаллов.Код КАК Код
	|ИЗ
	|	ВТСпрИСуммаБаллов КАК ВТСпрИСуммаБаллов
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.RPG_СоответствийБалловИУровней КАК RPG_СоответствийБалловИУровней
	|		ПО ВТСпрИСуммаБаллов.Ссылка = RPG_СоответствийБалловИУровней.Навык
	|			И ВТСпрИСуммаБаллов.Балл >= RPG_СоответствийБалловИУровней.НеобходимыйБалл
	|
	|СГРУППИРОВАТЬ ПО
	|	ВТСпрИСуммаБаллов.Имя,
	|	ВТСпрИСуммаБаллов.Ссылка,
	|	ВТСпрИСуммаБаллов.Наименование,
	|	ВТСпрИСуммаБаллов.Код,
	|	ЕСТЬNULL(ВТСпрИСуммаБаллов.Балл, 0)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Код";
	
	ТЗНавыковБалловИУровней = Запрос.Выполнить().Выгрузить();
	
	МассивНавыков = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Имя");
	
	Для Каждого СтрокаМассиваНавыков Из МассивНавыков Цикл
		
		//Добавляем в уф навыки
		
		//Создание реквизита уф
		ИскомыйЭлементФормы = Элементы.Найти(СтрокаМассиваНавыков);
		Если ИскомыйЭлементФормы = Неопределено Тогда //Проверка - при обновлении формы реквизиты не создаем
			ДобавляемыйРеквизит = Новый Массив;
			НовыйРеквизит = Новый РеквизитФормы(СтрокаМассиваНавыков, Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,0))); 
			ДобавляемыйРеквизит.Добавить(НовыйРеквизит); 
			ИзменитьРеквизиты(ДобавляемыйРеквизит);
		Иначе
			//Удаляем необновленный элемент формы
			Элементы.Удалить(ИскомыйЭлементФормы);
		КонецЕсли;
		
		//Создание поля уф
		НовыйЭлемент = Элементы.Добавить(СтрокаМассиваНавыков, Тип("ПолеФормы"),);
		НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
		НовыйЭлемент.ПутьКДанным = СтрокаМассиваНавыков;
		НовыйЭлемент.ТолькоПросмотр = Истина;
		
		//Присваиваем уровень нашему навыку
		СтрокаТЗСУровнем = ТЗНавыковБалловИУровней.Найти(СтрокаМассиваНавыков, "Имя");
		Если СтрокаТЗСУровнем <> Неопределено Тогда
			ЭтотОбъект[СтрокаМассиваНавыков] = СтрокаТЗСУровнем.УровеньНавыка;
			НовыйЭлемент.Заголовок = СтрокаТЗСУровнем.Наименование + " (" + СтрокаТЗСУровнем.Балл + ")";
			//НовыйЭлемент.Заголовок = СтрокаТЗСУровнем.Наименование + " (" + СтрокаТЗСУровнем.Балл + " " + ПолучитьСклоненияСтрокиПоЧислу("балл",СтрокаТЗСУровнем.Балл,,"ЧС=Количественное","ПД=Родительный")[0]  + ") ";
		КонецЕсли;
		
	КонецЦикла;
	
	Уровень = ТЗНавыковБалловИУровней.Итог("УровеньНавыка") / 10;
	
КонецПроцедуры

Как в итоге получилось - смотрите скриншоты в самом верху. Конфигурацию буду дополнять, планирую добавить фоновую музыку, отчёты с картинками из Morrowind и Oblivion, перенесу на андроид (тогда вместо не поддерживаемых в мобильном приложении задач - придется уже документы использовать). Всё по мере появления свободного времени. Ни на что не претендую, делаю для себя - но вопросы, просьбы и идеи по доработке - с радостью почитал бы.

RPG мотивация тренажёр

См. также

Учет домашней квартплаты

Разное Платформа 1С v8.3 Конфигурации 1cv8 Энергетика и ЖКХ Россия Бухгалтерский учет Управленческий учет Абонемент ($m)

Позволяет в одном документе собрать записи по всем коммунальным платежам и показаниям бытовых приборов. Вы не пропустите и не забудете свой коммунальный платеж. Будете точно знать ежемесячную сумму коммуналки по всем объектам собственности. Расширение предназначено для самой популярной конфигурации 1С:Бухгалтерия 8, ред. 3. Объекты расширения не имеют заимствования конфигурации. Его легко встроить в другие типовые конфигурации 1С.

1 стартмани

30.01.2024    470    2    kwn2000    2    

5

Конфигурация "Рюкзачок"

Разное Платформа 1С v8.3 Туризм и путешествия Россия Абонемент ($m)

Составление комплекта вещей в поездку, поход, для работы и т.п. Конфигурация разработана для платформы 1С:Предприятие 8.3 (конкретно учебная версия 8.3.13.1644, потому что более новые утомили меня своими сюрпризами).

1 стартмани

19.01.2024    6122    5    AnatolPopov    31    

36

Конфигурация "Казначей группы (класса/команды/...)"

Разное Взаиморасчеты Платформа 1С v8.3 Общественные и некоммерческие структуры Обучение, бизнес-тренинг, курсы Развлечения, искусство, спорт Домашние учет и финансы Управленческий учет Абонемент ($m)

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

1 стартмани

03.11.2023    671    3    q_i    0    

11

Математический тренажер через телеграмм (feat 1С)

Математика и алгоритмы Разное Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Расширение (+ обработка) представляют собою математический тренажер. Ваш ребенок сможет проверить свои знание на математические вычисление до 100.

2 стартмани

29.09.2023    1898    maksa2005    8    

22

Генератор математических примеров

Математика и алгоритмы Разное Абонемент ($m)

Маленькая программа для генерации примеров. C#

1 стартмани

28.09.2023    1285    1    FIERYLIONS    18    

7

Конструктор: ЧислоПрописью и СтрокаСЧислом

Разное Инструментарий разработчика Работа с интерфейсом Платформа 1С v8.3 Абонемент ($m)

Возможно я просто ленивый, а может потому что понадобилось... в общем сделал конструктор параметров. Может 1С когда-нибудь сделает что-нибудь такое в конфигуратор?

1 стартмани

15.09.2023    3055    11    vandalsvq    8    

48

Viewer 1.0 (библиотека картинок, wingding, webdings, символы по кодам)

Разное Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Иногда нужно посмотреть все картинки из библиотеки картинок или шрифты Webdings/Wingdings, вот собственно эта обработка для этого...

1 стартмани

04.09.2023    765    2    Незнайка    0    

11

Мобильное приложение "Семейное"

Разное Платформа 1С v8.3 Домашние учет и финансы Россия Управленческий учет Абонемент ($m)

Это программа, предназначенная для учета, анализа и управления личными и семейными делами.

1 стартмани

02.07.2023    1066    1    SVGProger    0    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. VmvLer 08.04.20 15:07 Сейчас в теме
можно грабить корованы?
300_po_vstrechke; shalimski; pm74; ErrorEd88; C0mmander_Alex; +5 Ответить
2. ErrorEd88 53 08.04.20 15:38 Сейчас в теме
(1) Нет, я джва года хочу такую игру(
Бэнни; pm74; +2 Ответить
3. chg 09.04.20 03:38 Сейчас в теме
И не лень же тебе, а так идея прикольная, однозначно плюсик)))
4. Созинов 12.04.20 16:20 Сейчас в теме
Интересный подход к геймификации развития. Может есть какая-то достойная литература на данную тематику?
5. ErrorEd88 53 13.04.20 11:09 Сейчас в теме
(4) Книги такие не находил даже на английском, только любительские статейки в LiveJournal, Pikabu и несколько мобильных приложений с подобной идеей.
6. user2005939 24.10.23 22:30 Сейчас в теме
Круто! Я как далекий человек от 1С в общих чертах понял как создать подобное в Пайтоне 👍
Оставьте свое сообщение