12 votos

¿Detectar dónde murió un jugador específico?

Así que estoy haciendo una captura del juego de la bandera. Tengo un objetivo para capturar la bandera:

/objetivos del marcador añadir bandera roja stat.mineBlock.Minecraft.wool Tiene la bandera roja

Lo quiero para que cuando un jugador muera, si tienen la bandera, la dejen caer donde estaban parados, (como un bloque, usando setblock). Lo intenté, donde h es un marcador de salud:

ejecutar @p[score_h=0] ~ ~ ~ setblock ~ ~1 ~ lana 14

Esto no funciona, porque el jugador está muerto, y score_h=1 significa que si un jugador tiene exactamente la mitad de corazón, entonces continuamente se pone lana de bloque.

Actualmente, la única solución que se me ocurre es este comando, y /matar a todos los jugadores con 1/2 corazón. Me gustaría una solución más limpia. ¿Alguna idea?

0 votos

¿Has probado a añadir un marcador para detectar si tiene la bandera? Mira gaming.stackexchange.com/questions/192640/ . Esta vez, intente /clear la bandera.

0 votos

Tengo una solución que es demasiado complicada para poner una respuesta ahora mismo ( ver aquí para una pista ), y se podría perfeccionar un poco, pero debería hacer todo lo que quieres.

0 votos

Podrías configurarlo para que el ítem de lana sea arrojado y la etiqueta "Propietario" se establezca en el jugador que rompió el bloque. Entonces el jugador puede dejar caer la bandera en una tolva en su base, que se desactiva cuando la bandera enemiga no es capturada.

9voto

rorygilchrist Puntos 31

¿Has probado a añadir un marcador para detectar si tiene la bandera? Mira ¿cómo obtener y almacenar el nombre del jugador? Esta vez, intente borrar la bandera.
- aytimothy

He respondido a una pregunta buscando identificar a un jugador, y realizar algo a su muerte.

En resumen, siga las instrucciones para hacer la puerta y para identificar a los jugadores, pero sustituya el /clear en el segundo paso con:

/clear @p[score_playerID=1,score_playerID_min=1] minecraft:Wool 14 0

y el identificador con algo más como... Digamos:

/scoreboard objectives create hasWool dummy hasWool
/scoreboard players set @p[score_playerID=1,score_playerID_min=1] hasWool 1
/scoreboard players set @p[score_playerID=1,score_playerID_min=1] hasWool 0

para identificar si alguien tiene la bandera o no. (Esto sólo funciona con /gamerule keepinventory true .)

A continuación, cuando el jugador muere, simplemente hacer su comando, ya que saben que están muertos, y tienen la lana.

Actualización:

Todos estos comandos funcionan, pero el problema es: si el jugador está muerto, no puede ejecutar comandos. No se puede /ejecutar como jugador si el jugador está muerto.
- xornob

Digamos que usaremos un Creeper para ser el marcador de posición del /execute comando.

Ejecutar las compuertas de flip-flop condicionales (descritas en la primera respuesta), comprobando /testfor @a[score_h=0,hasWool_min=1] (busca un jugador que esté muerto y tenga la lana.

Cuando un jugador está muerto y tiene la lana (la condición se establece como verdadera), ejecuta /tp @e[type=Creeper] @p[score_h=0,hasWool_min=1] , hacer que la enredadera coloque el bloque /execute @e[type=Creeper] ~ ~ ~ setblock ~ ~1 ~ wool 14 y teletransportarse /tp @e[type=Creeper] 0 0 0 .
La condición falsa depende de ti; puedes hacer que teletransporte a la enredadera de vuelta (ya que de todos modos ya está hecha cuando se ejecuta la condición verdadera)

Sólo asegúrese de que el comando se ejecuta antes de que se respawn (o se teletransporta al punto de respawn)


Nota: No se puede directamente @a como cuando se utiliza /clear @a minecraft:Wool 14 0 se le dará la razón a todo el mundo, aunque sólo lo tenga una persona, mientras que @p simplemente se ensucia. (Estás detectando al jugador más cercano)

0 votos

/ejecutar @p[score_h=0,hasWool_min=1] ~ ~ setblock ~ ~1 ~ wool 14 no funciona, no importa el tiempo antes de que respawn sin embargo.

0 votos

@xornob Esa fue la orden que me dio. ¿Has probado a quitar el primer / ? ¿Y has leído realmente la respuesta que te he enlazado? Por si acaso: gaming.stackexchange.com/questions/192640/

0 votos

Todos estos comandos funcionan, pero el problema es: si el jugador está muerto, no puede ejecutar comandos. No se puede /ejecutar como jugador si el jugador está muerto.

5voto

MrLemon Puntos 13223

@MBraedley señaló que los jugadores muertos no son objetivos válidos para el teletransporte.

Descargo de responsabilidad: La siguiente idea debería funcionar, pero aún no la he probado.

Esta respuesta requiere la red_flag objetivo para que funcione correctamente. Es decir, debe ser 1 para el jugador que lleva la bandera roja, y 0 para todos los demás.

Ejecutar esto una vez

/summon ArmorStand 0 0 0 {Invisible:1,Marker:1,NoGravity:1,CustomName:"Marker"}

Entonces ejecuta esto en un reloj rápido

/tp @e[type=ArmorStand,name=Marker] @p[score_red_flag_min=1]

Esto hará que un puesto de Armadura invisible sin hitbox se teletransporte continuamente al abanderado.

En el momento en que el abanderado muere, el tp falla continuamente, hasta que aparece un nuevo objetivo válido. Tome la salida de tp con un comparador e invertir la señal con una linterna. Tenga en cuenta que la señal del comparador será constante, a menos que algo cambie, según el wiki :

SuccessCount : Representa la intensidad de la señal analógica emitida por los comparadores de redstone conectados a este bloque de comandos. Sólo se actualiza cuando el bloque de comandos se activa con una señal de redstone.

Esto significa que la linterna estará continuamente encendida cuando nadie tenga la bandera y se apagará cuando alguien recoja la bandera, tras lo cual estará continuamente apagada. Se encenderá exactamente en el momento en que el tp falla, y en ese momento se alimentará otro bloque de comandos con

/execute @e[type=ArmorStand,name=Marker] setblock ~ ~ ~ minecraft:wool 14 keep

Tenga en cuenta que esto también ocurrirá cuando el red_flag Los objetivos caen por debajo de 1 por cualquier razón que no sea la muerte, como la puntuación. Esto se puede remediar fácilmente eliminando todos los bloques de lana roja de la zona de puntuación utilizando

/fill <x1> <y1> <z1> <x2> <y2> <z2> minecraft:air replace minecraft:wool 14

0 votos

+1 Menos desordenado (más compacto), pero todavía tan eficiente como el mío.

0 votos

Esto es básicamente lo que se me ocurrió anoche, aunque estuve revisando activamente el inventario de los jugadores para la lana para poner el marcador (creo que es menos propenso a errores) y teletransportando el marcador (usé una calavera whither) cada tick. Hice esto para asegurarme de que el marcador estuviera siempre donde estaba el jugador porque no creía que fueran un objetivo válido cuando estaban muertos.

0 votos

@MBraedley en realidad no es una mala idea. Entonces también podrías hacer que el Soporte de Armadura llevara una bandera roja en la cabeza. De esta manera, el jugador realmente lleva una bandera con ellos.

2voto

Eunice Puntos 21

El @a es el único selector capaz de apuntar a los jugadores muertos. Se puede establecer el c (objetivos máximos) a 1 para reducir el número de objetivos.

Habría que hacer un seguimiento de las muertes de los jugadores con el deathCount de tipo objetivo en lugar de health (que es de sólo lectura), ya que de lo contrario el jugador muerto estaría constantemente fijando el bloque:

/scoreboard objectives add deaths deathCount

Se tendría que ejecutar lo siguiente en orden numérico:

  1. Hacer que los jugadores muertos ejecuten un /setblock comando.

    /execute @a[score_deaths_min=1,score_red_flag_min=1,c=1] ~ ~ ~ /setblock ~ ~ ~ minecraft:wool 14
  2. Restablece el marcador de "muertes" para que el comando anterior no se ejecute constantemente.

    /scoreboard players reset @a[score_deaths_min=1,score_red_flag_min=1] deaths

1voto

Egor Hans Puntos 57

Tengo una idea que nadie ha propuesto hasta ahora, además no estoy seguro: ¿Estás de acuerdo con el uso de mods?

Si es así, puedes utilizar el mod OpenBlocks, el mod GraveStone o cualquier otro mod que genere lápidas al morir el jugador, y luego ejecutar repetidamente un comando que sustituya todos los bloques de lápida que contengan objetos de bloque de lana roja por un bloque de lana roja.

(No estoy seguro del mod GraveStone, el mod OpenBlocks sin embargo debería funcionar limpiamente cuando se instala sólo en el servidor, al menos la versión Forge, lo sé por los proyectos ChaosCraft de LeKoopa. Para aquellos que no conocen a LeKoopa, es un youtuber alemán de Minecraft con un montón de proyectos de mods - revisiones de mods, mod LP multijugador, minijuegos de bloques de la suerte y sin textura (como en todas las texturas TNT se sustituyen por texturas de lana blanca) Too Many TNT survival quests son sólo algunos ejemplos).

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