Przeglądaj źródła

重写随机数列

00ll00 6 lat temu
rodzic
commit
12693fe604

+ 4 - 1
data/lib/functions/randarray/call.mcfunction

@@ -1,6 +1,9 @@
-#input: $randarray_max mem
+#inputs:
+#   $randarray_max mem   生成1~max的随机数列,如果有去重则没有last
+#   $randarray_last mem  上一个数列的末尾,如果不需要去重则为0
 #output: storage lib:randarray out
 
 data modify storage lib:randarray out set value []
 execute if score $randarray_max mem matches 1.. run function lib:randarray/recu
+execute as @e[tag=randarray_marker] if score @s mem = $randarray_last mem run kill @s
 execute as @e[tag=randarray_marker,sort=random] run function lib:randarray/add

+ 5 - 0
data/ltw/functions/init.mcfunction

@@ -24,6 +24,11 @@ scoreboard objectives remove game_id
 scoreboard objectives add game_id dummy "游戏编号"
 scoreboard players set $ game_id 0
 
+#全局变量(常量)
+#   minigame总数
+scoreboard players set $global_mini_count mem 3
+
+
 # 队伍
 team remove ltw
 team add ltw "龙猫战争3"

+ 3 - 4
data/ltw/functions/state/3/newarray.mcfunction

@@ -1,5 +1,4 @@
-scoreboard players set $randarray_max mem 3
+scoreboard players operation $randarray_max mem = $global_mini_count mem
+scoreboard players operation $randarray_last mem = $mini_type mem
 function lib:randarray/call
-data modify storage ltw:mini types set from storage lib:randarray out
-execute store result score $temp_49d0 mem run data get storage ltw:mini types[0]
-execute if score $temp_49d0 mem = $mini_type mem run data remove storage ltw:mini types[0]
+data modify storage ltw:mini types set from storage lib:randarray out