HopperBins
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:
- Selected
- Deselected
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.
Events
- Button1Down
- Button1Up
- Button2Down -- current un-operational
- Button2Up -- also non-working
- WheelForward -- non-working
- WheelBackward -- non-working
Properties
- Hit -- CFrame value
- Target -- object value
- X -- mouse's X position on the screen.
- Y -- mouse's Y position on the screen.
- ViewSizeX -- your screen's X size.
- ViewSizeY -- your screen's Y size.
- Origin -- CFrame value
- Icon -- the cursor image path
What do I do with that stuff?
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)
Pretty cool, right? You can easily manipulate this script to work for anything.
Ever helpful, Zuka 22:21, 11 April 2008 (CDT)--