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
Script Help Script Help
Adrianis Offline
Senior Member

Posts: 620
Threads: 6
Joined: Feb 2012
Reputation: 27
#11
RE: check if active/ string to int

(03-25-2013, 10:00 AM)Knusper. Wrote: ok, i found the problem, i didnt wrote void MyFunc(string &in asTimer)

I can't see anywhere in your script that you are using a timer, are you sure that that is the problem?

(03-25-2013, 10:00 AM)Knusper. Wrote: Now only At
void FadeOut1(string &in asParent, string &in asChild, int alState)
{
    IsInArea = false;
    string areanumber2 = StringSub(asChild, 11, 2);
    int i1, i2;
    
    i2 = areanumber2[0] *10 + areanumber2[1];       
    i1 = LastArea[0] *10 + LastArea[1];                
    
    if(i1 == i2 - 10)
    {
        AddDebugMessage("fade", false);
        LastArea = areanumber2;
    }
    
}

He sometimes shows the message and sometimes he does not.

Is there any particular reason you need to store the locations like areanumber and LastArea as strings, and not int's?

Did you write all of this script yourself, or has it been copied & pasted from other places?

03-25-2013, 01:09 PM
Find Reply
Knusper. Offline
Member

Posts: 58
Threads: 7
Joined: Feb 2013
Reputation: 2
#12
RE: check if active/ string to int

Yes, it all has to be.
And the timer works now, before i changed it it didnt work.
And I write all scripts myself, just with help of the engine scripts.
Here is the complete script:
void OnEnter()
{
    PlayMusic("Slender 1.ogg", true, 1.0f, 0.0f, 1, true);  
    
}

void OnStart()
{
    
    for (int i = 0; i < 10; i++)
        {
            AddEntityCollideCallback("Player" , "ScriptArea_" + 0 + i , "InArea" , true , 1);
        }
        
        
    for (int i = 11; i < 20; i++)
    
        {
            for (int j = 1; j < 5; j++)
                AddEntityCollideCallback("Player" , "ScriptArea_" + i + "." + j, "FadeOut1" , true , 1);
        }
        
    SetSanityDrainDisabled(true);
    AddEntityCollideCallback("Player" , "Music2" , "secondmusic" , true , 1);    
    AddEntityCollideCallback("Player" , "activeslendy_1" , "Slender1" , true , 1);    
    AddEntityCollideCallback("Player" , "activeslendy_2" , "Slender2" , true , 1);    
}

bool IsInArea = false;
bool Slender_1active = false;
bool Slender_2active = false;
string LastArea = "00";


void secondmusic (string &in asParent, string &in asChild, int alState)
{
    StopMusic(0.0f, 1);
    PlayMusic("Slender 2.ogg", true, 1.0f, 0.0f, 2, true);
}


void Slender1 (string &in asParent, string &in asChild, int alState)
{
    SetEntityActive("Slender_1", true);
    Slender_1active = true;
    AddDebugMessage("active", false);
}

void Slender2 (string &in asParent, string &in asChild, int alState)
{
    SetEntityActive("Slender_2", true);
    Slender_2active = true;
    AddDebugMessage("active2", false);
}

void InArea(string &in asParent, string &in asChild, int alState)
{
    string areanumber1 = StringSub(asChild, 11, 2);
    if ("Slender_" + areanumber1[1] + active)
    {
        AddDebugMessage("InArea > if statement executing", false);
        IsInArea = true;
        LastArea = areanumber1;
        
        AddTimer("Dead", 3, "Dead");
    }
    
}


void Dead(string &in asTimer)
{
    if(IsInArea == true)
    {
        FadeOut(0.5);
        SetPlayerHealth(0);
    }
}


void FadeOut1(string &in asParent, string &in asChild, int alState)
{
    IsInArea = false;
    string areanumber2 = StringSub(asChild, 11, 2);
    int i1, i2;
    
    i2 = areanumber2[0] *10 + areanumber2[1];       //LastArea 2 als int
    i1 = LastArea[0] *10 + LastArea[1];                //LastArea 1 als int
    
    if(i1 == i2 - 10)
    {
        //FadeOut
        AddDebugMessage("fade", false);
        LastArea = areanumber2;
    }
    
}


void OnLeave ()
{
    SetupLoadScreen("", "", 5, "");
}

No one knows, how "I" goes.
(This post was last modified: 03-25-2013, 01:32 PM by Knusper..)
03-25-2013, 01:29 PM
Find Reply
Knusper. Offline
Member

Posts: 58
Threads: 7
Joined: Feb 2013
Reputation: 2
#13
RE: check if active/ string to int

Now i think i got it.
It seems to work correctly.
Here it is: (after 3 hours of working Dodgy)
void OnEnter()
{
    PlayMusic("Slender 1.ogg", true, 1.0f, 0.0f, 1, true);  
    
}

void OnStart()
{
    
    for (int i = 0; i < 10; i++)
        {
            AddEntityCollideCallback("Player" , "ScriptArea_" + 0 + i , "InArea" , false , 1);
        }
        
        
    for (int i = 11; i < 20; i++)
    
        {
            for (int j = 1; j < 5; j++)
                AddEntityCollideCallback("Player" , "ScriptArea_" + i + "." + j, "FadeOut1" , false , 1);
        }
        
    SetSanityDrainDisabled(true);
    AddEntityCollideCallback("Player" , "Music2" , "secondmusic" , true , 1);    
    AddEntityCollideCallback("Player" , "activeslendy_1" , "Slender1" , true , 1);    
    AddEntityCollideCallback("Player" , "activeslendy_2" , "Slender2" , true , 1);    
}


bool IsInArea = false;
bool Slender_1active = false;
bool Slender_2active = false;
string Slender_active = "000000000";
string LastArea = "00";


void secondmusic (string &in asParent, string &in asChild, int alState)
{
    StopMusic(0.0f, 1);
    PlayMusic("Slender 2.ogg", true, 1.0f, 0.0f, 2, true);
}



void Slender1 (string &in asParent, string &in asChild, int alState)
{
    SetEntityActive("Slender_1", true);
    Slender_active = "1" + StringSub(Slender_active, 1, 8);
    AddDebugMessage("active", false);
    AddDebugMessage(Slender_active, false);
}



void Slender2 (string &in asParent, string &in asChild, int alState)
{
    SetEntityActive("Slender_2", true);
    Slender_active = StringSub(Slender_active, 0, 1) + "1" + StringSub(Slender_active, 2, 7);
    AddDebugMessage("active2", false);
    AddDebugMessage(Slender_active, false);
}



void InArea(string &in asParent, string &in asChild, int alState)
{
    string areanumber1 = StringSub(asChild, 11, 2);
    int i;
    i = (areanumber1[0] -48) *10 + areanumber1[1] -48;       
    AddDebugMessage(Slender_active, false);
    if (Slender_active[i-1] == 1 + 48)
    {
        AddDebugMessage("InArea > if statement executing", false);
        IsInArea = true;
        LastArea = areanumber1;
        AddTimer("Dead", 2, "Dead");
    }
    
}



void Dead(string &in asTimer)
{
    if(IsInArea == true)
    {
        FadeOut(0.3);
        SetPlayerHealth(0);
        
    }
}



void FadeOut1(string &in asParent, string &in asChild, int alState)
{
    IsInArea = false;
    string areanumber2 = StringSub(asChild, 11, 2);
    int i1, i2;
    
    i2 = (areanumber2[0] - 48) *10 + areanumber2[1] -48;       
    i1 = (LastArea[0] - 48) *10 + LastArea[1] -48;                
    AddDebugMessage("i1 =" + i1, false);
    AddDebugMessage("i2 =" + i2, false);
    if(i1 == i2 - 10)
    {
        //FadeOut
        AddDebugMessage("fade", false);
        LastArea = areanumber2;
        
    }
    
}

Now I know how to use the ASCII code at:
i2 = (areanumber2[0] - 48) *10 + areanumber2[1] -48;
i1 = (LastArea[0] - 48) *10 + LastArea[1] -48;

Thx all who helped!!!
I think its done.

No one knows, how "I" goes.
(This post was last modified: 03-25-2013, 05:57 PM by Knusper..)
03-25-2013, 05:56 PM
Find Reply
Adrianis Offline
Senior Member

Posts: 620
Threads: 6
Joined: Feb 2012
Reputation: 27
#14
RE: check if active/ string to int

Np, glad to hear it's working!

Post again if it stops working Smile

03-25-2013, 06:00 PM
Find Reply
Knusper. Offline
Member

Posts: 58
Threads: 7
Joined: Feb 2013
Reputation: 2
#15
RE: check if active/ string to int

ok, now i have another problem Dodgy
I dont hear the sounds i added.
Example:
PlaySoundAtEntity("", "Slender pip.snt", "player", 0, false);

Maybe it has to do something with the priority???
Before all sounds there is:
PlayMusic("Slender 1.ogg", true, 1.0f, 0.0f, 1, true);

But, i dont know how to fix that.
What can it be?

No one knows, how "I" goes.
03-26-2013, 10:44 AM
Find Reply
Adrianis Offline
Senior Member

Posts: 620
Threads: 6
Joined: Feb 2012
Reputation: 27
#16
RE: check if active/ string to int

(03-26-2013, 10:44 AM)Knusper. Wrote: ok, now i have another problem Dodgy
I dont hear the sounds i added.
Example:
PlaySoundAtEntity("", "Slender pip.snt", "player", 0, false);

Maybe it has to do something with the priority???
Before all sounds there is:
PlayMusic("Slender 1.ogg", true, 1.0f, 0.0f, 1, true);

But, i dont know how to fix that.
What can it be?

The priority of the music shouldn't be a problem - both should be able to play.

Can you post up the text in 'Slender pip.snt'?

03-26-2013, 11:55 AM
Find Reply
Knusper. Offline
Member

Posts: 58
Threads: 7
Joined: Feb 2013
Reputation: 2
#17
RE: check if active/ string to int

<SOUNDENTITY>
  <SOUNDS>
      <Main>
          <Sound File="Slender pip.ogg" />
      </Main>
  </SOUNDS>
  <PROPERTIES Volume="2" MinDistance="0" MaxDistance="30" Random="1" Interval="0" FadeEnd="False" FadeStart="False" Stream="false" Loop="false" Use3D="false" Blockable="false" BlockVolumeMul="0.5" Priority="2" />
</SOUNDENTITY>

No one knows, how "I" goes.
03-26-2013, 12:10 PM
Find Reply
Adrianis Offline
Senior Member

Posts: 620
Threads: 6
Joined: Feb 2012
Reputation: 27
#18
RE: check if active/ string to int

(03-26-2013, 12:10 PM)Knusper. Wrote:
<SOUNDENTITY>
  <SOUNDS>
      <Main>
          <Sound File="Slender pip.ogg" />
      </Main>
  </SOUNDS>
  <PROPERTIES Volume="2" MinDistance="0" MaxDistance="30" Random="1" Interval="0" FadeEnd="False" FadeStart="False" Stream="false" Loop="false" Use3D="false" Blockable="false" BlockVolumeMul="0.5" Priority="2" />
</SOUNDENTITY>

I'm not sure if any of these suggestions will fix it but it's all I can suggest for now Smile

- rename both the .ogg and .snt to use a '_' rather than just a space
- remove the .ogg file extension so it reads <Sound File="Slender_pip" />
- if you only have 1 sound, then Random should be "0"
- set the minimum distance to at least 1 (not sure that's necessary, but worth trying!)

Give those a go, let me know if it works or not...

(This post was last modified: 03-26-2013, 12:53 PM by Adrianis.)
03-26-2013, 12:52 PM
Find Reply
Knusper. Offline
Member

Posts: 58
Threads: 7
Joined: Feb 2013
Reputation: 2
#19
RE: check if active/ string to int

tried all but it still doesnt work. Huh

No one knows, how "I" goes.
03-26-2013, 01:11 PM
Find Reply
Adrianis Offline
Senior Member

Posts: 620
Threads: 6
Joined: Feb 2012
Reputation: 27
#20
RE: check if active/ string to int

Hrrrm...

Try with Volume="1", Priority="1", Use3D="True"

03-26-2013, 01:14 PM
Find Reply




Users browsing this thread: 1 Guest(s)