Перейти к контенту

Модуль для упрощенного создания диалогов.


Рекомендуемые сообщения

 

 

  Zander_driver писал(а):
x0 = текст_первой_фразы

Извините за нубский вопрос, текст можно писать прям в этом же файле? Без всяких xml:russian_ru:

NL-Vincenz.gif

Ссылка на комментарий

@Zander_driver, за труды по любому плюс. Мне понравилось. Только с магией блоков ты переборщил, конфиги тупиковая ветвь, можно было бы повысить функциональность блоков сделав конфигурирование на скриптовых таблицах. Это мое мнение.

 

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

  • Спасибо 1
  • Согласен 1
Ссылка на комментарий

Не буду писать про то, насколько наглядно или нет выглядит данная система по сравнению xml-ветками - это субъективное мнение, но вот новые команды распространенных действий добавить бы не помешало - has/give/lost_item и т.п.

  • Спасибо 1
Ссылка на комментарий

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

 

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

Изменено пользователем Карлан
Ссылка на комментарий

 

 

  Карлан писал(а):
можно было бы повысить функциональность блоков сделав конфигурирование на скриптовых таблицах

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

 

 

 

  Shadows писал(а):
новые команды распространенных действий добавить бы не помешало - has/give/lost_item и т.п.

Дельная мысль.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

@Zander_driver, ты наверное меня не понял, я говорю о создании настроек в скриптах, чтобы в течении игры можно было на ходу редактировать текущий диалог (это и сейчас можно, но непонятно где, я за удобство тут выступаю), и потом менять настройки хотя бы с помощью моего костыля который я тут когда-то выкладывал, правда никто не понял зачем я это сделал :(. А пастебин его уже удалил (у кого может остался покажите)  :(.

Изменено пользователем Карлан
Ссылка на комментарий

 

 

  Карлан писал(а):
на ходу редактировать текущий диалог

Ну для этого достаточно разубедить движок от мысли хранить однажды сгенеренный граф диалога аки сокровище какое-то. Если генератор вызывается при каждом обращении к диалогу, то какие вообще проблемы создать его каждый раз так как надо?)

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

@Zander_driver, я там не движком делал а написал скриптовый костыль, который неплохо справлялся с управлением диалогами. (тебе кстати не скидывал? а то за антисоветчину меня раскулачили)

 

  Zander_driver писал(а):

Если генератор вызывается при каждом обращении к диалогу, то какие вообще проблемы создать его каждый раз так как надо?)

Я не понял что ты тут говоришь. К чему генерировать ингейм если их нельзя будет заюзать?

Ссылка на комментарий

Перезалил файл, закомментировал там пару лишних вызовов которые сначала незаметил, и добавил вот это:

  Команды для работы с предметами (Показать)

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

@Zander_driver, надо бы стандартизировать названия команд - при разнобое могут быть ошибки во время написания: give_item\lost_item\has_item\donthas_item, give_info\lost_info\has_info\donthas_info, give_money\lost_money\has_money\donthas_money и т.п.

Еще можно ввести команды transfer_item и transfer_money для передачи между ГГ и НПС.

Например



from10 = actor
to10 = sidor
transfer_item10 = vodka.5, antibodun.10
  Цитата

команда a - добавит вызов функции в указанной фразе (аналогично тегу <action>)
команда p - добавит прекондишен (проверку условия) в указанной фразе (аналогично тегу <precondition>)

Имхо, но тоже нужно заменить на полные аналоги (action и precondition), дабы визуально не сливалось с другими командами. Исключительно для удобства.

Изменено пользователем Shadows
  • Согласен 1
Ссылка на комментарий

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

 

@Zander_driver, еще предложение ввести сразу ключи change_rank, change_reputation, change_goodwill.

, from to тогда думается лучше npc поставить, так как какая разница сидор там или кто другой, все равно второй агент всегда один.

Ссылка на комментарий
  Карлан писал(а):

from to тогда думается лучше npc поставить, так как какая разница сидор там или кто другой, все равно второй агент всегда один.

Тут я подразумевал, что команду можно использовать не только как передачу железно между актором и собеседником, но и например между другими НПС. Конечно, такие случаи редки, но мало ли...

Если упрощать, то можно ввести одну команду "to" принимающую два значения - ГГ или собеседник.

to10 = actor|second_talker -- кому?
transfer_item10 = vodka.5, antibodun.10
Изменено пользователем Shadows
Ссылка на комментарий

, ну вот я о втором агенте и говорил, об однобокой передаче я не слова не сказал кажися :blink: .


 

 

  Shadows писал(а):
но и например между другими НПС

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

Ссылка на комментарий
  Карлан писал(а):
Не вот теперь я действительно не въехал, это как это можно завести диалог между двумя нпсами чтобы там трансфер сделать? Или мы типо стоим рядом с двумя, с одним базарим, и этот наш одний передает итем другому? Ты как-то круто завернул честно слово.

Это не диалог, а функция передачи предметов\денег, которая _не привязана_ конкретно к собеседникам. Чтобы не писать каждый раз в скрипте, можно создать универсальный сценарий прямо в коде диалоге, точно же как например со спавном предметов (туда бы тоже не помешало добавить команду-параметр "куда\в кого спавним").

 

Спавн объекта на позиции:

pos_x10 = 453
pos_y10 = 0
pos_z10 = 789
gvid10 = 52
lvid10 = 1015
create10 = vodka.6
Изменено пользователем Shadows
Ссылка на комментарий

, по моему это перебор. Уж касаемо этого модуля точно - бритва Оккама. Например у меня никогда не возникала потребность явного трансфера между нпс. 


 

 

  Shadows писал(а):
Спавн объекта на позиции:

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

%=func(param1:param2:param3:...)%
Ссылка на комментарий

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

Очевидно, скрипт писался под себя в надежде, что и остальные примут. Я уверен, на все найдутся свои пользователи, так что это не пост в стиле "фу, какая какашка".

ИМХО может быть это и полезно, но бОльшего удобства я не увидел.

 

Я бы сделал 2 типа секций: первый будет описывать сам диалог (условия и еще что-то там) + будет указана только стартовая фраза, второй это собственно сама фраза, которая может ссылаться на другие фразы и т.п. Естественно без всяких х100500, а нормальные, адекватные названия на английском (ну тут кому как, можно и moy_krutoy_dialog назвать).

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

Изменено пользователем Desertir
  • Согласен 2

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий
  Desertir писал(а):
без всяких х100500, а нормальные, адекватные названия на английском

Для каждой фразы будешь придумывать названия на английском? :D

 

В конечном итоге у тебя всё равно получится - [имя_диалога]_[номер_фразы], а оно ничем практически не отличается от просто [номер_фразы], только увеличивает количество видимой информации и тем самым затрудняет чтение\написание конфига (человеком).

Изменено пользователем Shadows
  • Согласен 3
Ссылка на комментарий
Гость
Эта тема закрыта для публикации сообщений.
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...