For the generator, make 2 blocks in an enclosed space. For this example, we'll use 1x2x5 bricks, broad side facing eachother. Looks like this:
O O
O O
"O" being brick studs.
Now lets name the ones on the left "Fire" (We'll make it green") and the other one "Receive" (yellow")
O O
O O
First, we'll apply the following events to "Fire", or the green brick.
0 ☑ [400] OnRelay - Self - FireRelay
1 ☑ [] OnRelay - Self - SpawnProjectile [Pong] [X] [X] [X]*
*Mess around with the coordinates until they aim at "Receive". Only one coordinate should have a value, and it should take about a half of a second for it to hit it.
Projectile is optional, but I prefer pong.
Simple event, huh?
Make a separate brick of any type to start up the generator. I would prefer a JVS button, but the choice is up to you. Apply the following event:
0 ☑ [] OnActivate - NamedBrick [Fire] - FireRelay
Done. Now select the "receiver" brick and enter it's events. This one is a little bit harder. Add these:
0 ☑ [] OnProjectileHit - Self - FireRelay
1 ☑ [] OnRelay - Self - VCEModVariable [Ingots] [Add] [3]
2 ☑ [] OnProjectileHit - Projectile - Delete
For this example our variable is called "Ingots". Our generator is done! We'll test it later, now on to our power user!
We'll use a lamp for this example. Build your lamp, and enter the wrench menu for the brick you want the light on. Enter events. Apply the following:
0 ☑ [] OnActivate - Self - FireRelay
1 ☐ [5000] OnRelay - Self - FireRelay
2 ☑ [] OnRelay - Self - VCEIfVariable [<var:nb_receive:Ingots>] [>=] [3] [3 4]
3 ☑ [] OnVariableTrue - Self - SetLight [Player's Light]
4 ☑ [] OnVariableFalse - Self - SetLight [None]
5 ☑ [] OnVariableTrue - NamedBrick [Recieve] VCEModVariable [Ingots] [Subtract] [3]
6 ☑ [] OnVariableTrue - Self - VCEModVariable [lamp1power] [Set] [1]
7 ☑ [] OnVariableFalse - Self - VCEModVariable [lamp1power] [Set] 0
8 ☑ [] OnActivate - Self - VCEIfVariable [lamp1power] =/= 0 [9 9]
9 ☑ [] OnVariableFalse - Client - Bottomprint [The generator does not have enough power do supply this object!]
NEW: EXTRA
Checker
Want to check the number of ingots?
Make a brick (preferably a print ramp with a computer image) and event the following:
0 ☑ [] OnActivate - Client - Centerprint [The generator currently has <var:nb_receive:ingots> ingots stored!]
NEW: ANOTHER EXTRA
Manual Pump
Need power fast? Want to go green? This brick will add one ingot each time it is clicked for extra generation!
Make a brick (Do not use a JVS button that has to reload, use a regular brick!) and apply the following:
0 ☑ [] OnActivate - Self - VCEModVariable [<var:nb_receive:ingots> [Add] [1]
1 ☑ [] OnActivate - Client - Centerprint [Nice! You just manually generated an ingot!