Created 3 years ago2021-01-13 21:05:33 UTC by Solokiller
allow_follow
being set on script entitiesenv_spritetrain
sounds when upgrading maps (same as func_train
)config.cfg
file with correct key bindingsMapUpgraderDocGenerator
: converts XML documentation generated by C# compiler for the MapUpgrader.Upgrades
library to Markdown for use in documentationnonfunctional-prototype-scripting
.halflife_updated_addon/map/graphs
)O
to match Opposing Forcemonster_generic
CBaseMonster
from being +USEable)json_debug
cvar (redundant, server commands require rcon access)MAX_MAP_PLANES
limitSo even with all these changes to the code, there's still no way to bring back gunshot impact sounds for the player's bullets? And a cvar to enable / disable bhop cap would be very welcome for someone like myselfI've added a cvar
sv_allowbunnyhopping
to control the bunny hopping limiter. That can be used to allow unconstrained movement speed.Gunshot impacts aren't possible without removing weapon prediction.Ahhh I see. That's a darn shame, I loved that sound lol. And you're once again an absolute legend for adding that bunnyhop cvar. I made a video about your unified SDK btw, just released it today. https://www.youtube.com/watch?v=EzvoI6nFvf8
Ahhh I see. That's a darn shame, I loved that sound lol. And you're once again an absolute legend for adding that bunnyhop cvar. I made a video about your unified SDK btw, just released it today. https://www.youtube.com/watch?v=EzvoI6nFvf8That's nice. Thanks for making a presentation of what the project does.
sv_allowbunnyhopping
to control whether the bunny hopping limiter is enableddelta.lst
when building client or server to ensure mods have correct delta.lst
file (defines networking properties for data types)func_tank_of
and other OF tank entities firing many attacks at the same time at players if they hide behind obstacles for a few secondsSchedule_t
, CBaseMonster
& CCineMonster
to make it easier to debug NPCs and scripts using the Visual Studio debuggerfunc_tank
entities not respecting persistence and not being able to switch targets properly if target is behind coverfunc_tank
and other tank entities firing many attacks at the same time at players if they hide behind obstacles for a few seconds (same fix as in Opposing Force, applies to regular tank entities here)sv_infinite_ammo
& sv_bottomless_magazines
to override skill variablesofboot1
after loading a save gamefunc_tank
entities using persistence keyvalue (func_tank_of
entities do not use this keyvalue and act as though it is set to 0)ba_power2
of5a2
not playing eat scripts (Xen area reached via Displacer)ba_outro
having wrong body groupsfidgetnip
animation leaving the left hand in an awkward position at the end of the animationportal
animation cutting off dialogue due to sounds played on voice channel (affects c3a2d
, final Lambda Core level)deadhaz.mdl
helmet submodel including Gordon's head causing his glasses and ponytail to clip through the helmet.map
file having NaN
values.delta.lst is missing
ITEM_FLAG_SELECTONEMPTY
flag to weapons that regenerate ammo to always be selectable and never show as red in hud historyambient_music
not being triggerable in radius modesv_load_all_maps
, automatically load first map & print more info, more consistent and robust behavior and added stop_loading_all_maps
command to stop this processstd::regex
MaxRange
(far Z clipping plane) in c2a2a
to fix graphical issuesba_canal1
waiting for 5 seconds before attackingbell1.wav
sound and pitch so the bell sound sounds like it does in the original gamehlu_technology_demonstration
map (unfinished, only contains a zoo of various NPCs and NPC models at this time)host_framerate
to manipulate the framerate to run very high.We've Got Hostiles
in the area after the first elevator and a soft-lock that sometimes occurs in Lambda Core
level A, where the scientist holding the shotgun fails to move to the button to open the door.float VectorToYaw(const Vector& forward)
{
if (forward[1] == 0 && forward[0] == 0)
{
return 0;
}
float yaw = atan2(forward[1], forward[0]) * 180 / PI;
if (yaw < 0)
{
yaw += 360;
}
return yaw;
}
The fixed code looks like this:
float VectorToYaw(const Vector& forward)
{
if (forward[1] == 0 && forward[0] == 0)
{
return 0;
}
float yaw = static_cast<int>(atan2(forward[1], forward[0]) * 180 / PI);
if (yaw < 0)
{
yaw += 360;
}
return yaw;
}
The lack of a cast to int caused yaw angles to be calculated slightly differently compared to the engine.std::round
: https://learn.microsoft.com/en-us/cpp/c-language/conversions-from-floating-point-types?view=msvc-170Lambda Core
occurrence didn't always happen, but the We've Got Hostiles
one did.sv_load_all_maps
command has been modified a bit to deal with an engine bug that causes the game to crash or shutdown partway through loading all maps.sv_stop_loading_all_maps
has been added to stop this process if necessary.
steam_legacy
branch to run mods. You can access it by right-clicking Half-Life in Steam, opening Properties
and going to the Betas
tab:
Make sure to change Half-Life's branch even if you're trying to run another game like Counter-Strike because all GoldSource engine games and mods use Half-Life's engine files. Once you've switched it make sure Half-Life is up-to-date (you may need to launch it or press the Update button) and then you should be able to run other games/mods.steam_legacy
branch to develop, test and play mods..clang-format
file from Half-Life Updated and format all files (script in the Unified SDK or a Visual Studio extension can do this among other tools). Needed to avoid massive amounts of merge conflicts caused by whitespace and newline changessteam_legacy
until then.else if (ScreenWidth < 2560)
to else if (ScreenWidth <= 2560)
It works quite well BUT it seems to only work in a multiplayer session. Where would one make weapon function differently independently of multiplayer or not? The files are satchel.cppWeapon logic runs on both the client and server. Adding a cvar that only works on the client side will cause inconsistencies.
FCVAR_USERINFO
. This is how the model
cvar syncs with the server (see CHalfLifeTeamplay::ClientUserInfoChanged
for an example). You can then check the userinfo buffer on the server side and the cvar on the client side to make it behave as desired. But while it will work the user info buffer is pretty small and a long cvar name like cl_satchelanniversary
is expensive to put in there.I'm trying to re-introduce the chainsaw crowbar bug as a toggle-able feature as well (sv_turbobar)Making the crowbar only chainsaw corpses requires the bugged logic to be added back exactly as it was before. The Unified SDK already has this as an option so you can see how it was done there.
Though when turned on it's chainsawing EVERYTHING, not just corpses as I want it to do. But it's pretty damn funny.
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.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.httpstop
console command to clear the list of maps which have been downloaded using FastDL.steam_legacy
branch.Thank you for all the updates youve done so far!You're very welcome.
I don't fully understand the unified SDK, is it just a compilation of the fixes of all other 3 repos (HL, OF, BS) in one, or is it something entirely different?The project readme explains what it is: https://github.com/twhl-community/halflife-unified-sdk#half-life-unified-sdk
Which one should we be using for modding?
So essentially the USDK bundles the fixes of the base game plus the expansions in one solution in case someone wants to make a mod that uses e.g. stuff from vanilla HL and Opposing Force at the same time, right? Plus CMake support.Yes, but it also adds a couple new features like a new sound system with increased limits. It's basically an expert SDK for when you want to go beyond some of the engine's limits but it'll require a good understanding of C++ to deal with any potential problems.
Could I use the SDK to make my maps? or would that be unnecesarryYou don't need the SDK to map for HL. Only if you want to develop new functionality that goes beyond the current HL code. Some mods do this, but not all, most stuff I can think of can be done in Hammer with proper use of entities.
So, from now on it's up to TWHL to keep updating the projects, right? Do they have plans to implement the fixes to the updated SDK that Valve is supposed to release some day?I created issues to track this work:
Will you contribute further, or have you become tired of developing this project? (I guess I would, it's a lot of work what you did).I've more than accomplished my goals with the work i've done, it's time to let others manage things. There are other SDKs that also offer improvements and features, so there's no shortage of people to make something like this.