Полная Версия: Упрощаем написание диалогов, с технической стороны
jordan
Приветствую!

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

Пример с использованием макросов.

CODE

procedure talk_p_proc begin
 dlg_start(1)
end

procedure dlg_talk(var dlg)
begin
 if (dlg == 1) then begin
   dlg_if_reply("reply 1 money >=", dude_caps > 0)
   dlg_reply("reply 1 not money")
   dlg_option("Option 1 to 2", 2)
   dlg_option("Option 1 to 3", 3)
 end
 if (dlg == 2) then begin
   dlg_reply("reply 2")
   dlg_option("Option 2 to 1", 1)
 end
 if (dlg == 3) then begin
   dlg_reply("reply 3")
   dlg_if_option("Option 3 to 1", 1, dude_wielding_knife)
   dlg_option("Option 3 to 2", 2)
   dlg_option("Option 3 to quit", quit)
 end
end


Собственно всё видно. Так же нормально работают условия. И нету переходов по нодам.

Ещё написал програмку которая вырезает из скрипта текст и помещает в msg файл, заменяя текст номерами строк.

Пример работы.

QUOTE

procedure dlg_talk(var dlg)
begin
  if (dlg == 1) then begin
    dlg_if_reply(1, dude_caps > 0)
    dlg_reply(2)
    dlg_option(3, 2)
    dlg_option(4, 3)
  end
  if (dlg == 2) then begin
    dlg_reply(5)
    dlg_option(6, 1)
  end
  if (dlg == 3) then begin
    dlg_reply(7)
    dlg_if_option(8, 1, dude_wielding_knife)
    dlg_option(9, 2)
    dlg_option(10, quit)
  end
end 


QUOTE

{1}{}{reply 1 money >=}
{2}{}{reply 1 not money}
{3}{}{Опция 1 to 2}
{4}{}{Option 1 to 3}
{5}{}{reply 2}
{6}{}{Option 2 to 1}
{7}{}{reply 3}
{8}{}{Option 3 to 1}
{9}{}{Option 3 to 2}
{10}{}{Option 3 to quit} 


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

Прога dlg.exe имя_скрипта без расширения на выходе тоже имя файла с расширение dlg его скормите компилятору с препроцессором.

В архиве прога, исходники проги писаны на С++, собирал mingw. И файл с макросами для диалога. Прога
Fakeman
QUOTE
архиве прога, исходники проги писаны на С++, собирал mingw

Во тут то ты мне и нужен) сможешь собрать сфалл4.0 без установленной студии VS15, читал что можно собирать с++ проекты всякими mingw компиляторами, но там столько за мудреного... а опыта у меня с такими компиляторами нет.
Тоесть мне нужна инструкция как его собрать с помощью mingw.
jordan
Дополнение. Прога вырезает любой текст заключённый в кавычки. Если встретит символ # пропускает строку. Это нужно что бы не съедал #include "бла бла бла"
Fakeman
QUOTE
Ещё написал програмку которая вырезает из скрипта текст и помещает в msg файл, заменяя текст номерами строк.

Лажа тут получается) т.к в исходнике текста не указывается по какому номеру вставлять текст.

jordan
QUOTE

Во тут то ты мне и нужен) сможешь собрать сфалл4.0 без установленной студии VS15, читал что можно собирать с++ проекты всякими mingw компиляторами, но там столько за мудреного... а опыта у меня с такими компиляторами нет.
Тоесть мне нужна инструкция как его собрать с помощью mingw.


А чёб и нет)) Там поди макефайл есть. Гляну.

Отправлено: 24 апр 18 20:46
QUOTE

Fakeman


Где исходники то брать? На sourceforge только архивы уже собранной проги. Есть у меня сомнения, что возможно mingw не переварит асм код. Надо пробывать.

QUOTE

Лажа тут получается) т.к в исходнике текста не указывается по какому номеру вставлять текст.


В макросе забыл прописать g_mstr(x), дополню, и ещё добавлю проверку на iq. Угу чёт забыл.
Fakeman
QUOTE
В фоле мне всегда не нравилось, бегать по процедурам нодам. Хотелось что бы в одной процедуре можно было бы создавать разветвлённые диалоги, где всё умещается в поле зрения.

У тебя все равно на один экран не влезет весь код диалога и так же придется бегать по тексту/процедурам, к тому же такой подход потом усложнит разбор диалога.

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

Отправлено: 24 апр 18 20:55
QUOTE
Там поди макефайл есть..

Ну как раз таки и нету такого файлика)
исходники вот https://github.com/phobos2077/sfall/tree/develop

QUOTE
Удобно диалоги пишутся в самом скрипте.

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