Frictional Games Forum (read-only)

Full Version: [SCRIPT]Variable not declared
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Really weird issue... I hope it's not my derp moment again. In the second map of my Custom Story, I got an error informing, that a certain variable is not declared. I had no clue what's wrong, so I opened hps file of another level I made a few days ago, as it contains a function similar to the one I was just going to make. I was comparing these two functions with eachother for minutes... and couldn't see a difference. I decided to change starting map to see if that previous script still works. And here the weird part begins. It doesn't work! And displays the same error! How in the hell is that possible? It used to work properly just a few days ago! I didn't change anything in that file during this time.
Maybe someone has a clue what the heck is going on. Here are necessary parts of the script (that one from the first map):

Callback:

Code:
AddEntityCollideCallback("Player", "ScriptArea_11", "VaseEvent", false, 1);

Function:

Code:
void VaseEvent(string &in asParent, string &in asChild, int alState)
{
    SetLocalVarInt("EventChance", RandInt(1,4));
    if (GetLocalVarInt("EventChance")==1)
    {
        SetLocalVarInt("TimeRandomize", RandInt(0,3));
        AddTimer("", TimeRandomize, "VaseEventDelay");
    }
}
void VaseEventDelay(string &in asTimer)
{
    AddPropImpulse("vase01_1", 0, 0, 20, "");
    GiveSanityDamage(10, true);
    SetEntityActive("ScriptArea_11", false);
    SetEntityActive("ScriptArea_12", false);
}

The variable is firstly declared just after OnStart() and OnEnter() (I am not sure if it's necessary after all).
Now it's even more weird, because in my case RandInt was refusing to work without declared variable...

And I use timer, because I want the script to activate in random second.
Try this:

PHP Code:
void VaseEvent(string &in asParentstring &in asChildint alState)
{
    
SetLocalVarInt("EventChance"RandInt(1,4));
    if (
GetLocalVarInt("EventChance")==1)
    {
        
AddTimer(""RandFloat(03), "VaseEventDelay");
    }
}
void VaseEventDelay(string &in asTimer)
{
    
AddPropImpulse("vase01_1"0020"");
    
GiveSanityDamage(10true);
    
SetEntityActive("ScriptArea_11"false);
    
SetEntityActive("ScriptArea_12"false);

@NaxEla

Hm, suddenly that works. But still...
Does anyone know why that way with variable doesn't work while it really DID work earlier? It's indeed more complicated but doesn't seem wrong. I am just bloody curious.
(04-08-2013, 11:40 PM)Yare Wrote: [ -> ]@NaxEla

Hm, suddenly that works. But still...
Does anyone know why that way with variable doesn't work while it really DID work earlier? It's indeed more complicated but doesn't seem wrong. I am just bloody curious.

I had the same problem, but I just deleted that part of the script and rewrote it and it worked.
it also says some stuff about variables not being declared her
http://www.frictionalgames.com/forum/thread-19868.html
If you're going to use a variable that you set by using SetLocalVarInt, then you need to use GetLocalVarInt to use it's value. What I did in the script was just delete that variable entirely because it wasn't really necessary.