hch
2019-04-15 37e044190ad9c4cd98e3ecc42762379676bd6c23
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
@@ -37,7 +37,6 @@
import QuestCommon
import SkillShell
import GameLogInfo
import PlayerReincarnation
import PlayerMissionCollect
import PlayerFamily
import ShareDefine
@@ -49,11 +48,7 @@
import ChEquip
import PlayerActivity
import PlayerSuccess
import EventReport
#import PlayerCostVIP
import GameFuncComm
import IpyGameDataPY
import ShopItemManage
import PlayerPet
import PlayerArrestTask
import PlayerMagicWeapon
@@ -61,10 +56,10 @@
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerWeekParty
import PlayerFairyDomain
import PlayerActLogin
import PlayerHorse
import FBCommon
import PyGameData
import math
import time
@@ -2593,42 +2588,6 @@
        return petPack.GetCount() > 0
    return PlayerPet.GetPetDataItemByNPCID(curPlayer, checkPetID) != None
def ConditionType_Is_Buy_Tehuiitem(curPlayer, curMission, curConditionNode):
    # 判断是否购买过特惠商店物品
    # <Is_Buy_Tehuiitem shopID="1007" itemShopIndex="0,1,2"/> shopID暂定需指定商店ID, itemShopIndex可指定多个索引, 中间英文逗号隔开
    shopID = GameWorld.ToIntDef(curConditionNode.GetAttribute("shopID"), 0)
    if not shopID:
        return False
    indexList = []
    indexInfo = curConditionNode.GetAttribute("itemShopIndex")
    if indexInfo != '':
        indexList = eval('[' + indexInfo + ']')
    if not indexList:
        shopItemList = ShopItemManage.GetShopItemList(shopID)
        indexList = range(len(shopItemList))
    if not indexList:
        GameWorld.DebugLog("需指定判断的特惠商店物品索引编号!indexInfo=%s" % indexInfo)
        return False
    for i in indexList:
        buyCnt = ShopItemManage.__GetPlayerShopItemBuyCnt(curPlayer, shopID, i)
        if buyCnt > 0:
            return True
    return False
##竞技场是否达到多少名
# @param curPlayer 玩家实例
# @param curMission 任务实例
# @param curConditionNode 节点信息
# @return 返回值, 是否判断成功
# @remarks <Check_Jjcorder type="类型" value="值"/>
def ConditionType_Check_Jjcorder(curPlayer, curMission, curConditionNode):
    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
    conditionType = curConditionNode.GetAttribute("type")
    maxOrder = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadder_HistoryMaxOrder, 0,
                    ChConfig.Def_PDictType_Default)
    return QuestRunnerValue.GetEval(conditionType, maxOrder, conditionValue)
#---------------------------------------------------------------------
##执行 扣除玩家镖车押金
# @param curPlayer 玩家实例
@@ -4368,61 +4327,8 @@
    curPlayer.SetFreePoint(curPlayerFreePoint + value)
    
    DataRecordPack.DR_Freepoint(curPlayer, "Event", value, {"MissionID":curMission.GetMissionID()})
    return
#---------------------------------------------------------------------
#===============================================================================
# PlayerJob_Warrior,  #  剑士,
# PlayerJob_Wizard,   #  魔法师,
# PlayerJob_Assassin, #  弓箭手,
# PlayerJob_Chaplain, #  魔剑士,
# PlayerJob_Knight,   # 骑士
# PlayerJob_ForceUser,# 魔导师
# PlayerJob_BowMaster,# 圣射手
#===============================================================================
##玩家转职业
# @param curPlayer 玩家实例
# @param curMission 任务实例
# @param curActionNode节点信息
# @return 返回值无意义 <Change_Job checkLV="150" changeJob="4">
def DoType_Change_Job(curPlayer, curMission, curActionNode):
    playerID = curPlayer.GetID()
    checkLV = GameWorld.ToIntDef(curActionNode.GetAttribute("checkLV"), 0)
    if not checkLV:
        GameWorld.Log("change job error! checkLV=%s" % checkLV, playerID)
        return
    curLV = curPlayer.GetLV()
    if curLV < checkLV:
        GameWorld.Log("change job error! checkLV=%s curlv=%s" % (checkLV, curLV), playerID)
        return
    changeJob = GameWorld.ToIntDef(curActionNode.GetAttribute("changeJob"), 0)
    #验证职业
    if not changeJob:
        GameWorld.Log("change job error! changeJob=%s" % changeJob, playerID)
        return
    #curJob = curPlayer.GetJob()
    #计算点数, 恢复等级差的点数
    #addPointDict = ReadChConfig.GetEvalChConfig('lvUp_Point')
    #addPoint = (curLV - checkLV)*(addPointDict.get(changeJob) - addPointDict.get(curJob))
    #设置玩家可加属性点
    #curPlayer.SetFreePoint(curPlayer.GetFreePoint() + addPoint)
    #DataRecordPack.DR_Freepoint(curPlayer, "ChangeJob", addPoint, {"job":changeJob})
    #设置职业
    curPlayer.SetJob(changeJob)
    playerControl = PlayerControl.PlayerControl(curPlayer)
    playerControl.RefreshAllState()
    PlayerReincarnation.DoPlayerReincarnation(curPlayer)
    return True
#---------------------------------------------------------------------
##删除物品
@@ -5299,66 +5205,6 @@
    
    return
##转生后跑环奖励处理
# @param curPlayer 玩家实例
# @param curMission 任务实例
# @return 返回值无意义
# @remarks 转生后跑环奖励处理
def __ReinAddRunAroundReward(curPlayer, curMission):
    runAroundReward = FindQuestFunc(curMission.GetMissionID()).RunAroundReward
    lvReward = GetRunAroundReward(curPlayer, runAroundReward, rewardLV=0, isMaxLV=True)
    if not lvReward:
        GameWorld.Log("转生跑环奖励错误 id = %d" % curMission.GetMissionID() , curPlayer.GetPlayerID())
        return
    #金钱奖励最大等级
    if lvReward.Money != 0:
        curMission.SetProperty(Def_Run_Around_Reward_Money, lvReward.Money)
#---------------------------------------------------------------------
##转生后每日任务新增奖励
# @param curPlayer 玩家实例
# @param curMission 任务实例
# @param curActionNode节点信息
# @return 返回值无意义
# @remarks <Reincarnation_Add_Reward />
def DoType_Reincarnation_Add_Reward(curPlayer, curMission, curActionNode):
    #没转生不处理
    curReinLV = curPlayer.GetReincarnationLv()
    if curReinLV < 1:
        return
    dayEventReward = FindQuestFunc(curMission.GetMissionID()).DayEventReward
    if dayEventReward == None:
        GameWorld.Log("转生奖励错误 id = %d" % curMission.GetMissionID() , curPlayer.GetPlayerID())
        return
    curRewardLV = dayEventReward.MaxLV
    familyLV = curPlayer.GetFamilyLV()
    #当前等级任务奖励结构体
    curLVDayEventReward = dayEventReward.Rewards[curRewardLV]
    #金钱奖励最大等级
    if curLVDayEventReward.Money != 0:
        curMission.SetProperty(Def_Day_Event_Reward_Money, curLVDayEventReward.Money)
    #家族活跃最大等级
    if curLVDayEventReward.PlayerFamilyActiveValue != 0:
        curMission.SetProperty(Def_Day_Event_Reward_Player_Family_ActiveValue, (curLVDayEventReward.PlayerFamilyActiveValue) * familyLV)
    #镖车压金最大等级
    if curLVDayEventReward.TruckMoney != 0:
        curMission.SetProperty(Def_Day_Event_Reward_Truck_Money, curLVDayEventReward.TruckMoney)
    #转生后跑环奖励处理
    __ReinAddRunAroundReward(curPlayer, curMission)
    return
#---------------------------------------------------------------------
##增加日常任务奖励倍率
# @param curPlayer 玩家实例
@@ -5413,7 +5259,6 @@
        randStarList = eval(ReadChConfig.GetChConfig('RunAround_Star'))
        aroundStar = GameWorld.GetResultByRandomList(randStarList, 1)
        
        #vipStar = PlayerCostVIP.GetRoundStar(curPlayer)
        vipStar = 0
        if vipStar > 0:
            aroundStar = vipStar
@@ -6525,6 +6370,18 @@
    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
    return PlayerMagicWeapon.GetIsActiveMagicWeapon(curPlayer, mwid, conditionValue)
##判断魔族法宝通关关卡
# @param curPlayer 玩家实例
# @param curMission 任务实例
# @param curConditionNode节点信息
# @return 返回值, 是否通过检查
# @remarks  <Check_Magicweapon_Passfblv" mwid="法宝ID" value="期望值" />
def ConditionType_Check_Magicweapon_Passfblv(curPlayer, curMission, curConditionNode):
    mwid = GameWorld.ToIntDef(curConditionNode.GetAttribute("mwid"), 0)
    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
    fbpasslv = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MWFBPassLevel % mwid)
    return fbpasslv >= conditionValue
#---------------------------------------------------------------------
##是否拥有足够的竞技点
# @param curPlayer 玩家实例
@@ -6657,52 +6514,6 @@
    __NPCAllowResetWorldPos(curPlayer, mapID, bornX, bornY, False)
    
    return
#---------------------------------------------------------------------
##执行玩家转生
# @param curPlayer 玩家实例
# @param curMission 任务实例
# @param curActionNode节点信息
# @return 返回值无意义
# @remarks  <Player_Reincarnation />
def DoType_Player_Reincarnation(curPlayer, curMission, curActionNode):
    PlayerReincarnation.DoPlayerReincarnation(curPlayer)
    return
#---------------------------------------------------------------------
##判断玩家是否转生
# @param curPlayer 玩家实例
# @param curMission 任务实例
# @param curConditionNode节点信息
# @return 返回值, 是否通过检查
# @remarks  <Player_Is_Reincarnation result="期望的结果" />
def ConditionType_Player_Is_Reincarnation(curPlayer, curMission, curConditionNode):
    #<Player_Is_Reincarnation result="">  0:没转,1:有转
    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
    #转生等级
    curReinLV = curPlayer.GetReincarnationLv()
    if curReinLV > 0:
        return True == result
    else:
        return False == result
    return
##判断玩家转生数
# @param curPlayer 玩家实例
# @param curMission 任务实例
# @param curConditionNode节点信息
# @return 返回值, 是否通过检查
# @remarks  <Player_Reincarnation result="期望的结果" />
def ConditionType_Player_Reincarnation(curPlayer, curMission, curConditionNode):
    #<Player_Reincarnation result="1"> # 玩家是否1转
    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
    #转生等级
    curReinLV = curPlayer.GetReincarnationLv()
    return curReinLV == result
#---------------------------------------------------------------------
##给予玩家技能
@@ -7239,12 +7050,6 @@
    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
@@ -7310,8 +7115,6 @@
def DoType_Active_Magicweapon(curPlayer, curMission, curActionNode):
    mwID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
    PlayerMagicWeapon.DoActiveMW(curPlayer, mwID)
    PlayerMagicWeapon.NotifyMagicWeapon(curPlayer)
    return
## 人物隐身 <Visible id="0隐身1现身"/>
@@ -7339,3 +7142,11 @@
    return
def DoType_Setfairydomain(curPlayer, curMission, curActionNode):
    ## 任务开启缥缈仙域 (做标记可寻访) <Setfairydomain/>
    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FairyDomainState):
        #若已在寻访中则不可设置
        return
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FairyDomainState, 2)
    PlayerFairyDomain.NotifyVisitFairyDomainInfo(curPlayer)
    return