5461 【后端】【1.3】【1.3.100】坐骑和灵宠老号处理
| | |
| | | Def_VerFix_RuneSource, # 修复老号双属性符印的获取途径;
|
| | | Def_VerFix_FMTDouble, # 1.3版本VIP特权变更,记录切换版本前的VIP特权(封魔坛双倍挑战);
|
| | | Def_VerFix_SuperGift, # 超值礼包开启变更,原领取首充开启,改成等级到开启;
|
| | | ) = range(5)
|
| | | Def_VerFix_Horse, # 坐骑等级上限修改,对应技能触发修改;
|
| | | Def_VerFix_Pet, # 灵宠等级上限修改,对应技能触发修改;
|
| | | ) = range(7)
|
| | |
|
| | | ##==================================================================================================
|
| | | #游戏消费点类型定义
|
| | |
| | | __RefreshAndSyncPetInfo(rolePet)
|
| | | #自动出战宠物
|
| | | __AutoSummonPet_OnLogin(curPlayer, rolePet)
|
| | | |
| | | if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_Pet):
|
| | | GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_Pet, 1)
|
| | | #等级不能超上限,技能删了重新学
|
| | | |
| | | petPackIndex = ShareDefine.rptPet
|
| | | petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
|
| | | for i in range(petPack.GetCount()):
|
| | | petItem = petPack.GetAt(i)
|
| | | if petItem.IsEmpty():
|
| | | continue |
| | | petItemNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
|
| | | curClassLV = petItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV) + 1
|
| | | petIpyData = PlayerPet.GetPetIpydata(petItemNPCID)
|
| | | if not petIpyData:
|
| | | continue
|
| | | maxLV = petIpyData.GetMaxRank()
|
| | | if curClassLV > maxLV:
|
| | | petItem.SetUserAttr(ShareDefine.Def_IudetPet_ClassLV, max(0, maxLV - 1))
|
| | | petItem.SetUserAttr(ShareDefine.Def_IudetPet_Exp, 0)
|
| | | GameWorld.Log(' 老号宠物等级超过上限,宠物ID=%s,原LV=%s,重置为=%s'%(petItemNPCID, curClassLV, maxLV))
|
| | | curClassLV = maxLV
|
| | | petItem.ClearUserAttr(ShareDefine.Def_IudetPet_Skill)
|
| | | petSkillList = petIpyData.GetSkillID()
|
| | | petSkillUnLockList = petIpyData.GetSkillUnLock()
|
| | | for i, skillid in enumerate(petSkillList):
|
| | | limitPetClassLV = petSkillUnLockList[i] # 学习此技能所需宠物阶级
|
| | | if curClassLV < limitPetClassLV:
|
| | | continue
|
| | | petItem.AddUserAttr(ShareDefine.Def_IudetPet_Skill, skillid)
|
| | | if ReCallFightPet(curPlayer):
|
| | | PlayerPet.AutoSummonPet(curPlayer)
|
| | | # 重刷战力
|
| | | PlayerPet.SetPetSkillFightPower(curPlayer) # 技能战力重算
|
| | | PlayerPet.RefreshPetItemAddAttr(curPlayer, True)
|
| | |
|
| | | return
|
| | | #---------------------------------------------------------------------
|
| | |
| | | # @param curPlayer 玩家
|
| | | # @return None
|
| | | def PlayerHorseLogin(curPlayer):
|
| | | if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_Horse):
|
| | | GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_Horse, 1)
|
| | | #等级不能超上限,技能删了重新学
|
| | | skillManager = curPlayer.GetSkillManager()
|
| | | delCnt = 0
|
| | | for i in xrange(skillManager.GetSkillCount()):
|
| | | dataIndex = i-delCnt
|
| | | skill = skillManager.GetSkillByIndex(dataIndex)
|
| | | if skill == None:
|
| | | continue
|
| | | if skill.GetFuncType() != ChConfig.Def_SkillFuncType_HorseSkill:
|
| | | continue
|
| | | skillTypeID = skill.GetSkillTypeID()
|
| | | skillManager.DeleteSkillBySkillTypeID(skillTypeID)
|
| | | delCnt += 1
|
| | | |
| | | tick = GameWorld.GetGameWorld().GetTick()
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for i in xrange(ipyDataMgr.GetHorseCount()):
|
| | | ipyData = ipyDataMgr.GetHorseByIndex(i)
|
| | | horseID = ipyData.GetHorseID()
|
| | | curlv = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Horser_LV % horseID, 0, ChConfig.Def_PDictType_Horse)
|
| | | if not curlv:
|
| | | continue
|
| | | maxLV = ipyData.GetMaxLV()
|
| | | if curlv > maxLV:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Horser_LV % horseID, maxLV, ChConfig.Def_PDictType_Horse)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Horser_Exp % horseID, 0, ChConfig.Def_PDictType_Horse)
|
| | | GameWorld.Log(' 老号坐骑等级超过上限,坐骑ID=%s,原LV=%s,重置为=%s'%(horseID, curlv, maxLV))
|
| | | curlv = maxLV
|
| | | |
| | | for lv in xrange(1, curlv + 1):
|
| | | upIpyData = IpyGameDataPY.GetIpyGameData("HorseUp", horseID, lv)
|
| | | if not upIpyData:
|
| | | break
|
| | | skillIDList = upIpyData.GetSkillID()
|
| | | if not skillIDList:
|
| | | continue
|
| | | for skillID in skillIDList:
|
| | | __GiveSkill(curPlayer, skillID, tick)
|
| | | # 重刷战力
|
| | | curControl = PlayerControl.PlayerControl(curPlayer)
|
| | | curControl.RefreshAllSkill()
|
| | | RefreshHorseAttr(curPlayer)
|
| | | |
| | | |
| | | Sync_HorseClassData(curPlayer)
|
| | | return
|
| | |
|