Форум TeamX
   Home   Members  
Pages: [1] |   Go Down
 
Author Topic: Не работает диалог  (Read 959 times)
Jordan
Пользователь
Posts: 416

476228895
Не работает диалог
« on: 05 November 2008, 13:29:15 »

Незнаете почему скрипт не работает? Компилиться нормально. Но диалог не начинается. Ошибок не выдает.

def.h

variable n := 1;

procedure Node(variable n1, variable n2) begin

n := n1;
call n2;

end




acklint.ssl



#include "..\headers\define.h"

#define NAME 751

#include "..\headers\command.h"
//#include "..\headers\ModReact.h"

#include "def.h"

procedure start;
procedure talk_p_proc;
procedure Dialog;

procedure start begin

end

procedure talk_p_proc begin
   //n := 1;
   start_gdialog(NAME, self_obj, 4, -1, -1);
   gsay_start;
   call Dialog;
   gsay_end;
   end_dialogue;
end

procedure Dialog begin

if (n == 1) then begin
Reply(101);
NOption(102, Node(2,Dialog), 1);
end

if (n == 2) then begin
Reply(103);
NOption(104, Node(3,Dialog), 1);
end

if (n == 3) then begin
Reply(105);
NOption(106, Node(1,Dialog), 1);
end

end




acklint.msg


{101}{}{1}
{102}{}{1}
{103}{}{2}
{104}{}{2}
{105}{}{3}
{106}{}{3}

Подскажите где ошибка.

Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Не работает диалог
« Reply #1 on: 05 November 2008, 13:57:21 »

А зачем тебе такое извращение, если не секрет?
Jordan
Пользователь
Posts: 416

476228895
Не работает диалог
« Reply #2 on: 05 November 2008, 14:34:01 »


Что бы весь диалог умещался в одну процедуру. Не знаешь где ошибка?

Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Не работает диалог
« Reply #3 on: 05 November 2008, 20:08:16 »

Изврат, если честно. Причём большой и неоправданный. Для выявления причин сначала убери ненужный параметр n2 и вызывай непосредственно Dialog. И if'ы поставь.
Mynah
Модератор
Posts: 29


Не работает диалог
« Reply #4 on: 06 November 2008, 16:50:17 »

Jordan,
В Option'ах нельзя использовать процедуры с параметрами.

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

Code:
procedure Dialog begin

    if (n == 1) then begin  //switch 1
         n:=2;
         Reply(101);
         NOption(102, Dialog, 1);
    end else if (n == 2) then begin //switch 2
         n:=3;
         Reply(103);
         NOption(104, Dialog, 1);
    end else if (n == 3) then begin //switch 3
         n:=1;
         Reply(105);
         NOption(106, Dialog, 1);
    end //end switch

end
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Не работает диалог
« Reply #5 on: 07 November 2008, 18:49:08 »

Mynah, его это не спасёт. NOption может быть не один. Т.е. смена n должна происходить после выбора варианта ответа. Если Option не принимает процедуры с параметрами, то выход только один: много маленьких функций для каждого ответа. И, стало быть, "фишка" теряется.
Pages: [1] |   Go Up