Quests problem

8-Ball

First time out of the vault
OK, so I've been having problems with quests. What I really need is a tutorial, because I tried to figure it out on my own, and somehow wound up screwing up the game so every time I tried to play, it crashed. So then, after re-installing, I figured I'd keep it simple and try something basic. I added two men to the Arroyo bridge map and gave them Spore Plant scripts. Yet when I killed them both, I didn't recieve the XP or "mission accomplished" message. I had to go back and kill the actual plants. Why is this? Apparently I'm no good when it comes to quests... :cry:
 
The script you chose handles a map var to get the quest done. Since you used it in a different map it does not work.
You should make a simple quest of your devise to learn the mechanics. Make something simple whit only using one global var.
Pip-Boy logging: it involves 3 files.

Vault13.gam: register a new global variable. notedown its name and number.

quest.txt: located in blackisle/fallout2/data/data. You'll see sections concerning quests for each town. An exemple:
# Find young Martha and Timmy
1500, 160, 707, 1, 5

The title is the one you give to the quest (not showed to the player).
1550 is the town number (Arroyo, in this case).
160 is the quest number
707 is the global var number in vault13.gam (remember?)
1 is the minimum value you must set the global var in order to have the quest displayed on the Pip-Boy.
5 is the minimum value you must set the global var in order to have the quest to be consudered over

The third file is quests.msg (located in ...data/text/english/game folder. It will read something like:
{160}{}{Young Martha and Timmy are missing. They should be in the whereabouts...}
160 is the number of the quest (remember?), the rest is the quest description.

Make a simple critter script: if the pc accepts the quest you set your GVAR to 1 (make something simple, like "kill a single creature"). The creature will have a script setting the GVAR to 2.
When the pc comes back to the npc you set the GVAR to 3 (quest over).
Your critter talk_p_proc should be something like:
If GVAR =0 say this (pc does not know about quest)
If GVAR =1 say this (pc accepted quest, quest in progress)
If GVAR =2 say this (pc accepted quest, quest over, reward wanted)
If GVAR =3 say this ( quest over, reward given, general dialogue).

You'll soon realize that if you want to give the npc more dialogue options you have to backup your Gvar with a map var (What if the pc speacks to the npc and does not accept the quest? And if the Pc kills the critter and hasn't talked to the npc yet?).
For now make a simple quest, it's kinda easy actually. If this was not clear enough, then please let me know. If this was clear enough I can give you something more complex. Simply ask me. Bye.
 
Sirren67 said:
The script you chose handles a map var to get the quest done. Since you used it in a different map it does not work.
You should make a simple quest of your devise to learn the mechanics. Make something simple whit only using one global var.
Pip-Boy logging: it involves 3 files.

Vault13.gam: register a new global variable. notedown its name and number.

quest.txt: located in blackisle/fallout2/data/data. You'll see sections concerning quests for each town. An exemple:
# Find young Martha and Timmy
1500, 160, 707, 1, 5

The title is the one you give to the quest (not showed to the player).
1550 is the town number (Arroyo, in this case).
160 is the quest number
707 is the global var number in vault13.gam (remember?)
1 is the minimum value you must set the global var in order to have the quest displayed on the Pip-Boy.
5 is the minimum value you must set the global var in order to have the quest to be consudered over

The third file is quests.msg (located in ...data/text/english/game folder. It will read something like:
{160}{}{Young Martha and Timmy are missing. They should be in the whereabouts...}
160 is the number of the quest (remember?), the rest is the quest description.

Make a simple critter script: if the pc accepts the quest you set your GVAR to 1 (make something simple, like "kill a single creature"). The creature will have a script setting the GVAR to 2.
When the pc comes back to the npc you set the GVAR to 3 (quest over).
Your critter talk_p_proc should be something like:
If GVAR =0 say this (pc does not know about quest)
If GVAR =1 say this (pc accepted quest, quest in progress)
If GVAR =2 say this (pc accepted quest, quest over, reward wanted)
If GVAR =3 say this ( quest over, reward given, general dialogue).

You'll soon realize that if you want to give the npc more dialogue options you have to backup your Gvar with a map var (What if the pc speacks to the npc and does not accept the quest? And if the Pc kills the critter and hasn't talked to the npc yet?).
For now make a simple quest, it's kinda easy actually. If this was not clear enough, then please let me know. If this was clear enough I can give you something more complex. Simply ask me. Bye.

Ah, I hadn't realized that was a Map Variable... I'll give your example a try, see if I can figure it out.
 
Something's not right here. I keep either getting error messages, or the game crashes. I did exactly what you said... :?:
 
8-Ball said:
Something's not right here. I keep either getting error messages, or the game crashes. I did exactly what you said... :?:

I am not following all that has gone on here, but I am quite certain in the work I have done that if you add a new global var, you must start a new game as old saves will no longer work. At least this has always been the case for me...
 
killap said:
I am not following all that has gone on here, but I am quite certain in the work I have done that if you add a new global var, you must start a new game as old saves will no longer work. At least this has always been the case for me...


I did. The first few times it would display
"Error
You see: Villager"
instead of displaying the character's name and I couldn't talk to him or examine him, and now it crashes to a black screen when I pass the cursor over the character. :shock:
 
8-Ball said:
killap said:
I am not following all that has gone on here, but I am quite certain in the work I have done that if you add a new global var, you must start a new game as old saves will no longer work. At least this has always been the case for me...


I did. The first few times it would display
"Error
You see: Villager"
instead of displaying the character's name and I couldn't talk to him or examine him, and now it crashes to a black screen when I pass the cursor over the character. :shock:

Ok, yeah sounds like an issue with the script then. Any chance you can post the script so we can see exactly what you are trying to do?
 
killap said:
Ok, yeah sounds like an issue with the script then. Any chance you can post the script so we can see exactly what you are trying to do?

procedure Node000 begin
if (global_var(700) == 1) then begin
call Node004;
end else if (global_var(700) == 3) then begin
Reply(211);

NOption(212,Node999,004);
end else begin
// *** Msg file reference: {200}{}{Oh, Chosen! Can you help me?} ***
Reply(200);

// *** Msg file reference: {201}{}{Sure!} ***
NOption(201,Node001,001);
// *** Msg file reference: {203}{}{I don't think so...} ***
NOption(203,Node002,001);
end
end

procedure Node001 begin
// *** Msg file reference: {202}{}{Oh, thanks! There's a nasty little Radscorpion around here somewhere causing an awful lot of trouble. Could you take care if it?} ***
Reply(202);

// *** Msg file reference: {206}{}{I'll be back...} ***
NOption(206,Node003,004);
// *** Msg file reference: {203}{}{I don't think so...} ***
NOption(203,Node002,004);
end

procedure Node002 begin
// *** Msg file reference: {204}{}{Oh, OK... I understand.} ***
Reply(204);

// *** Msg file reference: {205}{}{[Done]} ***
NOption(205,Node999,004);
end

procedure Node003 begin
set_global_var(700,1);
call Node999;
end

procedure Node004 begin
// *** Msg file reference: {207}{}{Did you take care of it?} ***
Reply(207);

// *** Msg file reference: {208}{}{Sure did.} ***
NOption(208,Node005,004);
// *** Msg file reference: {210}{}{No, not yet...} ***
NOption(210,Node999,004);
end

procedure Node005 begin
// *** Msg file reference: {209}{}{Oh, thanks!} ***
Reply(209);

// *** Msg file reference: {205}{}{[Done]} ***
NOption(205,Node999,004);
give_xp(200);
set_global_var(700,3);
end

procedure Node997 begin
call Node000;
end
procedure Node998 begin
set_local_var(LVAR_Hostile,2);
end


I'm not really good at this, as I only modded for a few weeks before giving up a few months ago. Anyways, all I'm trying to do, obviously, is make it so Bob asks you if you'll do him a favor, and if you do, you get a quest to kill the little Radscorpion.
 
Please check these files:
scripts.h: it's in the mapper headers folder.
scripts.lst: it's in Fo2 data/script folder
scrname.msg: its in Fo2. data/text/english/game folder.
Open these files and make sure ALL your new entries are all present in the 3 files and in the same order. This will fix the problem with wrong/no .msg lines.

Please also post your talk_p_proc. Many bugs depend on this procedure. Make sure yours reads something like this...

procedure talk_p_proc begin
start_gdialog(NAME,self_obj,4,-1,-1);
gSay_Start;
call Node001;
gSay_End;
end_dialogue;
end

...and not like this:

procedure talk_p_proc begin
start_gdialog(NAME,self_obj,4,-1,-1);
gSay_Start;
call Node001;
end //please note the wrong position
gSay_End;
end_dialogue;

Apart from this the game can crash when you pass the cursor on a new critter proto.
I couldn't understand if there's something wrong in the nodes.
Remember this general rule: "the simpler, the better". I find it's simpler to put the GVAR blocks in talk_p_proc (just like the quick exemple I gave you) and not in the nodes: it adds for confusion.
Remember to comment your code: i.e. write which situation each node is meant for. Just personal likes, though.
Anyway, as I said please post your talk procedure, we'll see what we can do. Bye.

EDIT: please post the whole script.
 
instead of displaying the character's name and I couldn't talk to him or examine him, and now it crashes to a black screen when I pass the cursor over the character

if this critter does not respond to any actions then there is some critical error in this script.

If it crashes when you pass the cursor over him then look in look_at_p_proc

Post whole script.
 
Back
Top