From de6e783c20e8b78d02b0786af91e9a2e57685bac Mon Sep 17 00:00:00 2001 From: MysterD Date: Mon, 27 Mar 2023 12:29:20 -0700 Subject: [PATCH] Fix some sync ID bugs --- src/pc/lua/utils/smlua_obj_utils.c | 1 + src/pc/network/packets/packet_spawn_objects.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/pc/lua/utils/smlua_obj_utils.c b/src/pc/lua/utils/smlua_obj_utils.c index 2dff1e9c6..dd1dad3c1 100644 --- a/src/pc/lua/utils/smlua_obj_utils.c +++ b/src/pc/lua/utils/smlua_obj_utils.c @@ -67,6 +67,7 @@ static struct Object* spawn_object_internal(enum BehaviorId behaviorId, enum Mod if (doSync && so) { so->extendedModelId = modelId; so->o = obj; + so->behavior = (BehaviorScript*) behavior; struct Object* spawn_objects[] = { obj }; u32 models[] = { loadedModelId }; diff --git a/src/pc/network/packets/packet_spawn_objects.c b/src/pc/network/packets/packet_spawn_objects.c index 84e06f0ec..a3e035970 100644 --- a/src/pc/network/packets/packet_spawn_objects.c +++ b/src/pc/network/packets/packet_spawn_objects.c @@ -189,11 +189,16 @@ void network_receive_spawn_objects(struct Packet* p) { // correct the temporary parent with the object itself if (data.parentId == (u32)-1) { o->parentObj = o; } - if (o->oSyncID != 0 && o->oSyncID >= SYNC_ID_BLOCK_SIZE) { + if (o->oSyncID != 0) { // check if they've allocated one of their reserved sync objects struct SyncObject* so = sync_object_get(o->oSyncID); + if (!so) { + sync_object_set_id(o); + so = sync_object_get(o->oSyncID); + } if (so) { so->o = o; + so->behavior = behavior; so->extendedModelId = data.extendedModelId; so->txEventId = 0; for (s32 j = 0; j < MAX_PLAYERS; j++) {