| | |
| | | import PlayerSuccess
|
| | | import PlayerPet
|
| | |
|
| | | import time
|
| | |
|
| | |
|
| | | Def_HorseEquipIndex = 5
|
| | |
|
| | |
| | | if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Horse):
|
| | | return
|
| | |
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("HorseSkinPlus", activateID)
|
| | | if not ipyData:
|
| | | return
|
| | | |
| | | updSkinEndTime = 0
|
| | | validTime = ipyData.GetSkinValidTime()
|
| | | if validTime:
|
| | | curTime = int(time.time())
|
| | | skinEndTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserSkinEndTime % activateID)
|
| | | if curTime >= skinEndTime:
|
| | | updSkinEndTime = curTime + validTime
|
| | | else:
|
| | | updSkinEndTime = skinEndTime + validTime
|
| | | else:
|
| | | activateState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserSkinPlusState)
|
| | | if activateState & pow(2, activateID):
|
| | | GameWorld.DebugLog("该坐骑已幻化!activateState=%s,activateID=%s" % (activateState, activateID))
|
| | | return
|
| | | |
| | | ipyData = IpyGameDataPY.GetIpyGameData("HorseSkinPlus", activateID)
|
| | | if not ipyData:
|
| | | return
|
| | |
|
| | | needItemID = ipyData.GetUnlockItemID()
|
| | |
| | | return
|
| | | ItemCommon.ReduceItem(curPlayer, itemPack, itemList, needItemCnt, False, ChConfig.ItemDel_Horse)
|
| | |
|
| | | if validTime:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserSkinEndTime % activateID, updSkinEndTime)
|
| | | GameWorld.DebugLog("坐骑幻化时效 activateID=%s,updSkinEndTime=%s(%s)" % (activateID, updSkinEndTime, GameWorld.ChangeTimeNumToStr(updSkinEndTime)), playerID)
|
| | | else:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserSkinPlusState, activateState|pow(2, activateID))
|
| | |
|
| | | playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
|
| | |
| | | if itemRideHorse.IsEmpty():
|
| | | DoChangeHorse(curPlayer, 2, activateID, tick)
|
| | |
|
| | | if validTime:
|
| | | SyncHorseSkinTimeInfo(curPlayer, activateID)
|
| | | else:
|
| | | Sync_HorseClassData(curPlayer)
|
| | | GameWorld.Log("坐骑激活成功!activateID=%s" % (activateID), playerID)
|
| | | GameWorld.Log("坐骑激活成功!activateID=%s,updSkinEndTime=%s" % (activateID, updSkinEndTime), playerID)
|
| | |
|
| | | # 刷属性,更新排行榜
|
| | | RefreshHorseAttr(curPlayer)
|
| | |
| | |
|
| | | # 按幻化
|
| | | elif chooseType == 2:
|
| | | activateState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserSkinPlusState)
|
| | | if not activateState & pow(2, lvID):
|
| | | GameWorld.DebugLog("坐骑幻化未激活,无法使用该坐骑皮肤! activateState=%s,lvID=%s" % (activateState, lvID))
|
| | | return
|
| | | |
| | | skinPlusIpyData = IpyGameDataPY.GetIpyGameData("HorseSkinPlus", lvID)
|
| | | if not skinPlusIpyData:
|
| | | return
|
| | | if not CheckHorseSkinState(curPlayer, skinPlusIpyData):
|
| | | return
|
| | | horseItemID = skinPlusIpyData.GetHorseSkinPlusID()
|
| | |
|
| | |
| | |
|
| | | return True
|
| | |
|
| | | def CheckHorseSkinState(curPlayer, skinPlusIpyData):
|
| | | skinID = skinPlusIpyData.GetID()
|
| | | if skinPlusIpyData.GetSkinValidTime():
|
| | | skinEndTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserSkinEndTime % skinID)
|
| | | if not skinEndTime:
|
| | | return False
|
| | | curTime = int(time.time())
|
| | | if curTime >= skinEndTime:
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | GameWorld.Log("坐骑幻化已过期! skinID=%s,skinEndTime=%s(%s)" % (skinID, skinEndTime, GameWorld.ChangeTimeNumToStr(skinEndTime)), playerID)
|
| | | # 发送过期通知邮件,重置为0
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserSkinEndTime % skinID, 0)
|
| | | |
| | | skinItemID = skinPlusIpyData.GetUnlockItemID()
|
| | | addItemList = []
|
| | | paramList = [skinItemID]
|
| | | PlayerControl.SendMailByKey("HorseSkinInvalidNotify", [playerID], addItemList, paramList)
|
| | | return False
|
| | | else:
|
| | | activateState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserSkinPlusState)
|
| | | if not activateState & pow(2, skinID):
|
| | | #GameWorld.DebugLog("坐骑幻化未激活! skinID=%s,activateState=%s" % (skinID, activateState), curPlayer.GetPlayerID())
|
| | | return False
|
| | | return True
|
| | |
|
| | | def DoHorseOpen(curPlayer):
|
| | | ## 马匹功能开启
|
| | | horseLV = 1
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserSkinPlusState, 0)
|
| | | for trainType in xrange(1, GetHorseTrainTypes() + 1):
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserTrainLV % trainType, 1)
|
| | | |
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in xrange(ipyDataMgr.GetHorseSkinPlusCount()):
|
| | | skinPlusIpyData = ipyDataMgr.GetHorseSkinPlusByIndex(index)
|
| | | skinID = skinPlusIpyData.GetID()
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserSkinEndTime % skinID, 0)
|
| | |
|
| | | horseID = ipyData.GetHorseSkinID()
|
| | | if not ItemCommon.FindItemInPackByItemID(curPlayer, horseID, IPY_GameWorld.rptEquip):
|
| | |
| | |
|
| | | # 幻化属性
|
| | | initFPAdd = 0 #初始战力
|
| | | activateState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserSkinPlusState)
|
| | | for index in xrange(ipyDataMgr.GetHorseSkinPlusCount()):
|
| | | skinPlusIpyData = ipyDataMgr.GetHorseSkinPlusByIndex(index)
|
| | | skinPlusID = skinPlusIpyData.GetID()
|
| | | if not activateState & pow(2, skinPlusID):
|
| | | if not CheckHorseSkinState(curPlayer, skinPlusIpyData):
|
| | | continue
|
| | | initFPAdd += skinPlusIpyData.GetInitFightPower()
|
| | | attrTypeList = skinPlusIpyData.GetAttrType()
|
| | |
| | |
|
| | | Sync_HorseClassData(curPlayer)
|
| | | SyncHorsePetSkinData(curPlayer)
|
| | | SyncHorseSkinTimeInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def Sync_HorseClassData(curPlayer):
|
| | |
| | | NetPackCommon.SendFakePack(curPlayer, packData)
|
| | | return
|
| | |
|
| | | def SyncHorseSkinTimeInfo(curPlayer, skinID=None):
|
| | | skinList = []
|
| | | if skinID > 0:
|
| | | timeInfo = ChPyNetSendPack.tagMCHorseSkinTimeInfo()
|
| | | timeInfo.ID = skinID
|
| | | timeInfo.InvalidTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserSkinEndTime % skinID)
|
| | | skinList.append(timeInfo)
|
| | | else:
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in xrange(ipyDataMgr.GetHorseSkinPlusCount()):
|
| | | skinPlusIpyData = ipyDataMgr.GetHorseSkinPlusByIndex(index)
|
| | | skinID = skinPlusIpyData.GetID()
|
| | | if not skinPlusIpyData.GetSkinValidTime():
|
| | | continue
|
| | | timeInfo = ChPyNetSendPack.tagMCHorseSkinTimeInfo()
|
| | | timeInfo.ID = skinID
|
| | | timeInfo.InvalidTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserSkinEndTime % skinID)
|
| | | skinList.append(timeInfo)
|
| | | |
| | | packData = ChPyNetSendPack.tagMCHorseSkinTimeInfoList()
|
| | | packData.Clear()
|
| | | packData.TimeInfoList = skinList
|
| | | packData.TimeCnt = len(packData.TimeInfoList)
|
| | | NetPackCommon.SendFakePack(curPlayer, packData)
|
| | | return
|
| | |
|