Forum posts

Posted 1 year ago2024-01-15 14:30:48 UTC
in Half-Life Updated (custom SDK) Post #348447

Half-Life Updated and Unified SDK released

Half-Life Updated, Half-Life: Opposing Force Updated, Half-Life: Blue Shift Updated and the Half-Life Unified SDK have been released:
Half-Life Updated: https://github.com/twhl-community/halflife-updated/releases/tag/HLU-V1.0.0
Half-Life: Opposing Force Updated: https://github.com/twhl-community/halflife-op4-updated/releases/tag/HLOP4U-V1.0.0
Half-Life: Blue Shift Updated: https://github.com/twhl-community/halflife-bs-updated/releases/tag/HLBSU-V1.0.0
Half-Life Unified SDK: https://github.com/twhl-community/halflife-unified-sdk/releases/tag/UNIFIED-V1.0.0

Notable changes for all games:
  • Updated build and installation instructions
  • Disabled GCC optimization that prevents mod dlls from unloading after engine calls dlclose on Linux
  • Implemented Valve game directory detection check to prevent incorrect use of mod dlls
  • Fixed third party libraries possibly not being linked to when building Linux server dll
Notable changes for the Unified SDK:
  • Updated nonfunctional scripting system and networking system branches to a more recent version of the SDK
  • Added note about adding HL Uplink maps to packages
  • Reverted "Boost volume to match original engine" change to fix audio problems related to volume being too high
  • Updated documentation to explain FastDL behavior

Valve game directory detection

Mods made with these SDKs will no longer run when used to replace the game dlls of Valve games. This check was added for a couple of reasons:
  • VAC may detect the modified dlls and ban you
  • Players might think Half-Life Updated refers to an updated version of the game that can replace original dlls (it can't, it's an updated SDK and is not compatible with original game dlls at the network protocol level)
I wanted to add a check to detect the use of incompatible server and client dlls to prevent cases where this happens by accident. There have been cases where people tried to make a mod and accidentally combined an updated server dll with the original Half-Life client dll which won't work.

Unfortunately there is no way to properly add compatibility checking that has no edge cases. It should really be implemented in the engine with a way to report which mod a dll belongs to and which version it is, which is a fairly complicated thing to implement.

VAC currently does not appear to ban players using modified dlls but that can always change in the future. I'm accounting for the possibility that VAC is made stricter for Valve games only and not mods and thus preventing players from getting VAC banned in error.

The check is easily disabled in code so there is nothing that can be done to prevent people from making custom builds but you are doing so at your own risk.

FastDL behavior when using the Unified SDK

I tested what happens when FastDL (HTTP downloads using the sv_downloadurl cvar) is used with the Unified SDK. Since the Unified SDK generates and precaches a JSON file every time a map is loaded it's required to download this file every time.

I assumed this would require special handling on the web server side but it turns out the engine's behavior and the code written for the JSON file is already working perfectly fine.

The client will download the file when it reconnects to the game server after downloading all files from the FastDL server. To avoid a bogus error message printed in the console the web server should have a dummy file which the client will download but the file is ignored and deleted automatically by the client when it reconnects.

Notably clients will only ever use FastDL to download files once per map per server per session. This means that if you launch the game, connect to a server using FastDL running, say, crossfire with custom content you'll download that content with FastDL, but if the server then changes which custom content it uses for that map and reloads the map you'll download that content from the game server directly instead.

This continues to be the case until you either restart the game or use the httpstop console command to clear the list of maps which have been downloaded using FastDL.

The documentation has been updated to clarify this behavior.

Licensing information

I've sorted out the project licenses as best I can.

The main repository continues to use only the HL SDK license since the MIT license permits sale of work which isn't really compatible there. It's hard to separate the parts that fall under the MIT license since pretty much all of it is specific to this engine so i've left it as-is to keep it simple.

The assets repository uses both the MIT and HL SDK licenses, with the readme specifying which directories fall under the HL SDK license based on whether they contain anything originally made by Valve.

The C# tools repository is all MIT licensed since it doesn't contain Valve's code. The Map Decompiler is GPL V2-only licensed since it's based on the Quake 3 SDK which also has that license.

In effect this means you can use all 4 projects to make your own mods, use the assets in your mod and distribute them. As long as you abide by the Half-Life SDK license you're fine.

Remaining work to be done

  • MIT license all community-written Updated & Unified SDK code (done)
  • Move projects to twhl-community organization (done)
  • Add any required documentation on development process that is currently missing (done)
And that's it! All work for V1.0.0 is done.

I stated before that I was going to wait until Valve updated the SDK to integrate their changes. I decided to go ahead with V1.0.0's release because it looks like Valve will take a while to continue their work on Half-Life 1.

There has been no visible progress on any Half-Life 1 games since December 22. I assume this is because of the holidays and because they're working to update all games at the same time and avoid destabilizing the public versions, but this is based purely on assumptions.

There are still work-in-progress changes in the public build such as missing localization changes and of course the SDK update which they announced so I'd expect to see some updates at some point in the future. It would be helpful to know what's going on but I don't know where we can ask for information about this so that's all I can say.

Even without the SDK update these SDKs will work with the anniversary version. You won't get the changes and fixes that need to be made in the SDK itself but you can run mods just like you can under the steam_legacy branch.

I've made Github issues tracking work that needs doing to integrate the SDK update as well as adapt the Unified SDK to work with the anniversary version (the map upgrades need reviewing since some maps were changed). Hopefully Valve released the SDK update soon so this process can be completed.

I've also added a list of contributors to the project README files. If you contributed to these projects and your name isn't listed (or is using the wrong name) then be sure to let us know so we can correct that.

With the release of V1.0.0 all 5 projects (including the Map Decompiler) have been moved to the twhl-community Github organization. It is now up to the community to continue the development of these projects.
Make sure to update links to the repositories to point to the new locations! Especially Git repository links since clients may not accept redirects!
I've provided as much information as I can in the documentation and issues to help with this process. I hope that people can integrate the SDK update when it arrives and continue to update the projects as needed.

In the Unified SDK's case V1.0.0 is more of an initial version to start with; I fully expect people to continue expanding on it and change things as needed.

Special thanks to malortie for helping to develop the Unified SDK. Your help has been invaluable.

That just about wraps up everything. Thanks to everybody who helped make these projects a reality, and I hope people make awesome mods with them!
I found a non-steam Counter Strike 1.6 client that has modified main menu.
main-menumain-menu
player statisticsplayer statistics
From what I understand, the author of this client somehow managed to rewrite GameUI.dll. I was looking GameUI.dll source code, but couldn't find any reliable link. Can anybody put me in the right direction? How to I alter the menu and my own tabs?
Posted 1 year ago2024-01-13 22:29:20 UTC
in Source code of GameUi.dll Post #348444
I found this thread because I'm also looking for a way to customize Counter Strike 1.6 game menu. It's definitely possible, because other people have already done it.
User posted image
User posted image
User posted image
BSP is telling you that your map has a leak, fix it.
Here's my log:

** Executing...
** Command: Change Directory
** Parameters: D:/SteamLibrary/steamapps/common/Half-Life/cstrike

** Executing...
** Command: D:/SteamLibrary/steamapps/common/Half-Life/cstrike/tools/hlcsg_x64.exe
** Parameters: "D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment"
hlcsg v3.4 VL34 64-bit (Aug 17 2015)
Zoner's Half-Life Compilation Tools -- Custom Build
Based on code modifications by Sean 'Zoner' Cavanaugh
Based on Valve's version, modified with permission.
Submit detailed bug reports to (vluzacn@163.com)
----- BEGIN hlcsg -----
Command line: D:/SteamLibrary/steamapps/common/Half-Life/cstrike/tools/hlcsg_x64.exe D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment
Arguments: D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment -low -wadautodetect
Entering D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment.map

Current hlcsg Settings
Name | Setting | Default
---------------------|-----------|-------------------------
threads [ 12 ] [ Varies ]
verbose [ off ] [ off ]
log [ on ] [ on ]
reset logfile [ on ] [ on ]
developer [ 0 ] [ 0 ]
chart [ off ] [ off ]
estimate [ off ] [ off ]
max texture memory [ 33554432 ] [ 33554432 ]
max lighting memory [ 50331648 ] [ 50331648 ]
priority [ Low ] [ Normal ]

noclip [ off ] [ off ]
null texture stripping[ on ] [ on ]
clipnode economy mode [ off ] [ off ]
clip hull type [ simple ] [ simple ]
onlyents [ off ] [ off ]
wadtextures [ on ] [ on ]
skyclip [ on ] [ on ]
hullfile [ None ] [ None ]
wad configuration file[ None ] [ None ]
wad.cfg group name [ None ] [ None ]
nullfile [ None ] [ None ]
nullify trigger [ on ] [ on ]
min surface area [ 0.000 ] [ 0.000 ]
brush union threshold [ 0.000 ] [ 0.000 ]
map scaling [ None ] [ None ]
light name optimize [ on ] [ on ]
convert game_text [ on ] [ on ]

Using mapfile wad configuration
Wadfiles not in use by the map will be excluded
Wadinclude list :
[zhlt.wad]

CreateBrush:
(0.00 seconds)
CSGBrush:
(0.01 seconds)

Using Wadfile: /SteamLibrary/steamapps/common/Half-Life/valve/halflife.wad
- Contains 5 used textures, 62.50 percent of map (3116 textures in wad)
Using Wadfile: /SteamLibrary/steamapps/common/Half-Life/cstrike/shipment_bak.wad
- Contains 2 used textures, 25.00 percent of map (3116 textures in wad)
Using Wadfile: /SteamLibrary/steamapps/common/Half-Life/cstrike/shipment_bak_bak.wad
- Contains 1 used texture, 12.50 percent of map (3116 textures in wad)

Wad files required to run the map: "halflife.wad;shipment_bak.wad;shipment_bak_bak.wad;"
Texture usage is at 0.11 mb (of 32.00 mb MAX)
0.04 seconds elapsed

----- END hlcsg -----

** Executing...
** Command: D:/SteamLibrary/steamapps/common/Half-Life/cstrike/tools/hlbsp_x64.exe
** Parameters: "D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment"
hlbsp v3.4 VL34 64-bit (Aug 17 2015)
Zoner's Half-Life Compilation Tools -- Custom Build
Based on code modifications by Sean 'Zoner' Cavanaugh
Based on Valve's version, modified with permission.
Submit detailed bug reports to (vluzacn@163.com)
----- BEGIN hlbsp -----
Command line: D:/SteamLibrary/steamapps/common/Half-Life/cstrike/tools/hlbsp_x64.exe D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment
Arguments: D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment -low -chart

Current hlbsp Settings
Name | Setting | Default
-------------------|-----------|-------------------------
threads [ 12 ] [ Varies ]
verbose [ off ] [ off ]
log [ on ] [ on ]
developer [ 0 ] [ 0 ]
chart [ on ] [ off ]
estimate [ off ] [ off ]
max texture memory [ 33554432 ] [ 33554432 ]
priority [ Low ] [ Normal ]

noclip [ off ] [ off ]
nofill [ off ] [ off ]
noinsidefill [ off ] [ off ]
noopt [ off ] [ off ]
no clipnode merging [ off ] [ off ]
null tex. stripping [ on ] [ on ]
notjunc [ off ] [ off ]
nobrink [ off ] [ off ]
subdivide size [ 240 ] [ 240 ] (Min 64) (Max 512)
max node size [ 1024 ] [ 1024 ] (Min 64) (Max 65536)
remove hull 2 [ off ] [ off ]

SolidBSP [hull 0] 232 (0.01 seconds)
Warning: === LEAK in hull 0 ===
Entity info_player_deathmatch @ (-460, 878, 101)
Error:
A LEAK is a hole in the map, where the inside of it is exposed to the
(unwanted) outside region. The entity listed in the error is just a helpful
indication of where the beginning of the leak pointfile starts, so the
beginning of the line can be quickly found and traced to until reaching the
outside. Unless this entity is accidentally on the outside of the map, it
probably should not be deleted. Some complex rotating objects entities need
their origins outside the map. To deal with these, just enclose the origin
brush with a solid world brush

Leak pointfile generated

SolidBSP [hull 1] 179 (0.01 seconds)
SolidBSP [hull 2] 176 (0.01 seconds)
SolidBSP [hull 3] 194 (0.01 seconds)
Reduced 511 clipnodes to 459
Reduced 149 texinfos to 132
Reduced 8 texdatas to 8 (356 bytes to 356)
Reduced 832 planes to 293
FixBrinks:
Increased 459 clipnodes to 459.

Object names Objects/Maxobjs Memory / Maxmem Fullness
------------ --------------- --------------- --------
models 8/512 512/32768 ( 1.6%)
planes 293/32768 5860/655360 ( 0.9%)
vertexes 1082/65535 12984/786420 ( 1.7%)
nodes 273/32767 6552/786408 ( 0.8%)
texinfos 132/32767 5280/1310680 ( 0.4%)
faces 858/65535 17160/1310700 ( 1.3%)
  • worldfaces 767/32768 0/0 ( 2.3%)
clipnodes 459/32767 3672/262136 ( 1.4%)
leaves 230/32760 6440/917280 ( 0.7%)
  • worldleaves 187/8192 0/0 ( 2.3%)
marksurfaces 963/65535 1926/131070 ( 1.5%)
surfedges 4130/512000 16520/2048000 ( 0.8%)
edges 2066/256000 8264/1024000 ( 0.8%)
texdata [variable] 356/33554432 ( 0.0%)
lightdata [variable] 0/50331648 ( 0.0%)
visdata [variable] 0/8388608 ( 0.0%)
entdata [variable] 5513/2097152 ( 0.3%)
  • AllocBlock 5/64 0/0 ( 7.8%)
8 textures referenced

Total BSP file data space used: 91039 bytes

Wad files required to run the map: "halflife.wad;shipment_bak.wad;shipment_bak_bak.wad;"
0.11 seconds elapsed

----- END hlbsp -----

** Executing...
** Command: D:/SteamLibrary/steamapps/common/Half-Life/cstrike/tools/hlvis_x64.exe
** Parameters: "D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment"
hlvis v3.4 VL34 64-bit (Aug 17 2015)
Zoner's Half-Life Compilation Tools -- Custom Build
Based on code modifications by Sean 'Zoner' Cavanaugh
Based on Valve's version, modified with permission.
Submit detailed bug reports to (vluzacn@163.com)
----- BEGIN hlvis -----
Command line: D:/SteamLibrary/steamapps/common/Half-Life/cstrike/tools/hlvis_x64.exe D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment
Arguments: D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment -low
There was a problem compiling the map.
Check the file D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment.log for the cause.
----- END hlvis -----

** Executing...
** Command: D:/SteamLibrary/steamapps/common/Half-Life/cstrike/tools/hlrad_x64.exe
** Parameters: "D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment"
hlrad v3.4 VL34 64-bit (Aug 17 2015)
Zoner's Half-Life Compilation Tools -- Custom Build
Based on code modifications by Sean 'Zoner' Cavanaugh
Based on Valve's version, modified with permission.
Submit detailed bug reports to (vluzacn@163.com)
----- BEGIN hlrad -----
Command line: D:/SteamLibrary/steamapps/common/Half-Life/cstrike/tools/hlrad_x64.exe D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment
Arguments: D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment -low
There was a problem compiling the map.
Check the file D:\SteamLibrary\steamapps\common\Half-Life\cstrike\maps\mp_shipment.log for the cause.
----- END hlrad -----

** Executing...
** Command: Change Directory
** Parameters: D:/SteamLibrary/steamapps/common/Half-Life

** Executing...
** Command: D:/SteamLibrary/steamapps/common/Half-Life/hl.exe
** Parameters: +map mp_shipment
Posted 1 year ago2024-01-12 15:22:07 UTC
in Half-Life Featureful SDK Post #348441
New release https://github.com/FreeSlave/halflife-featureful/releases/tag/featureful-2024-01-12

Changelog

Support for subtitles

Mods can use sound/captions.txt and sound/captions_profiles.txt files to define captions.
Sample files defining captions for some sentences on the first two maps of "Anomalous Materials" chapter are packed with the mod sample.

HUD scaling

Added hud_scale client cvar to control HUD scaling. 1 means the original scale. 0 means autoscale depending on the screen resolution. Note that support for high definition sprites from the anniversary patch will be added later.

Configurable Weapon Layout

Weapon layout can be configured in features/hud_weapon_layout.cfg file. The format is described in the sample file.

Entities

  • trigger_configure_monster can configure more monster's parameters: Free Roaming, Gib Policy and Size For Grapple.
  • Added dead turret entities: monster_miniturret_dead, monster_sentry_dead and monster_turret_dead
  • Added Custom amount parameter for ammo entities.
  • Added Custom Initial Ammo parameter for weapons.
  • Added Delay after blocked parameter for monstermaker. If not zero, this is used instead of spawn delay before trying to to spawn the monster again, if the spawn was blocked before.
  • Added Don't fire look target for trigger_camera.
  • Added scripted_following entity and the Followage policy parameter for following monster (Experimental).

Bugfixes

  • Fixed HUD not showing after 'fullupdate' command.
  • Fixed repeatable scripted_sequence with Walk or Run move type not properly working after it got interrupted and triggered again (Half-Life bug). Thanks @Aynekko for reporting.
  • Fixed scripted_sequence being unresponsive when it has Idle Animation and Turn to Face move type (Half-Life bug).

Configurable features

  • Color values in hexadecimal form can be prefixed with # symbol instead of 0x.
  • hud_autoscale_by_default - whether hud_scale value is 0 by default (meaning autoscale).
  • crosshair_colorable feature and corresponding cvar. Allows crosshair color to depend on the chosen HUD color. Requires a sprite with white crosshairs to apply colors properly. Experimental feature, not enabled by default.
Thanks
You are so helpful
func_wall_toggle will alternate between two states when triggered:
  • Solid and visible
  • Non-solid and invisible
You can make it always be invisible by using NULL texture.

I also recommend experimenting with these entities on your own. Testing, trying and failing are the best ways to learn. 🙂
Ah ok cool thanks

If Is not solid i can walk trought?

Can i make a func_wall solid and non solid resting invisible?

Urby: ...edited to one post ...again
Ok i Will try thanks
You don't need to repeatedly self reply to bump your threads. The forums are less popular than the Discord server, but sooner or later somebody will pick up your question and respond.

As for your question: idle animations will always start as soon as a map is loaded in game. They start enabled and need to be triggered to stop.

If you are using a scripted_sequence to teleport a scientist when triggered, I assume using the Instantaneous move to setting, you may need to simply trigger an additional animation to play once the scientist arrives. Have the scripted_sequence target another sequence which will play straight after.

Having said that, I don't believe I've seen this issue before and would need to see the map or try copying the setup myself.
monster_urby monster_urbyGoldsourcerer
Both I and Archie linked to the Entity Guide page for the entity, but basically it's a brush entity that toggles between a solid visible state and a non-solid invisible state.
Essentially triggering it makes it disappear from the game, and triggering it again makes it re-appear.
What does a func_wall_toggle?
Posted 1 year ago2024-01-07 21:05:05 UTC
in New item changes players speeds for movements Post #348423
No, guess I have to trick in the mapping to have the user not duck. Still the forwardspeed and centering the view which are important for me can be set via console.
If I put the console-commands in an own config that is triggered with a button but dont bind the button, can it still be triggered by an Entity? It should only be set for one specific map and not manuall by the player.
Posted 1 year ago2024-01-07 15:52:08 UTC
in The Rimpository Post #348422
I'm just excited to see you back home at TWHL
Archie ArchieGoodbye Moonmen
If it's just to stop them killing the scientist until the player gets there, the easiest ways would be either using a monstermaker to only spawn either the zombie or the scientist once the player reaches a certain point or, as described above, a func_wall_toggle that prevents them from seeing each other until the player arrives.
Archie ArchieGoodbye Moonmen
ok thanks
Posted 1 year ago2024-01-07 13:35:31 UTC
in New item changes players speeds for movements Post #348419
Do ducking have it's own max speed?
Meerjel01 Meerjel01I want to be a Meerjel
Programming a relationship changer can work too but that requires it to be a mod and that you can program it in. Just giving out a thought.
Meerjel01 Meerjel01I want to be a Meerjel
Or instead of a func_door, an invisible (for example using {invisible texture and Render Mode set to Solid) func_wall_toggle can work to keep the zombie and scientist from "seeing" each other until it's triggered.
Posted 1 year ago2024-01-07 10:37:38 UTC
in New item changes players speeds for movements Post #348416
Nobody has an idea? :-( I saw there are some console-commands that would do the trick but it seems there is no way to make an entity (item) to trigger them. In Source there is the point_clientcommand but in Goldsource there is not. Is it possible to get this into my mod?
The prisoner flag can not be removed after a while. You should try to have the zombie execute a scripted sequence with an idle-animation. Once it is triggered, the sequence will stop and the Zombie will behave normal.
Or you build a full transparent box around it as a func_door and remove it when the zombie should start attacking.
Is there way After some time, to uncheck the prisoner flag of a zombie?
Posted 1 year ago2024-01-06 23:47:38 UTC
in The Rimpository Post #348413
Yeah so I’ve been conglomerating prefabs and made a huge pack. Also made 48 plants models of different kinds.

I’m no longer able to spend many hours adding to it like I have been, but I got it started with SassyRoss’s help with his contributions.

If you want to help and get credited, make prefabs or share props made (with the default wads only) and I’ll insert them in. Doesn’t take much to copy and paste things.

Areas that need some love are the exterior building parts and various prefabs there, and the machinery section like pumps and generators.

If you decide to contribute, make sure the prefab face right on the top view, that’s 0 degrees.

Let me know what you guys think of this little project.
Rimrook RimrookSince 2003
It's a scientist and Is selected to get teleported to the scripted sequence, but to prevent the scientist to frozee, i selected an idle animation. When i enable idle the scripted sequence starts when game loaded, when i didn't use a idle animation, the scripted sequence starts normalità on a trigger, but the scientist freezes. I am so confused
Pls help
Yes, i want the zombie attack the scientist later.
That's the problem though. We don't know exactly what Combined wants because he hasn't described that yet. Just wait for him to elaborate.
What if he wants the zombie to attack the scientists later though?
Then use scripted_sequences to swap the prisoner zombie out for a regular one.
monster_urby monster_urbyGoldsourcerer
What if he wants the zombie to attack the scientists later though?
Meerjel01 Meerjel01I want to be a Meerjel
What do you mean by "static"? If you want it to idle in place and not attack nearby scientists, you could set the Prisoner (16) flag.
Is it a mod or a map? If it's a mod then you could probably program it in.

If not then I'm not useful here.
Meerjel01 Meerjel01I want to be a Meerjel
help pls
Ok thanks
To be more precise, trigger_relay allows you to trigger entities in a specific mode. Normally all triggers trigger using "Toggle", but with trigger_relay you can specify "On" or "Off", not just Toggle, which is useful if you want to make sure you trigger, for example, an env_sprite off in a specific case, regardless of whether previously it was turned on or not. In such a case triggering with "Toggle" will turn it on, but triggering an env_sprite that is already off with "Off" mode will not turn it on.
The trigger_once make you triggered something, a trigger relay is like it's name says a relay, it's triggered by something to make like the intermediate among few entities, useful in some cases.
neophus775 neophus775Goldsrc mapper
What's the difference between them?
Posted 1 year ago2024-01-04 15:51:49 UTC
in Christmas themed maps & servers Post #348395
Ok thanks

how you created a server?
I have Half-Life (app id: 70) installed. It ships build 9911 with hl.so (SHA1:a9f5d8eef0b206524167028a792ddcbb28f746d2).
A fresh HLDS install via SteamCMD (app id: 90) ships build 9907 with hl.so (SHA1:fde38762b7258cdbb92b10802ecdf6b7dc280ccc).

I noticed that HLDS is usually behind the Half-Life client installation, so basically I have to run outdate dedicated servers.

Why?
Posted 1 year ago2024-01-03 17:49:55 UTC
in func_pushable with a model instead of a brush Post #348393
Thank you all. Using the model key did not work, but zhlt_usemodel did when pointing to a env_sprite. As you said, I could still move it with "use" but not by running into it. Funny, I didn't know that.

@Erty, I meant to say that I hadn't found the code for func_pushable in the SDK, but I've located it now, it's inside func_break.cpp as it inherits from func_breakable. I think it will be easier to modify it so the entity uses a .mdl than to keep using nasty hacks to achieve the same.
Posted 1 year ago2024-01-03 11:31:25 UTC
in New item changes players speeds for movements Post #348392
Update: so I entered
pPlayer->pev->maxspeed = X;
and this works, but I need the ducktime, forwardspeed etc. and those dont work this way :-( Any idea what I have to do please?
Posted 1 year 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 1 year ago2024-01-03 09:17:55 UTC
in func_pushable with a model instead of a brush Post #348390
Using the model key (or zhlt_usemodel targetting an env_sprite using the model for example) you can set most brush entities to use a model instead (remember to give them an ORIGIN brush where you want the model's origin to be), but that'll replace the entire brush model including the cliphulls resulting in it having no collisions as kimilil says.
(Also if using model you need to make sure the model is already precached in the map somewhere otherwise it'll crash).

Using game code would be the better way to go. That it's not already in the SDK doesn't mean it cannot be done.

You could implement a sort of "attach model" key directly in func_pushable for your mod that places a model at the origin and updating its position within the pushable's Move() method, or even more useful would be implementing an entity that can "parent" one entity to another so they move together, like trigger_setorigin in Sven Co-Op or the movewith (iirc) feature in Spirit of Half-Life.
It's possible the Featureful SDK already has some entity parenting feature that you could use, so that's worth checking out.
Posted 1 year 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 1 year ago2024-01-02 19:53:32 UTC
in func_pushable with a model instead of a brush Post #348388
Hi all, I know that func_pushable is a brush-based entity, but I'd like to know if there's a trick to use a .mdl instead, so the movable object would have more detail than anything made out of brushes in Hammer.

If the answer is no, could this be done in code? (Probably not, I don't recall seeing this in the SDK)
Thanks. You helped me!
Posted 1 year ago2024-01-02 15:00:12 UTC
in Christmas themed maps & servers Post #348386
Start Half-Life, open the server list with Find servers, look for „Christmas Coralie” and join.
Alternatively, open up the console (it's '~' or '0' NOT on the numpad) and enter the
connect addon.coralie.megabrutal.com:27019
command to join.

I'll be running it until Epiphany at least.
Posted 1 year ago2024-01-02 10:22:18 UTC
in New item changes players speeds for movements Post #348385
As a non-coder to my own suprise I was able to clone the longjum-item to get a new item for the player to pick up. The effects should be a changing of players speeds and heights but I dont know how to do that :-(
The relevant part of the class in items.cpp looks like this:

{
pPlayer->m_fMYITEM = true; // player now has the Item
???
MESSAGE_BEGIN(MSG_ONE, gmsgItemPickup, NULL, pPlayer->pev);
WRITE_STRING(STRING(pev->classname));
MESSAGE_END();
return true;
}

What do I need to enter for the ??? to change the cl_forwardspeed, flDuckTime etc please? I am unable to make the correct entries :-(
awkook's method is better done just using an invisible func_breakable (e.g. covered entirely in NULL texture), or completely replaced by a gibshooter, as it's only there to spawn gibs.

Either way, for the first step you'll use the func_train as both UrbaNebula and awkook already suggested (for how to use it, check the entity guide page UrbaNebula already linked). This will make a brush that moves any path you define for it (such as straight down in your case) and rest at the end.
If this is all you need, then no more is needed to be done.
Any step after that is for creating any secondary effects, for example the brush breaking into pieces when it hits the scientist (this is what awkook was explaining). If you wish to do this, there's at least 3 ways to trigger the effects:
  1. Timed from when the brush starts falling
  2. Using the Fire On Pass (message) key of a carefully placed path_corner
  3. Have the scientist trigger it using its Take Damage TriggerCondition
For the effects themselves, as I said earlier you could use an invisible func_breakable or a gibshooter to spawn whatever gibs you want (even from the ceiling where the brush starts falling from, to simulate it breaking from/through there). An env_render targetting the brush can be used to turn it invisible, or a trigger_relay can KillTarget it to remove it from the game, if you want your brush to "break" on collision. It's up to you to find out exactly what you want to happen and when.

1 Timed:

When you trigger the brush to start falling, have a delayed trigger for your effects. You can calculate this by measuring the distance between the brush' start position and its position when it collides with the scientist (for example 100 units). If you made it fall with a speed of 800 units/second, then the delay should be distance / speed = time. In this example, 100 / 800 = 0.125 seconds.

2 Fire On Pass:

path_corner has a Fire On Pass key that can be used to trigger something when a func_train, well, passes it. Just place it where the geometric center of the train would be when it collides with the scientist.

3 TriggerCondition:

If the scientist is never going to be hurt in any other way, you can use it's TriggerTarget key set to trigger the effects and TriggerCondition set to Take Damage (2) and it'll trigger the effects once the train starts hurting it.
Maybe easier for beginning would be a func_door. Put the brush where it should be at the beginning (above the sicientist), make it a func_door with a name, downwoards-direction, a 100-damage when blocked, high movement-speed and set the flags to 'start open' and 'monster cant'. Depending on the size and position you need to try out which entry in LIP works best. Set another brush close to the player, make it a trigger_once and enter the name of the func_door as target. When the player passes through it, the func_door will move down and crash the scientist.
Can you explain Better? I am very new here