fix(component): the zone control object constructs as on live

Minigame control (50) is an activity component in the client
(LWOMinigameComponent) and is made from the registry, so the zone control
object (LOT 2365, registry id 0) has one; it sends what an activity sends
(dirty, no players), not a fixed 0x40000000 (which nothing sent: the old
id > 0 check never made it). The zone's script on that object is server
only: the client makes no script component for it, so it sends nothing.
DLU's zone control construction now equals live's byte for byte (209
captures, e.g. GruntMonkey world2); the decoder reads 50 as an activity.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-10-01 14:29:02 -05:00
parent 0e611bc76c
commit 0138d45c58
7 changed files with 18 additions and 16 deletions

View File

@@ -20,6 +20,8 @@ ScriptComponent::ScriptComponent(Entity* parent, const int32_t componentID, cons
}
void ScriptComponent::Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) {
// A server-only script (the zone control object's) sends nothing: the client made no script component for it
if (!m_Serialized) return;
if (bIsInitialUpdate) {
const auto& networkSettings = m_Parent->GetNetworkSettings();
auto hasNetworkSettings = !networkSettings.values.empty();