Frictional Games Forum (read-only)

Full Version: SetLanternLitCallback
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
(08-03-2013, 07:16 PM)hunchbackproduction Wrote: [ -> ]Ok! tried to get this to work, I thought I understood this, But boy was I wrong xD
I need a little more clarification on how this whole thing works.
When you explained the I and K parameter thing I got it, But why is I and K needed ? Can't you just code: "addnumber(3,1)" ?


Also what is up with "public" I saw you put that there before your voids

I still do not get the whole lanternlit, and how it links to parameters ? Are the parameters "true" or "false" and do I have to define these somewhere ?


void LanternLit(bool lanternLit)
{
if(lanternLit)
{
SetMessage("test", "test", 1);
}
else
{

}
}

I have this piece of test code, please explain to me why it does not work! As when I light my lantern the test message does not appear.
PS: I have given you a reputation for the help so far ^ Thanks!

it should not be bool LanternLit it has to be bool abLit since it's a programmed parameter.

so it should look more like this

Code:
SetLanternLitCallback("LanternLit");

void LanternLit(bool abLit)
{
    if(true)
    {
      AddDebugMessage("It's working!", true);
     }
    else
    {
     AddDebugMessage("It's NOT working", true);
    }
}

Here's your fixed code:

Code:
void LanternTinderCheck(bool abLit)
{
if (GetGlobalVarInt("Tinderboxes") == 0)
{
SetMessage("Chemical", "notinderboxes", 1);
SetLanternActive(false, true);
SetLanternDisabled(true);
AddTimer("", 1, "ReAllowLighting");
}
if (GetGlobalVarInt("Tinderboxes") > 0)
{
AddGlobalVarInt("Tinderboxes", -1);
SetMessage("Chemical", "lanternlit", 1);
SetLanternLitCallback("LanternTinderCheck");
}
}

void ReAllowLighting(string &in asTimer)
{
SetLanternDisabled(false);
SetLanternLitCallback("LanternTinderCheck");
}

void OnStart()
{
SetLanternLitCallback("LanternTinderCheck");
SetGlobalVarInt("Tinderboxes", 0);
}

void OnEnter()
{
AddEntityCollideCallback("Player", "ScriptArea_1", "ArthurCheck", true, 1);
PlayMusic("RopeFootstep.ogg", true, 1, 1, 1, false);
}

void OnLeave()
{
SetupLoadScreen("LoadingText", "Loading", 7, "HNBKChapterOne.jpg");
}
(08-03-2013, 07:16 PM)hunchbackproduction Wrote: [ -> ]Ok! tried to get this to work, I thought I understood this, But boy was I wrong xD
I need a little more clarification on how this whole thing works.
When you explained the I and K parameter thing I got it, But why is I and K needed ? Can't you just code: "addnumber(3,1)" ?


Also what is up with "public" I saw you put that there before your voids

I still do not get the whole lanternlit, and how it links to parameters ? Are the parameters "true" or "false" and do I have to define these somewhere ?


void LanternLit(bool lanternLit)
{
if(lanternLit)
{
SetMessage("test", "test", 1);
}
else
{

}
}

I have this piece of test code, please explain to me why it does not work! As when I light my lantern the test message does not appear.
PS: I have given you a reputation for the help so far ^ Thanks!
Don't worry. It will all make sense. =p

You could put addNumber(1, 3) somewhere, but the parser/compiler will give you an error unless you define that function somewhere.

I and K, as in my previous example, represent the values that you pass to that function.

"public" is what's known as an access specifier. It's more of an advanced topic. It was force of habit, but I don't think the HPL scripting requires it. You can ignore it if you like.

The boolean is passed through the internal workings of the engine. You define parameters when you define the function. Also, try using "AddDebugMessage" rather than setmessage.
(08-04-2013, 01:33 AM)Tomato Cat Wrote: [ -> ]
(08-03-2013, 07:16 PM)hunchbackproduction Wrote: [ -> ]Ok! tried to get this to work, I thought I understood this, But boy was I wrong xD
I need a little more clarification on how this whole thing works.
When you explained the I and K parameter thing I got it, But why is I and K needed ? Can't you just code: "addnumber(3,1)" ?


Also what is up with "public" I saw you put that there before your voids

I still do not get the whole lanternlit, and how it links to parameters ? Are the parameters "true" or "false" and do I have to define these somewhere ?


void LanternLit(bool lanternLit)
{
if(lanternLit)
{
SetMessage("test", "test", 1);
}
else
{

}
}

I have this piece of test code, please explain to me why it does not work! As when I light my lantern the test message does not appear.
PS: I have given you a reputation for the help so far ^ Thanks!
Don't worry. It will all make sense. =p

You could put addNumber(1, 3) somewhere, but the parser/compiler will give you an error unless you define that function somewhere.

I and K, as in my previous example, represent the values that you pass to that function.

"public" is what's known as an access specifier. It's more of an advanced topic. It was force of habit, but I don't think the HPL scripting requires it. You can ignore it if you like.

The boolean is passed through the internal workings of the engine. You define parameters when you define the function. Also, try using "AddDebugMessage" rather than setmessage.

Oh. I really thought it's a returnType.
(08-04-2013, 02:12 AM)JustAnotherPlayer Wrote: [ -> ]Oh. I really thought it's a returnType.

No, in this case "void" is the return type (or lack thereof).
(08-04-2013, 03:06 AM)Tomato Cat Wrote: [ -> ]
(08-04-2013, 02:12 AM)JustAnotherPlayer Wrote: [ -> ]Oh. I really thought it's a returnType.

No, in this case "void" is the return type (or lack thereof).

Oh ok. If returnType is int/float, I have to return a value through return; right?
Yep. It's the same with all the primitive types and any objects etc.
(08-03-2013, 09:31 PM)SilentStriker Wrote: [ -> ]it should not be bool LanternLit it has to be bool abLit since it's a programmed parameter.

In computer programming, parameter variable names are irrelevant insofar as the signature of the function is concerned. All that really matters is the data type of the parameter. In other words, either "LanternLit" or "abLit" or whatever, or nothing at all, can be used. For example, this would still work:
PHP Code:
void LanternCallback(bool)
{
    
// Do something...

(08-04-2013, 09:42 AM)Your Computer Wrote: [ -> ]
(08-03-2013, 09:31 PM)SilentStriker Wrote: [ -> ]it should not be bool LanternLit it has to be bool abLit since it's a programmed parameter.

In computer programming, parameter variable names are irrelevant insofar as the signature of the function is concerned. All that really matters is the data type of the parameter. In other words, either "LanternLit" or "abLit" or whatever, or nothing at all, can be used. For example, this would still work:
PHP Code:
void LanternCallback(bool)
{
    
// Do something...


True, god I'm rusty with my programming...
Haha ^ Thanks to all of you :3 The CODE IT WORKS Big Grin! Real thanks to you guys, reputation for everyone. May even put you guys in the credits if I ever finish this thing!
Pages: 1 2