Frictional Games Forum (read-only)
Crowbar script - Printable Version

+- Frictional Games Forum (read-only) (https://www.frictionalgames.com/forum)
+-- Forum: Amnesia: The Dark Descent (https://www.frictionalgames.com/forum/forum-6.html)
+--- Forum: Custom Stories, TCs & Mods - Development (https://www.frictionalgames.com/forum/forum-38.html)
+---- Forum: Development Support (https://www.frictionalgames.com/forum/forum-39.html)
+---- Thread: Crowbar script (/thread-12653.html)

Pages: 1 2


Crowbar script - Bozcovich - 01-17-2012

Hey, I'm trying to make a crowbar/destroying door script, but i keep getting error,


Whats wrong with this code? Big Grin




void OnStart()

{
AddEntityCollideCallback("Player" , "ScriptArea_1" , "MonsterFunc1" , true , 1);
}
{
AddUseItemCallback("1", "crowbar_1", "Mansion_1", UseCrowbarOnDoor, true);
}
void MonsterFunc1(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("ghostgrunt", true);
ShowEnemyPlayerPosition("ghostgrunt");
AddTimer("", 1, "TimerGruntEnd");
StartPlayerLookAt("AreaLookAt", 30, 50, "");
AddTimer("", 1, "TimerStopPlayerLook");
}


Void UseCrowbarOnDoor(string &in asItem, string &in asEntity)
{
SetEntityActive("crowbar_joint_1", true);
RemoveItem(asItem);
}
void TimerStopPlayerLook (string &in asTimer)
{
SetEntityActive("ghostgrunt", false);
StopPlayerLookAt();
SetEntityActive("servant_grunt_1", true);
}






This is my code without the crowbar script and it works fine:



void OnStart()

{
AddEntityCollideCallback("Player" , "ScriptArea_1" , "MonsterFunc1" , true , 1);
}
void MonsterFunc1(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("ghostgrunt", true);
ShowEnemyPlayerPosition("ghostgrunt");
AddTimer("", 1, "TimerGruntEnd");
StartPlayerLookAt("AreaLookAt", 30, 50, "");
AddTimer("", 1, "TimerStopPlayerLook");
}

void TimerStopPlayerLook (string &in asTimer)
{
SetEntityActive("ghostgrunt", false);
StopPlayerLookAt();
SetEntityActive("servant_grunt_1", true);
}


Big Grin


RE: Crowbar script - flamez3 - 01-17-2012

You have two void OnStarts? Anyway, use this:


Quote:void OnStart()

{
AddEntityCollideCallback("Player" , "ScriptArea_1" , "MonsterFunc1" , true , 1);
AddEntityCollideCallback("Player" , "ScriptArea_1" , "MonsterFunc1" , true , 1);
AddUseItemCallback("1", "crowbar_1", "Mansion_1", UseCrowbarOnDoor, true);
}


void MonsterFunc1(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("ghostgrunt", true);
ShowEnemyPlayerPosition("ghostgrunt");
AddTimer("", 1, "TimerGruntEnd");
StartPlayerLookAt("AreaLookAt", 30, 50, "");
AddTimer("", 1, "TimerStopPlayerLook");
}


void UseCrowbarOnDoor(string &in asItem, string &in asEntity)
{
SetEntityActive("crowbar_joint_1", true);
RemoveItem(asItem);
}

void TimerStopPlayerLook (string &in asTimer)
{
SetEntityActive("ghostgrunt", false);
StopPlayerLookAt();
SetEntityActive("servant_grunt_1", true);
}

void MonsterFunc1(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("ghostgrunt", true);
ShowEnemyPlayerPosition("ghostgrunt");
AddTimer("", 1, "TimerGruntEnd");
StartPlayerLookAt("AreaLookAt", 30, 50, "");
AddTimer("", 1, "TimerStopPlayerLook");
}

void TimerStopPlayerLook (string &in asTimer)
{
SetEntityActive("ghostgrunt", false);
StopPlayerLookAt();
SetEntityActive("servant_grunt_1", true);
}
You are putting the callbacks in the wrong places. They go in void OnStart. And don't make another void OnStart for a different even. Look at the way I set it up and go from there.


RE: Crowbar script - Shadowfied - 01-17-2012

All callbacks must be within the squiggly brackets of the onstart void.

void OnStart()
{
They go here
here
here
}

etc.

(01-17-2012, 02:24 AM)flamez3 Wrote: You have two void OnStarts? Anyway, use this:


Quote:void OnStart()

{
AddEntityCollideCallback("Player" , "ScriptArea_1" , "MonsterFunc1" , true , 1);
AddEntityCollideCallback("Player" , "ScriptArea_1" , "MonsterFunc1" , true , 1);
AddUseItemCallback("1", "crowbar_1", "Mansion_1", UseCrowbarOnDoor, true);
}


void MonsterFunc1(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("ghostgrunt", true);
ShowEnemyPlayerPosition("ghostgrunt");
AddTimer("", 1, "TimerGruntEnd");
StartPlayerLookAt("AreaLookAt", 30, 50, "");
AddTimer("", 1, "TimerStopPlayerLook");
}


void UseCrowbarOnDoor(string &in asItem, string &in asEntity)
{
SetEntityActive("crowbar_joint_1", true);
RemoveItem(asItem);
}

void TimerStopPlayerLook (string &in asTimer)
{
SetEntityActive("ghostgrunt", false);
StopPlayerLookAt();
SetEntityActive("servant_grunt_1", true);
}

void MonsterFunc1(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("ghostgrunt", true);
ShowEnemyPlayerPosition("ghostgrunt");
AddTimer("", 1, "TimerGruntEnd");
StartPlayerLookAt("AreaLookAt", 30, 50, "");
AddTimer("", 1, "TimerStopPlayerLook");
}

void TimerStopPlayerLook (string &in asTimer)
{
SetEntityActive("ghostgrunt", false);
StopPlayerLookAt();
SetEntityActive("servant_grunt_1", true);
}
You are putting the callbacks in the wrong places. They go in void OnStart. And don't make another void OnStart for a different even. Look at the way I set it up and go from there.
He does not have two OnStart's, if you read, he said that the other part was the script without the crowbar.




RE: Crowbar script - Bozcovich - 01-17-2012

Thanks for the help, didnt know the Callbacks should be there Big Grin


RE: Crowbar script - Bozcovich - 01-17-2012

Gah, i get errors with this code, anyone knows why? The problem is with the Crowbar/breaking the door script.



void OnStart()

{
AddEntityCollideCallback("Player" , "ScriptArea_1" , "MonsterFunc1" , true , 1);
AddUseItemCallback("1", "crowbar_1", "mansion_1", "UseCrowbarOnDoor" , true);
AddEntityCollideCallback("", "crowbar_joint_1", "ScriptArea_2", "BlowTheShit" , true);
}

Void BlowTheShit(string &in asEntity)
{
SetPropHealth("mansion_1", 0);
}
void MonsterFunc1(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("ghostgrunt", true);
ShowEnemyPlayerPosition("ghostgrunt");
AddTimer("", 1, "TimerGruntEnd");
StartPlayerLookAt("AreaLookAt", 30, 50, "");
AddTimer("", 1, "TimerStopPlayerLook");
}


void UseCrowbarOnDoor(string &in asItem, string &in asEntity)
{
SetEntityActive("crowbar_joint_1", true);
RemoveItem(asItem);
}

void TimerStopPlayerLook (string &in asTimer)
{
SetEntityActive("ghostgrunt", false);
StopPlayerLookAt();
SetEntityActive("servant_grunt_1", true);
}



RE: Crowbar script - Shadowfied - 01-17-2012

Can you tell me what error you get?



RE: Crowbar script - Bozcovich - 01-17-2012

Main(9,1):ERR: Identifier 'Void' is not a data type
Main/6,1):ERR: No matching Signatures to 'AddEntityCollideCallback(string@&,string@&,string@&,string@&, const cool)'
Main(10,1): ERR : Not all paths return a value


RE: Crowbar script - SilentStriker - 01-17-2012

Main(9,1) problem: You have written void with a big V on void blowtheshit

Main(6,1) problem: ("", "crowbar_joint_1", "ScriptArea_2", "BlowTheShit" , true); is written wrong it should be:

AddEntityCollideCallback("crowbar_joint_1", "ScriptArea_2", "BlowTheShit" , true, 1); (I think)




RE: Crowbar script - Bozcovich - 01-17-2012



Thanks! Big Grin It doesnt show an error message now but i nothing happens with the door when i bend the crowbar :S


RE: Crowbar script - flamez3 - 01-17-2012

Your syntax is wrong.

Replace (string &in asEntity)

With

(string &in asParent, string &in asChild, int alState)