Making an onClicked script: Difference between revisions

From Legacy Roblox Wiki
Jump to navigationJump to search
>Dr01d3k4
No edit summary
>Zitbam
Line 46: Line 46:
Nothing here yet... I may add some more stuff here in the future, like how to make button operated elevators, etc.
Nothing here yet... I may add some more stuff here in the future, like how to make button operated elevators, etc.


EDIT by dr01d3k4
EDIT by some person
 
==Finding Clicker==
==Finding Clicker==
Even though ClickDetector doesn't have any function arguements so you can't tell who clicked it, it is possible. This is how:
Even though ClickDetector doesn't have any function arguements so you can't tell who clicked it, it is possible. This is how:

Revision as of 03:12, 30 June 2008

Intro

This is a FAQ that will teach you how to make a simple onClicked script. What is onClicked? I'll explain...

What is onClicked?

Not long ago, Roblox released a new feature known as a Click Detector. If you put it inside a brick it will detect when it is clicked. This FAQ will explain how to put it to use.

Getting Started

First things first, you have to put the ClickDetector inside the brick. Click on the brick, then click on 'Insert" on the toolbar and then click on "Object". Then look for "Click Detector" in the window that pops up. Voila, you now have your Click Detector. Now, put in a script.

The Script

Finally, the scripting! Here is the first part:

 function onClicked()

This tells the game to set off the function when the brick is clicked on. Next we have to put in the function (this is only an example, so feel free to change this part if you want)

 	local x = (math.random(0,10) * 0.1)
 	local y = (math.random(0,10) * 0.1)
 	local z = (math.random(0,10) * 0.1)
 	script.Parent.Color = Color3.new (x, y, z)

This tells the game to change the block's color to a random color.

Finally, you need to 'connect' the script.

 script.Parent.ClickDetector.MouseClick:connect(onClicked)

And now you're done! The finished script should look like this:

 function onClicked()
 	local x = (math.random(0,10) * 0.1)
 	local y = (math.random(0,10) * 0.1)
 	local z = (math.random(0,10) * 0.1)
 	script.Parent.Color = Color3.new (x, y, z)
 end
 
 script.Parent.ClickDetector.MouseClick:connect(onClicked)


Other Stuff

Nothing here yet... I may add some more stuff here in the future, like how to make button operated elevators, etc.

EDIT by some person

Finding Clicker

Even though ClickDetector doesn't have any function arguements so you can't tell who clicked it, it is possible. This is how:

Method 1

This will make it so only one person can click it:

1.Make a part. Name it what you like 2.Put in 2 Scripts. Name one "CheckScript" and the other "MakeScript" 3.Insert a StringValue. Name it "Owner". Change the value to who you want to click on it. 4.Put a ClickDetector into the part, set the MaxActivationDistance to 0 5.In the "CheckScript", paste this:

dist = 10 --change this to how far away you can be

while true do
wait(1)
local p = game.Players:GetChildren()
for i = 1, #p do
if (p[i].Name == script.Parent.Owner.Value) then
if (game.Workspace:findFirstChild(p[i].Name) ~= nil) then
if (p[i].Character.Torso.Position - script.Parent.Position).magnitude < dist then
script.Parent.ClickDetector.MaxActivationDistance = dist
else
script.Parent.ClickDetector.MaxActivationDistance = 0
end
end
end
end 

6.In the "MakeScript", paste this:

dist = 10 --change this to how far away you can be

function onClicked()
	local p = game.Players:GetChildren()
	for i = 1, #p do
		if (p[i].Name == script.Parent.Owner.Value) then
			if (p[i].Character.Torso.Position - script.Parent.Position).magnitude < dist then
			--Put Stuff Here
		end
	end 
end

script.Parent.ClickDetector.MouseClick:connect(onClicked) 

Now it should do what you put after "--Put Stuff Here" in the "MakeScript" to the person who is in the owner value.

Method 2

This method will make it so only a team can click on it. 1.Make a part. Name it what you like 2.Put in 2 Scripts. Name one "CheckScript" and the other "MakeScript" 3.Put a ClickDetector into the part, set the MaxActivationDistance to 0 4.In the "CheckScript", paste this:

dist = 10 --change this to how far away you can be
teamcolor = BrickColor.new(21> --change this to the team

while true do
wait(1)
local p = game.Players:GetChildren()
for i = 1, #p do
if (p[i].TeamColor == teamcolor) then
if (game.Workspace:findFirstChild(p[i].Name) ~= nil) then
if (p[i].Character.Torso.Position - script.Parent.Position).magnitude < dist then
script.Parent.ClickDetector.MaxActivationDistance = 10
else
script.Parent.ClickDetector.MaxActivationDistance = 0
end
end
end
end
end 

5.In the "MakeScript", paste this:

dist = 10 --change this to how far away you can be
teamcolor = BrickColor.new(21> --change this to the team

function onClicked()
	local p = game.Players:GetChildren()
	for i = 1, #p do
		if (p[i].TeamColor == teamcolor) then
			if (p[i].Character.Torso.Position - script.Parent.Position).magnitude < dist then
				--Put Stuff Here
			end
		end
	end 
end

script.Parent.ClickDetector.MouseClick:connect(onClicked) 

Now it should do what you put after "--Put Stuff Here" in the "MakeScript" to the person/team.