PDA

Просмотр полной версии : Модуль "повар" для mmc


Тролль
31.03.2008, 21:20
Я тут написал модуль для варки зелий.

Что он делает:
- собирает ингридиенты (триггеры спёрты)
- показывает, каких ингридиентов не хватает для какого рецепта
- считает, сколько чего можно сварить
- варит

Что он НЕ делает:
- не следит за качеством ингридиентов

Что требуется:
- регулярно дописывать ингридиенты, неизвестные модулю

Эта фигня (ИМХО) вполне подходит для, к примеру, раскачки рецептов (хотя просветов у мну пока ни одного не было). Так же она подходит для того, чтобы если кому надо, он взял и навтыкал туда проверок на качество ингридиентов. Возможно, позже я это сделаю сам.

Как оно работает?
Загрузка ингридиентов и рецептов:

Вых:СВ> _загрузить_ингридиенты
Вы не видите ничего необычного.
Походная сума в хорошем состоянии.
Можно одеть на шею.
Можно одеть на плечи.
Можно одеть на пояс.
Можно взять в левую руку.
Состояние: средне.
походная сума(в амуниции)
железная ступка [4] посуда
простокваша <великолепно> жидкости
ячмень [32] крупа
паслен <великолепно> ядовитые ягоды
гороховая крупа [18] крупа
кислое молоко <великолепно> жидкости
укроп <великолепно> овощи
медовуха [22] жидкости
светлячок [35] мелкие твари
бересклет [6] ядовитые ягоды
большой горшок [10] посуда
клюквенный кисель [6]
сладкий перец [3]
оловянный котел [2] посуда
ручейник [2] мелкие твари
клоп-вонючка [2] мелкие твари
красная жимолость [10] ядовитые ягоды
крыло златоклювого дятла <великолепно> крылья
яблоня [6] дерево
желтый жучок [4] мелкие твари
белладонна <великолепно> ядовитые ягоды
железный котел [6] посуда
барвинок <великолепно>
фасоль <великолепно>
пихта [19] дерево
муравьишка [2] мелкие твари
гречневая ядрица <великолепно> крупа
черемуха <великолепно> дерево
толокно <великолепно> крупа

Вых:СВ> _загрузить_рецепты
Вы владеете следующими рецептами :
1. настой вороньего глаза (ужасно) 5% : нет рецепта
2. отвар девясила (ужасно) 5% : нет рецепта
3. мутная брага (ужасно) 5% : нет рецепта
4. настой на мелких букашках (ужасно) 5% : нет рецепта
5. мышиный настой (ужасно) 5% : нет рецепта
6. воспаряющий отвар (ужасно) 5% : нет рецепта
7. отвар подорожника (ужасно) 5% : нет рецепта

Вых:СВ>
Вам потребуется :
1) посуда 22
2) жидкости 24
3) ядовитые травы нет
для приготовления отвара 'настой вороньего глаза'

Вам потребуется :
1) посуда 22
2) жидкости 24
3) овощи 1
4) целебные травы нет
для приготовления отвара 'отвар девясила'

Вам потребуется :
1) посуда 22
2) жидкости 24
3) съедобные ягоды нет
4) ядовитые ягоды 18
для приготовления отвара 'мутная брага'

Вам потребуется :
1) посуда 22
2) жидкости 24
3) мелкие твари 45
4) ядовитые травы нет
для приготовления отвара 'настой на мелких букашках'

Вам потребуется :
1) посуда 22
2) жидкости 24
3) съедобные ягоды нет
4) съедобные грибы нет
для приготовления отвара 'мышиный настой'

Вам потребуется :
1) посуда 22
2) жидкости 24
3) дерево 26
4) крылья 1
для приготовления отвара 'воспаряющий отвар'

Вам потребуется :
1) посуда 22
2) жидкости 24
3) целебные травы нет
для приготовления отвара 'отвар подорожника'


Проверка, сколько чего можем сварить, и варим кой-чего:

Вых:СВ> рец
Вы владеете следующими рецептами :
1. настой вороньего глаза (ужасно) 5% : 0
2. отвар девясила (ужасно) 5% : 0
3. мутная брага (ужасно) 5% : 0
4. настой на мелких букашках (ужасно) 5% : 0
5. мышиный настой (ужасно) 5% : 0
6. воспаряющий отвар (ужасно) 5% : 1
7. отвар подорожника (ужасно) 5% : 0

Вых:СВ> _варить 2
Варим 'отвар девясила'
Не хватает ингридиентов:
целебные травы
Вых:ВЮЗ> _варить 6
Варим 'воспаряющий отвар'
Вы взяли железный котел из походной сумы.

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


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

Предложения приветствуются, реакция не обещается, лицензия как у mmc (у которого как у Perla, у которого на выбор - Artistic License или GPL)

В архиве - два файла
Cook.pm - в кодировке koi8-r
Cook.win.pm - в windows-кодировке (переименуйте его в Cook.pm перед использованием)

Подключение: кладем туда, где лежит основной конфиг, и в конфиг пишем

use Cook;

Devastator
05.04.2008, 09:46
Ну как модуль народ? отпишитесь кто пользуется, стоит ли его на жабу портировать?

Тролль
05.04.2008, 15:34
Я там чё-то ошибок нашёл :) Поисправляю сперва, не надо пока его смотреть.

Ladon
04.06.2008, 14:41
попытался заюзать
при варке ругается
#perl: Undefined subroutine &QBaze::alias called at ./Cook.pm line 252.
252 my $i = QBaze::alias(pop @{$have_ingr{$_}});

Тролль
04.06.2008, 16:01
щас будет новый version

Тролль
04.06.2008, 17:05
Большие изменения в модуле.

1.Информация по конкретным ингридиентам вынесена в отдельный файл (cook.rc)
2. Соответственно, добавлена возможность перезагружать базу ингров на лету, не вырубая клиент
3. Добавлена возможность оперативно избавляться от ватных ингридиентов
4. Исправлены ошибки

УСТАНОВКА
В архиве - две папки, cook.koi8-r и cook.win.
1. Два файла (Cook.pm и cook.rc) из папки, соответствующей Вашей кодировке, копируете в папку, где находица Ваш конфиг.
2. В конфиге где-нить в начале пишем use Cook;
3. Если в Вашем конфиге есть ловушки (hook) на prompt, то туда дописываем Cook::promptHook()
если нет ловушек - то просто раскомментируйте строки в конце файла Cook.pm

КОМАНДЫ
_обновить_базу_ингридиентов пригодица, если Вы изменили файл cook.rc и желаете немедленно увидеть изменения
_ингридиенты_сумка пригодица для установки названия контейнера с ингридиентами. Ингридиенты вне этого контейнера модуль не увидит.
_загрузить_ингридиенты пригодица, чтобы модуль знал, что в этой сумке есть, и подсчитал, сколько чего из этого можно сварить
_доложить_ингридиенты пригодица, чтобы Вы знали, что модуль знает о Ваших ингридиентах
_загрузить_рецепты пригодица, чтобы модуль знал рецепты, которыми Вы владеете
_вата пригодица, чтобы избавиться от ватных ингридиентов. Если заюзать команду без аргументов, модуль расскажет, что там к чему.
_убрать_ингридиенты пригодица, чтобы сложить ингридиенты, которые у Вас в инвентаре, в сумку для ингридиентов
_состав N пригодица, чтобы узнать состав рецепта под номером N
_варить N пригодица, чтобы сварить рецепт под номером N
_сбор_ингридиентов пригодица, чтобы собирать ингридиенты по пути следования

рецепт - в выводе команды мада "рецепт" добавлено чуток информации.

Путей
05.06.2008, 09:04
даеш в жабу такой) антипрограммерам)

Снежич
05.06.2008, 14:42
можно позанудничать?

они "ингредиенты" вообще-то :). сменил бы ты команды, пока не поздно :). или можно вообще сократить до "ингров", для команды вполне сойдет.

Тролль
05.06.2008, 22:45
*в шоке*
у меня врождённая грамотность! завтра будет исправленная версия:)

diver
06.06.2008, 00:58
как вариант: вместо хука использовать альясы.

Тролль
06.06.2008, 12:32
Исправлены команды, добавлен Readme.txt файлик.
Две папки: cook.win и cook.koi8-r. Читаем ридми из соотв. папки, делаем по инструкции.

Тролль
06.06.2008, 12:34
как вариант: вместо хука использовать альясы.

Э-э-э... как?
Как мы грузим ингредиенты? Мы "осматриваем" контейнер с инграми, и на каждый известный ингр срабатывает триггер. Как только ингры кончается, нам надо это отметить. Для этого и служит хук на промпт. Алиасами как сделать?

diver
06.06.2008, 19:58
вместо хука на инпут, на отлов команд. можно альясы. тогда модуль будет автономным.

Тролль
07.06.2008, 11:01
там нет хука на инпут. там есть хук на промпт. и алиасы.

Ladon
07.06.2008, 15:11
можно поставить таймаут в триге и через 3 секунды отключать отлов ингров.

Тролль
07.06.2008, 15:22
можно сделать и ещё надёжнее:
вых:> осм 2.сум;шепт раздватринеттакогоимени //эти команды запускает алиас на загрузку ингров.
...тут спам ингредиентов...
что вы хотите шепнуть.. и кому? //а на эту строку триггер, отключающий отлов.

такую вот штуку придумал. сделаю, наверное.

Ladon
08.06.2008, 02:24
есть проблема с алиасами некоторых ингров, они не совпадают с текстом названия...
что делать?

можно бы еще прикрутить к модулю доп апгрейд - травник?
осм солодка
вы не видите ничего необычного.
состояние: идеально.
это ингредиент вида 'целебные травы'.
качество ингредиента выше среднего.

и тд. для всех ингров ж)

Тролль
08.06.2008, 14:28
1. В cook.rc есть фича вида "подстановка ингредиента". В readme написано чуток по этому поводу. К примеру,
подстановка ингредиента : горшок клюквеного киселя : клюквеный кисель делает триггера на замену "горшок клюквеного киселя" на "клюквеный кисель". Если у тебя ингр с названием "бочка", а алиас для него "кружка" - делаешь
подстановка ингредиента : бочка : кружка
и больше ты бочку не увидишь.
Если этот способ не устраивает - то поподробнее, какой ингр, какой у него алиас. Можно сделать отдельную фишку в cook.rc "алиас ингредиента : бочка : кружка" к примеру.

2. Травник - да, я думаю, будет. Как только я себе возьму этот фит :) Желающие могут не дожидаться, прислать мне патчи/апдейты, или сделать просто свой вариант.
upd чорт, у татей нету что ли "травника"? В общем, сделаю. Удобная весчь :)

Bazzilic
20.03.2012, 12:19
Были обновления скрипта? :)

Elron
22.03.2012, 07:34
Ну как модуль народ? отпишитесь кто пользуется, стоит ли его на жабу портировать?

И в раздел "клиенты для игр" выложить не забудь;)

Рианон
22.05.2012, 04:28
Чуть докрутить и норм модуль )

Мглыст
18.05.2013, 14:19
Кто нибудь на жабу портировал?

Шаннар
18.06.2013, 14:45
При команде _обновить_базу_ингредиентов на сервер посылается команда

>> #unact INGR_SUBST,#unact INGR
Чаво?
Чаво?

Как я понимаю, это из-за следующий строк в модуле:

Parser::run_commands "#unact INGR_SUBST";
Parser::run_commands "#unact INGR";

Это не срабатывает обнуление массива или как? Может не та версия Perl'а?