Frictional Games Forum (read-only)
How to make a rope - 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 Articles (https://www.frictionalgames.com/forum/forum-40.html)
+---- Thread: How to make a rope (/thread-18804.html)

Pages: 1 2


How to make a rope - The chaser - 10-15-2012

Hello everyone! \0

A lot of users have been wondering how to make an usable rope. It's a bit hard to see in the scripts of the main game, but here you can see how you can make a rope.

1: Open the desired level to use the rope. Choose the location where the rope is going to be. Then, put a movable entity (I'm going to use a crank_wheel)

2: Now, go to areas: There are a lot but we are going to use two: Rope area and PosNode.
The rope area is where the rope begins, so place it wisely. Now, place the Rope area here:

[Image: OLyrJ.jpg]

Ok, now copy and paste the following destination:
rope_default_normal.rope

The green area at the bottom of the image is the PosNode. Don't edit anything.

3: As you can see in the image, there is an invisible box mass. That box mass is linked to the rope and pos node, so it will move with it.

BUT: There isn't the most important thing:

THE SCRIPT

Code:
void OnStart()
{
InteractConnectPropWithRope("WellRope","crank_wheel_1", "RopeArea_1", false, 3,5,5, false, 0);
AddUseItemCallback("MeatOnRope", "fresh_meat_1", "crank_wheel_1", "UseMeatOnRope", false);
}

void UseMeatOnRope(string &in asItem, string &in asEntity)
{
AddAttachedPropToProp("invisible_box_mass_3", "fresh_meat_onrope_1", "fresh_meat_onrope.ent", 0,0,0, 0,0,0);

This is the script: The ICPWR connects the crank_wheel_1 with the rope area. This will make the rope movable. But, this doesn't finish here. As in the main game, we have to pull down a piece of meat. So, we use an AUIC.
This says that when we use the fresh meat in the crank wheel, the UseMeatOnRope will happen. This UseMeatOnRope attachs the fresh_meat_on_rope_1 (with the internal name fresh_meat_onrope.ent) to the invisible_box_mass_3. Now, to get sure something happens, when the meat touches an area (which is at the final of the rope) an armor will spawn. The armor is called servant_grunt_1.

THE FINAL SCRIPT

Code:
void OnStart()
{
InteractConnectPropWithRope("WellRope","crank_wheel_1", "RopeArea_1", false, 3,5,5, false, 0);
AddUseItemCallback("MeatOnRope", "fresh_meat_1", "crank_wheel_1", "UseMeatOnRope", false);
}

void UseMeatOnRope(string &in asItem, string &in asEntity)
{
AddAttachedPropToProp("invisible_box_mass_3", "fresh_meat_onrope_1", "fresh_meat_onrope.ent", 0,0,0, 0,0,0);
AddEntityCollideCallback("fresh_meat_onrope_1", "ScriptArea_1", "BLA", false, 1);
}

void BLA (string &in asParent, string &in asChild, int alState)
{
SetEntityActive("servant_grunt_1", true);
}

Ropes are a bit tricky but they are cool to use.

Hope you find this tutorial useful!

-The chaser


RE: How to make a rope - Racingcreed - 12-08-2012

Oh, thanks!

I wasn't even aware this feature was in the game, (haven't finished the story yet, too scared) should come in handy for making my story though, thanks a bunch! Smile


RE: How to make a rope - FlawlessHappiness - 12-08-2012

I love your signature makes me rely much more on you when reading the article...

Spoiler below!

Trust me, I am an engieneer...


Though very nice! Nobody did that before Wink I give you credit


RE: How to make a rope - VeNoMzTeamHysterical - 01-03-2013

Sick!!!!

It helped me alot

thanks


RE: How to make a rope - FlawlessHappiness - 01-15-2013

Ok, so my rope is now hanging from the ceiling, but when i bump into it it doesn't seem to follow the gravity as well as i do.

It goes slowly back to it's place... is that normal?


RE: How to make a rope - The chaser - 01-15-2013

(01-15-2013, 08:59 PM)BeeKayK Wrote: Ok, so my rope is now hanging from the ceiling, but when i bump into it it doesn't seem to follow the gravity as well as i do.

It goes slowly back to it's place... is that normal?

Could you please explain me detailedly what's your problem, please? There are a lot of factors which can affect the rope's behaviour.

So, you say it's like... like if the rope fell slowly down? Now that's quite strange. A screenie of the place of the rope would be good to see Wink

This means you looked my tutorial! Thx u tru fren Heart


RE: How to make a rope - FlawlessHappiness - 01-15-2013

No, don't matter what i just wrote, it's ok.
It looks fine, it's just me.


So i have another question.

Would it be possible to attach a key to the rope, and after that being able to pick up the key, if you slide down the rope?


RE: How to make a rope - The chaser - 01-15-2013

Ofc, you can attach whatever you want to the body at the final of the rope Wink

So:

I guess you are talking about moving the rope so you can get the key, right? In that case, just put a wheel somewhere connected to the rope (as my tutorial says):

"InteractConnectPropWithRope("WellRope","crank_wheel_1", "RopeArea_1", false, 3,5,5, false, 0);"


So, instead the crank_wheel, you can use whatever you want: Just move the wheel and the key will go down, as it should. It's kinda like a sticky area, but movable.

And, as my signature says (now in dolanish language)

"Turst meh, imman egnieer"


RE: How to make a rope - FlawlessHappiness - 01-15-2013

But...

When i attach the key, i cannot pick it up. I guess that's maybe because it's inside the BlockBox.

Also if i jump into the key it makes some weird rotations.

Finally i cannot rotate the key properly. It magically disappears when i try to rotate it 90 degrees

This is my script without the rotation thingy.

The rope works fine, except for the key

Code:
void OnStart()
{
InteractConnectPropWithRope("Rope_1","valve_iron_rusty_1", "RopeArea_1", false, 3,5,5, false, 0);
InteractConnectPropWithRope("Rope_2","valve_iron_rusty_1", "RopeArea_2", false, 3,5,5, true, 0);
AddAttachedPropToProp("invisible_box_mass_3", "key_laboratory_1", "key_laboratory.ent", 0, 0, 0, 0, 0, 0);
}

Spoiler below!

[Image: 1zv76oj.png]




RE: How to make a rope - The chaser - 01-15-2013

It will be a matter of attached... Hmmm... do dis, tru fren:

Code:
void OnStart() //This could change!
{
AddEntityCollideCallback("Da_box_in_da_rope", "Area", "Interact", true, 1); ///When the rope is down, it will collide with this area, which will activate an area *look down*
}

void Interact (string &in asParent, string &in asChild, int alState)
{
///I don't know how to make an area interactable, so yea... make an area which you can touch. The interaction with it will give you the item (key). Sorry for this little thing. When you interact, it will:
GiveItem("Key", "Item", "Puzzle", "key.tga", 1);
SetEntityActive("Da_key_in_da_box", false);

}

You can make the box smaller than the key so it doesn't collide with the outer of the key.