• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток!
    Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря".
    Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
  • Дорогие друзья, год подходит к концу, и пришло время подвести его итоги и наградить достойных

    Не ленитесь, голосуйте в этой теме за тех форумчан, которые по вашему мнению больше всех проявили себя в этом году
    По желанию, аргументировать свой выбор можете в теме обсуждения голосования.

Вопросы по скриптингу

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
  • Первое сообщение
  • #1
Прежде чем задавать вопросы, ознакомьтесь с документацией..
1) Читать онлайн
2) Архив с офлайн-версией(chm) во вложении
 

Вложения

  • Vam_tutor.rar
    171,6 KB · Просмотры: 578
Последнее редактирование модератором:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.641
Баллы
625
в смысле не появляется? ты его когда анэквипишь, с него сразу сбрасываются флаги, после чего можно подгружать диалог торговли. с завершением операции вешаешь пушку обратно..
мне больше всего нравится лютое условие в движке, которое обязывает непися обувать лучшее оружие при выходе оного из слипмода.. отследить это событие ты можешь в B_REFRESHATINSERT, оно вызывается сразу после этого треша. так что рекомендую что-либо менять именно там через указатель на self.
я конечно в костылях не советчик, но смотри.. вбей куда-нибудь в башку нпс исходные пушки, разоружай болвана в этой функции и надевай ему умолчание.

UPD: кароче смотри. глянул как можно обойти систему торговли. вариаций далее представленного решения может быть куча, по этому просто дам тебе наводку. при инициализации диалога торговли, получай указатели на ближнебой и дальнобой, присваивай им чистые флаги. с этого момента они будут доступны в контейнере. для предотвращения попадания в торговый инвентарь именного оружия, можешь создать специальные пушки для торгашей с выдуманным флагом NoTrade например, правда куда ты его припихнешь уже твои заботы. но то нехитрое действие с обнулением флагов будет игнорироваться для личных оружий.
далее нюанс. купив экипированную пушку, в слоте останется висеть его копия, вот она будет невалидной. так что при взаимодействии с ней будет моментальный краш. вешай проверки что предмет в слоте меча существует и в инвентаре. в противном случае либо экипь ему новое, либо убирай его в принципе...
 
Последнее редактирование:

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Назначь такому оружие специфические (промежуточные между типовыми) требования силы/ловкости и задай торговцу это значение в качестве базового в его инстанции. Он его экипирует и больше никогда не снимет, т.к. у него не хватит статов носить что-то мощнее.
 

GuruRegena

Участник форума
Регистрация
24 Мар 2017
Сообщения
16
Благодарности
0
Баллы
155
В теории, в теории может сработать редактирование через блокнотик. Пойду посмотрю, что из этого выйдет.

А на практике полная ерунда. Блокноты отказываются видеть нужные строки.
Но чисто для интереса, тебе надо либо в скриптах, либо еще через что поправить в файле B_KillNPC число 15 на желаемый процент

Код:
else if(Npc_GetActiveSpell(oth) == SPL_Whirlwind)
        {
            randwait = Hlp_Random(100);

            if((slf.protection[PROT_MAGIC] != IMMUNE) && (randwait <= 30))
            {
                oth.attribute[ATR_MANA] = oth.attribute[ATR_MANA] + ((SPL_Whirlwind_DAMAGE * 15) / 100);

                if(oth.attribute[ATR_MANA] > oth.attribute[ATR_MANA_MAX])
                {
                    oth.attribute[ATR_MANA] = oth.attribute[ATR_MANA_MAX];
                };
            };
Это в Gothic.dat эта функция???
и меня устраивает процент, просто ману не регенит, урон наносится но ману не восстанавливает
 

Lorddemonik

★★★★★
Редактор раздела
Регистрация
17 Дек 2011
Сообщения
1.119
Благодарности
584
Баллы
350
Это в Gothic.dat эта функция??
и меня устраивает процент, просто ману не регенит, урон наносится но ману не восстанавливает

Да, в gothic.dat

Думаю проблема в том, что восставление идет в этом скрипте не "hero", а "other". А из-за период урона просто игра не видит кому регенить Ману.

З.ы а может просто не попадаешь в 30%...
 

GuruRegena

Участник форума
Регистрация
24 Мар 2017
Сообщения
16
Благодарности
0
Баллы
155
Да, в gothic.dat

Думаю проблема в том, что восставление идет в этом скрипте не "hero", а "other". А из-за период урона просто игра не видит кому регенить Ману.

З.ы а может просто не попадаешь в 30%...
Итак: готик сорсем декомпилил gothic.dat, в скрипте B_KillNpc.d лишь
func void B_KillNpc(var int npcInstance)
{
var int randwait;
var C_Npc npc;
npc = Hlp_GetNpc(npcInstance);
if(Hlp_IsValidNpc(npc) && !Npc_IsDead(npc))
{
npc.flags = 0;
CreateInvItem(npc,ItMi_OldCoin);
Npc_ChangeAttribute(npc,ATR_HITPOINTS,-npc.attribute[ATR_HITPOINTS_MAX]);

}
пытался изменить функцию в ZS_Whirlwind.d тупо добавив условие регена маны:
func int ZS_Whirlwind_Loop()
{
var int randy;
if(Npc_GetStateTime(self) > SPL_TIME_WHIRLWIND)
{
B_StopWhirlwind();
return LOOP_END;

};
if(Npc_GetStateTime(self) != self.aivar[AIV_WhirlwindStateTime])
{
self.aivar[AIV_WhirlwindStateTime] = Npc_GetStateTime(self);
if(self.attribute[ATR_HITPOINTS] > SPL_Whirlwind_DAMAGE)
{
B_MagicHurtNpc(other,self,SPL_Whirlwind_DAMAGE / 1000);


randy = Hlp_Random(100);

if(randy <= 30)
{
Npc_ChangeAttribute(hero,ATR_MANA,(SPL_Whirlwind_DAMAGE * 15) / 100);

};

}
else
{
B_MagicHurtNpc(other,self,self.attribute - 1);

};

};
return LOOP_CONTINUE;
в формуле специально уменьшил дамаг смерча, чтобы посмотреть меняется ли хоть что-то. В итоге даже в новой игре, добавив марвином свиток смерча изменений не увидел (дамаг все тот же).
(Компилил тем же ГС, с последующим копированием gothic.dat и ou.bin в соответствующие папки с заменой). Не понимаю, почему нет изменений?

Без начала новой игры такого сделать нельзя. Лучше отредактируйте скрипт, скомпилируйте и занова пройдите. Но помоему 15 % урона в секунду это самый оптимальный вариант. Если его сделать больше то будет читерно, если сделать меньше то толку от заклинания не будут.
Печаль :(, да у меня вообще не регенит ману. А можешь объяснить, почему обязательна новая игра?
 
Последнее редактирование модератором:

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.414
Благодарности
3.242
Баллы
525
Насколько я понимаю, это работает только в Г2, или я ошибаюсь, и в Г1 есть аналог?

получай указатели на ближнебой и дальнобой, присваивай им чистые флаги
Что значит "чистые флаги"? Экипированный предмет помечается каким-то флагом, который нужно сбросить?

куда ты его припихнешь уже твои заботы.
Вот в этом то и вопрос. Куда? Посмотрел свободные биты на основании констант в скриптах Г1. Свободные есть, да, но при сравнении с константами Г2 выясняется, что там эти флаги задействованы, например, для щитов. С учётом того, что щиты восстанавливают и в Г1, можно предположить, что данный флаг движку не безразличен. Какие из незадействованных в скриптах флагов движок, тем не менее, проверяет и обрабатывает, я не знаю. Поэтому и спрашиваю.

Пользуясь случаем, повторю вопрос: для чего нужна переменная var string nameID? Можно ли использовать её в своих целях, прописав там, например, "Unique Item"?

Он его экипирует и больше никогда не снимет, т.к. у него не хватит статов носить что-то мощнее.
У такого подхода есть некоторые недостатки. Во-первых, именное, заточенное персонально под него, оружие у торговца можно просто отобрать. Во-вторых, в мод-фиксе введена дифференциация в требованиях к статам при экипировке оружия. При равных значениях урона мечи, например, требуют меньшее значение силы, чем топоры и дубины. Мне кажется, это логично. Но тогда, если личным оружием торговца является топор, то, скорее всего, найдётся меч с такими же требованиями к силе, но большим значением урона. В-третьих, чтобы сохранить логичную пропорцию между уроном и требованиями к статам у персонального оружия торговцев, нужно либо сильно занижать их статы, либо давать им достаточно мощное оружие с самого начала игры. Да, оно не попадёт в продажу, но его можно будет просто отобрать, ведь торговцы не так сильны, как те крутые перцы, которые могут себе позволить иметь приличное оружие с самого начала игры.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.641
Баллы
625
Насколько я понимаю, это работает только в Г2, или я ошибаюсь, и в Г1 есть аналог?
Тут даж не аналог, а просто старт любой рутины.

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

от в этом то и вопрос. Куда? Посмотрел свободные биты на основании констант в скриптах Г1. Свободные есть, да, но при сравнении с константами Г2 выясняется, что там эти флаги задействованы, например, для щитов. С учётом того, что щиты восстанавливают и в Г1, можно предположить, что данный флаг движку не безразличен. Какие из незадействованных в скриптах флагов движок, тем не менее, проверяет и обрабатывает, я не знаю. Поэтому и спрашиваю.
И много ли нормальных щитов восстановили?)) У предметов куча неюзаных полей. Это и так уже уостыль выходит, так что одним больше-меньше без разницы..

Пользуясь случаем, повторю вопрос: для чего нужна переменная var string nameID? Можно ли использовать её в своих целях, прописав там, например, "Unique Item"?
Используй. Она неюзается движком
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Во-первых, именное, заточенное персонально под него, оружие у торговца можно просто отобрать.
Если игрок такую цель поставит, то сделает. И выход тут один - вешать бессмертие на торговца. Никакое эффективное именное оружие торговцу не поможет. В противном случае ты пытаешься запретить солнцу светить, ветру дуть, огню гореть, и пр.

Сделай предмет не интересным для игрока. Например, требует силы 80, а урона наносит 10. В Готике 1 такая схема эффективна. Т.е. итоговый урон будет 90 + процент крита.
Или, если герой один раз побил торговца - ничего больше не продавать ему.

И много ли нормальных щитов восстановили?))
"Нормальных" - это AST? При всей эффективности, до нормальных щитов и вам как до луны.
 

Kreol Nekr

Участник форума
Регистрация
21 Ноя 2014
Сообщения
229
Благодарности
109
Баллы
190
Это в Gothic.dat эта функция???
и меня устраивает процент, просто ману не регенит, урон наносится но ману не восстанавливает
Можете попробовать поставить глобальную функцию на регенерацию манны вообще герою.И добавить например обучение регенерации манны. Это в принципе будет то же самое.
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Основываясь на что сделаны такие выводы?
На приблизительной оценке объема доработок, чтобы сделать хоть что-то похожее на лучшие образцы из других игр. И на полном отсутствии каких-либо технологических демок вариантов, отличных от СП-шного.
Всякая кодово-скриптовая фигня, которой маются неутомимые умельцы, ничего общего с нормальной механикой щита не имеет. Циферка плюс туда, циферка плюс сюда. А на выходе очередная костыльвания. Никакого представления, как это должно вообще работать, нет даже в головах создателей.
Кстати, почините в В2.0 свои навесные колчаны при переключении на вид от первого лица: они не исчезают :(
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.641
Баллы
625
Всякая кодово-скриптовая фигня, которой маются неутомимые умельцы, ничего общего с нормальной механикой щита не имеет.
правильно. по этой причине я и не жалую ни одну из существующих поделок.

На приблизительной оценке объема доработок, чтобы сделать хоть что-то похожее на лучшие образцы из других игр. И на полном отсутствии каких-либо технологических демок вариантов, отличных от СП-шного.
во-первых их необходимо затачивать под цельный мдс, а не сцаный набор оверлеев. во-вторых нужны сами анимации. будут? окей, сообразим и щиты и дуалы в *каноническом для готы виде*..

хоть что-то похожее на лучшие образцы из других игр
НИКТО из яжкодеров-икарусистов и прочих не додумался вживить систему напрямую в сердце боевой системы. или НЕ СМОГЛИ в силу криворукости, либо кривизны самого икаруса.

Кстати, почините в В2.0 свои навесные колчаны при переключении на вид от первого лица: они не исчезают :(
а мы тут при чем??? вопрос к тразегу.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
во-первых их необходимо затачивать под цельный мдс, а не сцаный набор оверлеев.
Очень спорное утверждение.. ::)
Как по мне, заточка под цельный мдс это сцаное гимно, а в оверах вся сила Готы, и с ними возможностей на много больше для моддинга и представления мира игры ее обитателей. Достаточно сравнить игры класса ААА с Готой по анимам чтобы понять на сколько они УГ в это плане, тудаже идет и цельная тушка болванчика Гг..
Это если исходить из того, что сравнивать игрушки с Готой, не смотря на то кто бы что тут не пел.. ;)

окей, сообразим и щиты и дуалы в *каноническом для готы виде*..
Это каком ?! ::)

Зы, цельный мдс будет иметь смысл только в том случае, если будет полностью перестроена вся механика игры, на весь возможный РПГ-шный сет для Гг, иначе оно того не стоит..
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.641
Баллы
625
Очень спорное утверждение.. ::)
либо ты несешь ересь, либо ты меня не понял. для одноручки с двуручкой как и лука с арбалетом есть свои ключи в мдснике, равносильно нужно сделать для щитов и дуалов. потом делай с ними че хош
и спринт тоже в мдс вынести.

зашитый в вышеупомянутое сердце боевой системы. без поверхностных костылей и прочего зашквара

на весь возможный РПГ-шный сет для Гг,
какой еще рпгшный сет
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Как по мне, заточка под цельный мдс это сцаное гимно
Нет. Гимно - это оверлеи. В любом их виде.
Как временное решение под СП - ничего лучше не придумать. Но для основательной системы это не годится. Скрипт модели должен содержать отдельные специальные блоки для каждого режима персонажа, не пересекаясь с другими.

цельный мдс будет иметь смысл только в том случае, если будет полностью перестроена вся механика игры
К сожалению, для нормального щита надо переделать всё, начиная от героя, кончая монстрами (реакция при ударе в блок). Иначе получится унылое мыло, ничем по сути от традиционного блока не отличающееся. Поэтому жить будет только СП-решение. И любая критика его бессмысленна.

и спринт тоже в мдс вынести.
Безусловно. Это я могу сделать без проблем для В2.0. Даже сам автор может - анимации есть. Только скрипт поправить и вживить в тело игровой модели для каждого режима (1hsprint/2hsprint и т.д.)
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.641
Баллы
625
Поэтому жить будет только СП-решение. И любая критика его бессмысленна.
да ну? то есть если будет канонический щит, то сп система все равно вытащит? ::)

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

GuruRegena

Участник форума
Регистрация
24 Мар 2017
Сообщения
16
Благодарности
0
Баллы
155
Можете попробовать поставить глобальную функцию на регенерацию манны вообще герою.И добавить например обучение регенерации манны. Это в принципе будет то же самое.
Как вариант да, но игра тогда станет скушнее имхо, хочется все так найти способ реализовать восстановление маны от урона

Печально осознавать, что я со всеми усилиями по прикручиванию регена маны смерчу, по незнанию, бился головой не в ту дверь. Собственно назрел очередной вопрос: Есть ли информация о софте которым компилились dat файлы при создании сборки 0062?
(Идея декомпилить файлы игры не оставляет меня)

Не дублируем посты, читаем правила..
 
Последнее редактирование модератором:

Kreol Nekr

Участник форума
Регистрация
21 Ноя 2014
Сообщения
229
Благодарности
109
Баллы
190
Печально осознавать, что я со всеми усилиями по прикручиванию регена маны смерчу, по незнанию, бился головой не в ту дверь. Собственно назрел очередной вопрос: Есть ли информация о софте которым компилились dat файлы при создании сборки 0062?
(Идея декомпилить файлы игры не оставляет меня)
Думаю, что Gothic Sourser 3.15 использовался.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Он закрывается с ошибкой при попытке декомпилировать. Может, конечно, дело в чем то еще?
Не обучен Gothic Sourser восстанавливать код, который был собран с использованием скриптовых и прочих расширителей.
 
Сверху Снизу