HopperBins: Difference between revisions

From Legacy Roblox Wiki
Jump to navigationJump to search
>Zuka
mNo edit summary
>Mindraker
m cats
Line 9: Line 9:


==What to do with them?==
==What to do with them?==
Well, the Selected and Deselected events have an argument, called a MOUSE object. Here are it's important events and properties.
Well, the Selected and Deselected events have an argument, called a MOUSE object. Here are its important events and properties.


'''Events'''
'''Events'''
Line 28: Line 28:
#Icon -- the cursor image path
#Icon -- the cursor image path


==What do I do with that stuff?==
==What do I do with it?==
You can use it to do almost anything! You can spawn a projectile when Button1Down is fired, have it spawn in the direction the mouse is from your head, and move in the direction of the mouse.
You can use it to do almost anything! You can spawn a projectile when Button1Down is fired, have it spawn in the direction the mouse is from your head, and move in the direction of the mouse.


Line 93: Line 93:
</pre>
</pre>


Pretty cool, right? You can easily manipulate this script to work for anything.
You can easily manipulate this script to work for anything.


'''Ever helpful, '''
[[Category:ROBLOX Lua Objects]]
[[User:Zuka|Zuka]] 22:21, 11 April 2008 (CDT)--
[[Category:Scripting Tutorials]]

Revision as of 13:49, 3 July 2008

What is a HopperBin?

HopperBins are considered old now. They were the first ways to make a weapon, a utility tool, or anything you could really think of. They're mainly used for getting input from the player, and doing something with that input.

Some useful things to know

You should know the events of a HopperBin. The special ones are as follows:

  1. Selected
  2. Deselected

What to do with them?

Well, the Selected and Deselected events have an argument, called a MOUSE object. Here are its important events and properties.

Events

  1. Button1Down
  2. Button1Up
  3. Button2Down -- current un-operational
  4. Button2Up -- also non-working
  5. WheelForward -- non-working
  6. WheelBackward -- non-working

Properties

  1. Hit -- CFrame value
  2. Target -- object value
  3. X -- mouse's X position on the screen.
  4. Y -- mouse's Y position on the screen.
  5. ViewSizeX -- your screen's X size.
  6. ViewSizeY -- your screen's Y size.
  7. Origin -- CFrame value
  8. Icon -- the cursor image path

What do I do with it?

You can use it to do almost anything! You can spawn a projectile when Button1Down is fired, have it spawn in the direction the mouse is from your head, and move in the direction of the mouse.

Here's an example of a Boulder Summoner.

lifetime = 5 -- how long the boulder stays there. 5 is a good value.

function onButton1Down(mouse)
	local b = Instance.new("Part")
	b.BrickColor = BrickColor.new(217)
	b.Position = mouse.Hit.p
	b.Size = Vector3.new(5, 5, 5)
	b.Shape = 0
	b.Parent = game.Workspace
	b.Velocity = (script.Parent.Parent.Parent.Character.Head.Position - mouse.Hit.p).unit * -50 + Vector3.new(0, 10, 0)
	-- pushes it away from you, and pops it up a bit, making it seem to come out of the ground.
	game:GetService("Debris"):AddItem(b, lifetime)
end

function onSelected(mouse)
	mouse.Button1Down:connect(function() onButton1Down(mouse) end) -- Button1Down doesn't come with a mouse, seeing as its
	-- an event of the mouse itself. We need to give the function the mouse object to work off of.
end

script.Parent.Selected:connect(onSelected) -- Selected comes with a mouse.

Thats a simple thing to spawn a boulder wherever you click. It also gets rid of the boulder after a set amount of time.

Okay, what else?

Not much, you just need to understand how things work in ROBLOX Lua. There are PLENTY of different weapons and HopperBins to learn off of.

More examples

This tutorial wouldn't be complete without some decent examples.

Simple Toggle Utility

Assuming you have a brick named "Toggle", and it has a BoolValue in it named "On/Off", you can use this.

brickName = "Toggle"
valueName = "On/Off"

function onButton1Down(mouse)
	local targ = mouse.Target
	if targ~=nil then
		if targ.Name == brickName then
			if targ:findFirstChild(valueName)~=nil then
				if targ[valueName].Value == true then
					targ[valueName].Value = false
				else
					targ[valueName].Value = true
				end
			end
		end
	end
end

function onSelected(mouse)
	mouse.Button1Down:connect(function() onButton1Down(mouse) end)
end

script.Parent.Selected:connect(onSelected)

You can easily manipulate this script to work for anything.