TTLG|Thief|Bioshock|System Shock|Deus Ex|Mobile
Page 1 of 5 12345 LastLast
Results 1 to 25 of 104

Thread: Tutorial: Rope Arrows

  1. #1
    Registered: Mar 2005
    Location: Scotland

    Tutorial: Rope Arrows

    Here's how to make working rope arrows in T3Ed. There are still a few bugs, and they're not quite the same as the good old T1/2 rope arrows, but here goes...

    Creating the Arrow

    Open the Actor Class Browser and create a new archetype under WorldObj -> InventoryObject -> PowerUp -> Arrow, and call it RopeArrow. You probably could create it under BroadheadArrow, but I didn’t in case it inherited any properties I didn’t want from the Broadhead. Add the following properties to your RopeArrow:

    Contact -> ContactResponse: eCR_Stick_On_Material_Or_Destroy
    Inventory -> HelpText: < string=T_InventoryHelpTextRopeArrow >
    Inventory -> InvName: < string=t_RopeArrow >
    For some reason this forum won't let me write these bits properly - there are really no spaces in the HelpText or InvName properties.
    Inventory -> MaxInventoryStack: 5
    You can set this property to whatever you want, but I thought a low value would be best because these things could be pretty useful – and valuable.
    Render -> FXMaterial: (Material=”MemHiLite”,Mode=FXMaterialMode_None)
    Render -> ObjectMesh: INVarrowSHAFT1A1 (Default)
    This can be found in Static Meshes -> INV_WEAPON_UI -> GarrettWeapons
    Scripts -> TriggerScripts: RopeArrowSound, ArrowPhysicsChange, HilightArrowOff, HilightArrowOn
    The next few are all under Stimulus
    Stimulus -> ContactXfrInfo -> DeleteOnXfr: True
    Inactive: True
    Stim -> [0] -> Amount -> Amount: 1.00
    Stimulus: StimulusType_DX2Bullet
    TotalTime: 0.00
    This allows the RopeArrow to be used like a broadhead as in T1/2, but does less damage. You could leave it out if you want.
    [1] -> Amount -> Amount: 1500.00
    Stimulus: StimulusType_Impulse
    TotalTime: 0.00

    Now righ click the RopeArrow archetype and click Placeable/Unplaceable.

    We now have an arrow, but it has no arrowhead, and doesn’t yet spawn ropes. It also has no help text (more on this later).

    Creating the Arrowhead

    A static mesh for the rope arrow head already exists, but we’ll have to create a new actor so we can link it to the arrow. In the Actor Class Browser create a new archetype under MetaData -> UI and call it RopeArrowhead. Give your RopeArrowhead these properties:

    Inventory -> HelpText: < string=t_InventoryHelpTextRopeArrow >
    Inventory -> InvName: < string=t_RopeArrow >

    Don’t know why these are needed here, but all other arrows have these on both the arrow and the arrowhead. Again, there are no spaces in those properties, but the forum won't let me post them like that.
    Render -> ObjectMesh: INVarrowheadROPE (Default)
    Render -> RenderType -> DrawType: DT_StaticMesh
    Render -> RenderType -> Style: STY_Normal

    Creating the Rope

    The rope is the most problematic part of this arrow. Rope actors do exist, but none of them work, so we’re going to have to make our own. Open the Static Mesh Browser, select SETDRESSING -> Ladders -> GENrope16 and place one in your map (doesn’t matter where, it’ll be deleted later anyway). Now open the texture browser and Import All Matlibs. Then go into T3_GEN and select the texture GEN_ROPE. Find your rope in the 3D window and ALT-Leftclick it – this will apply the rope texture. You then need to right-click the rope, expand the Static Mesh menu and click Add New Skin (or something like that – I can’t remember the exact name - could someone post it in here). Call your new skin something obvious, like ‘Rope’. When you try to save your map, you will get a message about unpublished skins – you can get rid of this by clicking Tools -> Auto-Publish meshes in this Map, then doing a few Build Alls.

    Now open the Actor Class Browser again. Create a new archetype under WorldObj -> Environmental -> Ladder and call it RopeArrowLadder. Give the following properties to the RopeArrowLadder:

    Actor -> bNotMoveablePhysics: True
    Actor -> bNotMoveableRender: True
    Frob -> FrobBias: 100.00
    Frob -> IsFrobbable: True
    Highlight -> HighlightDist: 200

    These frob settings will be needed later.
    Render -> ObjectMesh: GENrope16 (Rope)
    This is why we made the new skin earlier.
    Sound -> SoundSpawn: hit_arrowrope

    Linking Things Together

    Go back to the RopeArrow archetype you made earlier and open its Links (right click, show links). Create a RigidAttachment link FROM RopeArrow TO RopeArrowhead. Click Edit Selected Link and set up the following properties: (I can’t remember which are set like this by default, so I’ll list them all)

    Attachment -> m_attachmentBone: hp_arrowshaft
    Attachment -> m_parentBone: HP_arrowhead
    Hidden -> bDontPropogateHiddenFlagToChild: False
    Highlight -> bPropagatesHighlight: True
    Lifetime -> bDeleteChildOnDeath: True
    Link -> m_GroupName: None
    Link -> m_name:
    Spawn -> bDontSpawn: False

    Now create another link, a HUDRender link FROM RopeArrow TO RopeArrowhead. Finally, create a third link: a CollisionSpawn link FROM RopeArrow TO RopeArrowLadder. Edit the link’s properties:

    Collision -> Active: True
    Hardpoint -> bAttachObjects: True
    Hardpoint -> m_parentBone: HP_arrowhead
    Lifetime -> bDeleteOnDeath: False
    Spawn -> bTakeParentRotation: False
    Spawn -> NumberToSpawn: 1

    Trigger Script

    That’s right – there’s just one new Trigger script involved. Open the Trigger Script Manager and create a new script (for the sake of convenience, I put mine in the Weapons group) and call it RopeArrow1.

    The Conditions are:
    When I am frobbed by player

    The Actions are:

    Add [1] [RopeArrow] objects to the player inventory
    Play sound schema [pu_power]
    Destroy linked object(s) [MYSELF]
    Reset script conditions and actions

    Finally go back to your RopeArrowLadder in the Actor Class Browser and give it the property Scripts -> TriggerScripts: RopeArrow1.
    And that’s it – the rope arrow is now ready for use! Just place the RopeArrow archetype - the other parts will follow (you can also put it in the default inventory if you want).

    Setting up the Help Text

    This part is completely optional. Each type of arrow in T3 displayed an on-screen help message the first time you picked one up. This is how to do it.

    Open the file CONTENT\T3\Books\English\String_Tags\Inventory.sch and create a new entry, which should look like this:

    lang_english 2005-03-31 11:49:50 "When a rope arrow is fired at a wooden surface, a rope will extend straight downward from the point of impact. These ropes can be climbed just like ladders."
    lang_french 2005-03-31 11:49:50 "When a rope arrow is fired at a wooden surface, a rope will extend straight downward from the point of impact. These ropes can be climbed just like ladders."
    lang_german 2005-03-31 11:49:50 "When a rope arrow is fired at a wooden surface, a rope will extend straight downward from the point of impact. These ropes can be climbed just like ladders."
    lang_italian 2005-03-31 11:49:50 "When a rope arrow is fired at a wooden surface, a rope will extend straight downward from the point of impact. These ropes can be climbed just like ladders."

    You can make the text in the quotes say whatever you want, but the entry must be called ‘T_InventoryHelpTextRopeArrow’.
    Now go to your CONTENT\T3\Books\English folder and make a copy of the file ‘InvHelp_FireArrow.sch’ (any file with InvHelp in front of it will work). Change the file name to ‘InvHelp_RopeArrow.sch’. Open the file and change all the instances of ‘Fire’ to ‘Rope’. Save this, and open T3Ed.

    In T3Ed click View -> Global Variables -> Flags. In the window that appears, type ‘HelpTextRopeArrowDone’ in the white box at the top, and click OK. It is this which will let the game know when to display the help text. Now open the Trigger Script Manager and create a new script (for the sake of convenience I put mine in the HelpPopUps group). Call it ‘HelpPopUpRopeArrow’.

    The Conditions are:
    When I am frobbed by player
    Query if flag [HelpTextRopeArrowDone] is set to [FALSE]

    The Actions are:
    Set flag [HelpTextRopeArrowDone] to [TRUE] expires on map change [FALSE] expires on mission [20]
    Popup a window with text from the file [InvHelp_RopeArrow.txt]

    Open the Actor Class Browser, and give your RopeArrow the property Scripts -> Trigger Scripts: HelpPopUpRopeArrow.

    Now the help text will be displayed the first time you pick up a Rope Arrow, but will not be displayed again, just like all the other arrows. (The same method can be used to give help text to any other custom arrows, or any object.)
    (If your arrow doesn't show the name 'Rope Arrow' when you select it in inventory, you will need to create a new entry in Inventory.sch called T_RopeArrow - it should be there already, presumably from before the developers stopped doing rope arrows).


    The part we've all been dreadiing. There are a few bugs in this arrow.
    Materials - the rope will deploy no matter what material the arrow hits. As far as I can tell, there's no way to make it only deploy when it hits wood. Because of this, I think these arrows would have to be a lot rarer than in T1/2.
    Ladder Animations - because the rope animations are pretty bad, this uses standard ladder animations. This of course means that you can only climb two sides of the rope (it seems to be the ones facing east and west), and if you are very unlucky Garrett will climb through a solid wall or roof when trying to climb off the top of the rope.
    Retrieving the Arrow - one of the useful things about the T1/2 rope arrows was that they could be reused by frobbing the arrow - but because the arrow disappears when this collides (I think it's caused by the CollisionSpawn link 'cause I can find a way to stop it) you have to frob the rope instead. You should try to make sure you're not on the rope when you do this, because Garrett will do his *climbing off the top of a ladder* thing when the rope vanishes - often making him climb through the roof.

    If anyone knows how to fix these or make any improvements, please say so!

    (If anything here doesn't work, let me know and I'll see what I've mistyped)
    Last edited by Rantako; 15th Apr 2005 at 13:07.

  2. #2
    Thanks for this effort Rantako. Going to try it out post-haste.

  3. #3
    Registered: Jan 2003
    Location: NeoTokyo

    Thanks for this...

  4. #4
    Reading through it, I have one comment so far. I think it would probably be better to go with standard rope climbing instead of ladder climbing for one simple reason - you can rotate around a rope 360 degrees. As we all know, getting off of a ladder in a desired fashion in T3 is not... um... good. So the way rope arrows could be used (and the levels that use them, be designed) could be that the ledge you need to climb to has the wooden surface above it (for ease - it can be done other ways too, but this would be the "supported method") so the player can climb the rope fully, rotate around the rope till they are overtop of the ledge surface, then dismount with jump. This is because in T1&2, we could simply mantle off of the ropes. Don't know if that will be possible or nearly as easy in T3.

    Okay, just wanted to say that.

  5. #5
    Registered: Jun 2001
    Location: Tatry Mountains, Poland
    Rantako, can you upload some demo file with working rope arrows?

  6. #6
    Registered: Jan 2004
    Location: Prince Edward Island, Canada
    Quote Originally Posted by bukary
    Rantako, can you upload some demo file with working rope arrows?
    Indeed. I think I need more ram as my Trigger Script Manager makes the editor chugg like crazy.

  7. #7

    Wow. It works better than I expected. Yes, it has bugs, and will probably be tweaked for days to come, but it works!

    Okay, now I'm not so sure about what I said above about using ropes over ladders because of one point but not the other - you can mantle/climb (the automatic climb up dismount that happens with ladders - very convenient) perfectly well right onto a ledge, so no "hang over ledge" is needed. However, the rotation thing is still a problem. But anyway, aside from that question, the current functionality is still nice.

    A few observations I had in running through the tutorial:
    1. don't forget to mention making the arrow placeable (right click actor in browser)
    2. might want to mention how to open Links (right click actor in browser, Show Links)
    3. Something might be wrong with the following attachment (or maybe it's just my run through of the tutorial):

    Attachment -> m_attachmentBone: hp_arrowshaft

    I don't get that option. The only options I get are: CENTER, Collision, RopeAttach. (obviously I chose RopeAttach)

    Some bugs (obvious, and already mentioned, but for recordkeeping and those who haven't/won't be doing the tutorial):

    -Each time I shoot one, I get two ropes - and so they multiply when you pick them up
    -the slow "drifting upward into nowhere" issue
    -the rope arrow is badass looking, however, the aiming model is bad for a shaft of that length
    -arrow disappears (I could care less)
    -stick in anything

    Great work on this, Rantako! There is no doubt this will be tweaked up to a fully functional rope arrow... in T3! Woot.

    NH, tip: Until you're ready to compile, be sure to use Cancel to close the script editor - OK and the 'X' (close) button run through a full compile every time.

  8. #8
    Registered: Jun 2001
    Location: Tatry Mountains, Poland
    Sneaksie, perhaps you could present us with some small demo (just a room and rope arrows in Garrett's inventory)? Please...

  9. #9
    Sure, do you have some webspace? Not sure about putting a silly work in progress rope arrow room over at thiefmissions...

  10. #10
    Registered: Jun 2004

    Thanks Rantako

    This is really good news, thanks for the work!

  11. #11
    Still Subjective
    Registered: Dec 1999
    Location: Idiocy will never die
    Pics of the badass arrow plz.

  12. #12
    Well, this doesn't really show much, but here ya go:


    On the left is a deployed rope, and the arrow is ready to shoot. I'm thinking it's not a special model, but instead just a bug in the class (the arrow is being doubled up, and not in fact inherently badass). Anyway, it's just one of several bugs to be fixed, so no big deal.

    Edit: Yeah there's definitely doubling going on in my build. Rantako, are you getting two ropes deployed each time you fire? And double length shafts?

  13. #13
    Still Subjective
    Registered: Dec 1999
    Location: Idiocy will never die
    ImageShack is rubbish for Thief games - there is a massive white border that negates turning the lights off.

  14. #14

    Registered: Mar 2001
    Location: Houston, Tx., USA
    Not everything you send to has to go in the main archive. I have a place for T3 demos.

  15. #15
    Okay, epithumia, I uploaded via FTP access.

    Things to know and keep in mind:

    - backup your own files! The t3gamesys file goes in System. The script file goes in TriggerScript/Defs (I assume...? I have no idea if that part will even work - if it doesn't, you'll have to use the editor to enter the script yourself - either way, you probably have to enter the editor and compile the scripts anyway) and the UNR file goes in maps.
    - there are three arrows over near and under the torch
    - use "next weapon" or whatever it's called to cycle to them
    - It's very possible that I didn't follow instructions perfectly, so there might even be more defects than in the tutorial
    - remember, these are ladders, so they will only let you climb from the left or right side, perpendicular to the angle you shot from (for now at least) - so if you want a rope that's usable, you'll pretty much have to shoot from the side on an angle (do the best you can)
    - several ropes (2 or 3) will spawn when it impacts. Hmm...
    - thus, when you shoot one arrow, you eventually wind up with at least 2 more
    - if you find yourself slowly drifting upward, it's not working right, jump off. It should feel just like you're climbing a ladder, when it works, and you'll easily auto-mantle right up on top of the platform or beams.
    - it's just a start, and it's buggy, so let's pitch in and fix it!

    That's all I can think of for now. Maybe someone is cooking up a new version as we speak, who knows.

  16. #16
    Registered: Mar 2005
    Location: Corvallis, Oregon

    Force first person

    I would suggest adding the force first person script. The ladder animation in third person goes against the immersive experience.

  17. #17

  18. #18
    Registered: Mar 2005
    Location: Scotland
    Wow, 16 replies in one night!

    OK, now for the questions:

    SneaksieDave - sounds like you're using the INVarrowROPE static mesh (the one with the arrow already on it) for your arrow. You don't want to do that - use the mesh INVarrowSHAFT1A1 like I said (it's the one with no arrowhead). That should sort out the attachment bones. (Also means the arrowshaft is normal length)

    Multiple ropes - I only get this when the arrow hits a static mesh (collides more than once maybe?). Try firing it at a flat BSP roof or wall - that should give you one rope.

    Drifting upwards into nowhere? I haven't had anything like that.

    Force first person - the reason I left this out was because if Garrett climbs through a wall or roof in first person you're pretty much done for. In third person you at least have a chance to get back into the world...

    Because the arrow will deploy the rope anywhere, I think they should probably be a lot rarer and a lot more expensive than in T1/2 - with a bit of practice you could use these to get just about anywhere. Also there's the (minor) problem of them not having a hotkey (you have to use 'next weapon' to select them) and not appearing on the inventory screen - perhaps assigning them to a slot like the other arrows would fix this? And does anyone have any ideas for the materials thing, so it'll only deploy in wood?

    Now for the real challenge - swimmable water...

  19. #19
    Registered: Sep 2004
    Location: my brain, population: 20
    Will the property MaterialArch-> bObjectsStickIn help with the attaches anywhere thing?

  20. #20
    Ahahahahahahahhaha! Finally a "FM" that uses a custom gamesys!

    Now I can get FleshLoader going fullscale!

  21. #21
    Registered: Mar 2005
    Location: Scotland
    Jadon - I don't think that will help, it seems to be a property for the material itself, as it can only be set to True or False.

  22. #22
    Irrational Games
    Registered: Feb 2005
    Do we know which material types that value is true for? Maybe it's only true for wood and the like, in which case that property being true could be a condition for spawning the rope arrow? Maybe not, just a thought.

  23. #23
    Turns out it wasn't the shaft that was the problem - for the Arrowhead, I was using INVarrowROPE (Default) instead of INVarrowheadROPE (Default). Downloaders take note!
    Regarding multiple ropes - yep that makes sense. When I fire it into the dock mesh, I get three, presumably because it passes through two planks. Hrm, that's a definite problem. Probably fixable though.
    Regarding drifting upward - you don't get that if you try to approach from the side? I get a slow diagonal (and automatic - I don't even have to press forward) crawl that goes up about 5 feet or so, and then I fall. In fact, it happens about five times to every one time it works "correctly" for me locally.

    It is definitely essential that we get this sticking only in wood - and that should be possible. Broadheads behave as such...

  24. #24
    Registered: Mar 2005
    Location: Scotland
    SneaksieDave, I downloaded your demo, and here's where you went wrong:
    RopeArrowhead - you gave it the property Render -> ObjectMesh: INVarrowROPE. It should have been Render -> ObjectMesh: INVarrowheadROPE. This will sort out the double length shaft problem.
    You forgot to put the < and > around the Inventory -> HelpText and Inventory -> InvName properties on both the RopeArrow and the RopeArrowhead - that's why it says 'string=t_RopeArrow' in the inventory when you pick it up, rather than 'Rope Arrow'.

    Something might be wrong with the following attachment (or maybe it's just my run through of the tutorial):

    Attachment -> m_attachmentBone: hp_arrowshaft

    I don't get that option. The only options I get are: CENTER, Collision, RopeAttach. (obviously I chose RopeAttach)
    This is really odd. The options I get for this property are: CENTER, Collision, and hp_arrowshaft. Even when using your gamesys, where it clearly says 'm_attachmentBone: RopeAttach' I don't get that option when I click on the button - just CENTER, Collision, and hp_arrowshaft. The only reason I can think of would be possibly different versions of the game - US and UK versions maybe?

  25. #25
    Registered: Mar 2005
    Location: Scotland
    Oops, just noticed your post about the Arrowhead...

    By the way, how do you upload files to I'll put my gamesys on so you can check the properties, and that really weird attachment bone thing.

Page 1 of 5 12345 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts