GreyFox
Member
Posts: 162
Threads: 23
Joined: Jul 2011
Reputation:
2
|
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 |
|
SkuLLfac3
Junior Member
Posts: 48
Threads: 11
Joined: Jun 2011
Reputation:
0
|
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
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".
(This post was last modified: 07-13-2011, 10:56 PM by SkuLLfac3.)
|
|
07-13-2011, 10:54 PM |
|
xtron
Senior Member
Posts: 402
Threads: 37
Joined: May 2011
Reputation:
2
|
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
Dubstep <3
|
|
07-13-2011, 11:20 PM |
|
GreyFox
Member
Posts: 162
Threads: 23
Joined: Jul 2011
Reputation:
2
|
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 |
|
SkuLLfac3
Junior Member
Posts: 48
Threads: 11
Joined: Jun 2011
Reputation:
0
|
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
Do you mean my solution? I don't know much about it I'm new
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 ^^
(This post was last modified: 07-14-2011, 12:13 AM by SkuLLfac3.)
|
|
07-14-2011, 12:12 AM |
|
Zypherzemus
Member
Posts: 94
Threads: 7
Joined: Jul 2011
Reputation:
0
|
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".
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 |
|
xtron
Senior Member
Posts: 402
Threads: 37
Joined: May 2011
Reputation:
2
|
RE: Key Problem
Snuffs code should do it
Dubstep <3
|
|
07-14-2011, 03:04 AM |
|
GreyFox
Member
Posts: 162
Threads: 23
Joined: Jul 2011
Reputation:
2
|
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 |
|
|