4 votos

¿Cómo puedo afiliarme a dos líneas de bloques de mando de cadena condicional sin recurrir a redstone?

Después de leer esta pregunta y la respuesta por Simon Meusel me empecé a preguntar cómo uno podría ir y unirse a dos líneas de condicional bloques de comandos.

Como un ejemplo, digamos que quiero ejecutar una serie de comandos en la madrugada (de día 0-1000) y al anochecer (12000-13000). Yo uso el /stats comando para guardar el valor de /time query daytime en un maniquí objetivo (durante el día) en un ficticio jugador (#de DÍA).

Puedo configurar dos bloques de comandos para probar si el día es correcta:

/scoreboard players test #DAYTIME daytime 0 1000
/scoreboard players test #DAYTIME daytime 12000 13000

Puedo usar el condicional de la cadena de bloques de comandos para ejecutar lo que me gustaría desde aquí. Pero si hay una gran cantidad de comandos, prefiero no colocar cada bloque de comando dos veces. Es allí una manera de unir dos condicional comando de bloque de líneas, es decir, crear una lógica O el uso de bloques de comandos, sin necesidad de recurrir a los comparadores, redstone polvo, o el lag? Convocando a los bloques de redstone está bien, siempre y cuando se reinicia correctamente cada tick.

4voto

Eunice Puntos 21

Usted puede utilizar CommandStats para simular una puerta or, mientras que la reducción de la cantidad de bloques de comandos (desde que te gustaría ser esencialmente ejecutar dos comandos por el precio de uno).

Requisitos previos

Objetivo mantener la CommandStats resultado.

/scoreboard objectives add Condition dummy

Solo la armadura de pie a convocar, que también podría ser utilizado para otras cadenas que lo necesita (como su puntuación es para restablecerse en el principio de las cadenas). Esta será la entidad sujeta a CommandStats.

/summon ArmorStand ~ ~ ~ {Tags:["conditional"]}

Mecanismo de

Ejemplo de mecanismo (usted puede cambiar el impulso para una repetición del bloque):

Impulse/repeating > chain > chain > chain > conditional chain

Bloques de comandos de 2 y 3 será el inicial de bloques condicionales, donde si tienen éxito se debe ejecutar varios comandos. Lugar temporal de un bloque de comandos encima de cada uno de ellos, colocar el siguiente comando dentro de él, y activarlo (en caso contrario basta con ejecutar el comando de sí mismo, pero el carácter de límite fue superado):

/stats block ~ ~-1 ~ set SuccessCount @e[type=ArmorStand,tag=conditional,score_Condition=0] Condition

Ahora, si cualquiera de los dos comandos que se ejecutan, el armor stand tendrán su "Condición" conjunto de partituras igual a el número de iteraciones del comando.

Sin embargo, sólo objetivo de la armadura de pie si tiene una "Condición" puntuación de 0. Esto significa que si cualquiera de ellos con éxito, la puntuación será 1 y se mantendrá en el 1 incluso si el siguiente bloque de comando es incorrecta.

Comandos

Los siguientes son los comandos para el ejemplo de mecanismo anterior.

  1. Conjunto de la armadura del soporte "Condición" goles a 0. Esto es necesario para que pueda ser objeto de esta cadena de nuevo.

    /scoreboard players set @e[type=ArmorStand,tag=conditional] Condition 0
    
  2. Uno de los condicionales para comprobar. El éxito de este comando se activa su almacenados CommandStats.

    /scoreboard players test #DAYTIME daytime 0 1000
    
  3. El segundo condicional para comprobar.

    /scoreboard players test #DAYTIME daytime 12000 13000
    
  4. Después de las oraciones condicionales han terminado, el armor stand tendrá un puntaje de 1 si cualquiera de ellos tuvieron éxito. Usted puede entonces detectar esta armadura de pie, con una puntuación de 1.

    /testfor @e[type=ArmorStand,tag=conditional,score_Condition_min=1,c=1]
    
  5. Comando(s) para ejecutar si cualquiera de los condicionales fueron un éxito.

    /say The time is either 0-1000 or 12000-13000.
    

2voto

MrLemon Puntos 13223

Una forma es crear un anticuado /setblock reloj para activar una nueva línea de bloques de comandos.

Tenemos 4 líneas de bloques de comandos para esto:

  • Dos (o más) para la comprobación de las condiciones de
  • Uno para el funcionamiento de nuestro comandos
  • Una línea para el restablecimiento de

En la siguiente, X Y Z están las coordenadas de un bloque de al lado de la principal línea de comandos del primer bloque de comandos.

La linea de reset es solo una repetición de1 bloque de comandos que está siempre encendido, funcionando

/setblock X Y Z minecraft:stone

El condicional líneas son el uso de una repetición y una cadena de comando de bloque de cada uno. La repetición de bloques se utilizan para ejecutar sus condiciones. La cadena de bloque de comando se establece en condicional y ejecuta:

/setblock X Y Z minecraft:redstone_block

(reemplazar el primer comando con su condición).

La línea principal se inicia con un impulso bloque de comandos, establece que requieren de redstone. El bloque de redstone se establecerá y se sustituye cada tick por los otros bloques de comandos, así que no hay necesidad de utilizar una repetición de bloque de comandos aquí (no importa, en realidad). Todos los otros comandos que desea ejecutar está encadenada a la de éste.

1 Si desea que sólo se ejecute una vez, usted puede reemplazar todas repetición de bloques de comandos por impulso.

1voto

MrLemon Puntos 13223

Usted puede almacenar el resultado de su condicionales, el uso de un cuadro de indicadores de la etiqueta

Crear una sola línea de comando bloques, comenzando con una repetición (o impulso) bloque de comando, seguido por la cadena de bloques de comandos. Vamos a utilizar el hecho de que los incondicional de la cadena de bloques de comando ejecutar, incluso cuando condicional bloques de comandos anteriores en la línea no se ejecuta debido a que su condición no se cumple.

Inicio de la línea por untagging el jugador(s):

/scoreboard players tag @a[tag=conditionTrue] remove conditionTrue

Ahora, para cada condición, coloque dos de la cadena de bloques de comandos. La primera es incondicional y ejecuta su condición. Establecer el segundo a la condicional y poner

/scoreboard players tag @a[tag=!conditionTrue] add conditionTrue

Después de colocar todas tus condiciones, poner uno más incondicional de la cadena de bloques, la ejecución de

/testfor @a[tag=conditionTrue]

seguido por tus mandamientos, los cuales son administrados por condicional de la cadena de bloques.

JugonesTop.com

Jugonestop es una comunidad para amantes del gaming. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X