From 7d0019192b6df3e01bcfee0c2f4b62d036fa9e3a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 02 三月 2026 19:58:13 +0800
Subject: [PATCH] 501 【武将】武将时装-服务端(增加时装形象,与时装属性相互独立;每个武将物品独立,UserData原78-皮肤形象索引,增加82-皮肤属性索引;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py | 52 ++++++++++++++++++++++++++++++----------------------
1 files changed, 30 insertions(+), 22 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
index cf7afb1..1eea137 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
@@ -27,31 +27,39 @@
import ShareDefine
import IpyGameDataPY
import PlayerControl
-import PlayerSignDay
+import FunctionNPCCommon
import PlayerActBuyCountGift
-import PlayerActLoginNew
+import OpenServerActivity
import PlayerActTask
-import IPY_GameWorld
-import ItemCommon
import ItemControler
+import PlayerMingge
+import PlayerTravel
+import PlayerHorse
import PlayerArena
import PlayerTask
+import DBDataMgr
# 功能开启需执行的函数{功能ID:执行函数, ...} 函数需返回是否激活成功, 功能开启有需要处理功能逻辑的这里增加函数调用配置即可
FuncOpenLogicDict = {
- ShareDefine.GameFuncID_SignDay:lambda curObj:PlayerSignDay.DoSignDayOpen(curObj),
ShareDefine.GameFuncID_Arena:lambda curObj:PlayerArena.DoArenaOpen(curObj),
+ ShareDefine.GameFuncID_Shop:lambda curObj:FunctionNPCCommon.DoShopOpen(curObj),
+ ShareDefine.GameFuncID_Horse:lambda curObj:PlayerHorse.DoHorseOpen(curObj),
+ ShareDefine.GameFuncID_Travel:lambda curObj:PlayerTravel.DoTravelOpen(curObj),
+ ShareDefine.GameFuncID_Mingge:lambda curObj:PlayerMingge.DoMinggeOpen(curObj),
+ ShareDefine.GameFuncID_OSA_MainLevel:lambda curObj:OpenServerActivity.DoOSA_MainLevel(curObj),
+ ShareDefine.GameFuncID_OSA_HeroCall:lambda curObj:OpenServerActivity.DoOSA_HeroCall(curObj),
}
def GetFuncOpenLVIpyData(funcID): return IpyGameDataPY.GetIpyGameData("FuncOpenLV", funcID)
-def DoFuncOpenLogic(curPlayer):
+def DoFuncOpenLogic(curPlayer, checkServerDay=True):
'''执行触发功能开启逻辑
@param finishMissionIDList: 完成的任务ID列表
'''
#GameWorld.DebugLog("执行触发功能开启逻辑: finishMissionIDList=%s" % finishMissionIDList, curPlayer.GetPlayerID())
+ serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
openFuncIDList = []
curLV = curPlayer.GetLV()
ipyGameData = IpyGameDataPY.IPY_Data()
@@ -82,6 +90,14 @@
if limitMissionID and not curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_MissionFinish % limitMissionID):
continue
+ limitOpenDay = ipyData.GetLimitOpenDay()
+ if limitOpenDay and serverDay < limitOpenDay and checkServerDay:
+ continue
+
+ limitManLevel = ipyData.GetLimitManLevel()
+ if limitManLevel and PlayerControl.GetMainLevelPassValue(curPlayer) < limitManLevel:
+ continue
+
# 先更新值再处理开启逻辑,不能可能导致在功能开启逻辑中再开启功能引发的递归死循环
befValue, updValue = GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncFirstTouch, funcID, 1)
if befValue == updValue:
@@ -100,7 +116,6 @@
if openFuncIDList:
Sync_FuncOpenState(curPlayer, openFuncIDList)
PlayerActTask.OnCheckRelateFuncAct(curPlayer, openFuncIDList)
- PlayerActLoginNew.OnCheckRelateFuncAct(curPlayer, openFuncIDList)
PlayerActBuyCountGift.OnCheckRelateFuncAct(curPlayer, openFuncIDList)
return
@@ -120,29 +135,22 @@
def GetFuncOpenAward(curPlayer, funcID):
## 领取功能开启奖励
- ipyData = IpyGameDataPY.GetIpyGameData('FunctionForecast', funcID)
+ ipyData = IpyGameDataPY.GetIpyGameData("FuncOpenLV", funcID)
if not ipyData:
return
getState = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncAwardState, funcID)
if getState:
+ GameWorld.DebugLog("功能开启奖励已领取! funcID=%s" % funcID)
return
- awardDict = ipyData.GetAward()
- job = curPlayer.GetJob()
- itemList = awardDict.get(str(job))
+ openState = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncFirstTouch, funcID)
+ if not openState:
+ GameWorld.DebugLog("功能未开启无法领取! funcID=%s" % funcID)
+ return
+ itemList = ipyData.GetAwardList()
if not itemList:
return
- # 检查背包
- needSpace = len(itemList)
- packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
- if needSpace > packSpace:
- PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
- return
GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncAwardState, funcID, 1)
-
- # 给物品
- for itemID, itemCount in itemList:
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
- ItemControler.NotifyGiveAwardInfo(curPlayer, itemList, "FuncOpenAward")
+ ItemControler.GivePlayerItemOrMail(curPlayer, itemList, event=["FuncOpenAward", False, {}])
Sync_FuncOpenState(curPlayer, [funcID])
return
--
Gitblit v1.8.0