Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Взгляд скриптера: CSCA Crafting

Взгляд скриптера: CSCA Crafting 10 года 2 мес. назад #67768

  • Amphilohiy
  • Amphilohiy аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 547
  • Спасибо получено: 666
  • 2 место ГотвОраторПобедитель Сбитой кодировкиУчительПрограммист Ruby
Начну с небольшого лирического отступления. У меня нет страстного желания полностью переделывать скрипты под себя, да, могу слегка подредактировать, но в пределах необходимости. Но есть другой "бзык", если скрипт требует заполнения в самом пространстве скриптов, то очень уж хочется все это вынести отдельно. И вот я наткнулся на CSCA Crafting, где создание десятка рецептов вытекает в большие горы текста, в которых не очень то и просто ориентироваться. Но время идет, количество рецептов растет, и ориентироватся в этой горе текста становится все сложнее. Ну, я и решил настроить эту систему под себя.

Вот стандартный пример 2х рецептов, которые идут в комплекте.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Опять же, всего 2 рецепта... Вот как примерно сделал я.


Шаг 1 - разделяй и властвуй
Во первых, я свои рецепты раскидал по своим скриптам. Т.е. для плотника отвел отдельный скрипт "Carpenter recepies", и в него соответственно добавил свои рецепты.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Тут всего 2 ньюанса: 1е это я показал шаблон, который понадобится дальше. 2е - обратите внимание на заголовок. СSCA::CRAFT::RECIPE - берем список рецептов из модуля крафта, который в свою очередь прохлаждается в модуле цска. Да, мы полностью избавились от цифры номера в массиве, благодоря этим двум стрелочкам, которые добовляют элемент в конец массива. Затем копируем рецепт, и меняем его на другой.
Естественно, у меня есть отдельный скрипт и для повара, и для шахтера. Как минимум, неразберихи стало чуть меньше.


Шаг 2 - сжимаем данные
Однако, этот шаг гораздо сложнее, в основном потому, что придется написать скриптик, и понять идею рецепта "по умолчанию". Для начала - я понял что половина всей информации дублируется. Например: у меня всегда 100% успех крафта, одни и те же звуки, рецепты открыты и т.п.. Идея в том, чтобы создать канон, и в случае, если у нашего рецепта нету какого-нибудь значения, то это значение берется из канона.
Чтож, вот этот момент. Мы призываем темных богов, для написания огромнейшего скрипта, понять который способны лишь немногие! Узрите!
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Эта функция слишком сложна, для понимания смертных, и лишь те немногие... В общем я надеюсь что дополнительных разьяснений как это работает не нужно, главное понять, что это расписывается всего один раз. Для этого я опять же завел отдельный скрипт. У нас есть глобальная переменная с нашим рецептом "по умолчанию" и функция, которая добавляет рецепт, предварительно сверившись с каноном. Заметьте, если такие значения, как :name дублируются в обоих рецептах, то в новом он заменятся каноном не будет.
А теперь я покажу как выглядят парочка моих рецептов:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]



Шаг 3 - динамичный канон
Стоит отметить важную деталь - канон можно быстренько поменять перед добавлением очередного рецепта. Например в примере выше есть строчка
$default_recepie[:type] = :carpenter
что значит, что последующие рецепты будут относится "по умолчанию" к плотнику, при этом профессию в новых рецептах я не указываю. Поэтому в скрипте кулинара я так же поставил строчку
$default_recepie[:type] = :cooking
и так же не указываю профессию. Вы в любой момент можете изменить значения успеха, времени производства и т.п. для канона, и все последующие рецепты будут повиноватся новому канону, но не забывайте все вовремя вернуть.

Надеюсь вам понравился мой взгляд на ведение рецептовой книжки, и это вам поможет! А так же я надеюсь что вы поймете о чем я тут написал. Удачи в ваших проектах!
Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Последнее редактирование: 10 года 2 мес. назад от Amphilohiy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: JackCL, Lekste, Ren310, arhinag, DesKarD

Взгляд скриптера: CSCA Crafting 10 года 2 мес. назад #67771

  • JackCL
  • JackCL аватар
  • Вне сайта
  • Светлый дракон
  • Кролик вашей мечты
  • Сообщений: 711
  • Спасибо получено: 1004
  • Проект года 2 местоРазработчикПроект года 3 местоПроект месяца 1 место
Спасибо, все это очень хорошо, буду использовать.

Администратор запретил публиковать записи гостям.

Взгляд скриптера: CSCA Crafting 10 года 2 мес. назад #67780

  • Lekste
  • Lekste аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 911
  • Спасибо получено: 565
  • ОраторДаритель СтимкеяВетеранПрограммист RubyПрограммист JavaScript
Спасибо. Отлично придумал.
Главное случайно не пропустить один из параметров, чтоб потом не думать, почему рецепт работает не как ожидалось. :)
Администратор запретил публиковать записи гостям.
Время создания страницы: 0.222 секунд