Objects randomly dissapearing

Yeah that is something I’ve never seen before. If you turned off streaming enabled it should be visible to both, even if the mesh of the trusspart or wedgepart has not loaded in yet, you should see it in the explorer clientside. The only thing I can think of at this point is to try this on another game with the same problematic models, and without any other game component. If that fails then I would be absolutely lost on what would be going on here. Maybe send through the model, so that I can test it out on my machine? You never know, it could be a machine-specific issue.

good luck!

I can’t replicate the issue at all. Its only when I turn streaming enabled on and set the target radius to 64 that it disappears (as intended).

i have its minimum at 300 and max at 1024

my settings:

image

Try setting StreamingIntegrityMode to PauseOutsideLoadedArea. This will pause your game if there are parts within your min radius that are not loaded. If your game pauses, then it is streaming enabled that’s removing these parts.

i have had that in the beginning, that was the first sighting of this issue. Then i moved to low memory

And they are loaded, i found out when your limb falls off, or you limb deforms, then i happens.

Want me to link the place?

That is interesting. It might be some script again if that is the case.

Sure.

TW: GORE AND BLOOD

Have fun :slight_smile:


nothing has changed

UPDATE: we found out disabling the gore makes it appear again, the issue is in the gore script.

Nope, its not that.

Issue still persists even after reviewing all scripts in my game. Is this an engine bug or what?

After playing the game, I really doubt its an engine issue. If you really can’t find where your code is going wrong, maybe clone the scripts and try and delete parts that might be problematic. At least then you can get an idea of where the problem lies. I don’t know how else I or anyone else can help if you can’t show any of your code since that is most likely causing your issue.

This is my last option, i will show you my code after.

UPDATE: I turned my blood script off right? Guess what, it doesnt dissapear, so its in the blood script im 99.56% sure

1 Like
local rs = game:GetService("ReplicatedStorage")
local plrs = game:GetService("Players")

local bloodRemote = rs.Communication.Server_Client.Blood_Server
local bloodEngine = require(rs.Modules_CLIENT.BloodEngine)

local plr = plrs.LocalPlayer
local char = plr.Character or plr.CharacterAdded:Wait()
local hum = char:FindFirstChildWhichIsA("Humanoid")

local blood_delay = .5
local dmg_per_limb = .5

local Engine = bloodEngine.new({
	Limit = 200,
	Type = "Decal",
	RandomOffset = false,
	OffsetRange = {-20, 10},
	DropletVelocity = {1, 2},
	DropletDelay = {0.05, 0.1},
	StartingSize = Vector3.new(2, 0.7, 1.8),
	Expansion = true,
	MaximumSize = 5,
})

local bleeding = false
local co1 = nil -- personalBleeding

local cos = {} -- other bleeding

local function stopOtherBleeding(person)
	cos[person].co2 = nil
	cos[person].bleeding = false
	if cos[person].died then
		cos[person].died:Disconnect()
	end
	table.clear(cos[person])
end

local function onEvent(object:Part, amount, arg, person:Player)
	if object and object:IsA("Part") and not arg then
		Engine:EmitAmount(object, nil, amount)
	elseif object and arg == "IndividualBleeding" and person and plr ~= person then
		local personalBleeding = true
		local personHum = person.Character:FindFirstChildWhichIsA("Humanoid")
		local co2 = coroutine.wrap(function()
			while personalBleeding do
				Engine:Emit(object, nil)
				task.wait(blood_delay)
			end
		end)
		cos[person] = {
			["co2"] = co2;
			["bleeding"] = true;
			["died"] = personHum.Died:Connect(function()
				stopOtherBleeding(person)
			end);
		}
		co2()
	elseif object and arg == "StopIndividualBleeding" and person then
		if cos[person] then
			stopOtherBleeding(person)
		end
	end

	if arg == 'Bleed' then
		bleeding = true
		co1 = coroutine.wrap(function()
			while bleeding do
				Engine:Emit(object, nil)
				hum:TakeDamage(dmg_per_limb)
				task.wait(blood_delay)
			end
		end)
		co1()
	elseif arg == "StopBleeding" then
		bleeding = false
		coroutine.close(co1)
	end
end

bloodRemote.OnClientEvent:Connect(onEvent)
updated(solution)
local rs = game:GetService("ReplicatedStorage")
local plrs = game:GetService("Players")

local bloodRemote = rs.Communication.Server_Client.Blood_Server
local bloodEngine = require(rs.Modules_CLIENT.BloodEngine)

local plr = plrs.LocalPlayer
local char = plr.Character or plr.CharacterAdded:Wait()
local hum = char:FindFirstChildWhichIsA("Humanoid")

local blood_delay = .5
local dmg_per_limb = .5

local Engine = bloodEngine.new({
	Limit = 200,
	Type = "Decal",
	RandomOffset = false,
	OffsetRange = {-20, 10},
	DropletVelocity = {1, 2},
	DropletDelay = {0.05, 0.1},
	StartingSize = Vector3.new(2, 0.7, 1.8),
	Expansion = true,
	MaximumSize = 5,
})

local bleeding = false
local co1 = nil -- personalBleeding

local cos = {} -- other bleeding

local function stopOtherBleeding(person)
	cos[person].co2 = nil
	cos[person].bleeding = false
	if cos[person].died then
		cos[person].died:Disconnect()
	end
	table.clear(cos[person])
end

local function onEvent(object:Part, amount, arg, person:Player)

	if object and object:IsA("Part") and not arg then
		Engine:EmitAmount(object, nil, amount)
	elseif object and arg == "IndividualBleeding" and person and plr ~= person then
		local personalBleeding = true
		local personHum = person.Character:FindFirstChildWhichIsA("Humanoid")
		local co2 = coroutine.wrap(function()
			while personalBleeding do
				Engine:Emit(object, nil)
				task.wait(blood_delay)
			end
		end)
		cos[person] = {
			["co2"] = co2;
			["bleeding"] = true;
			["died"] = personHum.Died:Connect(function()
				stopOtherBleeding(person)
			end);
		}
		co2()
	elseif object and arg == "StopIndividualBleeding" and person then
		if cos[person] then
			stopOtherBleeding(person)
		end
	end
	
	local co31 = nil -- died connection of the local client, not another guy

	if arg == 'Bleed' then
		bleeding = true
		co1 = coroutine.wrap(function()
			while bleeding do
				Engine:Emit(object, nil)
				hum:TakeDamage(dmg_per_limb)
				task.wait(blood_delay)
			end
		end)
		co31 = hum.Died:Connect(function()
			bleeding = false
			coroutine.close(co1)
			co31:Disconnect()
			co31 = nil
		end)
		co1()
	elseif arg == "StopBleeding" then
		bleeding = false
		if co31 then
			co31:Disconnect()
			co31 = nil
		end
		coroutine.close(co1)
	end

end

bloodRemote.OnClientEvent:Connect(onEvent)

good luck decoding this, i dont understand my own script. @LE4FBUG.

What was the problem? Whenever the plr died, the coroutine kept going and going, and that caused an issue. Idk what tho, i just put it so when the plr died he stopped the coroutine.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.