Code | Explanation |
**make the vendor | |
inst | |
new: simp 2 23 10 "fishbowl" 2 0 5000 | Create new simple object |
attr 199 | Give it attributes that allow it to be picked up and activated by the hand. Responds to gravity and boundaries. |
perm 60 | A permeability that will allow it to sit on wooden platforms (rather than fall through them) |
elas 0 | Elasticity of 0% |
fric 100 | Friction of 100% |
accg 3 | Acceleration due to gravity of 3 |
mvto 5000 3400 | Move to the corridor area of the ship |
cmrt 0 | Move the camera to look at the object |
*****vendor activate | |
scrp 2 23 10 1 | This is the activate 1 script for the vendor created above |
*make the bowl animate | |
anim [0 1 0 1 0 1 0 1 0 1 0] | Animate the bowl |
*get the coordinates for the bowl | This part gets some world coordinates from the bowl - the food can then be created at this position later in the script |
setv va00 posl | Get the left position of the bowl |
addv va00 30 | Add 30 to the left position (makes the coordinate further to the right on the screen) |
setv va01 post | Get the top position of the bowl |
addv va01 10 | Add 10 to the top position (makes the coordinate further down screen) |
*produce something here! | |
inst | make the rest of the script run instantly |
*cheesy-food | |
new: simp 2 11 1000 "infinite_cheese_machine" 2 44 4900 | Create new simple object. This cheese food is the same one created in a previous tutorial |
attr 195 | |
bhvr 48 | |
elas 30 | |
fric 50 | |
accg 3 | |
mvto va00 va01 | Move it to the position calculated. |
*give it some velocity | |
velo rand -10 10 rand -15 -20 | Give it some velocity - this will make it come flying out of the top of the vendor. In this case we're using random values for both the X and Y velocities. |
*give it a tick | |
tick 8 | Give it a small tick (this is purely used to change the image plane of the cheese - it starts off at a plane behind the vendor and then after a small time moves to a plane in front of the vendor) |
endm | End of activate 1 script |
*****cheese timer | |
scrp 2 11 1000 9 | The timer for the cheese created by the vendor |
plne 5001 | Change image plane |
tick 0 | Stop the timer |
endm | End of timer script |
*****eat script | |
scrp 2 11 1000 12 | Eat script for the cheese - identical to eat script from previous tutorial |
lock | |
sndc "chwp" | |
stim writ from 79 1 | |
pose 1 | |
wait 20 | |
kill ownr | |
endm | |
Injecting this item into the world will show you a fish bowl type object sitting on the floor. Clicking on it will produce a lump of cheese from the top of the device.This can be altered to produce anything you desire ... toys, devices, eggs, anything! There are many examples of vendor type machines in C3, including:
The same principle can be used to create temporary items - such as a spray of mist from the Anti-Infection spray or the Atmosphere machine in the Norn Terrarium - the thing that is produced does not have to be an agent that will exist in the world for long.
The important things to remember when creating a vendor: