6373 【后端】【2.0】删除无用功能代码、封包、配置(转生系统)
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 46 兑换灵力 #tagCMExchangeReiki
|
| | |
|
| | | class tagCMExchangeReiki(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ExType", c_ubyte), #兑换类型0-降级兑换; 1-钻石购买
|
| | | ("ExData", c_ubyte), #兑换扩展数据(钻石购买可发送购买的消耗索引)
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x46
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x46
|
| | | self.ExType = 0
|
| | | self.ExData = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMExchangeReiki)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 46 兑换灵力 //tagCMExchangeReiki:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ExType:%d,
|
| | | ExData:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ExType,
|
| | | self.ExData
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMExchangeReiki=tagCMExchangeReiki()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeReiki.Cmd,m_NAtagCMExchangeReiki.SubCmd))] = m_NAtagCMExchangeReiki
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 1C 聚魂合成 #tagCMGatherSoulCompound
|
| | |
|
| | | class tagCMGatherSoulCompound(Structure):
|
| | |
| | |
|
| | | m_NAtagCMRefreshTreasureFreeCnt=tagCMRefreshTreasureFreeCnt()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshTreasureFreeCnt.Cmd,m_NAtagCMRefreshTreasureFreeCnt.SubCmd))] = m_NAtagCMRefreshTreasureFreeCnt
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 47 玩家转生 #tagCMReincarnation
|
| | |
|
| | | class tagCMReincarnation(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x47
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x47
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMReincarnation)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 47 玩家转生 //tagCMReincarnation:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMReincarnation=tagCMReincarnation()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMReincarnation.Cmd,m_NAtagCMReincarnation.SubCmd))] = m_NAtagCMReincarnation
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | PacketSubCMD_1=0x42
|
| | | PacketCallFunc_1=OnGetSuccessAward
|
| | |
|
| | |
|
| | | ;转生
|
| | | [PlayerReincarnation]
|
| | | ScriptName = Player\PlayerReincarnation.py
|
| | | Writer = hxp
|
| | | Releaser = hxp
|
| | | RegType = 0
|
| | | RegisterPackCount = 2
|
| | |
|
| | | PacketCMD_1=0xA5
|
| | | PacketSubCMD_1=0x46
|
| | | PacketCallFunc_1=OnExchangeReiki
|
| | |
|
| | | PacketCMD_2=0xA5
|
| | | PacketSubCMD_2=0x47
|
| | | PacketCallFunc_2=OnReincarnation
|
| | |
|
| | |
|
| | | ;大师天赋
|
| | | [PlayerGreatMaster]
|
| | | ScriptName = Player\PlayerGreatMaster.py
|
| | |
| | | Def_PlayerKey_StoneAtkPer = "StoneAtkPer" # 宝石攻击百分比
|
| | | Def_PlayerKey_HPCureEnhance = "HPCureEnhance" # 血瓶恢复效果
|
| | | Def_PlayerKey_HadInitFruitAttr = "HadInitFruitAttr" # 是否已经刷新过果实属性
|
| | | Def_PlayerKey_LastReinTick = 'LastReinTick' #上次转生时间
|
| | | Def_PlayerKey_OnlyFinalHurt = "OnlyFinalHurt" # 额外输出伤害
|
| | | Def_PlayerKey_PVPAtkBackHP = "PVPAtkBackHP" # PVP攻击回血
|
| | | Def_PlayerKey_HitSucessRate = "HitSucessRate" # 命中成功率
|
| | |
| | | #玩家存数据库字典类型定义
|
| | | (
|
| | | Def_PDictType_Default, # 默认
|
| | | Def_PDictType_OnlinePrize, # 在线奖励(暂停使用),领取后重新计时型
|
| | | Def_PDictType_FBWipeOut, # fb扫荡
|
| | | Def_PDictType_FlashSale, #限时抢购
|
| | | Def_PDictType_TJGNotify, # 脱机挂结果通知
|
| | | Def_PDictType_LVAward, # 等级奖励领取信息记录5
|
| | | Def_PDictType_GoldGift, # 充值豪礼
|
| | | Def_PDictType_LVAward, # 等级奖励领取信息记录
|
| | | Def_PDictType_OpenServerCampaign, # 开服活动
|
| | | Def_PDictType_WeekParty, #周狂欢
|
| | | Def_PDictType_FeastWeekParty, # 节日巡礼
|
| | | Def_PDictType_LoginAward, # 登录奖励运营活动
|
| | | Def_PDictType_OfficialRank, # 官爵
|
| | | Def_PDictType_Horse, # 坐骑
|
| | | Def_PDictType_Wing, # 翅膀
|
| | | Def_PDictType_FB, # 副本相关
|
| | | Def_PDictType_FightPower, # 战斗力15
|
| | | Def_PDictType_16,
|
| | | Def_PDictType_Activity, # 活跃度
|
| | | Def_PDictType_FightPower, # 战斗力
|
| | | Def_PDictType_GoldInvest, # 投资理财
|
| | | Def_PDictType_19,
|
| | | Def_PDictType_Success, #成就20
|
| | | Def_PDictType_Success, #成就
|
| | | Def_PDictType_GFPassive, # 被动功法
|
| | | Def_PDictType_Totem, # 图腾
|
| | | Def_PDictType_GroupFRecharge, # 首充团购
|
| | | Def_PDictType_Element, # 元素
|
| | | Def_PDictType_Reincarnation, # 转生
|
| | | Def_PDictType_GreatMaster, # 大师
|
| | | Def_PDictType_BloodElf, # Ѫħ
|
| | | ) = range(28)
|
| | | ) = range(15)
|
| | |
|
| | | # 玩家字典key定义规则, key的长度不能超过29个字节, 注意尽量避免命名重复
|
| | | # 新增参数TYPE 用于字典分类,默认0
|
| | |
| | | Def_PDict_LuckyTreasurePoint = "LuckyTreasurePoint" #幸运值
|
| | | Def_PDict_LuckyTreasureCnt = "LuckyTreasureCnt" #鉴宝次数
|
| | | #-------------------------------------------------------------------------------
|
| | | #类型 Def_PDictType_OnlinePrize
|
| | | Def_PDict1_OnlinePrizeCnt = "OnlinePrizeCnt" # 新手在线已领取奖励次数
|
| | | Def_PDict1_OnlinePrizeTime = "OnlinePrizeTime" # 新手在线奖励时间总和
|
| | | Def_PDict1_DayOnlinePrizeCnt = "DayOnlinePrizeCnt" # 今日在线已领取奖励次数
|
| | | Def_PDict1_DayOnlinePrizeTime = "DayOnlinePrizeTime" # 今日在线奖励时间总和
|
| | |
|
| | | #开服活动,Def_PDictType_OpenServerCampaign
|
| | | #奖励记录 - 从低位到高位,每位表示:0-不可领;1-可领取;2-已领
|
| | |
| | |
|
| | | Def_PDict_FightPower_List = [Def_PDict_FightPower_Total, Def_PDict_FightPower_Horse]
|
| | |
|
| | | # 每日活跃度 Def_PDictType_Activity
|
| | | # 每日活跃度
|
| | | Def_PDict_Activity_FinishCnt = "Activity_FinishCnt_%s" # 活跃度类型对应完成次数
|
| | | Def_PDict_Activity_TotalPoint = "Activity_TotalPoint" # 当前总活跃值
|
| | | Def_PDict_ActivityAwardRecord = "ActivityAwardRecord" # 活跃度奖励领取记录,按二进制位标识
|
| | |
| | | Def_PDict_Success_CntValue = "Su_%s_%s" # 当前次数值,参数(成就类型、条件)
|
| | | Def_PDict_Success_FinishTime = "Succ_FinishTime_%s" # 成就是否已完成,参数(索引)
|
| | | Def_PDict_Success_CheckVersion = "Succ_CheckVersion" #老玩家某些功能成就检查版本
|
| | |
|
| | | # 转生 Def_PDictType_Reincarnation
|
| | | Def_PDict_Reinc_Reiki = "Reinc_Reiki" # 当前转生灵力
|
| | | Def_PDict_Reinc_ChangeReikiCnt = "Reinc_ChangeReikiCnt" # 今日已兑换灵力次数
|
| | | Def_PDict_Reinc_ChangeReikiAddCnt = "Reinc_ChangeReikiAddCnt" # 今日物品增加的兑换灵力次数
|
| | | Def_PDict_Reinc_AwardRecord = "Reinc_AwardRecord" # 转生奖励领取记录
|
| | |
|
| | | # 大师 Def_PDictType_GreatMaster
|
| | | Def_PDict_Master_Exp = "Master_Exp" # 当前大师经验
|
| | |
| | | Def_Cost_FinishTruck, # 完成镖车
|
| | | Def_Cost_RefreshTimeShop, # 刷新神秘商店
|
| | | Def_Cost_OpenNoble, # 开通贵族
|
| | | Def_Cost_Reincarnation, # 转生
|
| | | Def_Cost_BuyStallItem, # 购买摆摊物品
|
| | | Def_Cost_Warehouse, # 仓库
|
| | | Def_Cost_BuyItemBack, # 回购
|
| | | Def_Cost_Trade, # 交易
|
| | | Def_Cost_Rename, # 改名
|
| | | Def_Cost_SkillLvUp, # 技能升级
|
| | | ) = range(2000, 2000 + 58)
|
| | | ) = range(2000, 2000 + 57)
|
| | |
|
| | | Def_Cost_Reason_SonKey = "reason_name_son" # 消费点原因子类说明key
|
| | |
|
| | |
| | | Def_Cost_Transport:"Transport",
|
| | | Def_Cost_OffLineExp:"OffLineExp",
|
| | | Def_Cost_GameServer:"GameServer",
|
| | | Def_Cost_Reincarnation:"Reincarnation",
|
| | | Def_Cost_BuyStallItem:"BuyStallItem",
|
| | | Def_Cost_Trade:"Trade",
|
| | | Def_Cost_Rename:"Rename",
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 46 兑换灵力 #tagCMExchangeReiki
|
| | |
|
| | | class tagCMExchangeReiki(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ExType", c_ubyte), #兑换类型0-降级兑换; 1-钻石购买
|
| | | ("ExData", c_ubyte), #兑换扩展数据(钻石购买可发送购买的消耗索引)
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x46
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x46
|
| | | self.ExType = 0
|
| | | self.ExData = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMExchangeReiki)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 46 兑换灵力 //tagCMExchangeReiki:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ExType:%d,
|
| | | ExData:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ExType,
|
| | | self.ExData
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMExchangeReiki=tagCMExchangeReiki()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeReiki.Cmd,m_NAtagCMExchangeReiki.SubCmd))] = m_NAtagCMExchangeReiki
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 1C 聚魂合成 #tagCMGatherSoulCompound
|
| | |
|
| | | class tagCMGatherSoulCompound(Structure):
|
| | |
| | |
|
| | | m_NAtagCMRefreshTreasureFreeCnt=tagCMRefreshTreasureFreeCnt()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshTreasureFreeCnt.Cmd,m_NAtagCMRefreshTreasureFreeCnt.SubCmd))] = m_NAtagCMRefreshTreasureFreeCnt
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 47 玩家转生 #tagCMReincarnation
|
| | |
|
| | | class tagCMReincarnation(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x47
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x47
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMReincarnation)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 47 玩家转生 //tagCMReincarnation:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMReincarnation=tagCMReincarnation()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMReincarnation.Cmd,m_NAtagCMReincarnation.SubCmd))] = m_NAtagCMReincarnation
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | # @change: "2014-12-01 19:10" ljd 增加领取合服活动登陆奖励事件记录
|
| | | # @change: "2014-12-21 23:00" hxp 增加功能奖励物品
|
| | | # @change: "2014-12-23 00:30" hxp 充值前/消费时流向信息扩展(增加各大功能信息)
|
| | | # @change: "2015-01-27 22:30" hxp 增加转生等级变更流向
|
| | | # @change: "2015-02-05 15:00" hxp 充值送礼流向扩展信息字典
|
| | | # @change: "2015-02-27 21:00" hxp 增加大师等级升级流向; 重新开启技能学习流向
|
| | | # @change: "2015-03-30 14:00" hxp 增加击杀NPC流向
|
| | |
| | |
|
| | | #发送封包
|
| | | SendEventPack("PlayerUpgrade", dataDict, curPlayer)
|
| | | return
|
| | |
|
| | | ## 玩家转生等级变更
|
| | | # @param curPlayer: 玩家实例
|
| | | # @param reincarnationLvBefore: 之前转生次数
|
| | | # @param playerLVExBefore: 之前转生等级
|
| | | # @param eventName: |
| | | # @return: None
|
| | | def DR_PlayerLVExChange(curPlayer, reincarnationLvBefore, playerLVExBefore, eventName, addDataDict={}):
|
| | |
|
| | | dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(), |
| | | 'AccID':curPlayer.GetAccID(), 'ReincarnationLv':curPlayer.GetReincarnationLv(), |
| | | 'PlayerLV':curPlayer.GetLV(), 'PlayerLVEx':curPlayer.GetLVEx(), |
| | | 'TotalExp':curPlayer.GetTotalExp(), 'ReincarnationLvBefore':reincarnationLvBefore, |
| | | 'PlayerLVExBefore':playerLVExBefore, "EventName":eventName}
|
| | | |
| | | dataDict.update(addDataDict)
|
| | |
|
| | | #发送封包
|
| | | SendEventPack("PlayerLVExChange", dataDict, curPlayer)
|
| | | return
|
| | |
|
| | | ## 玩家大师等级变更
|
| | |
| | | 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
|
| | |
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | ##给予玩家技能
|
| | |
| | | return
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | ##获取玩家等级
|
| | | # @param curPlayer 玩家实例
|
| | | # @return 返回值, 玩家等级, 转生按161算
|
| | | # @remarks 获取玩家等级
|
| | | def __GetReincarnationLV(curPlayer):
|
| | | curReinLV = curPlayer.GetReincarnationLv()
|
| | | if curReinLV > 0:
|
| | | return 161
|
| | | |
| | | return curPlayer.GetLV()
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | ##每周工资在线时间替换
|
| | | # @param curPlayer 玩家实例
|
| | | # @param curMission 任务实例
|
| | |
| | | #PlayerExam.DoLogic_ExitExam(curPlayer, tick, needRefresh = False)
|
| | | #清除VIPbuff
|
| | | #BuffSkill.DelBuffBySkillID(curPlayer, ChConfig.Def_VIPExp_SkillTypeID, tick)
|
| | | #PlayerReincarnation.ReincarOnLogin(curPlayer)
|
| | |
|
| | | #通知玩家的buff
|
| | | __Sync_ClientBuff(curPlayer)
|
| | |
| | | return True
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | ## 获取下一次转生所需等级
|
| | | def GetNextReincarnationLV(self, curPlayer):
|
| | | Reincarnation_ConditionDict = ReadChConfig.GetEvalChConfig("Reincarnation_Condition")
|
| | | curReinCnt = curPlayer.GetReincarnationLv() # 当前转生次数
|
| | | nextReinCnt = curReinCnt + 1
|
| | | nextReinLV = IpyGameDataPY.GetFuncCfg("PlayerMaxLV")
|
| | | if nextReinCnt in Reincarnation_ConditionDict:
|
| | | nextReinLV = Reincarnation_ConditionDict[nextReinCnt][0]
|
| | | return nextReinLV
|
| | |
|
| | | ## 加经验值
|
| | | # @param self 类实例
|
| | |
| | | if addExp == 0:
|
| | | # 不进入计算
|
| | | return addExp, expViewType
|
| | | #nextReinLV = self.GetNextReincarnationLV(curPlayer)
|
| | |
|
| | | #取得人物当前经验
|
| | | #curTotalExp = GetPlayerTotalExp(curPlayer)
|