190 lines
8.8 KiB
Python
190 lines
8.8 KiB
Python
import Mil
|
||
import random
|
||
import time
|
||
import os
|
||
|
||
class CreateE_Server(Mil.MCROCN):
|
||
def __init__(self, host, password, port, debug=True):
|
||
super().__init__(host, password, port, debug=debug)
|
||
|
||
|
||
CreateE_User=CreateE_Server(host="", password="", port=25565)
|
||
if not CreateE_User.Connect(): exit()
|
||
|
||
#CreateE_User.Speak(f"{"="*5} Welcome to use CreateE_Server SYSTEM {"="*5}", "green")
|
||
#CreateE_User.Speak("<CreateE_Server> The Python program has connected to the RCON port at 25566")
|
||
|
||
|
||
# CreateE_User.SetTitle("@a", "CreateE Server")
|
||
|
||
#print(CreateE_User.Execute("as", "@a", "at", "@s", "run", CreateE_User.Particle("minecraft:lava", RelativePos(), Delta(), 1, 100, "force", "@a", astext=True), astext=False))
|
||
|
||
#while True:
|
||
# CreateE_User.Execute("as", "MXYYSH2", "at", "@s", "run", CreateE_User.Particle("minecraft:end_rod", RelativePos(f"~", f"~", f"~"), Delta(), 0, 1, "force", "@a", astext=True))
|
||
|
||
|
||
# 参数设置
|
||
#num_points = 1000 # 点数
|
||
#theta_max = 2 * np.pi # 旋转角度范围
|
||
#height_max = 20 # 最大高度
|
||
|
||
# 生成参数t从0到1
|
||
#t = np.linspace(0, 1, num_points)
|
||
|
||
# 计算螺旋线坐标
|
||
#theta = theta_max * t # 角度
|
||
#z = height_max * t # 高度线性增加
|
||
#r = z # 半径随高度增加而增加(锥形螺旋)
|
||
#x = r * np.cos(theta)
|
||
#y = r * np.sin(theta)
|
||
|
||
# 将坐标组合成数组
|
||
#spiral_points = np.column_stack((x, y, z))
|
||
|
||
# 打印前10个点
|
||
#for i in range(1000):
|
||
# _=spiral_points[i]
|
||
# x, y, z=_[0], _[1], _[2]
|
||
# print(CreateE_User.Execute("as", "MXYYSH1", "at", "@s", "run", CreateE_User.Particle("minecraft:end_rod", RelativePos(f"~{x}", f"~{y+20}", f"~{z}"), Delta(), 0, 1, "force", "@a", astext=True), astext=False))
|
||
|
||
#print(CreateE_User.Execute("as", "yrzd6", "at", "@s", "run", CreateE_User.Particle("minecraft:end_rod", Mil.RelativePos(f"~", f"~", f"~"), Mil.Delta(), 10, 10000, "force", "@a", astext=True), astext=False))
|
||
|
||
#user="@a"
|
||
#for i in range(500, -1, -1):
|
||
# if i % 2 == 0: CreateE_User.SetTitle(user, "I SEE U", "red")
|
||
# CreateE_User.SetSubTitle(user, f"I'm Looking For U, So Hide Well! Count {i}", "red")
|
||
# time.sleep(0.2)
|
||
#time.sleep(1)
|
||
#CreateE_User.SetTitle(user, "0", "red")
|
||
#CreateE_User.SetSubTitle(user, "0", "red")
|
||
|
||
#time.sleep(5)
|
||
#CreateE_User.Execute("as", "@a", "at", "@s", "run", "tp @s ~ ~100 ~")
|
||
#time.sleep(5)
|
||
#CreateE_User.Execute("as", "@a", "at", "@s", "run", "kill @s")
|
||
#_=CreateE_User.Data("get", "entity", "MXYYSH1")
|
||
#CreateE_User.Gamemode("creative")
|
||
|
||
#201 68 -275
|
||
#201 68 -237
|
||
|
||
#for i in range(2369, 2750):
|
||
# CreateE_User.Particle("minecraft:lava", Mil.RelativePos(f"201", f"66", f"-{i/10}"), Mil.Delta(), 1, 100, "force", "@a", astext=False)
|
||
|
||
#CreateE_User.Weather("clear")
|
||
|
||
#215 81 -368
|
||
#200 90 -373
|
||
#198 69 -362
|
||
|
||
#256 66 -174
|
||
#254 62 -183
|
||
|
||
#s=Mil.Milib._Pos1ToPos2WithPoints(600, 0,
|
||
# Mil.Milib.RelativePos(276, 83, -175),
|
||
# Mil.Milib.RelativePos(218, 63, -189),
|
||
# Mil.Milib.RelativePos(189, 73, -161)
|
||
# )
|
||
|
||
#s=Mil.Milib._Pos1ToPos2WithPoints(50, 0,
|
||
# Mil.Milib.RelativePos(256, 66, -174),
|
||
# Mil.Milib.RelativePos(254, 62, -183),
|
||
# )
|
||
#print(s)
|
||
|
||
#for i in s:
|
||
# print(i.x, i.y, i.z)
|
||
# CreateE_User.Particle("minecraft:end_rod", Mil.Milib.RelativePos(f"{i.x}", f"{i.y}", f"{i.z}"), Mil.Milib.Delta(), 0, 150, "force", "@a", astext=False)
|
||
#for i in range(3000):
|
||
# CreateE_User.Execute("as", "yrzd6", "at", "@s", "facing", Mil.Milib.LocalCoordinatesPos("^1", "^", "^"), "run", CreateE_User.Tp(Mil.Milib.RelativePos(), astext=True))
|
||
|
||
#while True:
|
||
# CreateE_User.Kill("@e[type=tnt]")
|
||
|
||
|
||
#s=CreateE_User.Data("get", "entity", "MXYYSH1")
|
||
summon_pos=[
|
||
Mil.Milib.RelativePos(95, 81, 3),
|
||
Mil.Milib.RelativePos(146, 81, 15),
|
||
Mil.Milib.RelativePos(96, 81, 38),
|
||
Mil.Milib.RelativePos(65, 81, -1),
|
||
]
|
||
# NV_NUMBER = 1000
|
||
|
||
GC_NUMBER = 10000
|
||
|
||
'''
|
||
CreateE_User.SbSpeakRaw("赛方", [{"text":"========== 本次 ", "color":"green"}, {"text":"1v300女巫大赛", "color":"red"}, {"text":" 即将开始 ==========", "color":"green"}])
|
||
time.sleep(5)
|
||
CreateE_User.SbSpeak("赛方", "请各位稍安勿躁。")
|
||
time.sleep(5)
|
||
CreateE_User.SbSpeak("赛方", "本次比赛由选手 zhui_er 和 300 只女巫进行比拼。")
|
||
time.sleep(5)
|
||
CreateE_User.SbSpeak("赛方", f"胜利后每人可获得 { GC_NUMBER } GC(游戏货币),用于购买游戏商店内的优质物品。")
|
||
time.sleep(6)
|
||
CreateE_User.SbSpeak("赛方", "失败后每人可获得 50 + 250 * 波数 GC(游戏货币),用于购买游戏商店内的优质物品。")
|
||
time.sleep(6)
|
||
CreateE_User.SbSpeak("赛方", "允许使用药水、盾牌等,不允许使用飞行、作弊、挖掘、放置、TNT等明显破坏平衡性的功能。")
|
||
time.sleep(7)
|
||
CreateE_User.SbSpeak("赛方", "如果死亡不可复活。")
|
||
time.sleep(5)
|
||
CreateE_User.SbSpeak("赛方", "女巫总共有6波,每波50只女巫,每波会随机生成十小波,每小波女巫有5只女巫间隔随机时间 0-10 秒生成,每波间隔三分钟。")
|
||
time.sleep(5)
|
||
CreateE_User.SbSpeak("赛方", "本页面程序由 CreateE 《 基于 Python 的 我的世界 RCON 核心支持库(Mil Minecraft RCON Core Library For Python)》 和 其作者 TermiNexus(MXYYSH1)的大力支持")
|
||
time.sleep(10)
|
||
CreateE_User.SbSpeak("赛方", "我宣布,本次比赛正式开始,十秒后开始生成")
|
||
CreateE_User.Bossbar("add", "minecraft:1", '[{"text":"==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"},{"text":" 1","color":"blue"},{"text":"v","color":"yellow"},{"text":"300","color":"red"},{"text":" \u5973\u5deb","color":"dark_red"},{"text":"\u5927\u8d5b","color":"dark_green"},{"text":" \u751f\u6210","color":"gold"},{"text":"\u8fdb\u5ea6","color":"green"},{"text":" ==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"}]')
|
||
CreateE_User.Bossbar("set", "minecraft:1", "color", "red")
|
||
CreateE_User.Bossbar("set", "minecraft:1", "max", "300")
|
||
CreateE_User.Bossbar("set", "minecraft:1", "style", "notched_20")
|
||
CreateE_User.Bossbar("set", "minecraft:1", "players", "@a")
|
||
CreateE_User.Bossbar("set", "minecraft:1", "visible", "true")
|
||
for _ in range(10, -1, -1):
|
||
CreateE_User.SbSpeak("赛方", f"{_} 秒后开始生成")
|
||
time.sleep(1)'''
|
||
|
||
CreateE_User.Bossbar("add", "minecraft:1", '[{"text":"==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"},{"text":" 1","color":"blue"},{"text":"v","color":"yellow"},{"text":"300","color":"red"},{"text":" \u5973\u5deb","color":"dark_red"},{"text":"\u5927\u8d5b","color":"dark_green"},{"text":" \u751f\u6210","color":"gold"},{"text":"\u8fdb\u5ea6","color":"green"},{"text":" ==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"}]')
|
||
CreateE_User.Bossbar("set", "minecraft:1", "color", "red")
|
||
CreateE_User.Bossbar("set", "minecraft:1", "max", "300")
|
||
CreateE_User.Bossbar("set", "minecraft:1", "style", "notched_20")
|
||
CreateE_User.Bossbar("set", "minecraft:1", "players", "@a")
|
||
CreateE_User.Bossbar("set", "minecraft:1", "visible", "true")
|
||
|
||
|
||
B=1
|
||
SummonCount=(B-1)*10
|
||
for i in range(B, 6+1):
|
||
CreateE_User.SbSpeak("赛方", f"开始生成第 {i} 波女巫,请选手准备迎敌!")
|
||
CreateE_User.SetTitle("@a", f"第 {i} 波!", "red")
|
||
StartRandomTime=random.uniform(0.0, 2.0)
|
||
LastRandomTime=StartRandomTime + random.uniform(0, 10.0)
|
||
for _ in range(5):
|
||
RPos = random.choice(summon_pos)
|
||
CreateE_User.SbSpeak("赛方", f"有一小波女巫生成在了 {RPos}")
|
||
for _ in range(5):
|
||
CreateE_User._RunCommand(f"execute in myid:1 run summon minecraft:witch {RPos}")
|
||
SummonCount+=1
|
||
CreateE_User.Bossbar("set", "minecraft:1", "value", f"{SummonCount}")
|
||
time.sleep(random.uniform(StartRandomTime, LastRandomTime))
|
||
CreateE_User.SbSpeak("赛方", f"第 {i} 波女巫生成已结束,{"本次比赛已结束" if i == 20 else ("开始 300 秒 中场休息" if i == 10 else "开始 90 秒休息。")}")
|
||
time.sleep(0 if i == 20 else (270 if i == 10 else 70))
|
||
if i != 20:
|
||
CreateE_User.SbSpeak("赛方", "还有30秒。")
|
||
time.sleep(20)
|
||
CreateE_User.SbSpeak("赛方", "最后10秒,做好准备!")
|
||
time.sleep(10)
|
||
CreateE_User.SbSpeak("赛方", "生成已结束!请迅速解决剩余残孽。")
|
||
CreateE_User.SetTitle("@a", "生成完毕!", "green")
|
||
com=input("OK?> ")
|
||
if com == "Y":
|
||
CreateE_User.SbSpeak("赛方", "恭喜各位完成本次比赛!!!")
|
||
time.sleep(5)
|
||
CreateE_User.SbSpeak("赛方", f"诸位凭借自己的实力赢得了 {GC_NUMBER} GC!")
|
||
else:
|
||
CreateE_User.SbSpeakRaw("赛方", "对不起,你们失败了!", "red")
|
||
time.sleep(5)
|
||
CreateE_User.SbSpeak("赛方", "我们下次再见!")
|
||
time.sleep(5)
|
||
CreateE_User.SbSpeak("赛方", "我正式宣布比赛结束!")
|
||
CreateE_User.disconnect()
|