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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

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

MaGoth

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

Вложения

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

Lingviston

Участник форума
Регистрация
10 Май 2010
Сообщения
14
Благодарности
0
Баллы
150
Можно ли без ввода дополнительных переменных и создания новых инстанций диалога с аналогичным текстом решить следующую задачу:
1) НПЦ может стоять возле барной стойки или сидеть на стуле.
2) Если поговорить с ним у стойки, то он говорит фразу А, диалог прерывается, он идет, садится на стул и начинает с ГГ диалог Б сам.
3) Если поговорить, когда он сидит на стуле, после первой же фразы ГГ начинается диалог Б, без прерывания диалога.

Я делал так: если НПЦ у стойки, то использую CheckInfo (или как-то так, проверка на важную инфу в общем), если вернулся 0, то НПЦ идет на стул и там уже выполняются условия для дилога Б - НПЦ начинает его сам. Если НПЦ уже на стуле, то условия для диалога Б выполняются и НПЦ начинает его сразу при вызове CheckInfo. Диалог в таком случае не прерывается и все ок, но проблема в том, что диалог Б может начаться из 2 разных инстанций: из самого себя (если нпц стоял у стойки и потом сел на стул) либо из А (если уже сидит на стуле). Диалог Б имеет опции, поэтому приходится чистить варианты сразу из 2 инстанций. Более того, для условия начала диалога Б я использовал доп. переменную, котора инициализируется, когда ГГ только заговаривает с НПЦ (не важно где).

Можно ли убрать эту переменную, убрать необходимость чистки двух инстанций (menu) и при этом сохранить общую схему диалога?

Если будут вопросы - задавайте, может я не корректно что-то описал:)
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
А если не выходя из диалога заставить персонажа сесть на стул?
 

Lingviston

Участник форума
Регистрация
10 Май 2010
Сообщения
14
Благодарности
0
Баллы
150
А если не выходя из диалога заставить персонажа сесть на стул?

Так было в первой версии. Стул на другом конце помещения, идет не быстро. Потом надо заставить ГГ подойти, допустим он не запутается и подойдет нормально. Все это время НПЦ должен молчать и заговорить только тогда, когда ГГ подойдет. Конечно может быть так и сработает, но я не хочу отбирать у игрока управление на такой срок.

Подвопрос: можно ли из одной инстанции диалога, запустить другую так, чтобы контекстом для строк выбора второго диалога был сам второй диалог, а не первый?

Будет ли ГГ следовать за нпц во время диалога, если запилить GoToNpc?

МОжно ли собственно начать вывод фраз только после того, как НПЦ и ГГ дойдут до стула и нпц на него сядет?
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Тут, пожалуй, надо через смену расписания действовать. Правда ГГ нужно вести самому.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Можно ли без ввода дополнительных переменных и создания новых инстанций диалога с аналогичным текстом решить следующую задачу:
1) НПЦ может стоять возле барной стойки или сидеть на стуле.
2) Если поговорить с ним у стойки, то он говорит фразу А, диалог прерывается, он идет, садится на стул и начинает с ГГ диалог Б сам.
3) Если поговорить, когда он сидит на стуле, после первой же фразы ГГ начинается диалог Б, без прерывания диалога.

А почему нельзя сделать через три инстанции: 1 - диалог А, 2 - диалог В, 3 -диалог А + В? В условии диалога 1 поставить запрет, если состоялся диалог 3, а в условии диалога 3 поставить запрет, если состоялся диалог 1.

Более того, для условия начала диалога Б я использовал доп. переменную, котора инициализируется, когда ГГ только заговаривает с НПЦ (не важно где).
А нельзя ли обойтись без этой переменной с помощью функции Npc_KnowsInfo(hero,ХХХ) (ХХХ - инстанция диалога)?
 

Lingviston

Участник форума
Регистрация
10 Май 2010
Сообщения
14
Благодарности
0
Баллы
150
А почему нельзя сделать через три инстанции: 1 - диалог А, 2 - диалог В, 3 -диалог А + В? В условии диалога 1 поставить запрет, если состоялся диалог 3, а в условии диалога 3 поставить запрет, если состоялся диалог 1.

А нельзя ли обойтись без этой переменной с помощью функции Npc_KnowsInfo(hero,ХХХ) (ХХХ - инстанция диалога)?

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

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

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Lingviston, может быть я не правильно понял, но все-таки: кто мешает создать фунцию с определенным текстом и дальше просто вызывать ее из разных инстанций. Между прочим такое у пираний встречается довольно часто. А лучше выложи свой скрипт люди тебе за пять сек все сделают. Вот например Redleha по этим вещам мастер(оптимизация кода).

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

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Смысл как раз в том, чтобы сделать поменьше разных инстанций, дублирующих одинаковы текст.

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

Наличие скрипта сделало бы ситуацию более понятной.
 

Lingviston

Участник форума
Регистрация
10 Май 2010
Сообщения
14
Благодарности
0
Баллы
150
дальше просто вызывать ее из разных инстанций
Шило на мыло. Я и сейчас запускаю из разных инстанций и без дополнительной функции. Все работает на УРА. Интересно как раз можно ли запускать их как бы из одной инстанции. Т.к. диалог Б содержит варианты, а их надо добавлять/убирать в соответствующей инстанции, иначе часть вариантов будут не видны либо видны лишние. Я решил это просто очищая и заполняя все инстанции, из которых может начаться этот диалог.

Скрипт возможно выложу после небольшой правки, т.к. это мини квест и я в переменную квеста пишу не стандартные значения (LOG_SUCCESS etc), а стадию квеста (по типу ТЕСа). Это удобно в пределах конкретного квеста, но в дальнейшем может привести к путанице. Так что выложу, когда избавлюсь от нее и перейду к стандартным значениям и проверкам по KnowsInfo.
 

zinador

Участник форума
Регистрация
9 Июн 2009
Сообщения
9
Благодарности
0
Баллы
145
Проверка анимации

Добрый день,вопрос следующий.
есть функция в скриптах

func int Npc_GetBodyState(var C_NPC npc);

возвращает BS константу,Но мне нужно примерно следующие функции

возвращает id анимации которая сейчас проигрывается
int npc_GetAniName(var C_NPC npc);

либо

возвращает имя анимации которая сейчас проигрывается
string npc_GetAniName(var C_NPC npc);
если таких не имеется,то кто как думает,каким способом можно это реализовать.

еще раз напомню мне нужно узнать не состояния тела (BS константа) ,
а название либо id анимации которая проигрывается на данный момент у НПС.
 

alex_draven


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

если таких не имеется,то кто как думает,каким способом можно это реализовать.
Я бы отписал в предложения к Gothic Engine.
 

zinador

Участник форума
Регистрация
9 Июн 2009
Сообщения
9
Благодарности
0
Баллы
145
Насколько помню, такого нет. Все существующие внутренние функции описаны. Другого ничего нет. Что-то можно сделать через расширенные сборки скриптов. Но, вроде, подобных трюков там не было.


Я бы отписал в предложения к Gothic Engine.

я раньше как то делал, год назад,забыл блин,ладно,а где можно инфу почитать что такое Gothic Engine,это sdk или что ,просто на форуме мало информации нашел,как его юзать и для чего он,сорри за оффтоп.
 

Rendal

Участник форума
Регистрация
14 Дек 2010
Сообщения
240
Благодарности
2
Баллы
200
Помогите понять проблему!
При взаимодействие с точильным камнем (Г1) клинок не конвертируется в меч а удваивается в инвентаре!
Ничего касающиеся кузни и всего вытекающего к ней я не правил, даже с оригинальном сравнивал, без толку!
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Rendal,
подмена клинка на меч прописана в файле сценариев анимаций HUMANS.MDS

На процесс подмены может влиять ключ ITEM_MULTI в инстанции простого меча (instance ItMw_1H_Sword_01(C_Item)).
 

Rendal

Участник форума
Регистрация
14 Дек 2010
Сообщения
240
Благодарности
2
Баллы
200
Спасибо, все дело оказалось в анимаций HUMANS.MDS
 

Shevchenko

Участник форума
Регистрация
26 Ноя 2010
Сообщения
391
Благодарности
0
Баллы
180
Вопрос таков: где находятся описания всех spellFX' ов. И еще один вопрос: где в скриптах Когтя Белиара написано, что при ударе по противнику бьет молния?
 

Мільтен

Участник форума
Регистрация
27 Июн 2008
Сообщения
862
Благодарности
427
Баллы
265
Вопрос таков: где находятся описания всех spellFX' ов. И еще один вопрос: где в скриптых Когтя Белиара написано, что при ударе по противнику бьет молния?
Смотри PARTICLEFX.dat
 

Val Der Marix

Участник форума
Регистрация
1 Июн 2007
Сообщения
1.227
Благодарности
32
Баллы
245
Еще кой-чего вылезло, что давно интересовало?
А как можно сделать неписей похладнокровнее? То есть, что куда надо прописать, чтобы неписи 1) Умирали сразу, а не падали в обморок, 2) Чтобы все окружающие лишь сказали "как он ему дал!" и продолжили свои повседневные дела, не обращая внимание на убийство.
Как это делали бандиты, но при этом чтобы ни неписи ни ГГ этими самыми бандитами не были?
То же самое и с некоторыми наемами, магами и паладинами, не лишая их гильдий, ибо гильдии также собираюсь вводить - возможно ли?
 

Хелдар

Участник форума
Регистрация
3 Июл 2012
Сообщения
2.450
Благодарности
780
Баллы
375
Ну вот эта строка aivar[AIV_DropDeadAndKill] = TRUE; позволяет НПС убить героя, а герою - НПС без обмороков.
Про окружающих и убийство - тут надо менять в корне систему восприятия преступников.
 
Сверху Снизу