From 23772c7a582ffd920706330d52b8603e9859ef4c Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期五, 07 十二月 2018 19:39:06 +0800
Subject: [PATCH] 4856 许愿池重置修改
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 112 insertions(+), 2 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
index 22f2be1..d2cc301 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
@@ -30,8 +30,10 @@
import EventShell
import PlayerActivity
import PlayerFairyCeremony
+import PlayerVip
import copy
+
##功能开启
def DoRefineStoveOpen(curPlayer):
@@ -43,8 +45,13 @@
##登录处理
def DoOnLogin(curPlayer, tick):
Sycn_AlchemyMsg(curPlayer)
+ Sycn_AlchemyPrayMsg(curPlayer)
return
+def OnDay(curPlayer):
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyPrayCnt, 0)
+ Sycn_AlchemyPrayMsg(curPlayer)
+ return
#// A5 76 玩家炼丹 #tagCMPlayerRefine
#
@@ -191,7 +198,12 @@
GameWorld.DebugLog("更新炼丹产出特殊物品次数: makeItemID=%s,outputCount=%s" % (makeItemID, outputCount), playerID)
#给物品
- ItemControler.GivePlayerItem(curPlayer, makeItemID, itemCount, delItemHasBind, [IPY_GameWorld.rptItem],
+ notBindItemList = IpyGameDataPY.GetFuncEvalCfg("SpecialAlchemy", 4) # 固定不绑定的物品
+ if makeItemID in notBindItemList:
+ makeItemBind = False
+ else:
+ makeItemBind = delItemHasBind
+ ItemControler.GivePlayerItem(curPlayer, makeItemID, itemCount, makeItemBind, [IPY_GameWorld.rptItem],
event=[ChConfig.ItemGive_Refine, False, {}])
Sycn_AlchemyMsg(curPlayer, makeItemID)
@@ -298,8 +310,9 @@
def CalcStoveAttr(curPlayer):
# 果实加成
allAttrYaoList = [{} for _ in range(4)]
- PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrYaoList, ShareDefine.Def_AttrFruitFunc_Stove)
+ fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrYaoList, ShareDefine.Def_AttrFruitFunc_Stove)
PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_StoveYao, allAttrYaoList)
+ curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_StoveYao, fightPowerEx)
allAttrList = [{} for _ in range(4)]
alchemyLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyLV)
@@ -312,3 +325,100 @@
PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Stove, allAttrList)
return
+
+g_needAlchemyLVDict = {}
+def GetIsCanOutByAlchemyLV(curPlayer, itemID):
+ #判断当前丹炉等级是否可产出该丹药
+ global g_needAlchemyLVDict
+ if not g_needAlchemyLVDict:
+ ipyMgr = IpyGameDataPY.IPY_Data()
+ for i in xrange(ipyMgr.GetAlchemyCount()):
+ ipyData = ipyMgr.GetAlchemyByIndex(i)
+ needAlchemyLV = ipyData.GetNeedAlchemyLV()
+ itemList = ipyData.GetAlchemyItem()
+ for itemInfo in itemList:
+ g_needAlchemyLVDict[itemInfo[1]] = needAlchemyLV
+ for i in xrange(ipyMgr.GetAlchemySpecCount()):
+ ipyData = ipyMgr.GetAlchemySpecByIndex(i)
+ needAlchemyLV = ipyData.GetNeedAlchemyLV()
+ itemList = ipyData.GetAlchemyItem()
+ for itemInfo in itemList:
+ g_needAlchemyLVDict[itemInfo[1]] = needAlchemyLV
+ return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyLV) >= g_needAlchemyLVDict.get(itemID, 0)
+
+
+#// A5 14 祈福丹药 #tagCMPrayElixir
+#
+#struct tagCMPrayElixir
+#
+#{
+# tagHead Head;
+#};
+def PlayerPrayElixir(index, clientPack, tick):
+ curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+ prayCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyPrayCnt)
+ limitCnt = PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_PrayElixir)
+ if prayCnt >= limitCnt:
+ GameWorld.DebugLog('今日祈福丹药次数已满!prayCnt=%s'%prayCnt)
+ return
+ packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, 1)
+ if not packSpace:
+ PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
+ return
+
+ alchemyItemList = IpyGameDataPY.GetFuncEvalCfg('GodAlchemy')
+
+ newItemInfoList = []
+ for itemInfo in alchemyItemList:
+ itemID = itemInfo[1]
+ if not GetIsCanOutByAlchemyLV(curPlayer, itemID):
+ #GameWorld.DebugLog('祈福丹药,炼丹等级未达到,移除产出库!itemID=%s'%itemID)
+ continue
+ if PlayerAttrFruit.IsFruitEatFull(curPlayer, itemID):
+ #GameWorld.DebugLog('祈福丹药,使用次数已满,移除产出库!itemID=%s'%itemID)
+ continue
+ newItemInfoList.append(itemInfo)
+ if not newItemInfoList:
+ GameWorld.DebugLog('祈福丹药,没有丹药可产出!!')
+ return
+
+ makeItemInfo = GameWorld.GetResultByWeightList(newItemInfoList)
+ if not makeItemInfo:
+ GameWorld.DebugLog("祈福丹药, 结果错误!")
+ return
+
+ makeItemID, itemCount = makeItemInfo
+ makeItemData = GameWorld.GetGameData().GetItemByTypeID(makeItemID)
+ if not makeItemData:
+ return
+
+ costMoney = IpyGameDataPY.GetFuncCfg('GodAlchemy', 2)
+ if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, costMoney, ChConfig.Def_Cost_AlchemyPray):
+ return
+ #给物品
+ ItemControler.GivePlayerItem(curPlayer, makeItemID, itemCount, True, [IPY_GameWorld.rptItem],
+ event=[ChConfig.ItemGive_Refine, False, {}])
+ #GameWorld.DebugLog('makeItemID=%s,newItemInfoList=%s'%(makeItemID, newItemInfoList))
+
+
+ #紫色及以上全服广播
+ notifyColor = IpyGameDataPY.GetFuncCfg("AlchemyNotify", 1)
+ needNotifyItemIDList = IpyGameDataPY.GetFuncEvalCfg("AlchemyNotify", 2)
+ notNotifyItemIDList = IpyGameDataPY.GetFuncEvalCfg("AlchemyNotify", 3)
+ if makeItemID not in notNotifyItemIDList and (makeItemID in needNotifyItemIDList or makeItemData.GetItemColor() >= notifyColor):
+ PlayerControl.WorldNotify(0, "BlastfurnaceBlessing", [curPlayer.GetPlayerName(), makeItemID])
+
+ #更新次数
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyPrayCnt, prayCnt+1)
+ Sycn_AlchemyPrayMsg(curPlayer, makeItemID)
+ return
+
+def Sycn_AlchemyPrayMsg(curPlayer, itemID=0):
+ #祈福丹药结果
+ if not itemID and not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_RefineStove):
+ return
+ pack = ChPyNetSendPack.tagMCPrayElixirResult()
+ pack.PrayCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyPrayCnt)
+ pack.ItemID = itemID
+ NetPackCommon.SendFakePack(curPlayer, pack)
+ return
\ No newline at end of file
--
Gitblit v1.8.0