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
Key Problem
GreyFox Offline
Member

Posts: 162
Threads: 23
Joined: Jul 2011
Reputation: 2
#1
Key Problem

Hey, Me once again with another problem but it seems easy to fix. Just to hard for me.

Anyways I Have 2 Keys and each key unlocks a different door the problem is when i unlock one door the other one unlocks as well. because I don't know how to separate the code in the script,

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("LockedDoor_1", false, true);
    PlaySoundAtEntity("", "unlock_door", "LockedDoor_1", 0, false);
    RemoveItem("LockedDoorKey");
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("Door_2", false, true);
    PlaySoundAtEntity("", "unlock_door", "Door_2", 0, false);
    RemoveItem("Key_2");
}

I had that first, and it said I cannot use it because that prefix was already being used. So I did this.

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("LockedDoor_1", false, true);
    PlaySoundAtEntity("", "unlock_door", "LockedDoor_1", 0, false);
    RemoveItem("LockedDoorKey");

    SetSwingDoorLocked("Door_2", false, true);
    PlaySoundAtEntity("", "unlock_door", "Door_2", 0, false);
    RemoveItem("Key_2");
}

But that Didn't work either.
Thank you for helping in Advance
-Grey Fox (The Noob)

Current Project
Forgotten
07-13-2011, 10:39 PM
Find
SkuLLfac3 Offline
Junior Member

Posts: 48
Threads: 11
Joined: Jun 2011
Reputation: 0
#2
RE: Key Problem

I'm not good at scripting but I would say, the reason is, that you use the same void syntax. I would do something like that:

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("LockedDoor_1", false, true);
    PlaySoundAtEntity("", "unlock_door", "LockedDoor_1", 0, false);
    RemoveItem("LockedDoorKey");
}

void UsedKeyOnDoor2(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("Door_2", false, true);
    PlaySoundAtEntity("", "unlock_door", "Door_2", 0, false);
    RemoveItem("Key_2");
}

Sry for my bad English but I hope you know what I mean Smile

EDIT: Of course, if you have something else in the script with "UsedKeyOnDoor" but you want the second door (Door_2) , you have to change that to "UsedKeyOnDoor2".

[Die Latrine der Angst] The demo of my 1st story (:
(This post was last modified: 07-13-2011, 10:56 PM by SkuLLfac3.)
07-13-2011, 10:54 PM
Find
xtron Offline
Senior Member

Posts: 402
Threads: 37
Joined: May 2011
Reputation: 2
#3
RE: Key Problem

The first one you posted with two different voids is wrong and will probably give you errors 'cuz you can't have a script that executes two functions. please post your void OnStart()
stuff aswell and I'll see if I can fix it Smile

[Image: 44917299.jpg]Dubstep <3
07-13-2011, 11:20 PM
Find
GreyFox Offline
Member

Posts: 162
Threads: 23
Joined: Jul 2011
Reputation: 2
#4
RE: Key Problem

My Whole Script? Okay

////////////////////////////
// Run first time starting map
void OnStart()
{
SetEntityPlayerInteractCallback("Mansion_5", "MonsterActivate", true);
AddUseItemCallback("", "LockedDoorKey_1", "LockedDoor_1", "UsedKeyOnDoor", true);    
AddUseItemCallback("", "Key_2", "Door_2", "UsedKeyOnDoor", true);
AddEntityCollideCallback("Player", "Scare_1", "CollideScare_1", true, 1);
AddEntityCollideCallback("Player", "Doorslam_1", "CollideDoorslam_1", true, 1);
AddEntityCollideCallback("Player", "MonsterActivate", "CollideMonsterActivate", true, 1);
}

void MonsterActivate(string &in Entity)
{
    SetEntityActive("Frank", true);
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("LockedDoor_1", false, true);
    PlaySoundAtEntity("", "unlock_door", "LockedDoor_1", 0, false);
    RemoveItem("LockedDoorKey");

    SetSwingDoorLocked("Door_2", false, true);
    PlaySoundAtEntity("", "unlock_door", "Door_2", 0, false);
    RemoveItem("Key_2");
}

void CollideScare_1(string &in asParent, string &in asChild, int alState)
{
    SetSwingDoorClosed("ScareDoor_1", true, true);
}

void CollideDoorslam_1(string &in asParent, string &in asChild, int alState)
{
    SetSwingDoorClosed("LockedDoor_1", true, true);
}

void CollideMonsterActivate(string &in asParent, string &in asChild, int alState)
{
    SetNPCAwake("Frank_2", true, false);
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_5", 0, "");
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_7", 0, "");
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_17", 0, "");
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_27", 0, "");
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_36", 0, "");
    SetEnemyDisabled("Frank_2", true);
}

////////////////////////////
// Run when entering map
void OnEnter()
{

}

///////////////////////////
//Run when leaving map
void OnLeave()
{

}

Ignore the bottom part with all the waypoints i have to fix that Unless someone knows how to fix that? It won't activate. no error or anything but not the point.

-Grey Fox

Current Project
Forgotten
07-13-2011, 11:38 PM
Find
SkuLLfac3 Offline
Junior Member

Posts: 48
Threads: 11
Joined: Jun 2011
Reputation: 0
#5
RE: Key Problem

(07-13-2011, 11:20 PM)xtron Wrote: The first one you posted with two different voids is wrong and will probably give you errors 'cuz you can't have a script that executes two functions. please post your void OnStart()
stuff aswell and I'll see if I can fix it Smile

Do you mean my solution? I don't know much about it Big Grin I'm new Tongue

I still would say this:
////////////////////////////
// Run first time starting map
void OnStart()
{
SetEntityPlayerInteractCallback("Mansion_5", "MonsterActivate", true);
AddUseItemCallback("", "LockedDoorKey_1", "LockedDoor_1", "UsedKeyOnDoor", true);    
AddUseItemCallback("", "Key_2", "Door_2", "UsedKeyOnDoor2", true);
AddEntityCollideCallback("Player", "Scare_1", "CollideScare_1", true, 1);
AddEntityCollideCallback("Player", "Doorslam_1", "CollideDoorslam_1", true, 1);
AddEntityCollideCallback("Player", "MonsterActivate", "CollideMonsterActivate", true, 1);
}

void MonsterActivate(string &in Entity)
{
    SetEntityActive("Frank", true);
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("LockedDoor_1", false, true);
    PlaySoundAtEntity("", "unlock_door", "LockedDoor_1", 0, false);
    RemoveItem("LockedDoorKey");
}

void UsedKeyOnDoor2(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("Door_2", false, true);
    PlaySoundAtEntity("", "unlock_door", "Door_2", 0, false);
    RemoveItem("Key_2");
}

void CollideScare_1(string &in asParent, string &in asChild, int alState)
{
    SetSwingDoorClosed("ScareDoor_1", true, true);
}

void CollideDoorslam_1(string &in asParent, string &in asChild, int alState)
{
    SetSwingDoorClosed("LockedDoor_1", true, true);
}

void CollideMonsterActivate(string &in asParent, string &in asChild, int alState)
{
    SetNPCAwake("Frank_2", true, false);
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_5", 0, "");
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_7", 0, "");
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_17", 0, "");
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_27", 0, "");
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_36", 0, "");
    SetEnemyDisabled("Frank_2", true);
}

////////////////////////////
// Run when entering map
void OnEnter()
{

}

///////////////////////////
//Run when leaving map
void OnLeave()
{

}

I'm not sure but you can try it ^^

[Die Latrine der Angst] The demo of my 1st story (:
(This post was last modified: 07-14-2011, 12:13 AM by SkuLLfac3.)
07-14-2011, 12:12 AM
Find
Zypherzemus Offline
Member

Posts: 94
Threads: 7
Joined: Jul 2011
Reputation: 0
#6
RE: Key Problem

Yea.. Uh... You have to change the "UsedKeyOnDoor" function name to something else. Like what SkuLL posted. "UsedKeyOnDoor2" etc.
Like so:
////////////////////////////
// Run first time starting map
void OnStart()
{
SetEntityPlayerInteractCallback("Mansion_5", "MonsterActivate", true);
AddUseItemCallback("", "LockedDoorKey_1", "LockedDoor_1", "UsedKeyOnDoor", true);    
AddUseItemCallback("", "Key_2", "Door_2", "UsedKeyOnDoor2", true);
AddEntityCollideCallback("Player", "Scare_1", "CollideScare_1", true, 1);
AddEntityCollideCallback("Player", "Doorslam_1", "CollideDoorslam_1", true, 1);
AddEntityCollideCallback("Player", "MonsterActivate", "CollideMonsterActivate", true, 1);
}

void MonsterActivate(string &in Entity)
{
    SetEntityActive("Frank", true);
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("LockedDoor_1", false, true);
    PlaySoundAtEntity("", "unlock_door", "LockedDoor_1", 0, false);
    RemoveItem("LockedDoorKey");
}

void UsedKeyOnDoor2(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("Door_2", false, true);
    PlaySoundAtEntity("", "unlock_door", "Door_2", 0, false);
    RemoveItem("Key_2");
}

void CollideScare_1(string &in asParent, string &in asChild, int alState)
{
    SetSwingDoorClosed("ScareDoor_1", true, true);
}

void CollideDoorslam_1(string &in asParent, string &in asChild, int alState)
{
    SetSwingDoorClosed("LockedDoor_1", true, true);
}

void CollideMonsterActivate(string &in asParent, string &in asChild, int alState)
{
    SetNPCAwake("Frank_2", true, false);
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_5", 0, "");
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_7", 0, "");
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_17", 0, "");
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_27", 0, "");
    AddEnemyPatrolNode("Frank_2", "PathNodeArea_36", 0, "");
    SetEnemyDisabled("Frank_2", true);
}

////////////////////////////
// Run when entering map
void OnEnter()
{

}

///////////////////////////
//Run when leaving map
void OnLeave()
{

}

I fixed the function for "Key_2" and "Door_2". it's now "UsedKeyOnDoor2".
You also had both commands in the same callback function, which is a big "no-no". Tongue
Hope this helps.
EDIT:
Oh.. I'm not sure if the "AddUseItemCallback" command really matters if it's in either the OnStart() or OnEnter()
I was told it did, but try it out and see first. If it gives you an error, move both "AddUseItemCallback" commands as well as their callback functions down into the OnEnter() section.
(This post was last modified: 07-14-2011, 02:13 AM by Zypherzemus.)
07-14-2011, 02:09 AM
Find
xtron Offline
Senior Member

Posts: 402
Threads: 37
Joined: May 2011
Reputation: 2
#7
RE: Key Problem

Snuffs code should do it Tongue

[Image: 44917299.jpg]Dubstep <3
07-14-2011, 03:04 AM
Find
GreyFox Offline
Member

Posts: 162
Threads: 23
Joined: Jul 2011
Reputation: 2
#8
RE: Key Problem

Hey Guys, You Helped Me alot. Sorry For the Late Reply Been Gone the past two days.

Thank You!!
-Grey Fox

Current Project
Forgotten
07-15-2011, 03:07 PM
Find




Users browsing this thread: 2 Guest(s)