Or, Yet another combinator noob thread.
I can't get a combinator to behave the way I want, and since it doesn't work the way I expect, I have no idea how to even attempt what I want it to do.
Combinator A sends a signal from a larger circuit. This works as intended. The signal is `L = 1`
Combinator B read train contents. It is supposed to send a signal if, and only if, Green Circuits = 4k. The signal it sends is `Green Circuits = 1`
Combinator C reads both signals. It is set to `Everything = 1`. It sends a signal if this is true.
Currently, only A is sending its signal. Yet, C is also sending its signal, even though Combinator B is not sending.
I tried setting C to Each instead with no change.
How do I make C only send its signal if every single signal it's getting is 1?
Combinators not behaving as expected
Re: Combinators not behaving as expected
Zero value signals are not sent at all. Everything = 1 means everything that isn't zero = 1. Anything = 0 will never match.
You can make both combinators send the same go-signal and fire only when your go signal is 2, or supply a second input to your current comparison, a constants box with L=1 and Circuits = 1, and match on Everything = 2.
edit: the only time you can detect a zero signal is when you explicitly refer to that signal's value, compare it to zero or multiply it by something or some such.
You can make both combinators send the same go-signal and fire only when your go signal is 2, or supply a second input to your current comparison, a constants box with L=1 and Circuits = 1, and match on Everything = 2.
edit: the only time you can detect a zero signal is when you explicitly refer to that signal's value, compare it to zero or multiply it by something or some such.
Re: Combinators not behaving as expected
Well this complicates matters.
I'd read that an absent signal is read as 0, so I thought that meant that combinator C would getting one signal at 1, and one signal at 0.
Does this mean signals are added together? Two signals at 1 will be read as one signal at 2?
Edit: Remembered sandbox exists. Looks like that is indeed the case. I can work with this.
Thanks for the help.
I'd read that an absent signal is read as 0, so I thought that meant that combinator C would getting one signal at 1, and one signal at 0.
Does this mean signals are added together? Two signals at 1 will be read as one signal at 2?
Edit: Remembered sandbox exists. Looks like that is indeed the case. I can work with this.
Thanks for the help.
Re: Combinators not behaving as expected
The Everything condition is certainly one of the less intuitive behaviors. You know which signals you are trying to send, and which are being sent as zero, but the combinator can't distinguish between L=0 and the other hundred signals you aren't using, which are also zero. If it checked them too, it would never fire.
This is why some circuits will apply an offset, like -1000000, so that a nonzero value can represent that this signal is important, but also zero items are present. Then it gets converted back with +1000000 later.
This is why some circuits will apply an offset, like -1000000, so that a nonzero value can represent that this signal is important, but also zero items are present. Then it gets converted back with +1000000 later.
My mods: Multiple Unit Train Control, Smart Artillery Wagons
Maintainer of Vehicle Wagon 2, Cargo Ships, Honk
Maintainer of Vehicle Wagon 2, Cargo Ships, Honk
Re: Combinators not behaving as expected
The way I have it is, the value of a signal on a wire is the sum of that signal's values on all connected output ports. Likewise, the value of a signal a device sees is the sum of that signal's values on all connected input ports.
Most devices have dual-use ports, both input and output, you can watch for instance an inserter wired to something neutral like an electric pole and set read-hold (or even read-pulse though that's more confusing to watch), enable-if everything < 0, it disables pickup as soon as it gets anything so it'll only ever pick one item off a belt. There's tricks you can do with this that come in handy sometimes.