Adventure Game Studio

AGS Support => Beginners' Technical Questions => Topic started by: Brex on Sun 22/03/2009 10:19:41

Title: Give item from inventory to NPC
Post by: Brex on Sun 22/03/2009 10:19:41
Hi all, I'm trying to make a game where you can give an item to an NPC, and so far I'm up to here;

function cLewis_UseInv()
{
    Display("Wow thats all I needed!");
  }

But the Coffee that was just given is still there... is there a way to actually give the Coffee to an NPC, if it is in the manual, sorry I've searched it and couldn't find it anywhere

EDIT: After a bit more messing around I found the right command, sorry :)
Title: Re: Give item from inventory to NPC
Post by: Dualnames on Sat 28/03/2009 22:00:56
Quote from: Brex on Sun 22/03/2009 10:19:41
Hi all, I'm trying to make a game where you can give an item to an NPC, and so far I'm up to here;

function cLewis_UseInv()
{
    Display("Wow thats all I needed!");
  }

But the Coffee that was just given is still there... is there a way to actually give the Coffee to an NPC, if it is in the manual, sorry I've searched it and couldn't find it anywhere

EDIT: After a bit more messing around I found the right command, sorry :)
function cLewis_UseInv(){
if (player.ActiveInventory==icoffee) {
    Display("Wow thats all I needed!");
  }
}

EDIT:
Ah..just saw that edit
Title: Re: Give item from inventory to NPC
Post by: Shockbolt on Mon 30/03/2009 19:00:43
And how would one go about, giving an NPC an item (losing it from one's inventory) based upon a choice in a dialog with the NPC?

The particular dialog with the NPC would only be started if the player actually has the item in his/hers inventory.

Let me be more specific:

Player has found the item that the NPC was asking him to find.
Player starts the dialog dFoundItem:

1. I found Your item 
2. Bye

When selecting 1. , the NPC would reply:

"Thank You!"

Then the NPCs viewloop would change to something other than the previous and the player will have lost the item from the inventory.

Back to the game.
Title: Re: Give item from inventory to NPC
Post by: Trent R on Mon 30/03/2009 19:26:42
Am I getting your question right?
QuoteThen the NPCs viewloop would change to something other than the previous
cSomeDude.ChangeView(int);
Quoteand the player will have lost the item from the inventory.
player.LoseInventory(iItem);


Another thing that can be useful is to actually give the item to SomeDude (SomeDude.AddInventory(iItem);) You can then use this as a global variable, rather than creating a SomeDudeHasItem variable.
To check, simply use  SomeDude.HasInventory(iItem) in an if statement.


~Trent
Title: Re: Give item from inventory to NPC
Post by: Shockbolt on Mon 30/03/2009 20:38:43
Quote from: Trent R on Mon 30/03/2009 19:26:42
Am I getting your question right?
QuoteThen the NPCs viewloop would change to something other than the previous
cSomeDude.ChangeView(int);
Quoteand the player will have lost the item from the inventory.
player.LoseInventory(iItem);


Another thing that can be useful is to actually give the item to SomeDude (SomeDude.AddInventory(iItem);) You can then use this as a global variable, rather than creating a SomeDudeHasItem variable.
To check, simply use  SomeDude.HasInventory(iItem) in an if statement.



~Trent

That's somewhat the way I ended up dealing with the "problem". What I wanted was to deal with it, as in the text below:

I was only wondering if it was able to achieve the same via the dDialog , where You choose what to ask/say, then the npc responds.
I mean, if You choose a line within the dDialog, then the item is lost from the inventory, and the npc changes viewloop or something else is triggered whilst still in the dDialog (when playing/testing)

*fixed* :-D
Title: Re: Give item from inventory to NPC
Post by: Trent R on Mon 30/03/2009 21:44:08
One, you messed up the quote tags in the previous post. No biggie.

Two, normal scripting commands can now be used in dialog scripts as of AGS 3.something. You simply need to indent the line.


~Trent
Title: Re: Give item from inventory to NPC
Post by: Shockbolt on Mon 30/03/2009 22:37:02
Quote from: Trent R on Mon 30/03/2009 21:44:08
One, you messed up the quote tags in the previous post. No biggie.

Two, normal scripting commands can now be used in dialog scripts as of AGS 3.something. You simply need to indent the line.


~Trent

Hmm...I'll have to look into that and see what I can come up with.
Title: Re: Give item from inventory to NPC
Post by: Dualnames on Tue 31/03/2009 22:06:48
I may suggest searching the forums on that, because it's really asked quite some times, so I think you'll find exactly what you're looking for, and maybe more cool stuff.
Title: Re: Give item from inventory to NPC
Post by: Shockbolt on Wed 01/04/2009 18:07:58
I've spent alot of time looking around the forum, online manual, tutorials etc for help on what I'm coding.
I assume it'll get much easier with a few months of practice under the belt, but for now, all the various names  that are given
in the examples by the more experienced coders are kinda confusing to a rookie like myself. But I'm slowly getting the hang of it.

Here's how I got the job done, bu using an inventory item on a NPC:
When player has the correct item and is using that item on the npc, the npc should fall asleep, changing his animation loop.
This could also have been altered so that the npc would have gotten the item into his inventory as well.
(By adding the code cGromStart.AddInventory(iStinkyfruit001); )

Portion of the Globalscript.asc code:


function cGromStart_UseInv()
  {
    if (player.ActiveInventory != iStinkyfruit001)
   { cGromStart.Say("I don't want that.");
   }
   
   if (player.ActiveInventory == iStinkyfruit001)
   {
   player.LoseInventory(iStinkyfruit001);
   cGromStart.SayBackground("YUM YUM.");
   Wait(80);
   cGromStart.Say("I feel...dizzy...");
   Wait(80);
   cGromStart.Animate(6, 4, eRepeat, eNoBlock);
   myGromSleep += 1;
   }
   
  }



the Global variable myGromSleep is there to let the player trigger another cutscene that will only be done
if the first has been executed, and if the player has the correct items in the inventory.

So for my part, this problem has been solved :)
Title: Re: Give item from inventory to NPC
Post by: Khris on Wed 01/04/2009 19:39:25
Note that  a += b  is short for  a = a+b.
You're increasing myGromSleep by 1, not setting it to 1.

Edit:
The result is the same in this case, true, but since you were using += without obvious purpose, I thought I'd point out the difference.
Title: Re: Give item from inventory to NPC
Post by: Shockbolt on Wed 01/04/2009 20:12:36
Quote from: KhrisMUC on Wed 01/04/2009 19:39:25
You're increasing myGromSleep by 1, not setting it to 1.

In this case, myGromSleep is 0 to begin with. It increases to 1 when the fruit is given to him :)
I could also use what You suggested, I see that now.