Warning
This is a pre-release for the upcoming 0.8
This release does not include all the changes that were planned to be inside of the 0.8
though it still has a lot of things.
Mainly this release is aimed to be a stable version of the current changes and anything unstable was either fixed or disabled.
This Update
- [+] Any files in lua/autorun/_holylua/
are loaded by HolyLib on startup.
- [+] Added a new module luathreads
- [+] Added NS_
enums to gameserver
module.
- [+] Added missing CNetChan:Shutdown
function to the gameserver
module.
- [+] Added LZ4 compression for newly implemented net channel.
- [+] Added util.CompressLZ4
& util.DecompressLZ4
to util
module.
- [+] Implemented a custom CNetChan
for faster Server <-> Server connections. See #42
- [+] Added HolyLib.ReceiveClientMessage
to HolyLib
module.
- [+] Added physenv.IVP_NONE
flag to physenv
module.
- [+] Added a few stringtable related functions to the stringtable
module.
- [+] Added a new hook HolyLib:OnClientTimeout
to the gameserver
module.
- [+] Optimized GM:PlayerCanHearPlayersVoice
by only calling it for actively speaking players/when a voice packet is received.
- [+] Added voicechat.LoadVoiceStreamFromWaveString
, voicechat.ApplyEffect
, voicechat.IsPlayerTalking
& voicechat.LastPlayerTalked
to the voicechat
module.
- [+] Added VoiceStream:ResetTick
, VoiceStream:GetNextTick
, VoiceStream:GetCurrentTick
, VoiceStream:GetPreviousTick
to the voicechat
module.
- [+] Added util.FancyJSONToTable
& util.AsyncTableToJSON
to the util
module.
- [+] Added gameserver.GetClientByUserID
to the gameserver
module.
- [+] Added a config system allowing one to set convars without using the command line.
- [+] Added IPhysicsEnvironment:SetInSimulation
to the physenv
module.
- [+] Added HttpResponse:SetStatusCode
to httpserver
module. (See #62)
- [+] Added HttpRequest:GetPathParam
to httpserver
module. (See #63)
- [+] Added bitbuf.CreateStackReadBuffer
& bitbuf.CreateStackWriteBuffer
to bitbuf
module.
- [+] Added a fallback method for HolyLib's internal Util::PushEntity
function in case a Gmod update breaks our offsets which previously lead to undefined behavior
- [#] Added some more safeguards to IPhysicsEnvironment:Simulate
to prevent one from simulating a environment that is already being simulated.
- [#] Highly optimized util
module's json code to be noticably faster and use noticably less memory.
- [#] Better support for multiple Lua states
- - This required most of the lua setup to be changed >:(
- [#] Solved a few possible stack issues
- [#] Fixed a crash after a map change. See #41
- [#] Update internal netadr
stuct to now properly support loopback
and localhost
inputs for IP's.
- [#] Possibly fixed memory issues caused by IGModAudioChannel
's being deleted & having undefined behavior.
- [#] Fixed HolyLib:OnPhysicsLag
possibly being called recursively causing a crash.
- [#] Fixed every function from the physenv
module not accepting gmod's PhysObj.
- [#] Fixed a crash caused by comcommand
module since Gmod's ConCommand_IsBlocked
changed. (See #45)
- [#] Fixed a few Windows issues.
- - [+] Added support for the stringtable
module on Windows.
- - [#] Fixed entitylist not being loaded on Windows
- [#] Solved a few Bass bugs.
- [#] Fixed possible undefined behavor & two buffer overflows in gameserver
module.
- [#] Updated VoiceStream
file structure to also save the server tickrate and include a file version.
- - The VoiceStream
now properly updates the tickCount for the saved VoiceData
to scale the tickCount when the server changed tickrate which should ensure the audio remains usable.
- [#] Fixed a issue with the gameserver
moduel causing random Lost Connection
disconnects (See #51)
- [#] Extented networking
module to include some new things.
- - Made some optimization for PackEntities_Normal
reducing overhead
- - Slightly optimized our own implementation of CServerGameEnts::CheckTransmit
- - Added holylib_networking_fastpath
which will use a transmit cache for CServerGameEnts::CheckTransmit
as a noticable optimization.
- - Added holylib_networking_maxviewmodels
allowing one to limit view models to 1
for each player instead of each having 3
of which 2
often remain unused.
- - Added holylib_networking_transmit_all_weapons
- - Added holylib_networking_transmit_all_weapons_to_owner
- [#] Slightly improved memory usage & performance for UserData created by HolyLib
- [#] Updated VoiceStream
Load/Save
function to be able to read/write .wav
files
- [#] Fixed IModule::ServerActivate
not being called when being loaded as a binary module
- [#] Fixed HolyLib:ProcessConnectionlessPacket
being called for SourceTV packets
- [#] Fixed gameserver.SendConnectionlessPacket
crashing instead of throwing a lua error when NET_SendPacket couldn't be loaded
- [-] Removed some unused code of former fixes that were implemented into Gmod
You can see all changes/commits here:
Release0.7...main
Existing Lua API Changes
- [+] Added third protocolVersion
argument to gameserver.CreateNetChannel
- [+] Added fourth socket
(use NS_
enums) argument to gameserver.CreateNetChannel
& gameserver.SendConnectionlessPacket
- [+] Added second and thrid arguments to HolyLib:OnPhysicsLag
providing the entities it was working on when it triggered.
- [+] Added voicechat.SaveVoiceStream
4th argument returnWaveData
(previously the 4th argument was async
but that one was removed)
- [+] Added directData
argument to VoiceStream:GetData
, VoiceStream:GetIndex
, VoiceStream:SetIndex
and VoiceStream:SetData
- [+] Added overflow checks for gameserver.BroadcastMessage
, CNetChan:SendMessage
and CBaseClient:SendNetMsg
when you try to use a overflowed buffer
- [+] Added a few more arguments to HolyLib:OnPhysicsLag
like phys1
, phys2
, recalcPhys
, callerFunction
and the arguments ent1
& ent2
were removed since you can call PhysObj:GetEntity
- [#] Fixed addonsystem.ShouldMount
& addonsystem.SetShouldMount
workshopID
arguments being a number when they should have been a string.
- [#] Changed VoiceData:GetUncompressedData
to now returns a statusCode/a number on failure instead of possibly returning a garbage string.
- [#] Limited HttpServer:SetName
to have a length limit of 64
characters.
- [#] Fixed IGModAudioChannel:IsValid
throwing a error when it's NULL instead of returning false.
- [#] Fixed HttpServer:SetWriteTimeout
using the wrong arguments. (See #65)
- [#] Fixed bf_read:ReadBytes
and bf_read:ReadBits
both failing to push the string properly to lua.
- [#] Changed voicechat.SaveVoiceStream
& voicechat.LoadVoiceStream
to remove their 4th sync
argument, if a callback is provided it will be async, else it'll run sync
- [-] Removed VoiceData:GetUncompressedData
decompress size argument
- [-] Removed CBaseClient:Transmit
third argument fragments
.
- [-] Removed gameserver.CalculateCPUUsage
and gameserver.ApproximateProcessMemoryUsage
since they never worked.
QoL updates
- [#] Changed some console message to be more consistent.
- [#] Solved a possible crash caused by a CGameClient
disconnecting after g_Lua
became NULL