From 5f507dd6b2d8a41922e45751e217cfe835b78203 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 30 八月 2018 16:25:13 +0800
Subject: [PATCH] Fix: 修复封魔坛刷怪报错;
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 108 insertions(+), 8 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
index 2e50fe6..efcba16 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
@@ -1362,6 +1362,22 @@
value = 1
return QuestRunnerValue.GetEval(conditionType, value, conditionValue)
+##判断是否穿戴某部位(非时效)
+# @param curPlayer 玩家实例
+# @param curMission 任务实例
+# @param curConditionNode 节点信息
+# @return 返回值, 是否判断成功
+# @remarks <have_equip value="装备位"/>
+def ConditionType_Have_Equip(curPlayer, curMission, curConditionNode):
+ equipPlace = int(curConditionNode.GetAttribute("value"))
+ roleEquipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
+ curEquip = roleEquipPack.GetAt(equipPlace)
+ if curEquip.IsEmpty():
+ return False
+ if curEquip.GetEndureReduceType():
+ return False
+ return True
+
#---------------------------------------------------------------------
##增加家族相关值
# @param curPlayer 玩家实例
@@ -1921,7 +1937,7 @@
# @param curMission 任务实例
# @param curConditionNode 节点信息
# @return 返回值, 是否判断成功
-# @remarks <Have_Money value="期望值" check="查找对话中的货币" moneytype="货币类型 1元宝2礼券3银两" type="__Eval+替换的名字"/>
+# @remarks <Have_Money value="期望值" check="查找对话中的货币" moneytype="货币类型 1元宝2礼券3银两" type="__Eval+替换的名字" maxItem="需要物品数量" itemID="20410"/>
def ConditionType_Have_Money(curPlayer, curMission, curConditionNode):
#格式<have_money value="" type="" moneytype=""/>
value = curConditionNode.GetAttribute("value")
@@ -1930,8 +1946,18 @@
conditionValue = int(value)
elif check != "":
conditionValue = int(QuestRunnerValue.GetNPCTalkReplaceValue(curPlayer, curMission, check))
+
+ maxItemCnt = GameWorld.ToIntDef(curConditionNode.GetAttribute("maxItem"), 0)
+ itemID = GameWorld.ToIntDef(curConditionNode.GetAttribute("itemID"), 0)
+ if maxItemCnt and itemID: #未收集的道具个数乘以单价
+ haveCnt = ItemControler.FindPlayerItemCountByItemID(curPlayer, IPY_GameWorld.rptItem, itemID)
+ conditionValue = max(0, maxItemCnt-haveCnt)*conditionValue
+
conditionType = curConditionNode.GetAttribute("type")
moneyType = int(curConditionNode.GetAttribute("moneytype"))
+
+ #GameWorld.Log(' conditionValue=%s,maxItemCnt=%s,itemID=%s'%(conditionValue,maxItemCnt,itemID))
+
goldValue = curPlayer.GetGold()
goldPaperValue = curPlayer.GetGoldPaper()
silverValue = PlayerControl.GetSilver(curPlayer)
@@ -1942,6 +1968,8 @@
return QuestRunnerValue.GetEval(conditionType, goldPaperValue, conditionValue)
elif moneyType == IPY_GameWorld.TYPE_Price_Silver_Money:
return QuestRunnerValue.GetEval(conditionType, silverValue, conditionValue)
+ elif moneyType == ShareDefine.TYPE_Price_Gold_Paper_Money:
+ return QuestRunnerValue.GetEval(conditionType, goldValue + goldPaperValue, conditionValue)
else:
GameWorld.Log("任务 = %s , moneytype = %s填错拉" % (curMission.GetMissionID() , moneyType) , curPlayer.GetPlayerID())
return
@@ -3655,7 +3683,7 @@
# @param curMission 任务实例
# @param curActionNode节点信息
# @return 返回值无意义
-# @remarks <Del_Money form_value="是否取对话的值" value="form_value为空取" moneytype="1元宝2礼券3银两" />
+# @remarks <Del_Money form_value="是否取对话的值" value="form_value为空取" moneytype="1元宝2礼券3银两" maxItem="需要物品数量" itemID="20410"/>
def DoType_Del_Money(curPlayer, curMission, curActionNode):
#扣钱
#格式<del_money form_value = ""value="" moneytype=""/>
@@ -3666,23 +3694,34 @@
else:
value = int(curActionNode.GetAttribute("value"))
+ maxItemCnt = GameWorld.ToIntDef(curActionNode.GetAttribute("maxItem"), 0)
+ itemID = GameWorld.ToIntDef(curActionNode.GetAttribute("itemID"), 0)
+ if maxItemCnt and itemID: #未收集的道具个数乘以单价
+ haveCnt = ItemControler.FindPlayerItemCountByItemID(curPlayer, IPY_GameWorld.rptItem, itemID)
+ value = max(0, maxItemCnt-haveCnt)*value
+
moneytype = int(curActionNode.GetAttribute("moneytype"))
- if moneytype not in ChConfig.Def_MoneyType_All:
- GameWorld.Log("##异常moneytype = %s填错拉" % (moneytype))
- return
+# if moneytype not in ChConfig.Def_MoneyType_All:
+# GameWorld.Log("##异常moneytype = %s填错拉" % (moneytype))
+# return
curMissionID = 0
if curMission == None:
curMissionID = 0
else:
curMissionID = curMission.GetMissionID()
-
- #付钱
- if not PlayerControl.PayMoney(curPlayer, moneytype, value, ChConfig.Def_Cost_MissionDel, {"MissionID":curMissionID}):
+ costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, moneytype, value)
+ if not costMoneyList:
GameWorld.Log("##付费异常,玩家金钱不足,任务missionID = %s" % (curMissionID) , curPlayer.GetPlayerID())
EventShell.DoExitEvent(curPlayer)
return
+ #付钱
+ for moneyType, moneyNum in costMoneyList:
+ if not PlayerControl.PayMoney(curPlayer, moneyType, moneyNum, ChConfig.Def_Cost_MissionDel, {"MissionID":curMissionID}):
+ GameWorld.Log("##付费异常,玩家金钱不足,任务missionID = %s" % (curMissionID) , curPlayer.GetPlayerID())
+ EventShell.DoExitEvent(curPlayer)
+ return
GameWorld.Login_Interface_GoldRec(curPlayer , 0 , 0 , 'MissionID_%s_Cost' % (curMissionID), moneytype, value)
return
@@ -6011,6 +6050,20 @@
key = curActionNode.GetAttribute("key")
curMission.SetProperty(key, PlayerMagicWeapon.GetMWActiveCntTotal(curPlayer))
return
+
+##设置坐骑总等级
+# @param curPlayer 玩家实例
+# @param curMission 任务实例
+# @param curActionNode节点信息
+# @return 返回值无意义
+# @remarks <Set_Horsetotallv key="" />
+def DoType_Set_Horsetotallv(curPlayer, curMission, curActionNode):
+ key = curActionNode.GetAttribute("key")
+ questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
+ if questID != 0:
+ curMission = curPlayer.FindMission(questID)
+ curMission.SetProperty(key, PlayerHorse.GetHorseSumLV(curPlayer))
+ return
#---------------------------------------------------------------------
##DoType_调度器
# @param curPlayer 玩家实例
@@ -7091,6 +7144,53 @@
alchemyLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyLV)
return alchemyLV >= stoveLV
+##境界是否达到X级
+# @param None
+# @return None <Realmlv value="Realmlv"/>
+def ConditionType_Realmlv(curPlayer, curMission, curActionNode):
+ realmlv = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
+ return curPlayer.GetOfficialRank() >= realmlv
+
+##法宝之魂是否激活
+# @param None
+# @return None <Mwsoul value="id"/>
+def ConditionType_Mwsoul(curPlayer, curMission, curActionNode):
+ soulID = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
+ return bool(PlayerMagicWeapon.GetIsActiveMWSoul(curPlayer, soulID))
+
+##X级通关X层娲皇遗迹
+# @param None
+# @return None <Passqueenrelecs value="lineID" grade="grade"/>
+def ConditionType_Passqueenrelecs(curPlayer, curMission, curActionNode):
+ lineID = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
+ grade = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [ChConfig.Def_FBMapID_QueenRelics])
+ needGrade = GameWorld.ToIntDef(curActionNode.GetAttribute("grade"), 0)
+ return grade >=needGrade
+
+##坐骑总等级
+# @param None
+# @return None <Horsetotallv value="lv"/>
+def ConditionType_Horsetotallv(curPlayer, curMission, curActionNode):
+ totallv = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
+ return PlayerHorse.GetHorseSumLV(curPlayer) >= totallv
+
+##2阶强化防具套装件数
+# @param None
+# @return None <Suitplus value="cnt"/>
+def ConditionType_Suitplus(curPlayer, curMission, curActionNode):
+ needCnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
+
+ equipSuitTypeDict = IpyGameDataPY.GetFuncEvalCfg('EquipSuitType')
+ groupCnt = 0 #2阶强化防具套装件数
+ for groupType, equipIndexList in equipSuitTypeDict.items():
+ for i in equipIndexList:
+ suiteInfo = ChEquip.GetSuiteInfoByPlace(curPlayer, i)
+ for suiteType, lv in suiteInfo.items():
+ if lv >= 2 and int(groupType) == 1 and suiteType == 2:
+ groupCnt +=1
+ return groupCnt >= needCnt
+
+
##激活法宝,确认与成就逻辑后使用
# @param None
# @return None <Active_Magicweapon id="法宝ID"/>
--
Gitblit v1.8.0