Форум TeamX
   Home   Members  
Pages: [1] |   Go Down
 
Author Topic: Проблема с диалогом (FScript-HOWTO)  (Read 509 times)
Dr.CRACKer
Пользователь
Posts: 78


Проблема с диалогом (FScript-HOWTO)
« on: 28 December 2010, 18:31:17 »

Возникла проблема с примером диалога, все компилируется нормально, но если войти в игру и попытаться поговорить с НПС в которого встален этот диалог, то после того, как появится интерфэйс диалога, появляется ошибка: "GDialog::Error Grabbing text message!" Что это за ошибка, и как ее исправить??

Код скрипта(INT - файл):
Code:
//Наш номер
#define NAME 1305
//Макросы
//Заменяем (номер_скрипта,номер_фразы) на (номер_фразы)
//т.к. номер скрипта - заранее известен и неизменен для всего скрипта
#define Reply(x) gsay_reply(NAME,x)
//Тоже и для gsay_option
#define Option(x,y) gsay_option(NAME,x,y,-1)

procedure Node009;
procedure Node010;
procedure Node011;
procedure Node999;

//Процедуры
procedure start begin
end

procedure talk_p_proc begin
Start_gDialog(NAME,self_obj,-1,-1,-1);
GSay_Start;
  call Node009;
GSay_End;
End_Dialogue;
end

procedure Node009 begin
 Reply(1);
  Option(10,Node010);
  Option(11,Node011);
end

procedure Node010 begin
  Reply(2);
  Option(12,Node011);
  Option(13,Node999);
end

procedure Node011 begin
  Reply(3);
  Option(15,Node999);
end

procedure Node999 begin
end

Диалог (MSG - файл):
Code:
{1}{}{Hello, Chosen One}
{10}{}{Yeah. How its going?}
{11}{}{Sorry. No time for chat}
{2}{}{Not bad. Heard you have some troubles with the Enclave?}
{12}{}{Oooh. Nothing serious, really}
{13}{}{Eee. I must be going}
{3}{}{Well, I wish you luck anyway}
{15}{}{Thanks. Bye}
Ray
Глобальный модератор
Posts: 220

336150559
Re: Проблема с диалогом (FScript-HOWTO)
« Reply #1 on: 28 December 2010, 23:46:37 »

http://www.teamx.ru/cgi-bin/ikonboard/topic.cgi?forum=5&topic=339&start=0#10
Dr.CRACKer
Пользователь
Posts: 78


Re: Проблема с диалогом (FScript-HOWTO)
« Reply #2 on: 29 December 2010, 00:11:23 »

Спасибо за ответ, но понять почему игра не может увидеть *.msg - файл так и не могу понять, в самом msg - файле вроде ошибок нет, если не затруднит, то прошу объяснить мне, как правильно подключить msg - файл к скрипту.
Rainman
Пользователь
Posts: 69

301104000
Re: Проблема с диалогом (FScript-HOWTO)
« Reply #3 on: 29 December 2010, 01:30:30 »

Основы основ: в твоем скрипте есть строчка "#define NAME 1305", где 1305 - порядковый номер строки в файле scripts.lst -> открываем этот файл (Fallout2\data\scripts\), ищем 1305-ю строчку, в начале строки стоит qwertyui.int, так вот, твой файл .msg должен называться точно так же - qwertyui.msg, и должен находиться в папке fallout2\data\text\english\dialogue\

Удачи в начинаниях!

Наш большой пост апокалиптический проект "Олимп 2207"
http://olympus2207.com
Dr.CRACKer
Пользователь
Posts: 78


Re: Проблема с диалогом (FScript-HOWTO)
« Reply #4 on: 29 December 2010, 11:16:20 »

Все, спасибо, во всем вроде разобрался...)
Dr.CRACKer
Пользователь
Posts: 78


Re: Проблема с диалогом (FScript-HOWTO)
« Reply #5 on: 29 December 2010, 14:20:27 »

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

Code:
#include "..\HEADERS\define.h"
#include "..\HEADERS\command.h"
#define NAME 1304
#define Reply(x) gsay_reply(NAME,x)
#define Option(x,y) gsay_option(NAME,x,y,-1)

procedure Node001;
procedure Node009;
procedure Node010;
procedure Node011;
procedure Node999;

//Процедуры
procedure start begin
end

procedure talk_p_proc begin
if get_critter_stat(dude_obj,4) < 4 then begin
       call Node001;
   end

else begin
Start_gDialog(NAME,self_obj,-1,-1,-1);
GSay_Start;
  call Node009;
GSay_End;
End_Dialogue;
end

procedure node001 begin
   floater(4);
end

procedure Node009 begin
 Reply(1);
  Option(10,Node010);
  Option(11,Node011);
end

procedure Node010 begin
  Reply(2);
  Option(12,Node011);
  Option(13,Node999);
end

procedure Node011 begin
  Reply(3);
  Option(15,Node999);
end

procedure Node999 begin
end
« Last Edit: 29 December 2010, 22:58:16 by Dr.CRACKer »
Rainman
Пользователь
Posts: 69

301104000
Re: Проблема с диалогом (FScript-HOWTO)
« Reply #6 on: 29 December 2010, 20:20:57 »

В процедуре talk_p_proc в самом конце добавь еще один end (золотое правило: сколько begin'ов - столько и end'ов, большинство ошибок при компиляции возникает именно из-за этого). Я бы посоветовал ставить отступы после каждого нового begin'а:

procedure talk_p_proc
begin
   if condition1 then
   begin
      if condition2 then
      begin
         action1;
      end else
      begin
         action2;
      end
   end else
   begin
      action3;
   end
end

Такая схема очень удобна, так как позволяет легко видеть, какой begin какому end'у соответствует, и что все begin'ы закрыты.
А вообще, Компилятор - штука довольно вредная и недалекая, поэтому он почти на любую ошибку выдает сообщение типа expecting ";". Лично я пользуюсь sfall modders pack, там есть встроенный компилятор, который поможет и код оптимизировать, и ошибки показывает более-менее корректно.

Наш большой пост апокалиптический проект "Олимп 2207"
http://olympus2207.com
Dr.CRACKer
Пользователь
Posts: 78


Re: Проблема с диалогом (FScript-HOWTO)
« Reply #7 on: 29 December 2010, 22:58:39 »

Спасибо!
Pages: [1] |   Go Up