Visit the Ironworks Gaming Website Email the Webmaster Graphics Library Rules and Regulations Help Support Ironworks Forum with a Donation to Keep us Online - We rely totally on Donations from members Donation goal Meter

Ironworks Gaming Radio

Ironworks Gaming Forum

Go Back   Ironworks Gaming Forum > Ironworks Gaming Forums > NWN Mod: Escape from Undermountain
FAQ Calendar Arcade Today's Posts Search

Reply
 
Thread Tools Search this Thread
Old 08-31-2004, 09:34 PM   #1
Dar'tanian
Red Wizard of Thay
 

Join Date: October 26, 2002
Location: USA
Age: 36
Posts: 858
SInce this part of the board is all about MODS i'd figure i coudl get help here, I just want to know how i can make up a quest with out using the plot wizard cause that is not helping. any help would b much appreciated because im kinda putting my MOD on hold right now untill i can figure this out.
__________________
I\'m back boys...
Dar'tanian is offline   Reply With Quote
Old 09-01-2004, 06:58 AM   #2
Legolas
Jack Burton
 

Join Date: March 31, 2001
Location: The zephyr lands beneath the brine.
Age: 41
Posts: 5,459
You'd do this by setting the plot characters up as normal, giving them conversations as normal, if it's an item retrieval quest, make sure the item has a unique tag, set up a few triggers in key locations...

And you tie it all together with scripts.
What scripts you'll need depends entirely on what needs to happen when.


For example, person A sends you to fetch him a package from person B.
The conversation of person A should include a few hints to help get started, and an option for the player to accept or refuse the quest. It only needs to happen once, so add the following to the Text Appears When scipt:
Quote:
int StartingConditional()
{
return (!GetLocalInt(OBJECT_SELF,"AtoB"))
}
On the 'I accept' option's Actions Taken tab, add a script like this:
Quote:
void main()
{
AddJournalQuestEntry("AtoB",1,TRUE,FALSE);
SetLocalInt(GetNearestObjectByTag("PersonA"),"AtoB",1);
}
The AddJournal... sets the journal editor's text for the AtoB quest to the first state for all the partymembers (I'm asked to find person B and get an item from him for Person A...). We'll get to the editor later.
The LocalInt is set on the quest giver, who should have a unique tag, in this case PersonA. We use this to track how far along the quest is. It's now 1, meaning the player is aware of his need to get an item from Person B.

When reaching person B, his 'Give Item' conversation should start only when the player has accepted the quest. The script for that might look like
Quote:
int StartingConditional()
{
if(GetLocalInt(GetNearestObjectByTag("PersonA"),"AtoB")==1)
{
AddJournalQuestEntry("AtoB",2,TRUE,FALSE);
return TRUE;
}
return FALSE;
}
What it does is check to see if the LocalInt on person A is 1, i.e. whether or not they have spoken. If so, there's another journal entry coming up (I've found person B...), otherwise the player won't get to ask about the item.

And when he agrees to give the item through conversation, again in the Actions Taken script, put something like this:
Quote:
void main()
{
SetLocalInt(GetNearestObjectByTag("PersonA"),"AtoB",2);
AddJournalQuestEntry("AtoB",3,TRUE,FALSE);
AssignCommand(OBJECT_SELF,ActionGiveItem(GetObject ByTag("AtoBitem"),GetPCSpeaker()));
}
This script again updates the journal quest entry (I've retrieved the item...).
It also makes person B give his quest item to the player (the quest item's tag is AtoBitem in this example).
The last thing it does is set the progress to 2, a value at which it will 'disable' using the quest not because it normally does so, but because we'll tell it to later on.

Coming back to person A, the player with the item can hand it over. This means we need to add tp A's conversation to include another check at the start.
Quote:
int StartingConditional()
{
return(GetItemPossessedBy(GetPCSpeaker(),"AtoBitem");
}
If the speaker has the item, it shows the conversation this script was attached to, otherwise, it doesn't.

Have person A declare a reward and take the item, and make it happen using
Quote:
#include "nw_i0_plotwizard"
void main()
{
DestroyObject(GetItemPossessedBy(GetPCSpeaker(), "AtoBitem"));
PWGiveExperienceParty(GetPCSpeaker(), 200);
AddJournalQuestEntry("AtoB",4,TRUE,FALSE);
}
This one uses a non-standard command described in the nw_i0_plotwizard script, so we need to link to that.
The command gives 200 XP to everyone in the party.
We also set the journal entry to its final state, and remove the item from the game. And that's it.

The conversation for A looks something like:
root
A1 (first check): Want to get me the item? Yes/No
A2 (second check): Here is your reward.
A3: Thanks for delivering the item.

B would have one like
root
B1 (first check): Here's the item you wanted.
B2: I know nothing about this quest, I have no item.

The journal editor (CRTL+ALT+J) is where you type the lines to appear in the journal. We've named this quest AtoB so that's the tag to give it, you might want something more elegant for the name.

Simply add entries where the ID matches the state of the scripts. So 1 means you've gotten the quest, 2 means you've found person B, 3 means you've gotten the item off of B and 4 means you've delivered it. Flag the latter as Finished Category.

And now the quest is really finished and you can move on to the next one.

It's not hard if you know what you're doing, but it is difficult to tie a plot together if you don't know about scripting. That'd be the first thing to try and learn.
Legolas is offline   Reply With Quote
Old 09-01-2004, 06:53 PM   #3
Dar'tanian
Red Wizard of Thay
 

Join Date: October 26, 2002
Location: USA
Age: 36
Posts: 858
do I have to write my own scripts or is there default ones like this?
__________________
I\'m back boys...
Dar'tanian is offline   Reply With Quote
Old 09-01-2004, 09:09 PM   #4
Legolas
Jack Burton
 

Join Date: March 31, 2001
Location: The zephyr lands beneath the brine.
Age: 41
Posts: 5,459
The plot wizard makes them for you, otherwise you'll likely end up writing your own [img]smile.gif[/img]
Alternatively, use a script generator like Lilac Soul's, you'll find it on www.nwvault.com
Legolas is offline   Reply With Quote
Old 09-01-2004, 10:01 PM   #5
Ziroc
Ironworks Webmaster

     
     Bow to the Meow

 

Join Date: January 4, 2001
Location: Lakeland, Florida
Age: 52
Posts: 11,737
You need to learn the int function. It SEEMS hard at first, sounding confusing, but it's simple as hell.

Think of INT as a flag. This flag can be set to 0 as OFF or 1 as on or go farther with 2, 3 and four.

Say you want the NPC to be pissed after you choose a dialogue, use the wizard in conversation and make an INT and call it whatever you want (make it unique) call it "joeispissed" and the INT number will be 1.

The INT function can even be used as a trigger, so when an NPC asks you to go to the docks, he will KNOW if you went because you ran over the INT trigger. kinda understand?
Ziroc is offline   Reply With Quote
Old 09-02-2004, 05:20 PM   #6
Dar'tanian
Red Wizard of Thay
 

Join Date: October 26, 2002
Location: USA
Age: 36
Posts: 858
I'll try my hardest.
__________________
I\'m back boys...
Dar'tanian is offline   Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Tool Set Plot Dar'tanian Neverwinter Nights 1 & 2 Also SoU & HotU Forum 3 09-03-2004 10:49 AM
compression tool Kaltusara Dungeon Craft - RPG Game Maker 1 01-28-2004 07:40 PM
Tool set Items? Sparhawk Neverwinter Nights 1 & 2 Also SoU & HotU Forum 7 12-05-2003 02:58 PM
Tool Set Dar'tanian Neverwinter Nights 1 & 2 Also SoU & HotU Forum 3 07-09-2003 01:09 PM
Aurora Tool Set Madriver Neverwinter Nights 1 & 2 Also SoU & HotU Forum 2 05-02-2002 01:09 PM


All times are GMT -4. The time now is 03:35 AM.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
©2024 Ironworks Gaming & ©2024 The Great Escape Studios TM - All Rights Reserved