Page 1 of 1

The Grapple Hook

Posted: Thu May 05, 2011 11:40 pm
by stephends
Hey Guys

I am currently testing ideas for a modification i am soon to create and i came acroos your grapple hook code. I am building for the single player version of hl2 (2007 build) and i am wondering what I would have to change in order for this to work in my mod. Credits will be added upon completion.
http://developer.valvesoftware.com/wiki/Grapple_Hook

"The weapon is designed for multiplayer, but should work fine in a single player mod once you swap out references to hl2mp. It uses the crossbow model."

Its the single player reference I dont know or to change.

Thanks

Re: The Grapple Hook

Posted: Mon May 09, 2011 3:14 am
by Neico
Do I really have to explain that?
Seriously, if you can't figure that simply thing out then you might stay away from things like coding? (Hint: "HL2MP" -> "HL2" or was it "HL2SP", no idea, but I'm not really here to solve that for you...)

Re: The Grapple Hook

Posted: Tue May 10, 2011 12:24 am
by TESLA-X4
I'd change the code for you, but doing so on a screen this size (it's a smartphone) will blind me, so I'll only be able do that when I get home.

Off the top of my head, you'll need to change references to HL2MP to HL2 (sometimes even HL), or in some cases remove it entirely. Common places to look at are header includes and class inheritances (whoa, is that even a word?).

Edit:
Also, since it's a singleplayer mod, you could attach the rope to the viewmodel instead of the weapon since it looks significantly better that way (can't do that in multiplayer because it looks really ugly for other players).

Edit 2:
Well, I've done edits to make it compile without errors in Episodic (Single Player).
Here they are: weapon_grapple.cpp and weapon_grapple.h. Place both of these files into the server/hl2/ folder and add them to the Server project in Visual Studio. You will most likely need to create a client-side version for this entity, see c_weapon_crossbow.cpp in the Client project for a quick example.
Keep in mind that the edits are rather very crude since I didn't have much spare time to work on it (also, I didn't actually test them out in-game, only checked that they compiled). Also, the grapple hook code on the Valve Wiki is actually derived from the Episode 1 (maybe even earlier!) version of weapon_crossbow, so I don't really recommend using these files as a long term solution until you've verified that you can ignore whatever has been changed.

Sorry that I couldn't do more, I'm really tight on time.

Re: The Grapple Hook

Posted: Tue May 17, 2011 7:23 pm
by Bovine
This is only partially related to the topic, but the grapple works really weirdly whenever I try to use it. Does it still use the code linked above?

Re: The Grapple Hook

Posted: Wed May 18, 2011 12:31 am
by TESLA-X4
I think so - the last time I tested a binary compiled with the provided grappling hook code, it behaved in the exact same way as it did in OC. That weirdness in movement is caused by use of IPhysicsSpring, but I don't know of any others that would be more suitable for this purpose... Yet.

Re: The Grapple Hook

Posted: Wed May 18, 2011 2:22 am
by Bovine
You may want to try setting the player origin every frame as well as the spring length. I think the current version is that of a spring that doesn't let the hook side rotate.

If you want the spring movement stuff outside of the physics system I have some code that should properly do the spring stuff.