Object Name Symbols
If I want to make a working door instance, the "open" command goes through the gauntlet: Trigger (outside instance) to IO Proxy to Logic Relay to Door.
My question: what exactly do the "@" and "$" symbols in names do? Are there other name symbols? What exactly do I need to know about how to name things that use these symbols when sending commands through the trigger-logic gauntlet?
I think I saw something about this somewhere but I can't seem to find it again.
Say I have an instance for a door with a logic relay within it. The relay is named "door_open". I make this instance in my map and name the whole instance "this_door". Unless I mess with the Fix Name property or whatnot, my relay within my instance is now called "this_door-door_open".
Assuming that I have things right so far, when I want to trigger the relay outside of the instance, do I call for "door_open" in my trigger output or do I call for "this_door-door_open"?
Since it retains the name, should I be using "@" for object names within instances that I only make one of each map (such as an entrance elevator) and avoid using it for things that I make multiples of (such as doors)?
You don't need to usually use @ unless talking between instances, like making a cube template instance and then spawning it from dropper instances for example.
The '$' prefix is used for parameters. Replace any property value with a name starting with '$', then add a func_instance_params. In here it'll list all the parameters and let you change the type. These will show up in the instance properties; they will replace the versions inside an instance. For example, if you set the delay property to '$delay' in a prop_button, then the instance will have a property to let you choose the delay of the button timer.
You could have a look at the PTI instances in instances/p2editor, they use this a lot. You probably don't want to use them normally in a hammer map though. (The instances use way too many entities compared to one made for hammer usage).
e.g. I have 20 panels with affix panel1 - 20. I can reference a certain entity in all the panels by using the wildcard:
entityname*.
e.g. I have 20 panels with prefix panel1 - 20. I can reference every entity in the panel1- instance by using the wildcard: panel1*.
My trigger output will generally look like this to talk to instances with proxies:
My Output: (some output)
Target Entity: (instance name)
Target Input: instance:(internal relay name);(command)
Or, for this example:
My Output: OnStartTouch
Target Entity: this_door
Target Input: instance:door_open;Trigger
If that's how things work, then I know where I was getting confused: I was thinking that I needed to call the proxy name instead of the relay name.
Just a bit of a bug to be aware of: if you send an output from an item to the proxy, then any other outputs won't work. Generally when outputting from an instance use a relay in between.