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
What's wrong with my script?
physcostealth Offline
Junior Member

Posts: 25
Threads: 12
Joined: Mar 2014
Reputation: 0
#1
What's wrong with my script?

This is just a test area. But I want the player to take a key, open a closet with it, grab a crowbar in the closet (which in turn will also make an area active between the player and a door), and when the player walks into the area thunder will crash and the player will look at a nearby window. Then he can use to crowbar to open the door. Everything works out well up till the area part; it seems like the area is always inactive as when I grab the crowbar and walk into the area, nothing happens. The door still opens when I use the crowbar on it, however.

void OnStart()
{
    AddUseItemCallback("crowbar.ent", "crowbar", "mansion_1", "unlockdoor", false);
    SetSwingDoorLocked("mansion_1", true, true);
    SetSwingDoorLocked("cabinet", true, true);
    AddUseItemCallback("key_tomb.ent", "keycloset", "cabinet", "unlockcloset", false);
    SetEntityActive("thunder", false);
    AddEntityCollideCallback("Player", "thunder", "lookatwindow", true, 1);
}

//To unlock the closet door, grab the key and click on the door.///

void unlockcloset(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("cabinet", false, true);
    PlaySoundAtEntity("locker", "07_pick_lock.ogg", "Player", 0.1f, true);
}

//To unlock the mansion door, grab the crowbar and click the door.///

void unlockdoor(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("mansion_1", false, true);
    PlayMusic("the_patronus_light.ogg", true, 1.0, 1.0, 1, false);
    PlaySoundAtEntity("lock", "07_pick_lock.ogg", "Player", 0.1f, true);
}

//Before you walk to the mansion door to unlock it, thunder will crash when you walk into the area.//

void lookatwindow(string &in asParent, string &in asChild, int alState)
{
    StartPlayerLookAt("windowblue", 1.0f, 1.0f, "timerset");
    PlaySoundAtEntity("thundercrash", "thunder_crash01.ogg", "windowblue", 0.0f, true);
    if(HasItem("crowbar"))
        {
            SetEntityActive("thunder", true);
        }
    AddTimer("timerthunder", 3.0f, "timerset");
}

//The timer starts when player walks into thunder area.//

void timerset(string &in asTimer)
{
    StopPlayerLookAt();
}

Thanks for your help!
03-16-2014, 09:18 PM
Find Reply
Mudbill Offline
Muderator

Posts: 3,877
Threads: 59
Joined: Apr 2013
Reputation: 178
#2
RE: What's wrong with my script?

What happens here is that you have the check for the collision from the start. This check it also removed after first execution, therefore it does not happen again if you've already stepped into that area before you had the crowbar, even if you do have it later.

One thing you can do instead of checking for the playing having the crowbar, is to just add the check after you pick it up. Leave the area active and give the collide callback to the PickUp function of the crowbar, and it will only happen after you pick it up.

Just wanna point out that you do not need ".ent" in your callback internal name. That name has nothing to do with any files. I don't think it affects it much but you never know.

PS: This thread will probably be moved to Development Support soon.

Wha-cha! Ninja!

(This post was last modified: 03-16-2014, 09:34 PM by Mudbill.)
03-16-2014, 09:32 PM
Find Reply
plutomaniac Offline
Super Moderator

Posts: 6,368
Threads: 45
Joined: May 2011
Reputation: 183
#3
RE: What's wrong with my script?

http://www.frictionalgames.com/forum/thr...#pid287559

Stop posting whatever editor "problem" you have at the Technical Support section. This is the 5th thread I have moved so far.

Also, have one thread for all your issues during the same period of time.
03-17-2014, 12:03 AM
Find Reply
physcostealth Offline
Junior Member

Posts: 25
Threads: 12
Joined: Mar 2014
Reputation: 0
#4
RE: What's wrong with my script?

I tried adding an 'OnPickup' function to the script... now the game just crashes and gives me an expected data type error. Ya never know, it might be stupidly obvious.

void OnStart()
{
    AddUseItemCallback("crowbar.ent", "crowbar", "mansion_1", "unlockdoor", false);
    SetSwingDoorLocked("mansion_1", true, true);
    SetSwingDoorLocked("cabinet", true, true);
    AddUseItemCallback("key_tomb.ent", "keycloset", "cabinet", "unlockcloset", false);
    SetEntityActive("thunderarea", false);
    SetEntityCallbackFunc("", "pickupcrowbar");
}

//To unlock the closet door, grab the key and click on the door.///

void unlockcloset(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("cabinet", false, true);
    PlaySoundAtEntity("locker", "07_pick_lock.ogg", "Player", 0.1f, true);
}

//To unlock the mansion door, grab the crowbar and click the door.///

void unlockdoor(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("mansion_1", false, true);
    PlayMusic("the_patronus_light.ogg", true, 1.0, 1.0, 1, false);
    PlaySoundAtEntity("lock", "07_pick_lock.ogg", "Player", 0.1f, true);
}

//Before you walk to the mansion door to unlock it, thunder will crash when you walk into the area.//

void pickupcrowbar("crowbar", "OnPickup")
{
    SetEntityActive("thunderarea", true);
    AddEntityCollideCallback("Player", "thunderarea", "lookatwindow", true, 1);
}

void lookatwindow(string &in asParent, string &in asChild, int alState)
{
    StartPlayerLookAt("windowblue", 1.0f, 1.0f, "timer");
    PlaySoundAtEntity("", "thunder_crash01.ogg", "windowblue", 2.0f, true);
}

void timer()
{
    StopPlayerLookAt();
}
03-22-2014, 05:25 AM
Find Reply
PutraenusAlivius Offline
Posting Freak

Posts: 4,713
Threads: 75
Joined: Dec 2012
Reputation: 119
#5
RE: What's wrong with my script?

(1) SetEntityCallbackFunc("crowbar", "pickupcrowbar");
(2) void pickupcrowbar(string &in asEntity, string &in type)

You got two things wrong.
First, you didn't filled in the first argument of the SetEntityCallbackFunc. (1)
Second, you have the wrong callback function to SECF. (2)

"Veni, vidi, vici."
"I came, I saw, I conquered."
03-22-2014, 05:29 AM
Find Reply




Users browsing this thread: 1 Guest(s)