Frictional Games Forum (read-only)
[SCRIPT] Adding Delays - 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: [SCRIPT] Adding Delays (/thread-23926.html)

Pages: 1 2


Adding Delays - RaideX - 11-22-2013

So, hi again people. First of all (as some might have noticed) i got to the scripting section for my coming full conversion. And sadly that's where i'm weakest at.

But i am aware of the basics and can do stuff that i have planned, but for one thing i can't get working without adding too much code.

I think i'll explain it with an example:

I want to execute functionXY with a timer that starts when the player enters a specific area. After the player entered the area, functionXY is going to be excecuted and does thingXY. Now i want that after thingXY happens something else should happen with a delayXY, let's say 1 second.

What i would do is the following:

PHP Code:
void OnStart() {

AddTimer ("ExecFunctionXY"10.0f"FunctionXY")
}


void FunctionXY (string &in asTimer) {
thingXY()
AddTimer ("FunctionZDelay"1.0f"FunctionZDelay")
}

void FunctionZDelay (string &in asTimer) {
delayedthingZ()


So basically i'm adding a timer after a certain function has been called to execute something delayed.

Is there a way to code that a bit more "pretty"?
I'm guessing it has to do with parameters, but sadly i'm really not good at this part. Hope you guys can help and hopefully i can learn something new. :3


RE: Adding Delays - ExpectedIdentifier - 11-22-2013

(11-22-2013, 07:12 PM)RaideX Wrote: So, hi again people. First of all (as some might have noticed) i got to the scripting section for my coming full conversion. And sadly that's where i'm weakest at.

But i am aware of the basics and can do stuff that i have planned, but for one thing i can't get working without adding too much code.

I think i'll explain it with an example:

I want to execute functionXY with a timer that starts when the player enters a specific area. After the player entered the area, functionXY is going to be excecuted and does thingXY. Now i want that after thingXY happens something else should happen with a delayXY, let's say 1 second.

What i would do is the following:

PHP Code:
void OnStart() {

AddTimer ("ExecFunctionXY"10.0f"FunctionXY")
}


void FunctionXY (string &in asTimer) {
thingXY()
AddTimer ("FunctionZDelay"1.0f"FunctionZDelay")
}

void FunctionZDelay (string &in asTimer) {
delayedthingZ()


So basically i'm adding a timer after a certain function has been called to execute something delayed.

Is there a way to code that a bit more "pretty"?
I'm guessing it has to do with parameters, but sadly i'm really not good at this part. Hope you guys can help and hopefully i can learn something new. :3

PHP Code:
void OnStart() {

AddTimer ("ExecFunctionXY_1"10.0f"FunctionXY")
AddTimer ("ExecFunctionXY_2"11.0f"FunctionXY")
}


void FunctionXY (string &in asTimer) {
if(
asTimer=="ExecFunctionXY_1") {
thingXY()
}
if(
asTimer=="ExecFunctionXY_2") {
delayedthingZ()
}


Something like this maybe? It really depends on how many functions you want to use with delays. This is probably the simplest for just a function followed by a delay followed by a function.


RE: Adding Delays - RaideX - 11-22-2013

Quote:
PHP Code:
void OnStart() {

AddTimer ("ExecFunctionXY_1"10.0f"FunctionXY")
AddTimer ("ExecFunctionXY_2"11.0f"FunctionXY")
}


void FunctionXY (string &in asTimer) {
if(
asTimer=="ExecFunctionXY_1") {
thingXY()
}
if(
asTimer=="ExecFunctionXY_2") {
delayedthingZ()
}


Something like this maybe? It really depends on how many functions you want to use with delays. This is probably the simplest for just a function followed by a delay followed by a function.

Yeh that should work just fine. Awesome! Thank you for that.

How would it be done with collide areas? (i.e. AddEntityCollideCallback)
In a more specific way i would like to execute the delayed function after the player enters the area (and by that triggers the first function)

Thanks for taking you'r time mate.


RE: Adding Delays - ExpectedIdentifier - 11-22-2013

(11-22-2013, 07:58 PM)RaideX Wrote:
Quote:
PHP Code:
void OnStart() {

AddTimer ("ExecFunctionXY_1"10.0f"FunctionXY")
AddTimer ("ExecFunctionXY_2"11.0f"FunctionXY")
}


void FunctionXY (string &in asTimer) {
if(
asTimer=="ExecFunctionXY_1") {
thingXY()
}
if(
asTimer=="ExecFunctionXY_2") {
delayedthingZ()
}


Something like this maybe? It really depends on how many functions you want to use with delays. This is probably the simplest for just a function followed by a delay followed by a function.

Yeh that should work just fine. Awesome! Thank you for that.

How would i do it with collide areas?

Thanks for taking you'r time mate.

PHP Code:
void OnStart()
{
AddEntityCollideCallback("Player""CollideArea""CollideFunction"true1);    
}

void CollideFunction(string &in asParentstring &in asChildint alState)
{
AddTimer ("ExecFunctionXY_1"10.0f"FunctionXY")
AddTimer ("ExecFunctionXY_2"11.0f"FunctionXY")


Something like this?


RE: Adding Delays - RaideX - 11-22-2013

(11-22-2013, 08:00 PM)sonataarctica Wrote:
(11-22-2013, 07:58 PM)RaideX Wrote:
Quote:
PHP Code:
void OnStart() {

AddTimer ("ExecFunctionXY_1"10.0f"FunctionXY")
AddTimer ("ExecFunctionXY_2"11.0f"FunctionXY")
}


void FunctionXY (string &in asTimer) {
if(
asTimer=="ExecFunctionXY_1") {
thingXY()
}
if(
asTimer=="ExecFunctionXY_2") {
delayedthingZ()
}


Something like this maybe? It really depends on how many functions you want to use with delays. This is probably the simplest for just a function followed by a delay followed by a function.

Yeh that should work just fine. Awesome! Thank you for that.

How would i do it with collide areas?

Thanks for taking you'r time mate.

PHP Code:
void OnStart()
{
AddEntityCollideCallback("Player""CollideArea""CollideFunction"true1);    
}

void CollideFunction(string &in asParentstring &in asChildint alState)
{
AddTimer ("ExecFunctionXY_1"10.0f"FunctionXY")
AddTimer ("ExecFunctionXY_2"11.0f"FunctionXY")


Something like this?

yeh, that isn't what i excectly searched for but i can make this to do it my way. thanks anyway, you'r great.

EDIT: Just for the curious, i wanted to set it up so when the player enters the area, a certain music stops playing and after the delay timer ended it should excecute a sound at the player (like a scare sound).


RE: Adding Delays - ExpectedIdentifier - 11-22-2013

(11-22-2013, 08:07 PM)RaideX Wrote: yeh, that isn't what i excectly searched for but i can make this to do it my way. thanks anyway, you'r great.

Alright, well if you explain what you want I will write it for you :-)


RE: Adding Delays - RaideX - 11-22-2013

added it to the post above c:


RE: Adding Delays - FlawlessHappiness - 11-23-2013

void OnStart()
{
AddTimer ("FunctionXY_1", 10.0f, "FunctionXY")
}

void FunctionXY (string &in asTimer)
{
if(asTimer == "FunctionXY_1")
{
thingXY()
AddTimer ("FunctionXY_2", 1.0f, "FunctionXY ")
}

if(asTimer == "FunctionXY_2")
{
thingZ()
}
}



How does this look to you? Smile


RE: Adding Delays - RaideX - 11-23-2013

(11-23-2013, 01:37 AM)FlawlessHair Wrote: void OnStart()
{
AddTimer ("FunctionXY_1", 10.0f, "FunctionXY")
}

void FunctionXY (string &in asTimer)
{
if(asTimer == "FunctionXY_1")
{
thingXY()
AddTimer ("FunctionXY_2", 1.0f, "FunctionXY ")
}

if(asTimer == "FunctionXY_2")
{
thingZ()
}
}



How does this look to you? Smile

yes. that seems to be it! probably could've come on that one myselfe, but hey. Thanks for this :3


RE: Adding Delays - FlawlessHappiness - 11-23-2013

Great, no problem Wink