Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

GetPlayerFromCharacter() not working?

So this script won't work ;-;

REMEMBER to fix the script in a way I can understand. Some professionals like to add extra things to throw me off.

script.Parent.Touched:Connect(function(dar)
if game.Players:GetPlayerFromCharacter(dar) then
local f = Instance.new("Fire")
f.Parent = dar
print("hmm ok")
end
end)

2 comments

0

Well, the first thing you should know is that Touched passes the part that touched the part firing the event as its argument. Secondly, you're attempting to make a Fire instance in the part that touched the firing part.

0

do dar.Parent for the getplayerfromcharacter because of the reasoning above ^

1 answer

✓ Accepted answer

GENERAL PRACTICE

Use :GetService() to retrieve the Players Service

ISSUES

The parameter of the .Touched event is the part that touched the connecting part. With this in mind, if the player touches this part, then the "dar" is whatever part of the character touched the script's parent, and "dar.Parent" is the Character Model of the Player

The :GetPlayerFromCharacter() function uses the character model to find the player, so you'll need to change the parameter of the :GetPlayerFromCharacter from "dar" (the part) to dar.Parent (the character model)

REVISED SERVER / LOCAL SCRIPT

script.Parent.Touched:Connect(function(dar)
	if game:GetService("Players"):GetPlayerFromCharacter(dar.Parent) then
		local f = Instance.new("Fire")
		f.Parent = dar
		print("hmm ok")
	end
end)

This script will place fires onto every part that touches it, if you only want a single fire to be created on each part, you can use an if-then to check that there is not already a fire on the part.

SUGGESTED SERVER / LOCAL SCRIPT

script.Parent.Touched:Connect(function(dar)
	if game:GetService("Players"):GetPlayerFromCharacter(dar.Parent) then
		if dar:FindFirstChild("Fire") == nil then
			local f = Instance.new("Fire")
			f.Parent = dar
			print("hmm ok")
		end
	end
end)

2 comments

0

I thought GetPlayerFromCharacter is the same as saying "if the character model from the character is true then" Am I wrong? Please help :C

0

You're kind of right, if you intend on using this method, the GetPlayerFromCharacter checks that there is a player associated with the Character, however, normally people check that the touched object's parent contains a Humanoid.

This discussion is preserved as it was. New answers, comments, and votes are closed.