Forum posts

Posted 20 hours ago2024-05-08 18:39:20 UTC
in MESS 1.2 has been released! Post #348782
I don't feel like this qualifies for a Vault entry, so here it is instead, a menagerie of miscellaneous MESSy stuffs I made on MESS 1.2.2.
Contents
Item Description File type(s)
zhlt_strip strips stray zhlt keyvalues that might produce unintended results in your map .ted
speedfactor multiplies any speed keyvalue in entity by a factor. useful to quickly multiply values for a range of entities with finely-calibrated speed values. .ted
mtlx_decal_text translates to a bunch of infodecals representing stenciled text. besides letters and numbers, also transforms some text symbols to a bunch of other decals. .ted, .map
mtlx_multi_manager translates to a multi_manager. this entity facilitates easy selection of targets using JACK's dropdown textbox. Also shows the arrow connections. .ted
mtlx_trigger_sequential translates to a relay that fires specified targets in order, and can loop back at the end of the list e.g. this → t1, this → t2, this → t3, this → t1... .ted, .map
texture_scrollspeed_handler BUGFIX for the one included in MESS 1.2.2 .ted
note: mtlx stands for MESS template library extras, to compliment MESS' included mtl entities.
Links
Requirements
  • MESS 1.2.2 or above
Installation
  1. Dump contents of gist/zip file to <mess 1.2.2+ install path>/template_entities/custom/
  2. Run MESS once to update mess.fgd
  3. Restart JACK/Hammer to load the updated mess.fgd
LICENSE
Posted 6 days ago2024-05-03 04:53:24 UTC
in How to make fake elevator? Post #348765
I wrote a tutorial for this, but haven't published it because there's no screenshot yet. If you can work with text alone, here's a snippet:
Suppose two maps building_base and building_top. To setup the elevator, we first need two doors and two buttons. The buttons target the doors. Now, one of the doors will fire our changelevel upon closing but the other will target a multisource which we'll place near the button inside the elevator. Don't worry, we will put the list of entity specs in a bit.

Then we setup the functional level change setup. As with previous, we put our trigger_changelevel way up in the ceiling (or even hidden in a nook nearby, as long as the players can't reach it), an info_landmark in the middle of the elevator floor, and a trigger_transition covering the whole elevator interior. Note that the trigger_changelevel's change target will target a multi_manager that manages the elevator ride effect.

Finally we'll be placing a few atmospheric entities to create the sensation of riding an elevator. One ambient_generic for the starting and stopping sound, another for the travelling sound, and a third for the chime. An env_shake for the jolt. Lastly a multi_manager to manage them all.

The entity specs for the setup is as follows:
Door and button setup
  • Outside func_button:
    • Target: elev_door
    • Delay before reset: 4
  • Inside func_button:
    • Target: elev_door
    • Master: elev_lock
    • Delay before reset: 4
  • One of the func_door:
    • Name: elev_door
    • Fire on close: changelevel_elev_relay
    • Flags: ☑Toggle
  • The other func_door:
    • Name: elev_door
    • Target: elev_lock
    • Flags: ☑Toggle
  • The multisource:
    • Name: elev_lock
Changelevel setup
  • trigger_relay (to delay changelevel)
    • Name: changelevel_elev_relay
    • Target: changelevel_elev
    • Delay before trigger: 1
  • trigger_changelevel
    • Name: changelevel_elev
    • New map name: building_top
    • Landmark name: lm_elev
    • Change target: elev_ride_mm
    • Delay before change target: 1
    • Flag: ☑ USE only (2)
  • info_landmark
    • Name: lm_elev
  • trigger_transition
    • Name: lm_elev
Elevator ride setup
  • ambient_generic (the jolt sound)
    • Name: elev_jolt
    • WAV name: plats/talkstop1.wav
    • Flags: ☑Start silent, ☑Not toggled
  • ambient_generic (the moving sound)
    • Name: elev_move
    • WAV name: plats/elevmove2.wav
    • Flags: ☑Start silent, ☐Not toggled
  • ambient_generic (the chime sound)
    • Name: elev_chime
    • WAV name: plats/elevbell1.wav
    • Flags: ☑Start silent, ☑Not toggled
Elevator ride setup (continued)
  • env_shake (elevator jolt)
    • Name: elev_jolt
    • Amplitude: 2
    • Effect radius: 500
    • Duration: 1
    • 0.1=Jerk, 255.0=rumble: 1
  • multi_manager
    • Name: elev_ride_mm
    • elev_jolt = 1
    • elev_move = 1.5
    • elev_jolt#1 = 6
    • elev_move#1 = 6
    • elev_chime = 7
    • elev_door = 8
    • (Adjust delay as needed)
On the other map, the entire setup can be copy-pasted wholesale, with only the new map name of trigger_changelevel set to the first map (e.g. building_base) and everything should just work.
Posted 1 week ago2024-04-26 00:06:52 UTC
in How to get portal gun as a weapon in HL2? Post #348747
Portal gun is only available in Portal. But since it's essentially a HL2 mod you can run HL2 maps in Portal.
  1. Launch Portal
  2. Enable the console
  3. Open console
  4. Type in these commands:
    • sv_cheats 1
    • map d1_trainstation_01
    • give weapon_portalgun
the default search sucks so I tend to use this to specifically search the wiki
Posted 3 weeks ago2024-04-18 09:31:06 UTC
in lighting on entities? Post #348724
already solved on discord. _minlight should be 0.
No, the point to be made here is to leave the whole thing up, from start to finish, so that it becomes a resource for the next person experiencing the same problem.
Posted 1 month ago2024-03-11 10:09:19 UTC
in HL Like Node Graph Needed Post #348643
pretty sure the ai nodes in half-life is like that. when the LOS to target is broken, it tries get a LOS to a node where the mesh connects to another node that has LOS to the target. then it follows the mesh to get from the start node to the end node, and thence to the target.
Posted 2 months ago2024-03-07 10:48:39 UTC
in Hurt trigger in map changes gravity!!! Post #348639
might be a bug in dod (or even in all first party titles) where taking damage from trigger_hurt resets gravity?
Posted 2 months ago2024-03-06 03:10:18 UTC
in Custom textures in greyscale Post #348634
IMPORTANT WALLY NOTE
When using Wally, make sure you're creating the correct type of WAD. It should be the one called "Half-Life WAD" or "WAD3"

For this reason Wadmaker is now the preferred option for making GoldSrc WADs.
Posted 2 months ago2024-03-01 00:00:58 UTC
in How do I get VCD files out of scenes.image? Post #348627
Posted 4 months ago2024-01-03 11:10:23 UTC
in func_pushable with a model instead of a brush Post #348391
oh yeah, Featureful has a motion_manager that can do this
Posted 4 months ago2024-01-03 05:33:50 UTC
in func_pushable with a model instead of a brush Post #348389
using a model is possible, but it would have no collision. it'd still movable with use key though.
Posted 4 months ago2023-12-26 23:44:28 UTC
in How to map for Half Life: Blue Shift Post #348365
bspfix switches between normal and bshift-compatible bsps. if a "fixed" bsp crashes the game, that's how you tell it's actually "unfixed", so just run it again. ;)
Posted 4 months ago2023-12-26 14:44:24 UTC
in How to map for Half Life: Blue Shift Post #348361
Adapting Hammer instructions to JACK is not that hard. JACK is a very close to Hammer 3.x in its interface. In fact they're way more similar to each other than any one of them to, say, TrenchBroom or NetRadiant.

Setting up for Blue Shift is not much different than setting up for any other GoldSrc game/mod:
  • Set up mod directory to <steam library>/steamapps/common/half-life/bshift_addon/
  • Replace Half-Life's FGD with Blue Shift's FGD
  • Add Blue Shift's WADs, in particular, barney.wad and its own decals.wad
The only important difference particular to Blue Shift is to run bspfix (link) on every bsp file you compiled before you run it.
Posted 4 months ago2023-12-23 16:45:48 UTC
in How write sprite path?!?!?!?!? Post #348340
trigger_gravity is a brush entity. you need to select the brush you want to turn into the entity then do "tie to entity" via either the menu or the Entity panel. It'd create the default brush entity. Only after this can you go to Object properties dialog and select trigger_gravity from the dropdown.
Posted 4 months ago2023-12-22 23:46:16 UTC
in How write sprite path?!?!?!?!? Post #348331
I am using J.A.C.K :) still missing some useful browsing functions like for this. :nuts:
You also need an FGD written for JACK. The functions are there but unless the FGD makes use of it it'd be just the same as Hammer.
I joke that people in TWHL insists you need to edit the half-life SDK code and produce your own custom DLLs at the slightest problem but I'm afraid this is the case for this one.
to make a light freak
wdym by this
Posted 4 months ago2023-12-19 07:13:53 UTC
in Help with func_button Post #348276
Interestingly I searched for a tutorial on the second and there's nothing. Like has nobody thought of writing it for the past 25 years? 😵
Posted 4 months ago2023-12-18 20:16:23 UTC
in Trying to spawn an item from another game. Post #348272
Everyone in this forum seems very keen on suggesting modifying game code, the hardest modding task there is, at the first opportunity. If it's not a very specific problem, I can guarantee you that somebody's already done the hard work.

You said you wanted guard vest and helmet from Blue Shift? The Half-Life Featureful mod already has that: https://github.com/FreeSlave/halflife-featureful
Here's the list of items added by the mod and you can see the ones you specifically needed is there: https://github.com/FreeSlave/halflife-featureful/wiki/Items
Here's how to base your mod off of it: https://github.com/FreeSlave/halflife-featureful/wiki/Base-the-mod-on-Featureful-SDK
For further help on using the featureful mod you'd have to turn to its main dev. He's usually reachable on TWHL's Discord.
Posted 4 months ago2023-12-17 04:48:45 UTC
in Help with effect/particles Post #348252
Posted 4 months ago2023-12-17 04:48:09 UTC
in Trying to spawn an item from another game. Post #348251
FGDs are just the restaurant menus. If you use BK's menu's at a Wendy's the cooks at Wendy's wouldn't know what a Triple Whopper is nor how to make them.

You need to add code for the actual entities themselves into your mod's codebase for your mod to start recognizing a Triple Whopper order.
Posted 4 months ago2023-12-16 23:53:21 UTC
in Can a scripted sequence involve also brushes? Post #348249
What you described doesn't seem to require involvement from actual titular scripted_sequences. You just need multi_managers choreographing the triggering of other things in a precise manner.

But to cover both bases, model sequences do have a specific event that fires triggers, which you can rename entities to match and get triggered with. Refer to https://the303.org/tutorials/gold_qc.htm#A1, specifically at event #1003. This is how Barney at the reception desk of Sector C swivels on his chair back and forth. So to use it in your map, you can review the model's sequence in HLAM and look for event #1003 (or even add one yourself).
This is a jank workaround, but you can use https://mfaizsyahmi.github.io/sentences.101/ to prototype, listen, and most relevant to the question, download rendered sentences, where you can then look at the audio length to pretty accurately* estimate the sentence length.

*because implementations vary between goldsrc and this site it won't be 100% but close enough.
^ playgamealt is probably hardcoded to start the map hldemo1. the simple solution is to create a map of said name that is nothing but a room that immediately teleport-changelevel to a map of your choice.
Posted 5 months ago2023-11-18 10:03:52 UTC
in FUNC_VEHICLE Post #348058
I'm converting cs_twhlkart2020 to hldm. CS WAD requirements have been eliminated by embedding the textures used, CT/T spawns have been replaced with DM spawns peppered throughout the map, and a lot of weapons/ammos/items have been added, though mostly curbside. I'm damn sure it's currently very imbalanced towards the spectators vs the drivers. I'd like to have a few other people go over it and rebalance the placements. Or, maybe, have archie or urby release a HLDM version with all their level design wisdom. gdrive link

The karts work great btw.
User posted image
Posted 5 months ago2023-11-17 18:56:03 UTC
in Xash3D fixing overbright in Half-Life Post #348053
Valve literally just released the 25th Anniversary Update that fixed gl_overbright
Posted 5 months ago2023-11-16 14:25:24 UTC
in New Textures dont load Post #348047
already compiled bsps? use newbspguy.
Posted 5 months ago2023-11-16 09:53:41 UTC
in New Textures dont load Post #348045
did you forgot to save?

also please use HLAM.
Posted 6 months ago2023-11-09 05:22:41 UTC
in trigger_changelevel @ c1a1d Post #348007
Both changelevels of c1a1d points back to c1a1c.
User posted image
User posted image
Your implementation must have made the wrong assumptions.
Posted 6 months ago2023-11-02 08:11:48 UTC
in Mapping game of telephone Post #347988
The Achilles heel of this concept is that it'd take forever to get done, because only one person can work on it at any one time. How many passes is enough mutation? What if the person working on the current pass ghosts the project? And what if there's a loose lip among us? ඞ
func_guntarget might do it. idk if you can reactivate it after it's shot, firstly to reenable it and secondly to move it out of the way. you can test this with a func_guntarget that targets a trigger_relay, that after some delay targets the same func_guntarget. if this works and the guntarget reactivates, then you can start thinking about making the rest work with multiple sets of path_corners (front and back of the wall) and trigger_changetargets to change the paths the func_guntarget takes.
Posted 9 months ago2023-07-26 08:20:28 UTC
in Programs/tools to edit Half-Life´s UI? Post #347730
Steam goldsrc/source engines have a built in VGUI editor. Open the dialog box you want to edit in game, then press Ctrl+Alt+Shift+B.

But if you want to edit the colours/fonts/etc, edit the trackerscheme.res file (copy them from <half-life>/platform/resource/ to <half-life>/<yourmod>/resource/).
There's probably already a tool out there that lets you edit this scheme file that I didn't know of.
Posted 10 months ago2023-06-14 07:38:50 UTC
in Is there any way to preview "p_" models? Post #347620
First, HLMV is deprecated. Use HLAM.

Second, solokiller is working on it: https://github.com/SamVanheer/HalfLifeAssetManager/issues/71
Posted 11 months ago2023-05-11 13:13:45 UTC
in func_tracktrain sound Post #347508
My idea is to try have a second, invisible func_train shaped like a box, holding an invisible monster_generic that has an idle animation that emits the rotor sound (same thing that makes Barney go boop boop boop boop typing on those keypads.)
Posted 1 year ago2023-02-23 14:11:22 UTC
in ZBot implementation for Half-Life 1 Post #347368
I don't do C++ but it doesn't need to to say I hate hardcoded values. put the list in a config file, perhaps?
Posted 1 year ago2022-11-23 11:16:39 UTC
in Music not playing in HL:OpFor WON version Post #347124
It's dirt cheap on Steam right now, just buy it.

Otherwise, download a bin/cue CD image pair (NOT ISO) from archive.org, then download and install PowerISO, then mount the cue file as a virtual CD.
get the latest version. ask solokiller about it.
is it really as easy as adding the event and saving it?
Well, try it out!
Can this be done to remove events as well?
Yes. See pic:
User posted image
Simply put, HLAM is a must-have tool in your goldsrc toolkit.
You need to adjust said animation's events on the model. For this you'll need HL Asset Manager (HLAM).
  1. Load the model in HLAM and in the sequence tab/panel, load the animation you're trying to play.
  2. In the same tab/panel, check that Event #1000 is present in the sequence.
  3. If there isn't (or there is none), add one.
    • Press "Add" button.
    • Type in Event: 1000.
  4. Save the model.
Event 1000 tells the engine that the NPC dies in the sequence. At the specified frame, it presumably removes the NPC's collision and logic, though the sequence plays through the end. Then the sequence pauses at the last frame, its death pose.

I see a lot of stock scientist sequences having this event at frame 1, either because the player couldn't reach the scientist, or to make sure the player couldn't press E and cancel the animation (as they're already dead at the start of the sequence).

You might also want to check the "leave corpse" flag on the scripted_sequence.

Reference: https://the303.org/tutorials/gold_qc.htm#A1
From https://the303.org/tutorials/gold_mdl_fix.htm
*********** ERROR ***********
sequence "reload_empty" is greater than 64K


This is a rare error that happens with very complex animations with high nodes & frames. Usually frames past 200~300 range with over 100 bone nodes is likely to put out this error. I cannot pin down the exact combination of nodes to total frames which triggers this but this is my best estimates. 2 solutions:

1: Re-export the animation SMD with a modified FPS 3D model application side which results in lower total exported keyframes in the SMD, then adjust the QC fps to match.
2: Reduce the bone nodes or animation total frames manually

edit: You wanted to change the engine limits instead of the animation. I'd say it's better to reconsider your approach.
Posted 1 year ago2022-10-16 21:00:44 UTC
in Wiki enhancment thread Post #346971
I tried out a multi-column layout to emulate an infobox-style panel at Entity Flag: Not solid/Passable. Check them out and comments welcomed.
Hm, that would be a bit tricky to add, other pages will have categories and other stuff that shouldn't be included in the base page, also there's the challenge of what you do when the embedded page is updated... then you have to detect and re-render all the pages that embed it. I think I'd need more of a justification for a feature like that.
Hm, I wonder how MediaWiki, the workhorse for Wikipedia, manages it. It's unfathomable that they could have something like a templating system in place, with exclude and only-include sections... But what do I know about these stuffs, amirite? ¯\_(ツ)_/¯
The NOD file has a header and one of it's entries is the BSP's CRC checksum at the time the node graph was generated. Since you ripent-ed the BSP, the original CRC checksum is lost and thus a new one is generated (same checksum is used in multiplayer games to make sure the clients have the same map as the server). When the node graph loading code detect that the BSP's CRC checksum is different than the one that was stored while generating the graph, it assumes that the map changed and thus the old node graph is deleted to generate a new one.
I highly suspected this to be the case, so I once tried editing on bspguy with the CRC hack enabled. Not sure if it works like it's supposed to, considering node graphs are being regenerated regardless. It probably doesn't.

I also attempted locking the nod file on the filesystem level by setting read-only, but it could be the case that the engine regenerated a new one in memory and use it, only not saving it to file.

The big question still remains...

Problem statement

As I was making my bspguy edits through the entire Half-Life campaign, I hit a perplexing issue: The game freezes on "the" apprehension map (c2a3d). At first I just assume it's a one-off occurrence, but as I revisited the map it's becoming apparent that this is a 100% recurring issue.

After adding -condebug to launch options and observing the qconsole output, it appears that the game is grinding to a halt with an error spam: Unhandled Ent in Path momentary_door. So I searched that string in halflife's github, and it appears to be emitted from the AI node file dlls/nodes.cpp, line 283.

So, the AI system is detecting that the node path is blocked by an entity that it can't handle. It should have handled momentary_door in the same block as func_door but it doesn't.

But then how come this map worked at all in vanilla half-life, but tanks when the same map is in a mod? Not just the map with a minor edit, even the unedited c2a3d tanks it, if it creates a new node graph.

Troubleshooting

My first attempt is to force the mod to use the original node file. I copied the .nod file from valve to <modname> and set it to read only. The problem is that in the mod's grapth folder there are also .nrp files, which is curiously absent from valve's graphs folder. Even when the game can't edit the nod file (it's read only on FS level) it's still creating the nrp file, and seems to be relying on it. It seems to me that the AI system that uses the nod/nrp map combo is causing this problem, as the original game has no nrp files and it works fine.
Also, using the original bsp/nod pair works but that defeats the exercise of me wanting to edit the bsp.

Suspecting that maps saved by bspguy compels the engine to produce this problematic node formats, I resorted to ripent-ing the props I wanted to add (VHLT's). This failed, the problematic graph formats are generated, and the same freeze happens.

My final effort is to edit the momentary doors and make them slightly ajar (16u). That seems to work. I tried to follow up by having a pair of doors, a non-solid shut door, and a solid ajar one, which move in unison; but that failed again. I recalled the code doesn't check if the entity's solid.

I guess I had to have the doors ajar. For folks who has played this game a gazillion times it probably wouldn't matter (if they even noticed this change).

Afterword

The question still remain as to how the vanilla game (vanilla BSP and NOD combo) works when the new bsp/nod/nrp combo doesn't. Both vanilla and my mod is using vanilla code, so it's just something in the old nod file format that prevents this check from failing the way it does with modern formats.

Hope to see solokiller's unified sdk fix this by including momentary_door and/or passable flag to the logic check. I might also raise this issue to valve's github later.
The other day, someone made available* a 3D skybox model. I thought it'd be a neat idea to retrofit Half-Life's maps with them.

The one issue, after editing the maps with bspguy and placing the model, is that it's not visible anywhere in the map. In normal workflow (compiling from source) VIS takes care of that, by marking the area with info_overview_point as "visible everywhere on the map", and then I'll just place the 3D skybox model in the same place. It does that by perusing the portal file generated by the previous program (CSG or BSP).
But with the released game only the final product, the BSP, is shipped.

I googled for a way to get the prt from a bsp, and found the program bsp2prt for quake. But it only takes a quake bsp. I can't cheese it into taking a goldsrc bsp masquerading as quake bsp.

So the most straightforward way for me to proceed is if there exists, in this whole wide world, in a hard drive somewhere, a bsp2prt program that works on goldsrc bsp. Any lead is much appreciated.
p.s. I actually looked into this more technically; to find a way of actually modifying the bsp's PVS lump directly, but it's way out of my league. bspguy's source code (as in any C/++ code) is just goobledygook to me.

p.p.s. I was working on an unrelated project when I discovered about creative commons and how it's actually illegal to make derivatives of most of the stuff on gamebanana (the 3D skybox model included). I'm grateful that the forefatheres of this site saw through the asininity and not have the option to upload stuff to vault with the CC-ND clause (well, not that I know of.) I know the 3D skybox is also here in vault but now there are two licenses and I dunno which takes precedence.

ppps I just raised an issue in bspguy's github.
Posted 1 year ago2022-10-02 07:28:45 UTC
in Wiki enhancment thread Post #346922
For pages in category:Entity Flags, we should either:
  • add to the title, in parentheses, the base class or entity it applies to, OR
  • put them into subcategories with the same info
so you can know that from a glance at the category page instead of having to click on every single page – a problem that would get worse as more pages are added.
Posted 2 years ago2022-02-14 15:11:25 UTC
in trigger a sprite to appear and disappear Post #346283
Try bspguy. It lets you see the entity activator/target relationship in the map visually in 3D. You can add and edit entities there too!

There will be some set-up required. Particularly you'd need the FGD file for Half-Life for the program to understand what there is to Half-Life entities but you can get it by downloading Half-Life's SDK from Steam. It says that it's for svencoop, but if you're just looking to edit existing maps' entities and not doing the map merging thing, it works on any goldsrc game/map.

Hopefully once you get a grasp of what the program can do you'd be able to do way more bespoke things for your server. :P
Posted 2 years ago2021-08-08 11:26:36 UTC
in HLDM Server! Post #345865
I want to enjoy the maps but I can't when I keep getting pwned 😔
Did you manage to resolve your expression error?
yeah, once I reverted to the very last backup that I managed to save before jack removes it, just before the big oopsie. no more problems after that, after I realized the positional switch thingy, and -log now works.