菜单功能
This commit is contained in:
1 parent
a647878ac1
commit
3b63794fe4
42 files changed
+1627
-106
No files matched your search
+49
-49
@@ -148,20 +148,20 @@ CUPBOARD_RULES = [
|
||||
# 书柜_13(12本)=bookcase_2, 书柜_14(13本)=bookcase_1
|
||||
# ============================================================
|
||||
_BOOKCASE_CHAIN = [
|
||||
"rtdd:bookcase", # 书柜_1(空)
|
||||
"rtdd:bookcase_12", # 书柜_2(1本)
|
||||
"rtdd:bookcase_11", # 书柜_3(2本)
|
||||
"rtdd:bookcase_10", # 书柜_4(3本)
|
||||
"rtdd:bookcase_9", # 书柜_5(4本)
|
||||
"rtdd:bookcase_8", # 书柜_6(5本)
|
||||
"rtdd:bookcase_7", # 书柜_7(6本)
|
||||
"rtdd:bookcase_6", # 书柜_8(7本)
|
||||
"rtdd:bookcase_5", # 书柜_9(8本)
|
||||
"rtdd:bookcase_4", # 书柜_10(9本)
|
||||
"rtdd:b_196", # 书柜_11(10本)
|
||||
"rtdd:bookcase_3", # 书柜_12(11本)
|
||||
"rtdd:bookcase_2", # 书柜_13(12本)
|
||||
"rtdd:bookcase_1", # 书柜_14(13本)
|
||||
"rtdd:bookcase", # 书柜_1(空)
|
||||
"rtdd:bookcase_12", # 书柜_2(1本)
|
||||
"rtdd:bookcase_11", # 书柜_3(2本)
|
||||
"rtdd:bookcase_10", # 书柜_4(3本)
|
||||
"rtdd:bookcase_9", # 书柜_5(4本)
|
||||
"rtdd:bookcase_8", # 书柜_6(5本)
|
||||
"rtdd:bookcase_7", # 书柜_7(6本)
|
||||
"rtdd:bookcase_6", # 书柜_8(7本)
|
||||
"rtdd:bookcase_5", # 书柜_9(8本)
|
||||
"rtdd:bookcase_4", # 书柜_10(9本)
|
||||
"rtdd:b_196", # 书柜_11(10本)
|
||||
"rtdd:bookcase_3", # 书柜_12(11本)
|
||||
"rtdd:bookcase_2", # 书柜_13(12本)
|
||||
"rtdd:bookcase_1", # 书柜_14(13本)
|
||||
]
|
||||
|
||||
BOOKCASE_RULES = []
|
||||
@@ -195,10 +195,10 @@ for _i in range(len(_BOOKCASE_CHAIN) - 1, 0, -1):
|
||||
# 药水架_3(两瓶)=lotion_2, 药水架_4(三瓶)=lotion_3
|
||||
# ============================================================
|
||||
_POTIONRACK_CHAIN = [
|
||||
"rtdd:lotion_0", # 药水架_1(空)
|
||||
"rtdd:lotion_1", # 药水架_2(一瓶)
|
||||
"rtdd:lotion_2", # 药水架_3(两瓶)
|
||||
"rtdd:lotion_3", # 药水架_4(三瓶)
|
||||
"rtdd:lotion_0", # 药水架_1(空)
|
||||
"rtdd:lotion_1", # 药水架_2(一瓶)
|
||||
"rtdd:lotion_2", # 药水架_3(两瓶)
|
||||
"rtdd:lotion_3", # 药水架_4(三瓶)
|
||||
]
|
||||
|
||||
POTIONRACK_RULES = []
|
||||
@@ -230,18 +230,18 @@ POTIONRACK_RULES.append({
|
||||
# 可放: 锅铲(spatula) / 锅勺(potandspoon) / 菜刀(cleaver) / 炒锅(wok)
|
||||
# ============================================================
|
||||
KITCHENRACK_BLOCKS = [
|
||||
"rtdd:kitchenwarerack", # 厨具架(空)
|
||||
"rtdd:kitchenwareracka_1", # 单锅铲
|
||||
"rtdd:kitchenwareracka_2", # 双锅铲
|
||||
"rtdd:kitchenwareracka_3", # 锅铲+锅勺
|
||||
"rtdd:kitchenwarerackb_1", # 单锅勺
|
||||
"rtdd:kitchenwarerackb_2", # 双锅勺
|
||||
"rtdd:kitchenwarerackc_1", # 单炒锅
|
||||
"rtdd:kitchenwarerackc_2", # 炒锅+菜刀
|
||||
"rtdd:kitchenwarerackd_1", # 单菜刀
|
||||
"rtdd:kitchenwarerackd_2", # 菜刀+锅铲
|
||||
"rtdd:kitchenwarerackd_3", # 双菜刀
|
||||
"rtdd:kitchenwarerackd_4", # 菜刀+锅勺
|
||||
"rtdd:kitchenwarerack", # 厨具架(空)
|
||||
"rtdd:kitchenwareracka_1", # 单锅铲
|
||||
"rtdd:kitchenwareracka_2", # 双锅铲
|
||||
"rtdd:kitchenwareracka_3", # 锅铲+锅勺
|
||||
"rtdd:kitchenwarerackb_1", # 单锅勺
|
||||
"rtdd:kitchenwarerackb_2", # 双锅勺
|
||||
"rtdd:kitchenwarerackc_1", # 单炒锅
|
||||
"rtdd:kitchenwarerackc_2", # 炒锅+菜刀
|
||||
"rtdd:kitchenwarerackd_1", # 单菜刀
|
||||
"rtdd:kitchenwarerackd_2", # 菜刀+锅铲
|
||||
"rtdd:kitchenwarerackd_3", # 双菜刀
|
||||
"rtdd:kitchenwarerackd_4", # 菜刀+锅勺
|
||||
]
|
||||
|
||||
# 可上架的厨具物品
|
||||
@@ -257,30 +257,30 @@ KITCHENRACK_SINGLE_BLOCK = {
|
||||
|
||||
# 双件组合(sorted) -> 对应方块, 顺序无关(先放A再放B == 先放B再放A)
|
||||
KITCHENRACK_COMBO_BLOCK = {
|
||||
("rtdd:potandspoon", "rtdd:spatula"): "rtdd:kitchenwareracka_3", # 锅铲+锅勺
|
||||
("rtdd:cleaver", "rtdd:wok"): "rtdd:kitchenwarerackc_2", # 炒锅+菜刀
|
||||
("rtdd:cleaver", "rtdd:spatula"): "rtdd:kitchenwarerackd_2", # 菜刀+锅铲
|
||||
("rtdd:cleaver", "rtdd:potandspoon"): "rtdd:kitchenwarerackd_4", # 菜刀+锅勺
|
||||
("rtdd:spatula", "rtdd:spatula"): "rtdd:kitchenwareracka_2", # 双锅铲
|
||||
("rtdd:potandspoon", "rtdd:spatula"): "rtdd:kitchenwareracka_3", # 锅铲+锅勺
|
||||
("rtdd:cleaver", "rtdd:wok"): "rtdd:kitchenwarerackc_2", # 炒锅+菜刀
|
||||
("rtdd:cleaver", "rtdd:spatula"): "rtdd:kitchenwarerackd_2", # 菜刀+锅铲
|
||||
("rtdd:cleaver", "rtdd:potandspoon"): "rtdd:kitchenwarerackd_4", # 菜刀+锅勺
|
||||
("rtdd:spatula", "rtdd:spatula"): "rtdd:kitchenwareracka_2", # 双锅铲
|
||||
("rtdd:potandspoon", "rtdd:potandspoon"): "rtdd:kitchenwarerackb_2", # 双锅勺
|
||||
("rtdd:cleaver", "rtdd:cleaver"): "rtdd:kitchenwarerackd_3", # 双菜刀
|
||||
("rtdd:cleaver", "rtdd:cleaver"): "rtdd:kitchenwarerackd_3", # 双菜刀
|
||||
}
|
||||
|
||||
# 方块状态 -> 厨具物品列表(名称即组合, 顺序按方块名从左到右, 最后一件=后放入)
|
||||
# 用于"无记录"时推断(如创造模式直接放置带厨具的厨具架), 取回按此顺序后放先取
|
||||
KITCHENRACK_BLOCK_ITEMS = {
|
||||
"rtdd:kitchenwarerack": [], # 空
|
||||
"rtdd:kitchenwareracka_1": ["rtdd:spatula"], # 单锅铲
|
||||
"rtdd:kitchenwareracka_2": ["rtdd:spatula", "rtdd:spatula"], # 双锅铲
|
||||
"rtdd:kitchenwarerack": [], # 空
|
||||
"rtdd:kitchenwareracka_1": ["rtdd:spatula"], # 单锅铲
|
||||
"rtdd:kitchenwareracka_2": ["rtdd:spatula", "rtdd:spatula"], # 双锅铲
|
||||
"rtdd:kitchenwareracka_3": ["rtdd:spatula", "rtdd:potandspoon"], # 锅铲+锅勺
|
||||
"rtdd:kitchenwarerackb_1": ["rtdd:potandspoon"], # 单锅勺
|
||||
"rtdd:kitchenwarerackb_1": ["rtdd:potandspoon"], # 单锅勺
|
||||
"rtdd:kitchenwarerackb_2": ["rtdd:potandspoon", "rtdd:potandspoon"], # 双锅勺
|
||||
"rtdd:kitchenwarerackc_1": ["rtdd:wok"], # 单炒锅
|
||||
"rtdd:kitchenwarerackc_2": ["rtdd:wok", "rtdd:cleaver"], # 炒锅+菜刀
|
||||
"rtdd:kitchenwarerackd_1": ["rtdd:cleaver"], # 单菜刀
|
||||
"rtdd:kitchenwarerackd_2": ["rtdd:cleaver", "rtdd:spatula"], # 菜刀+锅铲
|
||||
"rtdd:kitchenwarerackd_3": ["rtdd:cleaver", "rtdd:cleaver"], # 双菜刀
|
||||
"rtdd:kitchenwarerackd_4": ["rtdd:cleaver", "rtdd:potandspoon"], # 菜刀+锅勺
|
||||
"rtdd:kitchenwarerackc_1": ["rtdd:wok"], # 单炒锅
|
||||
"rtdd:kitchenwarerackc_2": ["rtdd:wok", "rtdd:cleaver"], # 炒锅+菜刀
|
||||
"rtdd:kitchenwarerackd_1": ["rtdd:cleaver"], # 单菜刀
|
||||
"rtdd:kitchenwarerackd_2": ["rtdd:cleaver", "rtdd:spatula"], # 菜刀+锅铲
|
||||
"rtdd:kitchenwarerackd_3": ["rtdd:cleaver", "rtdd:cleaver"], # 双菜刀
|
||||
"rtdd:kitchenwarerackd_4": ["rtdd:cleaver", "rtdd:potandspoon"], # 菜刀+锅勺
|
||||
}
|
||||
|
||||
# ============================================================
|
||||
@@ -339,11 +339,11 @@ FIREPLACE_RULES = [
|
||||
# 与售卖盒不同: 破坏后记录随方块一起消失, 重新放置右键取不到东西。
|
||||
# ============================================================
|
||||
STORAGE_EMPTY_BLOCK = {}
|
||||
for _b in _BOOKCASE_CHAIN[1:]: # 书柜_2~14(有书) -> 书柜_1(空)
|
||||
for _b in _BOOKCASE_CHAIN[1:]: # 书柜_2~14(有书) -> 书柜_1(空)
|
||||
STORAGE_EMPTY_BLOCK[_b] = _BOOKCASE_CHAIN[0]
|
||||
for _b in _POTIONRACK_CHAIN[1:]: # 药水架_2~4(有药水) -> 药水架_1(空)
|
||||
for _b in _POTIONRACK_CHAIN[1:]: # 药水架_2~4(有药水) -> 药水架_1(空)
|
||||
STORAGE_EMPTY_BLOCK[_b] = _POTIONRACK_CHAIN[0]
|
||||
for _b in KITCHENRACK_BLOCKS[1:]: # 厨具架各形态 -> 厨具架(空)
|
||||
for _b in KITCHENRACK_BLOCKS[1:]: # 厨具架各形态 -> 厨具架(空)
|
||||
STORAGE_EMPTY_BLOCK[_b] = KITCHENRACK_BLOCKS[0]
|
||||
|
||||
# ============================================================
|
||||
|
||||
+21
-18
@@ -81,12 +81,16 @@ class ClientFeatureDispatcher(BlueFoxClientSystem):
|
||||
|
||||
def Destroy(self):
|
||||
print "===== ClientFeatureDispatcher Destroy ====="
|
||||
self.UnListenForEvent(clientApi.GetEngineNamespace(),
|
||||
clientApi.GetEngineSystemName(),
|
||||
"ClientItemUseOnEvent", self, self.OnItemUseOn)
|
||||
self.UnListenForEvent(clientApi.GetEngineNamespace(),
|
||||
clientApi.GetEngineSystemName(),
|
||||
"ClientItemTryUseEvent", self, self.OnItemTryUse)
|
||||
self.UnListenForEvent(
|
||||
clientApi.GetEngineNamespace(),
|
||||
clientApi.GetEngineSystemName(),
|
||||
"ClientItemUseOnEvent", self, self.OnItemUseOn
|
||||
)
|
||||
self.UnListenForEvent(
|
||||
clientApi.GetEngineNamespace(),
|
||||
clientApi.GetEngineSystemName(),
|
||||
"ClientItemTryUseEvent", self, self.OnItemTryUse
|
||||
)
|
||||
|
||||
# ============================================================================
|
||||
# 入口1: 手持物品右键方块表面 -> 白名单组合才 ret (取消默认放置/吃)
|
||||
@@ -128,7 +132,7 @@ class ClientFeatureDispatcher(BlueFoxClientSystem):
|
||||
if blockName and (itemName, blockName) in BLOCKUSE_CANCEL:
|
||||
args["ret"] = True
|
||||
self._blockCd[cdKey] = time.time()
|
||||
self._blockCdPlayer[pId] = time.time() # 玩家级短标记, 取消随后 0.2s 内投掷动画
|
||||
self._blockCdPlayer[pId] = time.time() # 玩家级短标记, 取消随后 0.2s 内投掷动画
|
||||
self.NotifyToServer(BLOCK_USE_REQUEST, {
|
||||
"playerId": pId,
|
||||
"x": args.get("x"), "y": args.get("y"), "z": args.get("z"),
|
||||
@@ -228,17 +232,16 @@ class ClientFeatureDispatcher(BlueFoxClientSystem):
|
||||
# 饭团/水煮蛋/豆腐 在 ITEM_USE_ON_CANCEL_BY_ITEM 里(EAT_ITEMS)
|
||||
if itemName in ITEM_USE_ON_CANCEL_BY_ITEM:
|
||||
args["cancel"] = True
|
||||
# 投掷/使用抑制: 玩家刚做过 BlockUse 转换(0.2s 内, 如放蛋/放料), 引擎重置右键会立即
|
||||
# 再触发一次"投掷/使用"动画(鸡蛋右键鸡窝放蛋 -> 扔蛋)。此窗口内若手持 BlockUse 可投掷/
|
||||
# 可用物品, 直接 cancel 掉投掷; 窗口过后放行(对地扔蛋正常)。
|
||||
# 注意: 玩家级标记(pId)而非坐标——投掷事件无目标方块坐标, 只有玩家。0.2s 极短且仅在
|
||||
# 刚做完方块转换后生效, 不会影响玩家正常对地面/空中扔蛋。
|
||||
_pId = args.get("playerId") or args.get("entityId")
|
||||
_pc = self._blockCdPlayer.get(_pId, 0)
|
||||
if _pc and (time.time() - _pc) < 0.2 and itemName in BLOCKUSE_CANCEL_ITEMS:
|
||||
args["cancel"] = True
|
||||
|
||||
# 投掷/使用抑制: 玩家刚做过 BlockUse 转换(0.2s 内, 如放蛋/放料), 引擎重置右键会立即
|
||||
# 再触发一次"投掷/使用"动画(鸡蛋右键鸡窝放蛋 -> 扔蛋)。此窗口内若手持 BlockUse 可投掷/
|
||||
# 可用物品, 直接 cancel 掉投掷; 窗口过后放行(对地扔蛋正常)。
|
||||
# 注意: 玩家级标记(pId)而非坐标——投掷事件无目标方块坐标, 只有玩家。0.2s 极短且仅在
|
||||
# 刚做完方块转换后生效, 不会影响玩家正常对地面/空中扔蛋。
|
||||
_pId = args.get("playerId") or args.get("entityId")
|
||||
_pc = self._blockCdPlayer.get(_pId, 0)
|
||||
if _pc and (time.time() - _pc) < 0.2 and itemName in BLOCKUSE_CANCEL_ITEMS:
|
||||
args["cancel"] = True
|
||||
|
||||
# 注: 客户端系统需在客户端进程被实例化。modMain 只能在服务端 import 服务端
|
||||
# 系统; 客户端系统由 BlueFox 框架自动注册其子类。为确保本类被加载, 需在
|
||||
# modMain 客户端分支(IsInServer()==False)里 import 本模块。
|
||||
# modMain 客户端分支(IsInServer()==False)里 import 本模块。
|
||||
Reference in new issue
Block a user