Author Topic: Grapple rope without the rope  (Read 1018 times)

This shouldn't be that hard to do, but is it possible to remove the rope part of the Grapple Rope? It triggers OnProjectileHit events and I don't want it to do that.

so, you want it to grapple and then since there is no rope you can't swing, killing its only use

so, you want it to grapple and then since there is no rope you can't swing, killing its only use
I think he wants to grapple, just don't show the rope, so it's invisible.

I don't see how making the rope invisible would stop it from triggering the event

but you could probably make a way to not trigger the event while keeping the rope

I don't see how making the rope invisible would stop it from triggering the event

but you could probably make a way to not trigger the event while keeping the rope
the rope is cosmetic and is a projectile
of course it's not actually keeping the player from falling

the rope is cosmetic and is a projectile
of course it's not actually keeping the player from falling
I thought the rope was just an emitter? or does the grapple use a raycast to find the latching point?

I thought the rope was just an emitter? or does the grapple use a raycast to find the latching point?

The rope is a projectile spawned over and over with an emitter attached.

The rope is a projectile spawned over and over with an emitter attached.
Multiple projectiles with an emitter attached to each one, which is why the rope clipping through a brick will trigger OnProjectileHit events.

It's be much more efficient without the rope.

Wouldnt it just be called "Grapple" then?

Is it really possible, though? A quick look at the code for the grappling hook reveals that it only activates once the projectile hits something.

Code: [Select]
function GrappleRopeProjectile::onCollision(%this, %obj, %col, %fade, %pos, %normal)
{
if(%col.GrappleRopeTarget || $Pref::Server::GrappleRopeAnywhere)
{
%ppos = %obj.client.player.getPosition();
%scanTarg = ContainerRayCast(vectorAdd(%ppos, "0 0 1"), %pos, $TypeMasks::StaticObjectType);
if(!%scanTarg || %scanTarg == %col)
{
            %obj.client.player.ropeLength = vectorLen(vectorSub(%obj.client.player.getPosition(), %pos));
            %obj.client.player.GrappleRopeTarget++;
            %obj.client.player.GrappleRopeCol = %col;
            %obj.client.player.GrappleRopePos = %pos;
}
}
}

That's why you use raycasts instead. Makes it much more precise anyways.

That's why you use raycasts instead. Makes it much more precise anyways.
Didn't think of that.

If I were proficient with Torquescript I'd help out, but I sadly cannot.

the rope is kinda ew
especially if the server is lagging

the rope is kinda ew
especially if the server is lagging
There's another reason I want it gone.