new question about MVAR

xisailuo261

First time out of the vault
In my script , there is charactor A and B.A talked to the dude_obj and then dude_obj can talk to the B.There are two results after the talking to the B,and there are differences between the lator talking of the A.

So I make an .h file: modbase.h
/*
Copyright 1998-2003 Interplay Entertainment Corp.  All rights reserved.
*/

#ifndef MODBASE_H
#define MODBASE_H

// Map vars for Arroyo Village Map

// Comments

//MAP_GLOBAL_VARS:

//GLOBAL                                        NUMBER

// All Map Vars need to start w/ MVAR_

#define MVAR_Talk               (0)


#endif // MODBASE_H

and my script file
#define NAME                    SCRIPT_BASEMM
#include "..\headers\define.h"
#include "..\headers\ModReact.h"
#include "..\headers\command.h"
#include "..\headers\ModBase.h"


procedure start;
procedure talk_p_proc;  
procedure old_pickup_p_proc;
procedure Node001;
procedure Node002;
procedure Node003;
procedure Node004;

procedure Node006;

procedure Node008;
procedure Node009;
procedure node010;
procedure node011;
procedure node012;
procedure node013;
procedure node014;
procedure Node015;
/* Script Specific Procedure Calls */
procedure Node998;
procedure Node999;                                      // This Node is Always Ending


procedure start begin
set_map_var(MVAR_Talk , 0);
end

procedure old_pickup_p_proc begin
end

procedure talk_p_proc begin

start_gdialog (NAME,self_obj,4,-1,-1);
      gSay_Start;
    if (map_var(MVAR_Talk == 0)) then begin
          call Node001;
    set_map_var(MVAR_Talk , 1);
    END
  if (map_var(MVAR_Talk == 3)) then begin  
     call Node011;
       end
  if (map_var(MVAR_Talk == 4)) then begin
          call Node014;
      gSay_End;
      gSay_End;
      end_dialogue;
      END

 
 if (map_var(MVAR_Talk == 1)) then begin
float_msg(self_obj, mstr(117), FLOAT_MSG_NORMAL);
end
end

procedure Node001 begin
  Reply(100);
  NOption(101,Node002,004);
  NOption(102,Node002,004);
end

procedure Node002 begin
  Reply(103);
  NOption(104,Node003,004);
  NOption(mstr(105) + " " + dude_name + mstr(106), Node004, 4);
end

procedure Node003 begin
  Reply(107);
  NOption(109,Node006,004);
end

procedure Node004 begin
  Reply(108);
  NOption(110,Node006,004);  
end

procedure Node006 begin
variable obj;
  obj := obj_carrying_pid_obj(self_obj, PID_MEAT_JERKY  );
add_obj_to_inven(dude_obj,obj);
 Reply(111);
  NOption(113,Node008,004);
  NOption(114,Node009,004);
end



procedure Node008 begin
  Reply(115);

end

procedure Node009 begin
  Reply(116);

end



procedure Node010 begin
  Reply(118);

  NOption(119,Node011,004);
  NOption(120,Node012,004);
end

procedure Node011 begin
  Reply(121);

  NOption(123,Node013,004);
  NOption(124,Node013,006);
end


procedure Node012 begin
  Reply(122);

  NOption(123,Node013,004);
  NOption(124,Node013,006);
end


procedure Node013 begin
  Reply(125);

end

procedure Node014 begin
  Reply(126);
NOption(127,Node015,004);
end

procedure Node015 begin
  Reply(128);

end

procedure Node999 begin
end

procedure Node998 begin
end
 
when dude_obj have finished talking to the B ,MVAR_Talk==2
I can start dialog, but there is empty ,it seems not use my .msg file or MVAR_talk is error .Can you tell me why?Thank you

c5pJ_scr00000.gif
 
first you incorrectly use map_var command:
Code:
   if (map_var(MVAR_Talk == 0)) then begin
should be:
Code:
    if (map_var(MVAR_Talk) == 0) then begin

second you must create mapname.gam file with list of map vars for this map.
In this case it will be something like this:

file MODBASE.gam (in data/maps dir):


Code:
 // Map vars for modbase Map

 // Comments

//MAP_GLOBAL_VARS:
MAP_GLOBAL_VARS:
//GLOBAL                                        NUMBER
MVAR_Talk               :=0;            // (0)

BTW: In FSE you can add map vars in very simple way(it self create gam file)
 
Back
Top