Frictional Games Forum (read-only)

Full Version: Script Error 4.0
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Can anyone tell my why this script doesn't work, when I have all the levers in the right position, nothing happens!



/////////////////////
//BEGIN LEVER SCRIPT
/////////////////////

void PullLever1(string &in asEntity, int alState)
{
if(alState == 1){

AddDebugMessage("Lever 1 is in the right position", false);
AddLocalVarInt("Levers", 1);

}else{

AddDebugMessage("Lever 1 is in the wrong position", false);
}


}

void PullLever2(string &in asEntity, int alState)
{
if(alState == -1){

AddDebugMessage("Lever 2 is in the right position", false);
AddLocalVarInt("Levers", 1);
}else{

AddDebugMessage("Lever 2 is in the wrong position", false);

}
}

void PullLever3(string &in asEntity, int alState)
{
if(alState == -1){

AddDebugMessage("Lever 3 is in the right position", false);
AddLocalVarInt("Levers", 1);
}else{

AddDebugMessage("Lever 3 is in the wrong position", false);

}
}

void PullLever4(string &in asEntity, int alState)
{
if(alState == 1){

AddDebugMessage("Lever 4 is in the right position", false);
AddLocalVarInt("Levers", 1);

}else{

AddDebugMessage("Lever 4 is in the wrong position", false);

}
}

void PullLever5(string &in asEntity, int alState)
{
if(alState == 1){

AddDebugMessage("Lever 5 is in the right position", false);
AddLocalVarInt("Levers", 1);

}else{

AddDebugMessage("Lever 5 is in the wrong position", false);

}
}

void PullLever6(string &in asEntity, int alState)
{
if(alState == -1){

AddDebugMessage("Lever 6 is in the right position", false);
AddLocalVarInt("Levers", 1);


}else{

AddDebugMessage("Lever 6 is in the wrong position", false);

}
}

/*void StartMachine(string &in asEntity)
{
if(GetLocalVarInt("Levers") == 6){

AddDebugMessage("SUCCES", false);

}else{

}


}*/

void OnStart()
{
PlaySoundAtEntity("", "13_amb.ogg", "Player", 1.0f, false);

SetEntityConnectionStateChangeCallback("lever_machine_lever01", "PullLever1");
SetEntityConnectionStateChangeCallback("lever_machine_lever02", "PullLever2");
SetEntityConnectionStateChangeCallback("lever_machine_lever03", "PullLever3");
SetEntityConnectionStateChangeCallback("lever_machine_lever04", "PullLever4");
SetEntityConnectionStateChangeCallback("lever_machine_lever05", "PullLever5");
SetEntityConnectionStateChangeCallback("lever_machine_lever06", "PullLever6");

if(GetLocalVarInt("Levers") == 6){

AddDebugMessage("SUCCES", false);

}else{

AddDebugMessage("The levers aren't in the right positions", false);

}


if(ScriptDebugOn())
{
GiveItemFromFile("lantern", "lantern.ent");
for(int i=0;i<10;i++){
GiveItemFromFile("tinderbox_"+i, "tinderbox.ent");
}
}

}

void OnEnter()
{

}

void OnLeave()
{

}

A made a video showing the script in action: http://www.youtube.com/watch?v=-6FFj-w3t...e=youtu.be
try adding SetLocalVarInt("Levers", 0);
in OnStart()
Still Doesn't work Sad
PlaySoundAtEntity("", "13_amb.ogg", "Player", 1.0f, false);
.ogg is music, .snt is sound.
So it's PlayMusic(all the stuff)
EDIT!:Another thing: Since the if statement for all 6 levers is inside OnStart(), it's only checked once. Get the if inside every lever function.
The music still work...

But thanks!!! Smile It works now
Edited above post, it should work after that.
It does
Ok lol, I found a bug to the script.

Every time a lever gets pulled to the right position, it adds 1 to the LocalVarInt "Levers", so, you could just pull a lever 6 times, and you would have solved the puzzle, I have a video showing you if you do not undeerstand. Can anyone tell me how to fix this?

http://www.youtube.com/watch?v=L2cz1IP1D...e=youtu.be


Here is the script again, since I have changed a few things:


/////////////////////
//BEGIN LEVER SCRIPT
/////////////////////

void PullLever1(string &in asEntity, int alState)
{
if(alState == 1){

AddDebugMessage("Lever 1 is in the right position", false);
AddLocalVarInt("Levers", 1);
PlaySoundAtEntity("", "lever_mech_min_max", asEntity, 0.0f, false);
}else if(alState == 0){

AddDebugMessage("Lever 1 is in the wrong position", false);
}else if(alState == -1){
PlaySoundAtEntity("", "lever_mech_min_max", asEntity, 0.0f, false);
}

if(GetLocalVarInt("Levers") == 6){

AddDebugMessage("SUCCES", false);

PlayMusic("13_puzzle_machine.ogg", false, 1.0f, 0, 1, false);
SetMessage("Messages", "Succes", 5);
SetPlayerSanity(90);
AddPlayerSanity(10);

//
SetGlobalVarInt("SixLeversComplete", 1);
//

SetLeverStuckState("lever_machine_lever01", 1, false);
SetLeverStuckState("lever_machine_lever02", -1, false);
SetLeverStuckState("lever_machine_lever03", -1, false);
SetLeverStuckState("lever_machine_lever04", 1, false);
SetLeverStuckState("lever_machine_lever05", 1, false);
SetLeverStuckState("lever_machine_lever06", -1, false);

AddTimer("", 5, "TouchLeversAfterCompletion");

}else{

AddDebugMessage("The levers aren't in the right positions", false);

}
}

void PullLever2(string &in asEntity, int alState)
{
if(alState == -1){

AddDebugMessage("Lever 2 is in the right position", false);
AddLocalVarInt("Levers", 1);
}else if(alState == 0){

AddDebugMessage("Lever 2 is in the wrong position", false);

}else if(alState == 1){
PlaySoundAtEntity("", "lever_mech_min_max", asEntity, 0.0f, false);
}

if(GetLocalVarInt("Levers") == 6){

AddDebugMessage("SUCCES", false);

PlayMusic("13_puzzle_machine.ogg", false, 1.0f, 0, 1, false);
SetMessage("Messages", "Succes", 5);
SetPlayerSanity(90);
AddPlayerSanity(10);

//
SetGlobalVarInt("SixLeversComplete", 1);
//

SetLeverStuckState("lever_machine_lever01", 1, false);
SetLeverStuckState("lever_machine_lever02", -1, false);
SetLeverStuckState("lever_machine_lever03", -1, false);
SetLeverStuckState("lever_machine_lever04", 1, false);
SetLeverStuckState("lever_machine_lever05", 1, false);
SetLeverStuckState("lever_machine_lever06", -1, false);

AddTimer("", 5, "TouchLeversAfterCompletion");

}else{

AddDebugMessage("The levers aren't in the right positions", false);

}
}

void PullLever3(string &in asEntity, int alState)
{
if(alState == -1){

AddDebugMessage("Lever 3 is in the right position", false);
AddLocalVarInt("Levers", 1);
}else if(alState == 0){

AddDebugMessage("Lever 3 is in the wrong position", false);

}else if(alState == 1){
PlaySoundAtEntity("", "lever_mech_min_max", asEntity, 0.0f, false);
}

if(GetLocalVarInt("Levers") == 6){

AddDebugMessage("SUCCES", false);

PlayMusic("13_puzzle_machine.ogg", false, 1.0f, 0, 1, false);
SetMessage("Messages", "Succes", 5);
SetPlayerSanity(90);
AddPlayerSanity(10);

//
SetGlobalVarInt("SixLeversComplete", 1);
//

SetLeverStuckState("lever_machine_lever01", 1, false);
SetLeverStuckState("lever_machine_lever02", -1, false);
SetLeverStuckState("lever_machine_lever03", -1, false);
SetLeverStuckState("lever_machine_lever04", 1, false);
SetLeverStuckState("lever_machine_lever05", 1, false);
SetLeverStuckState("lever_machine_lever06", -1, false);

AddTimer("", 5, "TouchLeversAfterCompletion");

}else{

AddDebugMessage("The levers aren't in the right positions", false);

}
}

void PullLever4(string &in asEntity, int alState)
{
if(alState == 1){

AddDebugMessage("Lever 4 is in the right position", false);
AddLocalVarInt("Levers", 1);

}else if(alState == 0){

AddDebugMessage("Lever 4 is in the wrong position", false);

}else if(alState == -1){
PlaySoundAtEntity("", "lever_mech_min_max", asEntity, 0.0f, false);
}

if(GetLocalVarInt("Levers") == 6){

AddDebugMessage("SUCCES", false);

PlayMusic("13_puzzle_machine.ogg", false, 1.0f, 0, 1, false);
SetMessage("Messages", "Succes", 5);
SetPlayerSanity(90);
AddPlayerSanity(10);

//
SetGlobalVarInt("SixLeversComplete", 1);
//

SetLeverStuckState("lever_machine_lever01", 1, false);
SetLeverStuckState("lever_machine_lever02", -1, false);
SetLeverStuckState("lever_machine_lever03", -1, false);
SetLeverStuckState("lever_machine_lever04", 1, false);
SetLeverStuckState("lever_machine_lever05", 1, false);
SetLeverStuckState("lever_machine_lever06", -1, false);

AddTimer("", 5, "TouchLeversAfterCompletion");

}else{

AddDebugMessage("The levers aren't in the right positions", false);

}
}

void PullLever5(string &in asEntity, int alState)
{
if(alState == 1){

AddDebugMessage("Lever 5 is in the right position", false);
AddLocalVarInt("Levers", 1);

}else if(alState == 0){

AddDebugMessage("Lever 5 is in the wrong position", false);

}else if(alState == -1){
PlaySoundAtEntity("", "lever_mech_min_max", asEntity, 0.0f, false);
}

if(GetLocalVarInt("Levers") == 6){

AddDebugMessage("SUCCES", false);

PlayMusic("13_puzzle_machine.ogg", false, 1.0f, 0, 1, false);
SetMessage("Messages", "Succes", 5);
SetPlayerSanity(90);
AddPlayerSanity(10);

//
SetGlobalVarInt("SixLeversComplete", 1);
//

SetLeverStuckState("lever_machine_lever01", 1, false);
SetLeverStuckState("lever_machine_lever02", -1, false);
SetLeverStuckState("lever_machine_lever03", -1, false);
SetLeverStuckState("lever_machine_lever04", 1, false);
SetLeverStuckState("lever_machine_lever05", 1, false);
SetLeverStuckState("lever_machine_lever06", -1, false);

AddTimer("", 5, "TouchLeversAfterCompletion");

}else{

AddDebugMessage("The levers aren't in the right positions", false);

}
}

void PullLever6(string &in asEntity, int alState)
{
if(alState == -1){

AddDebugMessage("Lever 6 is in the right position", false);
AddLocalVarInt("Levers", 1);


}else if(alState == 0){

AddDebugMessage("Lever 6 is in the wrong position", false);

}else if(alState == 1){
PlaySoundAtEntity("", "lever_mech_min_max", asEntity, 0.0f, false);
}

if(GetLocalVarInt("Levers") == 6){

AddDebugMessage("SUCCES", false);

PlayMusic("13_puzzle_machine.ogg", false, 1.0f, 0, 1, false);
SetMessage("Messages", "Succes", 5);
SetPlayerSanity(90);
AddPlayerSanity(10);

//
SetGlobalVarInt("SixLeversComplete", 1);
//

SetLeverStuckState("lever_machine_lever01", 1, false);
SetLeverStuckState("lever_machine_lever02", -1, false);
SetLeverStuckState("lever_machine_lever03", -1, false);
SetLeverStuckState("lever_machine_lever04", 1, false);
SetLeverStuckState("lever_machine_lever05", 1, false);
SetLeverStuckState("lever_machine_lever06", -1, false);

AddTimer("", 5, "TouchLeversAfterCompletion");

}else{

AddDebugMessage("The levers aren't in the right positions", false);

}
}

void TouchLeversAfterCompletion(string &in Timer)
{
SetEntityPlayerInteractCallback("lever_machine_lever01", "TouchSixLeversStuck", false);
SetEntityPlayerInteractCallback("lever_machine_lever02", "TouchSixLeversStuck", false);
SetEntityPlayerInteractCallback("lever_machine_lever03", "TouchSixLeversStuck", false);
SetEntityPlayerInteractCallback("lever_machine_lever04", "TouchSixLeversStuck", false);
SetEntityPlayerInteractCallback("lever_machine_lever05", "TouchSixLeversStuck", false);
SetEntityPlayerInteractCallback("lever_machine_lever06", "TouchSixLeversStuck", false);
}
void TouchSixLeversStuck(string &in asEntity)
{
SetMessage("Messages", "TouchSixLeversStuck", 5);
}

//////////////////
//END LEVER SCRIPT
//////////////////

void OnStart()
{
//BEGIN LEVER SCRIPT
SetEntityConnectionStateChangeCallback("lever_machine_lever01", "PullLever1");
SetEntityConnectionStateChangeCallback("lever_machine_lever02", "PullLever2");
SetEntityConnectionStateChangeCallback("lever_machine_lever03", "PullLever3");
SetEntityConnectionStateChangeCallback("lever_machine_lever04", "PullLever4");
SetEntityConnectionStateChangeCallback("lever_machine_lever05", "PullLever5");
SetEntityConnectionStateChangeCallback("lever_machine_lever06", "PullLever6");

SetLocalVarInt("Levers", 0);
//END LEVER SCRIPT
}
void OnStart()
{
//BEGIN LEVER SCRIPT
SetEntityConnectionStateChangeCallback("lever_machine_lever01", "PullLever1");
SetEntityConnectionStateChangeCallback("lever_machine_lever02", "PullLever2");
SetEntityConnectionStateChangeCallback("lever_machine_lever03", "PullLever3");
SetEntityConnectionStateChangeCallback("lever_machine_lever04", "PullLever4");
SetEntityConnectionStateChangeCallback("lever_machine_lever05", "PullLever5");
SetEntityConnectionStateChangeCallback("lever_machine_lever06", "PullLever6");

SetLocalVarInt("Levers", 0);
SetLocalVarInt("Lever1", 0);
SetLocalVarInt("Lever2", 0);
SetLocalVarInt("Lever3", 0);
SetLocalVarInt("Lever4", 0);
SetLocalVarInt("Lever5", 0);
SetLocalVarInt("Lever6", 0);


//END LEVER SCRIPT
}
void PullLever1(string &in asEntity, int alState)
{
if(alState == 1)
{
SetLocalVarInt("Lever1", 1);

AddDebugMessage("Lever 1 is in the right position", false);
PlaySoundAtEntity("", "lever_mech_min_max", asEntity, 0.0f, false);
}
else if(alState == 0)
{
SetLocalVarInt("Lever1", 0);
AddDebugMessage("Lever 1 is in the wrong position", false);
}
else if(alState == -1)
{
SetLocalVarInt("Lever1", 0);
PlaySoundAtEntity("", "lever_mech_min_max", asEntity, 0.0f, false);

}
if(GetLocalVarInt("Lever1") == 1) && GetLocalVarInt("Lever2") == 1) && GetLocalVarInt("Lever3") == 1) && GetLocalVarInt("Lever4") == 1) && GetLocalVarInt("Lever5") == 1) && GetLocalVarInt("Lever6") == 1)
{

AddDebugMessage("SUCCES", false);

PlayMusic("13_puzzle_machine.ogg", false, 1.0f, 0, 1, false);
SetMessage("Messages", "Succes", 5);
SetPlayerSanity(90);
AddPlayerSanity(10);

//
SetGlobalVarInt("SixLeversComplete", 1);
//

SetLeverStuckState("lever_machine_lever01", 1, false);
SetLeverStuckState("lever_machine_lever02", -1, false);
SetLeverStuckState("lever_machine_lever03", -1, false);
SetLeverStuckState("lever_machine_lever04", 1, false);
SetLeverStuckState("lever_machine_lever05", 1, false);
SetLeverStuckState("lever_machine_lever06", -1, false);

AddTimer("", 5, "TouchLeversAfterCompletion");

}
else
{

AddDebugMessage("The levers aren't in the right positions", false);

}
}

This is for OnStart() and Lever 1. Basically, you assign each lever his own local variable, which you set 1 if it's in the right position and 0 if it's not. Then, at each lever movement, you check if ever lever variable is 1, then you do that stuff. This might be the only way, maybe you can decrease the length by calling a function when all lever variables are 1, instead of doing all this in every lever function. Anyway, this one should work. Just add each lever.
I tried this one, but it didnt work in the end with the if(GetLocalVarInt("lever1") == 1 && (GetLocalVarInt("lever2") == 1

But I'll try again
Pages: 1 2