» TeamX (Архив Форума)«


Форум TeamX » English Forum » Attaching Dialogue to critter (How do i..)

Переход по темам
<< Пред. След. >>
Единственная страница этой темы

 
Andrej
Member

Откуда: Srbija
Регистрация: Июнь 2005

Всего: 12 сообщений

Hi.
Im new to creating mods and stuff in Fallout2 so i dont know really much about it.
I downloaded FMF Dialogue Tool and figured out how to make dialogues.Everything worked out good and i saved it as SSL+MSG (Thats how its supposted to be, right? ).
Anyway, I dont know how to attach it to critter. I tried exporting it into master.dat using Data Explainer but thats not how its supposted to be done. Help please!
Thanks in advance.

Отправлено: 17:00 - 26 Июня, 2005
Andrej
Member

Откуда: Srbija
Регистрация: Июнь 2005

Всего: 12 сообщений

Ok, I used Fallout Script Editor 1.5a to register it into .h and made it into .lst.I started mapper and i managed to attach script to critter.I used it on Combat Slave.His name changed to what i changed it in FMF DT but the rest i modified wont work(example- description is you see nothing out of ordinary but thats not how i set it.)

Here is script i made :

/*

       Fan Made Fallout NPC Script

       Name:           Luciano
       Location:       Smear
       Description:    

          Created: 26.6.2005 9:53:40

*/

/* Include Files */


//Overrides the pickup p proc.
//#define NPC_REACTION_TYPE       REACTION_TC /* REACTION_TC REACTION_TG REACTION_C REACTION_G */
#define NPC_REACTION_VAR        7 /* same as thief variable */

#include "..\headers\define.h"
//#include "..\headers\<TownName.h>"

#define NAME                    SCRIPT_LUCIANO

// NOTE: Uncomment this line and set the town reputation GVAR to the city
// this NPC belongs to
//#define TOWN_REP_VAR            (GVAR_TOWN_REP_)

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


/* Standard Script Procedures */
procedure start;
procedure critter_p_proc;
procedure pickup_p_proc;
procedure talk_p_proc;
procedure destroy_p_proc;
procedure look_at_p_proc;
procedure description_p_proc;
procedure use_skill_on_p_proc;
procedure damage_p_proc;
procedure map_enter_p_proc;


/* Script Specific Procedure Calls */
procedure Node998;                                      // This Node is Always Combat
procedure Node999;                                      // This Node is Always Ending


// The next lines are added in by the Designer Tool.
// Do NOT add in any lines here.
//~~~~~~~~~~~~~~~~ DESIGNER TOOL STARTS HERE

procedure smart;
procedure smart2;
procedure smart3;
procedure smart4;
procedure smart5;
procedure stupid;
procedure stupid2;
procedure stupid3;
procedure smart6;
procedure smart7;
procedure smart8;
procedure gunmanJ1;
procedure GunmanJ2;
procedure GunmanJ3;
procedure GunmanJ4;
procedure GunmanJ5;


//~~~~~~~~~~~~~~~~ DESIGN TOOL ENDS HERE
// The Following lines are for anything that is not needed to be
// seen by the design Tool


/* Local Variables which are saved. All Local Variables need to be
  prepended by LVAR_ */
#define LVAR_Herebefore                 (4)
#define LVAR_Hostile                    (5)
#define LVAR_Personal_Enemy             (6)
#define LVAR_Caught_Thief               (7)

/* Imported variables from the Map scripts. These should only be
  pointers and variables that need not be saved. If a variable
  Needs to be saved, make it a map variable (MVAR_) */


/* Local variables which do not need to be saved between map changes. */
variable Only_Once:=0;

procedure start begin
end

/* This procedure will get called each time that the map is first entered. It will
  set up the Team number and AI packet for this critter. This will override the
  default from the prototype, and needs to be set in scripts. */
procedure map_enter_p_proc begin
  Only_Once:=0;
//   critter_add_trait(self_obj,TRAIT_OBJECT,OBJECT_TEAM_NUM,TEAM_);
//   critter_add_trait(self_obj,TRAIT_OBJECT,OBJECT_AI_PACKET,AI_);
end


/* Every heartbeat that the critter gets, this procedure will be called. Anything from
  Movement to attacking the player on sight can be placed in here.*/
procedure critter_p_proc begin

/* If the critter is mad at the player for any reason, it will attack and remember to attack
  the player should the game be saved and loaded repeatedly. Additionally, if any special
  actions need to be taken by the critter based on previous combat, the critter will remember
  this as well. */

  if ((local_var(LVAR_Hostile) != 0) and (obj_can_see_obj(self_obj,dude_obj))) then begin
      set_local_var(LVAR_Hostile,1);
      self_attack_dude;
      //Macro made by Tom to keep the critter fleeing.
  end

end

/* Whenever the critter takes damage of any type, this procedure will be called. Things
  like setting ENEMY_ and LVAR_Personal_Enemy can be set here. */
procedure damage_p_proc begin

/* If the player causes damage to this critter, then he will instantly consider the player
  his personal enemy. In Critter_Proc or through dialog, actions will be taken against
  the player for his evil acts. */
  if (obj_in_party(source_obj)) then begin
      set_local_var(LVAR_Personal_Enemy,1);
  end

end

/* Any time that the player is caught stealing from this critter, Pickup_proc will be called.
  In here, various things can happen. The most common response is instant hostility which
  will be remembered. */
procedure pickup_p_proc begin
  if (source_obj == dude_obj) then begin
      set_local_var(LVAR_Hostile,2);
  end
end

/* The dialog system is setup and prepares the player to talk to this NPC. Where To Go
  written by designers are placed in here. Additionally, Reactions are generated and
  stored which affects player interactions. */
procedure talk_p_proc begin
  Evil_Critter:=0;
  Slavery_Tolerant:=SLAVE_TOLERANT;
  Karma_Perception:=KARMA_PERCEPTION1;

  CheckKarma;

  GetReaction;

  if (1) then begin
     start_gdialog(NAME,self_obj,4,-1,-1);
     gSay_Start;
     call smart;

     gSay_End;
     end_dialogue;
  end
end

procedure timed_event_p_proc begin
end

/* This procedure gets called only on the death of this NPC. Special things like
  incrementing the death count for reputation purposes and Enemy Counters are placed
  in here. */
procedure destroy_p_proc begin

/* Increment the aligned critter counter*/
  inc_good_critter
/* inc_evil_critter */
/* inc_neutral_critter */

/* Set global_variable for Enemy status*/
end

/* Look_at_p_proc gets called any time that the player passes the cursor over any object.
  This should only hold the most cursory of glances for the player. */
procedure look_at_p_proc begin
  script_overrides;
  if (local_var(LVAR_Herebefore) == 0) then
     display_mstr(100);
  else
     display_mstr(101);
end

/* The player will see more indepth descriptions from this procedure. They are actively
  looking at the critter and want more information. Things like names can be added here
  if the critter is known to the player. */
procedure description_p_proc begin
  script_overrides;
  display_mstr(102);
end

/* Any time a skill is used on a critter this call is made. This can be to give examinations
  for things like Doctor skill or messages for various other skills. */
procedure use_skill_on_p_proc begin
end

/* Should the Player ever cause the NPC too much discomfort that he desires to attack the player,
  this call will be made. Essentially, it stores the Hostile vaule so that the critter remembers
  he was once hostile towards the player.*/
procedure Node998 begin
  set_local_var(LVAR_Hostile,2);
end

/* Anytime that there is a need for an ending to dialog, this node is to be called. It will just
  exit from the dialog system without any reprisals from the NPC. */
procedure Node999 begin
debug_msg("LVAR_Herebefore == "+local_var(LVAR_Herebefore));
if (local_var(LVAR_Herebefore)==0) then
begin
set_local_var(LVAR_Herebefore,1);
end
end


// Not lines are allowed to be added below here
// The Following lines are from the Design Tool
//~~~~~~~~~~~~~~~~ DESIGN TOOL STARTS HERE


procedure smart
begin
//  [200] "Hello,traveler.I dont remember seeing you around here.Who are you?"
if (dude_is_male) then Reply(200); else
//  [201] "Welcome to our city!May i help you with something?"
if (dude_is_female) then Reply(201);
//  [202] "Thanks.Im " [variable: dude_name] [203] ".What do you do here?"
if (get_critter_stat(dude_obj,STAT_ch)>=4) then
NOption(mstr(202)+dude_name+mstr(203),smart2,6);
//  [204] "You dont need to know that.Goodbye."
NOption(204,Node999,6);
end

procedure smart2
begin
//  [210] "Well mostly nothing going on right now,I sell guns and  stuff ."
Reply(210);
//  [211] "I see.I was wondering about your gun you have there.It looks kinda different."
if (get_critter_stat(dude_obj,STAT_pe)>=8) then
NOption(211,smart3,6);
//  [212] "Nothing at all?"
NOption(212,smart6,6);
//  [213] "Well then,I guess I have nothing to do here.Bye."
NOption(213,Node999,6);
end

procedure smart3
begin
//  [220] "Yeah, I added a few bit here and there to improve it ."
Reply(220);
//  [221] "Could you upgrade mine too?"
NOption(221,smart4,8);
//  [222] "Isnt that nice.Nice talking to you,but I gotta go.Bye!"
NOption(222,Node999,6);
end

procedure smart4
begin
//  [230] "I probably could, but i dont have parts i need to do it."
Reply(230);
//  [231] "What do you need?Maybe I could find it."
NOption(231,smart5,8);
//  [232] "Oh.Ok then.Let me ask you something else though."
NOption(232,smart7,6);
//  [233] "Suuuper.Bye!"
NOption(233,Node999,6);
end

procedure smart5
begin
//  [240] "Well, I need a wrench first so i can work my magic on it.Then i need  two pistols so I can get parts I need from it."
Reply(240);
//  [241] "Thats all?Ok, ill try to find it.See  you soon."
NOption(241,Node999,4);
end

procedure stupid
begin
//  [250] "Hello,tribal!Help ya with sumthin?"
Reply(250);
//  [251] "Uh.Need job.U help?"
if (get_critter_stat(dude_obj,STAT_iq)<4) then
NOption(251,stupid2,-3);
end

procedure stupid2
begin
//  [260] "No,I dont need anything.Now if you excuse me,I have work to do."
Reply(260);
//  [261] "No.I want to stay."
if (get_critter_stat(dude_obj,STAT_iq)<4) then
BOption(261,stupid3,-3);
//  [262] "Ok.I leave."
if (get_critter_stat(dude_obj,STAT_iq)<4) then
NOption(262,Node999,-3);
end

procedure stupid3
begin
//  [270] "Listen to me, you jerk!Im gonna kick your ass if you dont stop bothering me! Get out of here!"
Reply(270);
//  [271] "NO!I kill you now!"
if (get_critter_stat(dude_obj,STAT_iq)<4) then
BOption(271,Node998,-3);
//  [272] "Ugg.I leave!Hateshkin!"
if (get_critter_stat(dude_obj,STAT_iq)<4) then
NOption(272,Node999,-3);
end

procedure smart6
begin
//  [280] "Well,I sure could use some help.Also I heard that doc is looking for someone to do some job."
Reply(280);
//  [281] "What do you need help with?"
NOption(281,gunmanJ1,6);
//  [282] "Thats fascinating.Let me ask you something else."
NOption(282,smart7,6);
//  [283] "What about doc?"
NOption(283,GunmanJ2,6);
//  [284] "I dont want to hear it.Bye."
NOption(284,Node999,6);
end

procedure smart7
begin
//  [290] "What would you like to know?"
Reply(290);
//  [291] "Are there some jobs to do here?"
NOption(291,smart2,6);
//  [292] "Well, I guess thats all I needed to know."
NOption(292,Node999,6);
//  [293] "You know what would I like to know? I'd like to know whats the sound when i spill your brain all over this fucking dump!"
BOption(293,smart8,6);
end

procedure smart8
begin
//  [300] "Wha--?You want to kill me?"
Reply(300);
//  [301] "Yes, I just recently cleaned my gun so i want to test is it firing propertly now.Sayonara!"
BOption(301,Node998,6);
//  [302] "He he.Course not,my friend.I wanted to ask you something else though."
GOption(302,smart7,6);
//  [303] "No.I was just kidding.See ya later."
NOption(303,Node999,6);
end

procedure gunmanJ1
begin
//  [310] "I need someone to get me 3 miniguns.I want to experiment with them."
Reply(310);
//  [311] "Hm.I could probably find them.Ok, its a deal."
GOption(311,GunmanJ3,6);
//  [312] "Whats in it for me?"
NOption(312,GunmanJ4,6);
//  [313] "Not interested.Bye."
NOption(313,Node999,6);
//  [314] "Ill think about it.Let me ask you something else."
NOption(314,smart7,6);
end

procedure GunmanJ2
begin
//  [320] "I really dont know that.You'll have to ask doc himself."
Reply(320);
//  [321] "Ok.Let me ask you something else then."
NOption(321,smart7,6);
//  [322] "Ok.Ill go ask doc then.have a good day."
NOption(322,Node999,6);
end

procedure GunmanJ3
begin
//  [330] "Thank you kindly.[He shakes your hand real hard.You almost let your voice.]"
Reply(330);
//  [331] "[Done]"
NOption(331,Node999,4);
end

procedure GunmanJ4
begin
//  [340] "Ill try to patch something up,dont worry."
Reply(340);
//  [341] "Ok,ok just asking.Its a deal."
GOption(341,GunmanJ3,6);
//  [342] "Hm i need to think about it.Let me ask you something else."
NOption(342,smart7,6);
//  [343] "I dont think i want to do it.Sorry."
NOption(343,GunmanJ5,6);
end

procedure GunmanJ5
begin
//  [350] "Ok.No problem."
Reply(350);
//  [351] "[Done]"
NOption(331,Node999,4);
//  [352] "May I ask you something?"
NOption(352,smart7,6);
end



//xxxxxxxxxxxxxxxxxxxx

Sorry for such a long post but i really need help.
Please send some advice.

Отправлено: 0:05 - 27 Июня, 2005
Strongholder
Прилипала MkII

Откуда: Nelly's Bar
Регистрация: Май 2004

Всего: 393 сообщения

This script is awful. Sorry, just joking...
AFAICS you just haven't compile it. That's all.
It must work.
SFMBE.

-----
Живущий в стране эльфов. Несмотря ни на что.

Отправлено: 2:25 - 27 Июня, 2005
Andrej
Member

Откуда: Srbija
Регистрация: Июнь 2005

Всего: 12 сообщений

No, I know it is horrible.It may be childish too,but thats probably cuz i am a child.About compiling,uh, can u tell me how to do it?

Thanks

Отправлено: 21:48 - 27 Июня, 2005
Perceptron
Модератор

Откуда: Ivanovo
Регистрация: Май 2003

Всего: 502 сообщения

Use "Script->Compile Script" (F9) in FSE.

Отправлено: 0:35 - 28 Июня, 2005
Andrej
Member

Откуда: Srbija
Регистрация: Июнь 2005

Всего: 12 сообщений

Compiling file: "luciano.ssl"
Starting preprocessor
Precompilation successful!
Compiling preprocessor output:"temp.i"
Compiler encountered following error:
------------------------------------------------

TEMP.I(9582): Error! Undefined symbol TOWN_REP_VAR
FSE info --> Compiler reports unknown command or character.
"Please check whenever you have mistyped function or procedure name or not declared all variables."

------------------------------------------------
Compilation cannot complete due to critical error

And when I delete that line TOWN_REP_VAR it still shows there is error because of that.

Отправлено: 11:04 - 28 Июня, 2005
DjUnique
Member

Откуда: Kouvola, Finland
Регистрация: Июнь 2005

Всего: 2 сообщения

Change this line (or add the line since you deleted it):

//#define TOWN_REP_VAR            (GVAR_TOWN_REP_)

to something like

#define TOWN_REP_VAR 0

then it should compile OK.

On a completely unrelated note: In the latest version (which is currently 0.24-beta2) it's also possible to compile scripts directly from the script exporter.

Отправлено: 11:39 - 28 Июня, 2005 | ИСПРАВЛЕНО: DjUnique - 11:40 - 28 June, 2005
Mynah
Модератор

Откуда: Пермь
Регистрация: Окт. 2004

Всего: 469 сообщений

Just uncomment(remove double slash) this line:
Цитата:

//#define TOWN_REP_VAR            (GVAR_TOWN_REP_)


and replace GVAR_TOWN_REP_  to one string from this list:
GVAR_TOWN_REP_ARROYO                
GVAR_TOWN_REP_KLAMATH              
GVAR_TOWN_REP_THE_DEN              
GVAR_TOWN_REP_VAULT_CITY            
GVAR_TOWN_REP_GECKO                
GVAR_TOWN_REP_MODOC                
GVAR_TOWN_REP_SIERRA_BASE          
GVAR_TOWN_REP_BROKEN_HILLS          
GVAR_TOWN_REP_NEW_RENO              
GVAR_TOWN_REP_REDDING              
GVAR_TOWN_REP_NCR                  
GVAR_TOWN_REP_BURIED_VAULT          
GVAR_TOWN_REP_VAULT_13              
GVAR_TOWN_REP_COLUSA                
GVAR_TOWN_REP_SAN_FRANCISCO        
GVAR_TOWN_REP_ENCLAVE              
GVAR_TOWN_REP_ABBEY                
GVAR_TOWN_REP_EPA                  
GVAR_TOWN_REP_PRIMITIVE_TRIBE      
GVAR_TOWN_REP_RAIDERS              
GVAR_TOWN_REP_VAULT_15              
GVAR_TOWN_REP_GHOST_FARM            
GVAR_TOWN_REP_NAVARRO              

Sorry 4 my bad English.

-----
Scio me nihil scire

Отправлено: 11:42 - 28 Июня, 2005
Andrej
Member

Откуда: Srbija
Регистрация: Июнь 2005

Всего: 12 сообщений

WHATEVER I do it shows the error!Im going crazy now


(Addition of 12:20 - 28 June, 2005.)


I converted .ssl file to Noid and now it looks like this( with modification from Mynah):

/*
 ***   Script conwerted to Interplay format by Fallout Script Edytor (by Jargo)  ***
*/

#include "C:\Games\Fallout2\Fallout 2 Mapper\scripts\HEADERS\define.h"
//#include "C:\Games\Fallout2\Fallout 2 Mapper\scripts\HEADERS\<TownMapName.h>"

#define NAME                    SCRIPT_LUCIANO          //Script name from scripts.h
#define GVAR_TOWN_REP                    (GVAR_TOWN_REP_ARROYO)            

#include "C:\Games\Fallout2\Fallout 2 Mapper\scripts\HEADERS\command.h"
#include "C:\Games\Fallout2\Fallout 2 Mapper\scripts\HEADERS\ModReact.h"
#include "C:\Games\Fallout2\Fallout 2 Mapper\scripts\HEADERS\partybkg.h"

procedure start;
procedure critter_p_proc;
procedure pickup_p_proc;
procedure talk_p_proc;
procedure destroy_p_proc;
procedure look_at_p_proc;
procedure description_p_proc;
procedure use_skill_on_p_proc;
procedure damage_p_proc;
procedure map_enter_p_proc;
procedure timed_event_p_proc;

WHATS WRONG NOW?

Отправлено: 12:11 - 28 Июня, 2005
Mynah
Модератор

Откуда: Пермь
Регистрация: Окт. 2004

Всего: 469 сообщений

Цитата:

I converted .ssl file to Noid


It wasn't needed. But it can't be source of errors.

Whats error shown now? I'm sure, it wasn't "Undefined symbol TOWN_REP_VAR "

-----
Scio me nihil scire

Отправлено: 12:58 - 28 Июня, 2005 | ИСПРАВЛЕНО: Mynah - 14:59 - 28 Июня, 2005
DjUnique
Member

Откуда: Kouvola, Finland
Регистрация: Июнь 2005

Всего: 2 сообщения

Цитата:
Quote: from Andrej on 11:11 - 28 June, 2005

#define GVAR_TOWN_REP                    (GVAR_TOWN_REP_ARROYO)            



The error is simply that you defined the town rep var as GVAR_TOWN_REP instead of TOWN_REP_VAR

Отправлено: 13:15 - 28 Июня, 2005
Mynah
Модератор

Откуда: Пермь
Регистрация: Окт. 2004

Всего: 469 сообщений

Oh, yes. I have inattentively read through :(
I'm agree with previous post.

and... sorry 4 my bad english :)

-----
Scio me nihil scire

Отправлено: 13:29 - 28 Июня, 2005
Andrej
Member

Откуда: Srbija
Регистрация: Июнь 2005

Всего: 12 сообщений

Compiling file: "luciano.ssl"
Starting preprocessor
Precompilation successful!
Compiling preprocessor output:"temp.i"
Compiler encountered following error:
------------------------------------------------

TEMP.I(9758): Error! Undefined symbol TOWN_REP_VAR
FSE info --> Compiler reports unknown command or character.
"Please check whenever you have mistyped function or procedure name or not declared all variables."

------------------------------------------------
Compilation cannot complete due to critical error

This is ridiculous. And when i press Show Errors whatever line in script my mouse was on,thats the error line.I think that its not the problem in TOWNREPGVAR.


(Addition of 13:42 - 28 June, 2005.)


No DJ unique,i writed TOWN_REP_VAR in script but i didnt write it correctly here.

Отправлено: 13:40 - 28 Июня, 2005
Mynah
Модератор

Откуда: Пермь
Регистрация: Окт. 2004

Всего: 469 сообщений

Wooh... Copy&paste this code in to FSE and then compile. It will be work correctly. And please, study scripts language before try to modding fallout.

Update: code removed. so big post no needed now.

-----
Scio me nihil scire

Отправлено: 13:59 - 28 Июня, 2005 | ИСПРАВЛЕНО: Mynah - 16:28 - 28 Июня, 2005
Andrej
Member

Откуда: Srbija
Регистрация: Июнь 2005

Всего: 12 сообщений

Nice code,Mynah. Sadly,It doesnt work either
I copied it and still the same error.
Do u know where to find good tutorials for scripting?

Отправлено: 14:15 - 28 Июня, 2005
Mynah
Модератор

Откуда: Пермь
Регистрация: Окт. 2004

Всего: 469 сообщений

May be this code doesn't work because FMF Dialogue tool doesn't edit header files automaticaly. I don't use this program and can't know.
Many tutorials you can find here.

Oh... i'm sure, in my text so much errors, but i hope, you will understand my bad english :(

PS: Code which i pasted here work correctly. It was tested.

-----
Scio me nihil scire

Отправлено: 14:26 - 28 Июня, 2005 | ИСПРАВЛЕНО: Mynah - 16:31 - 28 Июня, 2005
Andrej
Member

Откуда: Srbija
Регистрация: Июнь 2005

Всего: 12 сообщений

Your english is not bad.
It doesnt work for me i assure you.
Do u use FSe for making dialogues?

Отправлено: 14:34 - 28 Июня, 2005
Mynah
Модератор

Откуда: Пермь
Регистрация: Окт. 2004

Всего: 469 сообщений

For making dialogues i use my brain, hands and notepad :) It's habit.
IMHO, for beginner in fallout modding FMF Dialogue Tool - best program, but you must know fallout script language for use it.

and... it's all offtop. sorry 4 moderators.

-----
Scio me nihil scire

Отправлено: 14:42 - 28 Июня, 2005 | ИСПРАВЛЕНО: Mynah - 16:49 - 28 Июня, 2005
Andrej
Member

Откуда: Srbija
Регистрация: Июнь 2005

Всего: 12 сообщений

dobro.

thx for url Mynah

[very confussed]


(Addition of 15:25 - 28 June, 2005.)


BTW which compiler/script editor is easiest and best for use for beginners?

that tutorial for scripting isnt telling how to do something,its only about setting it to work propertly and some facts.

Отправлено: 15:12 - 28 Июня, 2005
Mynah
Модератор

Откуда: Пермь
Регистрация: Окт. 2004

Всего: 469 сообщений

Recomended programs for beginners(it's just IMHO):

FSE 1.5 (don't use version 2... this version doesn't complete and have many bugs)
FMF Dialogue Tool

Read so many documents on this page as u can. (Especially "Guide to Fallout Modding")

And will B ready to many-many-many trubls. Modding fallout is hard business.

-----
Scio me nihil scire

Отправлено: 15:36 - 28 Июня, 2005 | ИСПРАВЛЕНО: Mynah - 18:04 - 28 Июня, 2005
Andrej
Member

Откуда: Srbija
Регистрация: Июнь 2005

Всего: 12 сообщений

Thank you guys for everything.

Отправлено: 15:59 - 28 Июня, 2005
 

Переход по темам
<< Пред. След. >>
Единственная страница этой темы


Powered by Ikonboard 2.1.9 RUS
Modified by RU.Board Team
© 2000 Ikonboard.com