So, after seeing about the 4th post asking for a tutorial where you pick up 3 objects and get some reward, I decided to make a tutorial just for that. Except, this tutorial has MANY different settings and rewards, so I recommend linking this to anyone who asks for something like the above-mentioned example.
With this tutorial you can:
collect objects by pressing "F" on them or shooting them.
place those objects down somewhere (optional)
Get a reward or reward(s) which currently are: a powerup drop (free perk powerup too), move a door or doors, and drop a gun or guns you can pick up.
There are also many other small options you find easily editable in the script.
So For Scripting, Go into your mapname.gsc and put this in your main function: Then put this down at the bottom of the gsc:
Spoiler: click to open...
change all the level variables to what you want. In Radiant, go ahead and make a script_model and give it a targetname of:"easter_egg_object" draw a trigger around it (trigger_use for press "F" on it, trigger_damage for shooting at it). Then select the model first, then the trigger and hit "W". It should make an arrow pointing from the model to the trigger. Repeat these steps for each object you want (the models can be different). make sure each model is only targeting the trig that surrounds it.
(Optional) make a trigger_use and give it the targetname:"trig_place". put it where the player has to place the objects. Make the models you want to show up after they place it and give them the targetname: "placed_object".
Depending on the rewards you want, do these next steps. Door make your door a script_model or script_brushmodel and give it the targetname: "easter_egg_door". IMPORTANT! if you have any other pieces you want to move with the door (including any clips around the door) you must also give it that targetname. then make a script_struct where you want to go (note that it will be the origin of the door that goes to it). Select the door and select the struct and hit "W". Make sure every entity that has the targetname "easter_egg_door" has a struct it is targeting. It can be the same struct it that makes sense for where the pieces should go.
Powerup Drop make a script_struct and give it the Targetname: "powerup_struct". place it On the ground where you would like the powerup drop to appear above.
Gun make a script_struct on the ground and give it the targetname: "gun_struct". Note that if you have level.one_gun_per_player = "true"; you must have at least 4 of these. It it is false you can only have one.
I haven't fully tested this out so if there are any problems please report them. If there something you would like added to this feel free to comment. Part of the script comes from MakeCents, the part that spawns and spins the gun. If you are using the gun drop, I would highly encourage you to credit MakeCents. Also feel free to credit me, Abnormal202.