Уважаемые гости и новички, приветствуем Вас на нашем форуме
Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».
Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
Удачи!
Друзья, доброго времени суток!
Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря". Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Я хочу попробовать добавить серебро в экономику, возникшие проблемы: 1) жёсткая привязка обменной валюты к C_ITEM, не могу понять какую функцию хукать. 2) нужно добавить в инвентарь строку кол-ва серебра, проблема заключается в том, что отрисовка текста надписи при рендере происходит раньше наложения рамки и в итоге текст выходит тёмный. 3) не понимаю какие функции соотносятся к отображению инвентаря игрока, а какие торговые и контейнера. P.S. для меня инвентарь это какая-то дремучая штуковина и если есть какие-нибудь исходники с его работой, или более полная инфа по работе с ним, было бы просто шикарно.
Получилось ли что-то сделать по этой теме? Если нет, то:
Есть ли концепция/наброски твоей задумки? Интересует описание и желательно со схемами или картинками.
Если не хочешь афишировать наброски, можешь написать в личку.
Ну, например, такие идеи по разработке:
1) Нужна торговля за разные типы монет: золото, серебро, стар. монеты.
2) Нужно как-то запомнить, какие предметы за какие монеты продаются.
И поскольку в классе 'C_ITEM' уже нет свободных полей, то нужно создать массив для хранения структур данных, внутри плагина.
Допустим нам нужна функция регистрации, типа:
Daedalus:
// какой предмет, за какую валюту продаётся
RegTradeItemInfo(ItRw_Arrow, ITMI_GOLD);
Но чтобы не описывать всю кучу предметов, сократим работу, введя новую функцию назначения основной валюты, например:
Daedalus:
// устанавливаем серебро в качестве основной валюты
SetMainCoin(ITMI_SILVER);
Получается, что нам нужно будет обозначить лишь предметы, торгуемые за золото и за старинные монеты.
Если предмета нет в нашей базе данных о предметах, значит он торгуется за основную валюту, т.е. за серебро.
3) Торговля активируется через диалог, например:
ГГ: Покажи мне свои товары.
НПС: А что конкретно тебя интересует?
Выбор 1: Редкие вещи(за золото - 5 шт)
Выбор 2: Обычные вещи(за серебро - 23 шт)
Выбор 1 -> Покажи редкие вещи. -> Выбирай.
Выбор 2 -> Мне нужны обычные вещи. -> Выбирай.
В обоих случаях открывается режим торговли, но с разными типами торговых валют.
Например, при выборе 1, так:
Daedalus:
SetCurrentTradeCoin(ITMI_GOLD);
А при выборе 2, так:
Daedalus:
SetCurrentTradeCoin(ITMI_SILVER);
SetCurrentTradeCoin - это новая функция назначения текущей валюты для торговли.
Также перед началом торговли нужно временно перенести в некую базу данных, лишь те предметы, что не подходят под выбранную валюту (причём у обоих НПС).
Ну, т.е. если выбрали 'Редкие вещи', то у торговца и у ГГ тоже, остаются только те предметы, что торгуются за золото, всё остальное - отправляется на склад хранения.
Затем после окончания торговли, нужно будет вернуть предметы обратно.
Таким образом мы получаем сортированную торговлю.
4) Если же торговля осуществляется без предварительной сортировки, в так называемом 'киш-миш' режиме.
Это когда все предметы торговца и ГГ имеют разную ценность в разных типах валют.
Тогда придётся выводить информацию о кошельке ГГ, например так:
И постоянно подменять текущую валюту.
Как видим, на низком разрешении информация о монетах смотрится "не в тему". Две ещё как-то можно уместить, но три уже лишку.
Или же нужно вместо заголовка контейнера ГГ, написать например: "Мой кошелёк", и дать возможность наводить на него фокус, и в этом случае в окне информации о предмете, выводить именно информацию о денежных запасах ГГ:
Но это может быть неудобным решением.
5) Также неизвестно, как лучше обозначить тип монет и цену предмета (через иконки или текстом).
Нужно понимать, что иконка золотой монеты и старой - похожи. А размером в 10х10 пикселей, они сливаются почти в одну цветную точку.
Мелкая серебряная также может напрягать глаза.
6) Также нужно учесть то, что будет отображаться в заголовке контейнера ГГ в свободном режиме, т.е. вне режима торговли.
7) Ещё нужна будет функция регистрации названия монет, при выводе их заголовке контейнера, что-то типа:
Если подразумевается простая замена золота на серебро, то это делается несколькими строчками в файле .d в папке system/autorun (или в скриптах).
Пример замены золота на руду:
Daedalus:
//замена предмета-валюты с ITMI_GOLD
const string TRADE_CURRENCY_INSTANCE = "ITMI_NUGGET";
//замена текста (для кириллицы файл сохранять в кодировке ANSI)
const string NAME_Currency = "Руда: ";
const string PRINT_Trade_Not_Enough_Gold = "У вас недостаточно руды для покупки этого предмета.";
Добрый день! Подскажите, пожалуйста, есть ли возможность добавлять свой плагин поверх установленного Нового баланса (на стим версии готики)?
С чистой готикой плагины работают, с новым балансом - нет. Для совместимости можно использовать zParserExtender?
У меня есть цель создать мод с квестами по отрисовке картин (с созданием скриншота в игре и дальнейшим появлением его на холсте). Важно, чтобы этот мод работал вместе с установленным новым балансом.
Если кто-то сможет пнуть в нужном направлении, буду очень благодарна.
Ну, он скорей не для совместимости, а для внедрения/изменения скриптов. Про его возможности можешь почитать в соотв. теме: https://worldofplayers.ru/threads/41999/#post-1086550
А так, просто пишешь отдельный d-скрипт с НПС, его диалогами и прочей логикой вставки на локацию. Затем сохраняешь этот скрипт в папке "Gothic2\System\autorun\". Потом, после успешных испытаний можешь его упаковать в отдельный мод-том и распространять как угодно.
У меня есть цель создать мод с квестами по отрисовке картин (с созданием скриншота в игре и дальнейшим появлением его на холсте). Важно, чтобы этот мод работал вместе с установленным новым балансом.
По плагину скажу так. На стандартном рендере DX7 возможно сделать скриншот экрана, преобразовать его в текстуру, изменить пиксели, альфа-канал и прочее. Затем естественно сохранить в папку с текстурами. Принцип работы такой же, как во время сохранения превью картинки для файла сохранения.
Ну и в последующем уже - можно загружать эту текстуру и накладывать на любые поверхности. Или просто поиском найти материал, той же самой картины, и заменить его текстуру на текстуру скриншота. Но этот вопрос скорей для тех, кто очень знаком с движком и его функционалом.
С включённым враппером DX11 (для Готики) будут проблемы при создании скриншотов. Максимально возможный скриншот 256х256.
Судя по откликам, проблема актуальна и по сей день: https://github.com/kirides/GD3D11/issues/125
Добрый день! Подскажите, пожалуйста, есть ли возможность добавлять свой плагин поверх установленного Нового баланса (на стим версии готики)?
С чистой готикой плагины работают, с новым балансом - нет. Для совместимости можно использовать zParserExtender?
У меня есть цель создать мод с квестами по отрисовке картин (с созданием скриншота в игре и дальнейшим появлением его на холсте). Важно, чтобы этот мод работал вместе с установленным новым балансом.
Если кто-то сможет пнуть в нужном направлении, буду очень благодарна.
Да, про это знаю, тут проблем нет.
Я правильно понимаю, что если восстановлю совместимость моей игры (с установленным новым балансом) с DX7, то возникнут проблемы с производительностью, всякие баги и прочие неприятные вещи?
Скрипты НБ зашифрованы, как я понимаю. Могу ли я внедрить свой плагин в игру с установленным новым балансом при помощи zParserExtender? Или это можно сделать каким-то другим способом?
Да, про это знаю, тут проблем нет.
Я правильно понимаю, что если восстановлю совместимость моей игры (с установленным новым балансом) с DX7, то возникнут проблемы с производительностью, всякие баги и прочие неприятные вещи?
Скрипты НБ зашифрованы, как я понимаю. Могу ли я внедрить свой плагин в игру с установленным новым балансом при помощи zParserExtender? Или это можно сделать каким-то другим способом?
Пост автоматически объединён:
Да, она не позволяет привычным способом внедрять в игру плагины.
Получилось ли что-то сделать по этой теме? Если нет, то:
Есть ли концепция/наброски твоей задумки? Интересует описание и желательно со схемами или картинками.
Если не хочешь афишировать наброски, можешь написать в личку.
Ну, например, такие идеи по разработке:
1) Нужна торговля за разные типы монет: золото, серебро, стар. монеты.
2) Нужно как-то запомнить, какие предметы за какие монеты продаются.
И поскольку в классе 'C_ITEM' уже нет свободных полей, то нужно создать массив для хранения структур данных, внутри плагина.
Допустим нам нужна функция регистрации, типа:
Daedalus:
// какой предмет, за какую валюту продаётся
RegTradeItemInfo(ItRw_Arrow, ITMI_GOLD);
Но чтобы не описывать всю кучу предметов, сократим работу, введя новую функцию назначения основной валюты, например:
Daedalus:
// устанавливаем серебро в качестве основной валюты
SetMainCoin(ITMI_SILVER);
Получается, что нам нужно будет обозначить лишь предметы, торгуемые за золото и за старинные монеты.
Если предмета нет в нашей базе данных о предметах, значит он торгуется за основную валюту, т.е. за серебро.
3) Торговля активируется через диалог, например:
ГГ: Покажи мне свои товары.
НПС: А что конкретно тебя интересует?
Выбор 1: Редкие вещи(за золото - 5 шт)
Выбор 2: Обычные вещи(за серебро - 23 шт)
Выбор 1 -> Покажи редкие вещи. -> Выбирай.
Выбор 2 -> Мне нужны обычные вещи. -> Выбирай.
В обоих случаях открывается режим торговли, но с разными типами торговых валют.
Например, при выборе 1, так:
Daedalus:
SetCurrentTradeCoin(ITMI_GOLD);
А при выборе 2, так:
Daedalus:
SetCurrentTradeCoin(ITMI_SILVER);
SetCurrentTradeCoin - это новая функция назначения текущей валюты для торговли.
Также перед началом торговли нужно временно перенести в некую базу данных, лишь те предметы, что не подходят под выбранную валюту (причём у обоих НПС).
Ну, т.е. если выбрали 'Редкие вещи', то у торговца и у ГГ тоже, остаются только те предметы, что торгуются за золото, всё остальное - отправляется на склад хранения.
Затем после окончания торговли, нужно будет вернуть предметы обратно.
Таким образом мы получаем сортированную торговлю.
4) Если же торговля осуществляется без предварительной сортировки, в так называемом 'киш-миш' режиме.
Это когда все предметы торговца и ГГ имеют разную ценность в разных типах валют.
Тогда придётся выводить информацию о кошельке ГГ, например так: Посмотреть вложение 127741
И постоянно подменять текущую валюту.
Как видим, на низком разрешении информация о монетах смотрится "не в тему". Две ещё как-то можно уместить, но три уже лишку.
Или же нужно вместо заголовка контейнера ГГ, написать например: "Мой кошелёк", и дать возможность наводить на него фокус, и в этом случае в окне информации о предмете, выводить именно информацию о денежных запасах ГГ: Посмотреть вложение 127761
Но это может быть неудобным решением.
5) Также неизвестно, как лучше обозначить тип монет и цену предмета (через иконки или текстом).
Нужно понимать, что иконка золотой монеты и старой - похожи. А размером в 10х10 пикселей, они сливаются почти в одну цветную точку.
Мелкая серебряная также может напрягать глаза.
6) Также нужно учесть то, что будет отображаться в заголовке контейнера ГГ в свободном режиме, т.е. вне режима торговли.
7) Ещё нужна будет функция регистрации названия монет, при выводе их заголовке контейнера, что-то типа:
Благодарю за отличный пример! я задумывался над реализацией системы, но ещё не так глубоко, по части экономики) Пришёл к выводу, что было бы интересно проработать инвентарь и предоставить его немного в другом свете.
Сейчас разбираюсь с камерой, в частности с кватернионами, так как хочу акцентировать внимание на работе с курсором мыши, в режиме инвентаря вращать камеру вокруг героя только при необходимости, нажатием ЛКМ.
Так я начал работать над инвентарём с нуля, однако, пока что не могу понять как выключить старый совсем.
По части монет и экономики- очень сложный момент с различными вариантами исполнения, на данный момент, я это воспринимаю как некий экспериментальный полигон, но я склоняюсь к тому, чтобы сделать гибридную систему как в Готике 3.
Основной валютой сделать серебро, так наличие золота может стать, своего рода, требованием финансового уровня, для более серьёзного крафта и обучения, учитывая моё желание- попробовать сделать динамическую экономику.
В целом, я разобрался как всё это вывести на экран, но есть некоторые нюансы с отрисовкой предметов в инвентаре, например подсчёт выделяемой памяти.
Можно ещё прикинуться одним из разрешённых плагинов, например, "zTest.dll". Хотя их там целый список...
И когда новый плагин получит разрешение на загрузку, тогда он уже сможет загружать и остальные целевые плагины из списка, через функцию LoadLibrary().
Как вариант.
Да не за что... Просто у меня были некоторые мысли на этот счёт и немного наработок, решил поделиться.
Мой выбор пал на сортированный режим торговли. Первые тесты прошли успешно. Последней проблемой было найти наиболее удобную систему отображения монет.
В принципе, мысленно, я пришёл к нескольким техническим решениям:
C++:
// примеры режимов отображения монет в заголовке контейнера:
enum eShowCoinsInTitleState
{
SHOW_ONLY_MAIN_CURRENCY, // показывать только основную валюту
SHOW_ONLY_MANY_CURRENCY, // показывать только те монеты, которых больше всех
SHOW_EVERY_TIMED, // показывать каждую зарегистрированную, по очереди, временно (на 2 сек)
SHOW_TABLE_CURRENCY, // показывать таблицу монет, с названиями и иконками (до 4х максимум)
SHOW_CUSTOM // кастомный выбор (ручное управление по флагам)
};
Первые 3 режима - почти тоже самое, что и оригинал, только с небольшими изменениями. Например, можно ещё добавить иконку типа монет.
Есть набросок режима "SHOW_TABLE_CURRENCY" (это рисунок):
Последний режим - это чисто ручное управление содержимым заголовка. Например, можно вывести только один/два определённых вида монет (в строчку или в таблицу). Этот режим можно вообще не использовать.
Нужно сначала сделать всё в общем виде, а потом уже управлять всеми этими настройками по желанию:
1) в скриптах, через функции
2) или в меню, через специальный блок настроек плагина.
Иконку монеты в описании предмета можно использовать, а можно - не использовать.
Как вариант, использовать текст, как в Г3: "Цена в золоте/серебре/старинных монетах" и т.д. С текстом было бы проще, не нужно ничего выравнивать или подгонять. Да и изначальный стиль не сильно пострадает.
В общем, если сильно не заморачиваться и не углубляться в перфекционизм, опустив некоторые решения, то вполне можно сделать примитивную торговлю в нескольких денежных единицах. Это реально может работать.
Основной валютой сделать серебро, так наличие золота может стать, своего рода, требованием финансового уровня, для более серьёзного крафта и обучения, учитывая моё желание- попробовать сделать динамическую экономику.
Можно сделать ещё такой обмен. Золотую можно обменять, например, условно, на 100 серебряных монет. Т.е. от золота ГГ избавят легко. А вот наоборот поменять серебро на золото - это проблема. Никто не хочет этого делать, либо цена обмена: 1 зол. за 1000 серебра. Правда, нужно взвесить за и против. Потому что может быть, что один из обменов не будет иметь смысла.
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.