| | |
| | | import QuestCommon
|
| | | import SkillShell
|
| | | import GameLogInfo
|
| | | import PlayerReincarnation
|
| | | import PlayerMissionCollect
|
| | | import PlayerFamily
|
| | | import ShareDefine
|
| | |
| | | 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
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | ##删除物品
|
| | |
| | | for lvInfo in runAroundReward.Rewards:
|
| | | if curRewardLV >= lvInfo[0] and curRewardLV <= lvInfo[1]:
|
| | | return runAroundReward.Rewards[lvInfo]
|
| | | |
| | | 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
|
| | |
|
| | |
| | | __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
|
| | |
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | ##给予玩家技能
|