Facebook Twitter YouTube Frictional Games | Forum | Privacy Policy | Dev Blog | Dev Wiki | Support | Gametee


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Script Help Checks whether you got an item
flamez3 Offline
Posting Freak

Posts: 1,281
Threads: 48
Joined: Apr 2011
Reputation: 57
#1
Checks whether you got an item

Correct me if I'm wrong, but would it be like this:


HasItem("stone_hammer_1");
if (alState == 0)
{
GiveItemFromFile("stone_hammer_1", "stone_hammer.ent");
return;
}

I thought that would be it but it wasn't... may be im missing something huge here?

And yes I know that i need to put this in the function block

10-25-2011, 08:45 AM
Find
jens Offline
Frictional Games

Posts: 4,093
Threads: 199
Joined: Apr 2006
Reputation: 202
#2
RE: Checks whether you got an item

if(!HasItem("stone_hammer_1"))
{
  GiveItemFromFile("stone_hammer_1", "stone_hammer.ent");
}

should do it if placed in the correct place.
10-25-2011, 11:31 AM
Website Find
Apjjm Offline
Is easy to say

Posts: 496
Threads: 18
Joined: Apr 2011
Reputation: 52
#3
RE: Checks whether you got an item

Take a gander at the signature for the HasItem function:
bool HasItem(string& asName);

You may notice it returns a boolean value; That is to say a "True" or "False". If statements work by evaluating the expression between the brackets to either a "True" or "False", and executing the following code if the statement evaluated to true.

What you are doing, is you are running the HasItem function, but aren't doing anything with the result. Instead you are checking If "alState" is 0 - This variable does not hold the result of any function, it is often used as a parameter in callback functions though.

A final point is you want to determine IF the player doesn't have the item. Not if they DO have it. There are two ways you could approach this:
1) HasItem() == false
2) !HasItem()
The first may initially seem easier to read -"if the player having the item is false". However, the "!" just means "not" - and it turns True into False and vice versa. It is actually just as legible and actually a better way to write the function.
if (!HasItem("stone_hammer_1"))
{
GiveItemFromFile("stone_hammer_1", "stone_hammer.ent");
return;
}
As the if statement will try to evaluate the function "HasItem" - this in turn will return true or false and execute the following code. "alState" is not a place where functions store their result.
(This post was last modified: 10-25-2011, 11:39 AM by Apjjm.)
10-25-2011, 11:33 AM
Find
flamez3 Offline
Posting Freak

Posts: 1,281
Threads: 48
Joined: Apr 2011
Reputation: 57
#4
RE: Checks whether you got an item

(10-25-2011, 11:33 AM)Apjjm Wrote: Take a gander at the signature for the HasItem function:
bool HasItem(string& asName);

You may notice it returns a boolean value; That is to say a "True" or "False". If statements work by evaluating the expression between the brackets to either a "True" or "False", and executing the following code if the statement evaluated to true.

What you are doing, is you are running the HasItem function, but aren't doing anything with the result. Instead you are checking If "alState" is 0 - This variable does not hold the result of any function, it is often used as a parameter in callback functions though.

A final point is you want to determine IF the player doesn't have the item. Not if they DO have it. There are two ways you could approach this:
1) HasItem() == false
2) !HasItem()
The first may initially seem easier to read -"if the player having the item is false". However, the "!" just means "not" - and it turns True into False and vice versa. It is actually just as legible and actually a better way to write the function.
if (!HasItem("stone_hammer_1"))
{
GiveItemFromFile("stone_hammer_1", "stone_hammer.ent");
return;
}
As the if statement will try to evaluate the function "HasItem" - this in turn will return true or false and execute the following code. "alState" is not a place where functions store their result.
Thank you for that, I understand why it didn't work, and now it does Smile

+repped



(10-25-2011, 11:31 AM)jens Wrote:
if(!HasItem("stone_hammer_1"))
{
  GiveItemFromFile("stone_hammer_1", "stone_hammer.ent");
}

should do it if placed in the correct place.
Also +repped Smile


It's not working for my lantern?

(This post was last modified: 10-25-2011, 12:35 PM by flamez3.)
10-25-2011, 12:29 PM
Find
Your Computer Offline
SCAN ME!

Posts: 3,456
Threads: 32
Joined: Jul 2011
Reputation: 235
#5
RE: Checks whether you got an item

(10-25-2011, 12:29 PM)flamez3 Wrote: It's not working for my lantern?

Maybe the lantern gets treated the same way as tinderboxes. I haven't tested it if that's true, but an alternative method would be to use an interact callback on the lantern and set a global variable in the callback. Then instead of using HasItem to check for a lantern (assuming you're trying to check if user has a lantern in their inventory), you just check if the global variable is set.

Tutorials: From Noob to Pro
10-25-2011, 04:50 PM
Website Find




Users browsing this thread: 1 Guest(s)