Frictional Games Forum (read-only)
area problem - 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: area problem (/thread-20869.html)



area problem - User01 - 03-03-2013

I want to make two messages and the first message should never seen again, while only the second message should be shown after entering an area, which is inactive now

The code:

PHP Code:
void OnStart()
{
AddEntityCollideCallback("Player" "Area1" "A" true 1);
AddEntityCollideCallback("Player" "Area2" "C" true 1);
}


void A(string &in asParentstring &in asChildint alState)
{
    
SetEntityActive("object"true);
    
SetMoveObjectState("object"1.0);
    
PlaySoundAtEntity("""sound.snt""object"1.5ffalse);
    
SetMessage("Message""SampleText"4);
    
AddTimer(""4"Hand2");
}
    
void B(string &in asParentstring &in asChildint alState)    
{
     
SetEntityActive("Area2"true);
}

void C(string &in asParentstring &in asChildint alState)
{
     
PlaySoundAtEntity("""Sound.ogg""object"1.5f
     
SetMessage("Message2""SampleText"3);


but somehow the void C part is just ignoring. Why?


RE: area problem - No Author - 03-03-2013

(03-03-2013, 09:47 PM)User01 Wrote: I want to make two messages and the first message should never seen again, while only the second message should be shown after entering an area, which is inactive now

The code:

PHP Code:
void OnStart()
{
AddEntityCollideCallback("Player" "Area1" "A" true 1);
AddEntityCollideCallback("Player" "Area2" "C" true 1);
}


void A(string &in asParentstring &in asChildint alState)
{
    
SetEntityActive("object"true);
    
SetMoveObjectState("object"1.0);
    
PlaySoundAtEntity("""sound.snt""object"1.5ffalse);
    
SetMessage("Message""SampleText"4);
    
AddTimer(""4"Hand2");
}
    
void B(string &in asParentstring &in asChildint alState)    
{
     
SetEntityActive("Area2"true);
}

void C(string &in asParentstring &in asChildint alState)
{
     
PlaySoundAtEntity("""Sound.ogg""object"1.5f
     
SetMessage("Message2""SampleText"3);


but somehow the void C part is just ignoring. Why?

Why is there a void B ? I don't see any of B being mention in the script. I think that's the problem.


RE: area problem - User01 - 03-04-2013

(03-03-2013, 11:59 PM)No Author Wrote:
(03-03-2013, 09:47 PM)User01 Wrote: I want to make two messages and the first message should never seen again, while only the second message should be shown after entering an area, which is inactive now

The code:

PHP Code:
void OnStart()
{
AddEntityCollideCallback("Player" "Area1" "A" true 1);
AddEntityCollideCallback("Player" "Area2" "C" true 1);
}


void A(string &in asParentstring &in asChildint alState)
{
    
SetEntityActive("object"true);
    
SetMoveObjectState("object"1.0);
    
PlaySoundAtEntity("""sound.snt""object"1.5ffalse);
    
SetMessage("Message""SampleText"4);
    
AddTimer(""4"Hand2");
}
    
void B(string &in asParentstring &in asChildint alState)    
{
     
SetEntityActive("Area2"true);
}

void C(string &in asParentstring &in asChildint alState)
{
     
PlaySoundAtEntity("""Sound.ogg""object"1.5f
     
SetMessage("Message2""SampleText"3);


but somehow the void C part is just ignoring. Why?

Why is there a void B ? I don't see any of B being mention in the script. I think that's the problem.
Nope.avi
I did it like that and it was the same problem. I need a better way of script Sad


RE: area problem - Your Computer - 03-04-2013

Pass false to the second collision callback.


RE: area problem - User01 - 03-04-2013

(03-04-2013, 01:33 AM)Your Computer Wrote: Pass false to the second collision callback.
Do you mean
AddEntityCollideCallback("Player" , "Area2" , "C" , FALSE , 1); ?

I already tried that too and it didnt work.


RE: area problem - ExpectedIdentifier - 03-04-2013

(03-04-2013, 02:33 AM)User01 Wrote:
(03-04-2013, 01:33 AM)Your Computer Wrote: Pass false to the second collision callback.
Do you mean
AddEntityCollideCallback("Player" , "Area2" , "C" , FALSE , 1); ?

I already tried that too and it didnt work.

There is no collide callback that calls function "B", so Area2 is never set to active. Try this:

PHP Code:
void OnStart()
{
AddEntityCollideCallback("Player" "Area1" "A" true 1);
AddEntityCollideCallback("Player" "Area2" "C" false 1);
AddEntityCollideCallback("Player" "PUTSOMETHINGHERE" "B" true 1);
}


void A(string &in asParentstring &in asChildint alState)
{
    
SetEntityActive("object"true);
    
SetMoveObjectState("object"1.0);
    
PlaySoundAtEntity("""sound.snt""object"1.5ffalse);
    
SetMessage("Message""SampleText"4);
    
AddTimer(""4"Hand2");
}
    
void B(string &in asParentstring &in asChildint alState)    
{
     
SetEntityActive("Area2"true);
}

void C(string &in asParentstring &in asChildint alState)
{
     
PlaySoundAtEntity("""Sound.ogg""object"1.5ffalse);
     
SetMessage("Message2""SampleText"3);


You need to put in the area that you want the player to collide with to set Area2 active though. It's very confusing to try and see what you're doing though, so if this doesn't work explain again what the problem is.