油锅 5 加入更好的提示
This commit is contained in:
1 parent
b69e487b10
commit
5627e040ce
7 files changed
+98
-138
No files matched your search
+13
-3
@@ -81,10 +81,20 @@ NAME_MAP = {
|
||||
"rtdd:bread_4": "甜甜圈", "rtdd:bread_4c": "甜甜圈胚(烤熟)",
|
||||
"rtdd:shouroubao": "熟肉包子", "rtdd:cream_0": "奶油",
|
||||
"rtdd:dumplings_4": "生饺子", "rtdd:roubaozi_3": "生肉包子",
|
||||
"rtdd:bamboo_4": "竹筒(加入肉)", "rtdd:plate_34": "蛋液半成品",
|
||||
"rtdd:bamboo_4": "竹筒(加肉)", "rtdd:plate_34": "蛋液半成品",
|
||||
"rtdd:dought_7": "生面饼", "rtdd:farineblock_1": "面粉(加鸡蛋)",
|
||||
"rtdd:cakebatterblock": "蛋糕面糊(烤熟)", "rtdd:plate_35": "布丁半成品",
|
||||
"rtdd:souffle_0": "舒芙蕾", "rtdd:dumplings_0": "饺子皮",
|
||||
# ---- 计时/烤制用到的方块名 ----
|
||||
"rtdd:dough_0": "发酵面团", "rtdd:rawdough_4": "和好的面团",
|
||||
"rtdd:breaddough_1": "法棍面胚", "rtdd:breaddough_1a": "发面",
|
||||
"rtdd:breaddough_2": "吐司面胚", "rtdd:breaddough_4d": "甜甜圈胚",
|
||||
"rtdd:dought_9": "可颂面胚", "rtdd:cakebatterblock_0": "蛋糕面糊(生)",
|
||||
"rtdd:creampastry_0": "舒芙蕾半成品", "rtdd:cream_caramel": "焦糖布丁",
|
||||
"rtdd:steamerdumplings_0": "蒸笼(饺子)", "rtdd:steamerdumplings_1": "熟饺子",
|
||||
"rtdd:baozilong_1": "蒸笼(包子)", "rtdd:baozilong_2": "熟包子",
|
||||
"rtdd:bamboo_6": "蒸笼(竹筒饭)", "rtdd:bamboo_7": "熟竹筒饭",
|
||||
"rtdd:steamermilkandegg": "蒸笼(蛋液)", "rtdd:steamermilkandegg_1": "蒸牛奶鸡蛋",
|
||||
}
|
||||
|
||||
# 竹筒饭加肉: 接受原版常见生熟肉类(【待确认】具体肉类未定, 先放开常见肉)
|
||||
@@ -119,7 +129,7 @@ SWITCH_RULES = [
|
||||
{"block": "rtdd:rawdough_1", "item": None, "target": "rtdd:rawdough_2", "tip": "§a和面中…"},
|
||||
{"block": "rtdd:rawdough_2", "item": None, "target": "rtdd:rawdough_3", "tip": "§a和面中…"},
|
||||
{"block": "rtdd:rawdough_3", "item": None, "target": "rtdd:rawdough_4",
|
||||
"startTimer": "rtdd:rawdough_4", "tip": "§a和面完成, 开始发酵(60秒)"},
|
||||
"startTimer": "rtdd:rawdough_4", "tip": "§a和面完成, 开始发酵"},
|
||||
{"block": "rtdd:rawdough_4", "item": CLEAVER, "action": "chop_smalldough",
|
||||
"tip": "§a切出了8个小面团"},
|
||||
{"block": "rtdd:dough_0", "item": ROLLINGPIN, "target": "rtdd:dough_1",
|
||||
@@ -260,7 +270,7 @@ SWITCH_RULES = [
|
||||
|
||||
# ---- 八、面团·胚料组(右键循环转换) ----
|
||||
{"block": "rtdd:dough_0", "item": None, "target": "rtdd:breaddough_1",
|
||||
"startTimer": "rtdd:breaddough_1", "tip": "§a转成法棍面胚, 开始发酵(60秒)"},
|
||||
"startTimer": "rtdd:breaddough_1", "tip": "§a转成法棍面胚, 开始发酵"},
|
||||
{"block": "rtdd:breaddough_1", "item": None, "target": "rtdd:breaddough_2",
|
||||
"tip": "§a转成吐司面胚"},
|
||||
{"block": "rtdd:breaddough_2", "item": None, "target": "rtdd:breaddough_4d",
|
||||
|
||||
+54
-26
@@ -90,30 +90,44 @@ class MianshiService(BlueFoxServerSystem):
|
||||
for b in OVEN_RESULT_BLOCKS:
|
||||
self.featureBlocks.add(b)
|
||||
|
||||
# ---- 目标方块 -> "下一步操作"提示(自动生成, 供转换/计时完成提示追加) ----
|
||||
self.nextOps = {}
|
||||
# ---- 结果方块/物品 -> "下一步"可读提示(供转换/入笼提示追加) ----
|
||||
# 例子: 饺子皮 -> "加入 猪肉馅、青菜碎"; 可颂面胚 -> "放在烤炉上等计时(60秒)结束变成 可颂"
|
||||
self.nextTips = {}
|
||||
|
||||
def _addTip(key, op):
|
||||
self.nextTips.setdefault(key, []).append(op)
|
||||
|
||||
# 1) 右键转换: 以"当前方块"为 key, 列出玩家可做的操作
|
||||
for r in SWITCH_RULES:
|
||||
item = r.get("item")
|
||||
if item is None:
|
||||
op = "空手右键"
|
||||
_addTip(r["block"], "空手右键")
|
||||
elif item == CLEAVER:
|
||||
op = "手持菜刀右键"
|
||||
_addTip(r["block"], "手持菜刀右键")
|
||||
elif item == ROLLINGPIN:
|
||||
op = "手持擀面杖右键"
|
||||
_addTip(r["block"], "手持擀面杖右键")
|
||||
elif item == PLATE:
|
||||
_addTip(r["block"], "手持盘子右键取出")
|
||||
else:
|
||||
op = "手持%s右键" % NAME_MAP.get(item, "对应物品")
|
||||
self.nextOps.setdefault(r["block"], []).append(op)
|
||||
_addTip(r["block"], "加入" + NAME_MAP.get(item, "对应物品"))
|
||||
# 2) 手持物品右键表面(itemUseOn): 以"手持物品"为 key
|
||||
for r in ITEM_USE_ON_RULES:
|
||||
it = r["item"]
|
||||
self.nextOps.setdefault(it, []).append(
|
||||
"手持%s右键%s" % (NAME_MAP.get(it, "它"), NAME_MAP.get(r["surface"], "表面")))
|
||||
_addTip(r["item"], "手持%s右键%s" % (
|
||||
NAME_MAP.get(r["item"], "它"), NAME_MAP.get(r["surface"], "表面")))
|
||||
# 3) 计时: 以"计时源方块"为 key, 说清等多久、变成什么
|
||||
for r in TIMER_RULES:
|
||||
src = r["source"]
|
||||
if r.get("below"):
|
||||
self.nextOps.setdefault(src, []).append(
|
||||
"放在%s上计时" % NAME_MAP.get(r["below"][0], "下方方块"))
|
||||
sec = r.get("time", 60)
|
||||
tgt = NAME_MAP.get(r["target"], r["target"])
|
||||
if r.get("below") == [OVEN]:
|
||||
_addTip(src, "放在烤炉上等计时(%d秒)结束变成 %s" % (sec, tgt))
|
||||
else:
|
||||
self.nextOps.setdefault(src, []).append("自动计时")
|
||||
_addTip(src, "等计时(%d秒)结束变成 %s" % (sec, tgt))
|
||||
|
||||
# ---- 计时源方块 -> 计时结束后的成品名(烤炉固定开始烤制提示用) ----
|
||||
self.timerTargetName = {}
|
||||
for r in TIMER_RULES:
|
||||
self.timerTargetName[r["source"]] = NAME_MAP.get(r["target"], r["target"])
|
||||
|
||||
# ---- itemUseOn 映射: 手持物品 -> 规则 ----
|
||||
self.itemUseOnMap = {}
|
||||
@@ -161,7 +175,9 @@ class MianshiService(BlueFoxServerSystem):
|
||||
if blockName in OVEN_FIX_BLOCKS and self._belowIs(dim, pos, OVEN):
|
||||
FeatureDispatcher.startTimerFor(blockName, dim, pos, playerId)
|
||||
if self.checkCooldown(key, 0.4):
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a开始烤制…(60秒), 烤好空手右键取走")
|
||||
tip = "§a开始烤制…(60秒),等计时结束变成 " + \
|
||||
self.timerTargetName.get(blockName, "成品")
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, tip)
|
||||
return True
|
||||
|
||||
# ---- 烤制成品取走: 空手右键成品(下方是烤炉) -> 成品掉落物, 烤炉不动 ----
|
||||
@@ -250,9 +266,9 @@ class MianshiService(BlueFoxServerSystem):
|
||||
|
||||
if rule.get("tip"):
|
||||
tip = rule["tip"]
|
||||
nxt = self._nextOpsFor(rule.get("replace") or rule.get("above"))
|
||||
nxt = self._nextStepTip(rule.get("replace") or rule.get("above"))
|
||||
if nxt:
|
||||
tip += ";下一步: " + "、".join(nxt)
|
||||
tip += ";" + nxt
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, tip)
|
||||
return True
|
||||
|
||||
@@ -348,9 +364,9 @@ class MianshiService(BlueFoxServerSystem):
|
||||
# 提示(追加"下一步操作"指引)
|
||||
if recipe.get("tip"):
|
||||
tip = recipe["tip"]
|
||||
nxt = self._nextOpsFor(recipe.get("target") or recipe.get("dropItem"))
|
||||
nxt = self._nextStepTip(recipe.get("target") or recipe.get("dropItem"))
|
||||
if nxt:
|
||||
tip += ";下一步: " + "、".join(nxt)
|
||||
tip += ";" + nxt
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, tip)
|
||||
|
||||
# ============================================================================
|
||||
@@ -368,18 +384,30 @@ class MianshiService(BlueFoxServerSystem):
|
||||
"""方块/物品的中文名(提示用), 未知则原样"""
|
||||
return NAME_MAP.get(blockName, blockName)
|
||||
|
||||
def _nextOpsFor(self, key):
|
||||
"""返回某方块/物品的"下一步操作"提示列表(去重保序)"""
|
||||
def _nextStepTip(self, key):
|
||||
"""按结果方块/物品生成"你可以…"的可读下一步提示; 无则返回空串
|
||||
例: 饺子皮 -> "你可以加入 猪肉馅、青菜碎"
|
||||
可颂面胚 -> "你可以放在烤炉上等计时(60秒)结束变成 可颂"
|
||||
"""
|
||||
if not key:
|
||||
return []
|
||||
ops = self.nextOps.get(key, [])
|
||||
return ""
|
||||
ops = self.nextTips.get(key, [])
|
||||
seen = set()
|
||||
out = []
|
||||
uniq = []
|
||||
for o in ops:
|
||||
if o not in seen:
|
||||
seen.add(o)
|
||||
out.append(o)
|
||||
return out
|
||||
uniq.append(o)
|
||||
if not uniq:
|
||||
return ""
|
||||
# 加料类("加入 XX")合并成一句(用顿号); 其余(工具/计时)用"或"并列
|
||||
adds = [o[2:] for o in uniq if o.startswith("加入")]
|
||||
others = [o for o in uniq if not o.startswith("加入")]
|
||||
parts = []
|
||||
if adds:
|
||||
parts.append("加入 " + "、".join(adds))
|
||||
parts.extend(others)
|
||||
return "你可以" + " 或 ".join(parts)
|
||||
|
||||
# ============================================================================
|
||||
# 六、工具方法:获取玩家主手物品
|
||||
|
||||
+4
-55
@@ -148,7 +148,7 @@ class MianshiTimerService(BlueFoxServerSystem):
|
||||
tdur = blockData["rtdd_tdur"]
|
||||
|
||||
if time.time() - tstart >= tdur:
|
||||
self._finishTimer(dim, pos, rule, blockData)
|
||||
self._finishTimer(dim, pos, rule)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
@@ -181,20 +181,9 @@ class MianshiTimerService(BlueFoxServerSystem):
|
||||
self._setAir(dim, pos)
|
||||
self._notifyIfOnline(tp, BREAK_TIP)
|
||||
|
||||
# 蒸制/烤制/发酵 完成后的"下一步"指引(按目标方块)
|
||||
_STEAM_DONE = {"rtdd:steamerdumplings_1", "rtdd:baozilong_2",
|
||||
"rtdd:bamboo_7", "rtdd:steamermilkandegg_1"}
|
||||
_OVEN_DONE = {"rtdd:bread_1", "rtdd:bread_2", "rtdd:bread_3", "rtdd:bread_4c",
|
||||
"rtdd:cakebatterblock", "rtdd:plate_35", "rtdd:souffle_0"}
|
||||
|
||||
def _finishTimer(self, dim, pos, rule, data):
|
||||
def _finishTimer(self, dim, pos, rule):
|
||||
"""到点转换(计时结束提示已取消, 只保留开始计时提示; 异常提示走 _handleBelowBroken)"""
|
||||
try:
|
||||
# 先取出发起玩家(下方 replaceBlock/_clearTimerData 会把实体数据清掉, 必须提前读)
|
||||
tp = ""
|
||||
try:
|
||||
tp = data["rtdd_tp"] or ""
|
||||
except Exception:
|
||||
tp = ""
|
||||
cur = comp.CreateBlockInfo(LevelId).GetBlockNew(pos, dim)
|
||||
if cur and cur.get("name") != rule["source"]:
|
||||
self._clearTimerData(dim, pos)
|
||||
@@ -202,50 +191,10 @@ class MianshiTimerService(BlueFoxServerSystem):
|
||||
# 到点转换
|
||||
self.replaceBlock(pos, dim, rule["target"], None)
|
||||
self._clearTimerData(dim, pos)
|
||||
tip = rule.get("doneTip", "")
|
||||
if tip:
|
||||
tip += self._nextStepTip(rule)
|
||||
self._notifyIfOnline(tp, tip)
|
||||
if not tp:
|
||||
self._notifyNearby(dim, pos, tip)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
def _nextStepTip(self, rule):
|
||||
"""计时完成后的"下一步"指引(让玩家知道该干什么)"""
|
||||
t = rule.get("target", "")
|
||||
if t in self._STEAM_DONE:
|
||||
return ";空手右键取出"
|
||||
if t in self._OVEN_DONE:
|
||||
return ";空手右键取走"
|
||||
if t == "rtdd:dough_0":
|
||||
return ";可空手擀面或手持菜刀切小面团"
|
||||
if t == "rtdd:breaddough_1a":
|
||||
return ";放烤炉上烤制"
|
||||
return ""
|
||||
|
||||
def _notifyNearby(self, dim, pos, tip, radius=6):
|
||||
"""完成提示兜底: 发起玩家不在/未知时, 提示该方块附近(三维距离)的在线玩家"""
|
||||
if not tip:
|
||||
return
|
||||
try:
|
||||
r2 = radius * radius
|
||||
for pid in comp.CreateGame(LevelId).GetAllPlayerIds():
|
||||
try:
|
||||
if comp.CreateDimension(pid).GetEntityDimensionId() != dim:
|
||||
continue
|
||||
fp = comp.CreatePos(pid).GetFootPos()
|
||||
if fp is None:
|
||||
continue
|
||||
dx = fp[0] - pos[0]
|
||||
dy = fp[1] - pos[1]
|
||||
dz = fp[2] - pos[2]
|
||||
if dx * dx + dy * dy + dz * dz <= r2:
|
||||
comp.CreateMsg(pid).NotifyOneMessage(pid, tip)
|
||||
except Exception:
|
||||
pass
|
||||
except Exception:
|
||||
pass
|
||||
# 计时完成后的"下一步"指引已取消(提示只保留开始计时的), 见 tuilun 记录
|
||||
|
||||
# ============================================================================
|
||||
# 四、计时数据读写(存在方块实体数据里,重启不丢)
|
||||
|
||||
@@ -84,41 +84,41 @@ SWITCH_RULES = [
|
||||
{"block": OILPOT_1, "item": BREADED_CHICKEN, "target": CHICKEN_0,
|
||||
"consume": 1, "startTimer": CHICKEN_0,
|
||||
"needBelow": LIT_STOVE, "belowTip": "§c油锅需要放在点燃的炉灶上",
|
||||
"tip": "§a放入裹粉鸡块, 开始炸制(60秒半熟, 再30秒熟)"},
|
||||
"tip": "§a放入裹粉鸡块, 等计时(60秒)结束变成 炸鸡块(半熟), 再等(30秒)结束变成 炸鸡块(熟)"},
|
||||
{"block": OILPOT_1, "item": BREADED_PORK, "target": PORK_0,
|
||||
"consume": 1, "startTimer": PORK_0,
|
||||
"needBelow": LIT_STOVE, "belowTip": "§c油锅需要放在点燃的炉灶上",
|
||||
"tip": "§a放入裹粉猪肉, 开始炸制(60秒半熟, 再30秒熟)"},
|
||||
"tip": "§a放入裹粉猪肉, 等计时(60秒)结束变成 炸猪排(半熟), 再等(30秒)结束变成 炸猪排(熟)"},
|
||||
{"block": OILPOT_1, "item": BREADED_FRIES, "target": FRIES_0,
|
||||
"consume": 3, "startTimer": FRIES_0,
|
||||
"needBelow": LIT_STOVE, "belowTip": "§c油锅需要放在点燃的炉灶上",
|
||||
"tip": "§a放入裹粉薯条x3, 开始炸制(60秒半熟, 再30秒熟)"},
|
||||
"tip": "§a放入裹粉薯条x3, 等计时(60秒)结束变成 炸薯条(半熟), 再等(30秒)结束变成 炸薯条(熟)"},
|
||||
{"block": OILPOT_1, "item": BREADED_FISH, "target": FISH_0,
|
||||
"consume": 1, "startTimer": FISH_0,
|
||||
"needBelow": LIT_STOVE, "belowTip": "§c油锅需要放在点燃的炉灶上",
|
||||
"tip": "§a放入裹粉鱼, 开始炸制(60秒半熟, 再30秒熟)"},
|
||||
"tip": "§a放入裹粉鱼, 等计时(60秒)结束变成 炸鱼块(半熟), 再等(30秒)结束变成 炸鱼块(熟)"},
|
||||
{"block": OILPOT_1, "item": BREADED_TEMPURA, "target": TEMPURA_1,
|
||||
"consume": 4, "startTimer": TEMPURA_1,
|
||||
"needBelow": LIT_STOVE, "belowTip": "§c油锅需要放在点燃的炉灶上",
|
||||
"tip": "§a放入裹粉天妇罗x4, 开始炸制(60秒)"},
|
||||
"tip": "§a放入裹粉天妇罗x4, 等计时(60秒)结束变成 炸天妇罗(熟)"},
|
||||
{"block": OILPOT_1, "item": DUMPLINGS, "target": DUMPLING_1,
|
||||
"consume": 3, "startTimer": DUMPLING_1,
|
||||
"needBelow": LIT_STOVE, "belowTip": "§c油锅需要放在点燃的炉灶上",
|
||||
"tip": "§a放入生饺子x3, 开始炸制(60秒), 计时/取出都在炸饺子上"},
|
||||
"tip": "§a放入生饺子x3, 等计时(60秒)结束变成 炸饺子(熟)"},
|
||||
|
||||
# ---- 三、出锅(熟炸物 + 盘子 -> 掉落盘装成品) ----
|
||||
{"block": CHICKEN_2, "item": PLATE, "action": "take_out",
|
||||
"dropItem": PLATE_CHICKEN, "consume": 1, "tip": "§a取出盘装鸡块"},
|
||||
"dropItem": PLATE_CHICKEN, "consume": 1, "tip": "§a取出盘装鸡块, 油锅恢复满油, 可继续放料"},
|
||||
{"block": PORK_2, "item": PLATE, "action": "take_out",
|
||||
"dropItem": PLATE_PORK, "consume": 1, "tip": "§a取出炸猪排(盘装)"},
|
||||
"dropItem": PLATE_PORK, "consume": 1, "tip": "§a取出炸猪排(盘装), 油锅恢复满油, 可继续放料"},
|
||||
{"block": FRIES_2, "item": PLATE, "action": "take_out",
|
||||
"dropItem": PLATE_FRIES, "consume": 1, "tip": "§a取出炸薯条(盘装)"},
|
||||
"dropItem": PLATE_FRIES, "consume": 1, "tip": "§a取出炸薯条(盘装), 油锅恢复满油, 可继续放料"},
|
||||
{"block": FISH_2, "item": PLATE, "action": "take_out",
|
||||
"dropItem": PLATE_FISH, "consume": 1, "tip": "§a取出盘装炸鱼"},
|
||||
"dropItem": PLATE_FISH, "consume": 1, "tip": "§a取出盘装炸鱼, 油锅恢复满油, 可继续放料"},
|
||||
{"block": TEMPURA_2, "item": PLATE, "action": "take_out",
|
||||
"dropItem": PLATE_TEMPURA, "consume": 1, "tip": "§a取出天妇罗炸虾"},
|
||||
"dropItem": PLATE_TEMPURA, "consume": 1, "tip": "§a取出天妇罗炸虾, 油锅恢复满油, 可继续放料"},
|
||||
{"block": DUMPLING_2, "item": PLATE, "action": "take_out",
|
||||
"dropItem": PLATE_DUMPLINGS, "consume": 1, "tip": "§a取出炸饺子(盘装)"},
|
||||
"dropItem": PLATE_DUMPLINGS, "consume": 1, "tip": "§a取出炸饺子(盘装), 油锅恢复满油, 可继续放料"},
|
||||
]
|
||||
|
||||
# ============================================================================
|
||||
|
||||
+3
-37
@@ -141,7 +141,7 @@ class YouguoTimerService(BlueFoxServerSystem):
|
||||
tdur = blockData["rtdd_tdur"]
|
||||
|
||||
if time.time() - tstart >= tdur:
|
||||
self._finishTimer(dim, pos, rule, blockData)
|
||||
self._finishTimer(dim, pos, rule)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
@@ -154,14 +154,9 @@ class YouguoTimerService(BlueFoxServerSystem):
|
||||
tp = ""
|
||||
self._notifyIfOnline(tp, "§c油锅下的炉灶移走了, 暂停炸制")
|
||||
|
||||
def _finishTimer(self, dim, pos, rule, data):
|
||||
def _finishTimer(self, dim, pos, rule):
|
||||
"""到点转换(计时结束提示已取消, 只保留放料时的开始提示; 炉灶移走提示走 _handleBelowBroken)"""
|
||||
try:
|
||||
# 先取出发起玩家(下方 replaceBlock/_clearTimerData 会把实体数据清掉, 必须提前读)
|
||||
tp = ""
|
||||
try:
|
||||
tp = data["rtdd_tp"] or ""
|
||||
except Exception:
|
||||
tp = ""
|
||||
cur = comp.CreateBlockInfo(LevelId).GetBlockNew(pos, dim)
|
||||
if cur and cur.get("name") != rule["source"]:
|
||||
self._clearTimerData(dim, pos)
|
||||
@@ -169,12 +164,6 @@ class YouguoTimerService(BlueFoxServerSystem):
|
||||
# 到点转换
|
||||
self.replaceBlock(pos, dim, rule["target"], None)
|
||||
self._clearTimerData(dim, pos)
|
||||
# 计时结束提示: 发给发起玩家; 发起者不在/未知则提示附近
|
||||
tip = rule.get("doneTip", "")
|
||||
if tip:
|
||||
self._notifyIfOnline(tp, tip)
|
||||
if not tp:
|
||||
self._notifyNearby(dim, pos, tip)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
@@ -221,29 +210,6 @@ class YouguoTimerService(BlueFoxServerSystem):
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
def _notifyNearby(self, dim, pos, tip, radius=6):
|
||||
"""完成提示兜底: 发起玩家不在/未知时, 提示该方块附近(三维距离)的在线玩家"""
|
||||
if not tip:
|
||||
return
|
||||
try:
|
||||
r2 = radius * radius
|
||||
for pid in comp.CreateGame(LevelId).GetAllPlayerIds():
|
||||
try:
|
||||
if comp.CreateDimension(pid).GetEntityDimensionId() != dim:
|
||||
continue
|
||||
fp = comp.CreatePos(pid).GetFootPos()
|
||||
if fp is None:
|
||||
continue
|
||||
dx = fp[0] - pos[0]
|
||||
dy = fp[1] - pos[1]
|
||||
dz = fp[2] - pos[2]
|
||||
if dx * dx + dy * dy + dz * dz <= r2:
|
||||
comp.CreateMsg(pid).NotifyOneMessage(pid, tip)
|
||||
except Exception:
|
||||
pass
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ============================================================================
|
||||
# 六、工具方法:替换方块
|
||||
# ============================================================================
|
||||
|
||||
Reference in new issue
Block a user