Making an onClicked script: Difference between revisions

From Legacy Roblox Wiki
Jump to navigationJump to search
>Mindraker
No edit summary
>Mindraker
m (→‎Instructions: <br> grr)
Line 9: Line 9:
== Instructions ==
== Instructions ==


1) Insert a brick onto your map.
1) Insert a brick onto your map.<br>
2) Insert -> Object -> ClickDetector inside that same brick.
2) Insert -> Object -> ClickDetector inside that same brick.<br>
3) Insert a script inside that same brick, but not inside ClickDetector.
3) Insert a script inside that same brick, but not inside ClickDetector.<br>
4) Double-click the script, and insert the following:
4) Double-click the script, and insert the following:<br>


<pre>
<pre>
Line 24: Line 24:
   script.Parent.ClickDetector.MouseClick:connect(onClicked)
   script.Parent.ClickDetector.MouseClick:connect(onClicked)
</pre>
</pre>


==The Script==
==The Script==

Revision as of 08:55, 16 August 2008

Introduction

This is a FAQ that will teach you how to make a simple onClicked script. This FAQ will also explain how to put it to use.

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.

Instructions

1) Insert a brick onto your map.
2) Insert -> Object -> ClickDetector inside that same brick.
3) Insert a script inside that same brick, but not inside ClickDetector.
4) Double-click the script, and insert the following:

  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)

The Script

Here is the first part of the scripting:

 function onClicked()

This tells the game to set off the function when the brick is clicked on. (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, the script is 'connected':

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

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.